WP Table Builder – WordPress Table Plugin - Version 1.2.6

Version Description

  • NEW: Vertical align option for table cells.
  • NEW: More border customizations.
  • NEW: Target width option for responsive menu.
  • NEW: nofollow option for text links.
  • IMPROVEMENT: Element control show/hide logic updated.
  • IMPROVEMENT: Visibility of main tab buttons updated.
  • IMPROVEMENT: Better suffix display for range sliders.
  • FIX: An issue affecting sub-folder WordPress installations.
  • FIX: An issue targeting usage of YouTube embeds in Custom HTML element.
  • UPDATE: Freemius SDK.
Download this release

Release Info

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

Code changes from version 1.2.5 to 1.2.6

inc/admin/class-wptb-listing.php CHANGED
@@ -329,7 +329,9 @@ class WPTB_Listing extends \WP_List_Table{
329
  $this->request_url_clear();
330
  ?>
331
  <script>
332
- window.history.pushState( null, null, "<?php echo home_url() . $_SERVER['REQUEST_URI']; ?>" );
 
 
333
  </script>
334
  <?php
335
  }
329
  $this->request_url_clear();
330
  ?>
331
  <script>
332
+ // with sub-folder WordPress installations, this function adding extra invalid url paths to browser history, thus changing all the links that formats themselves according to current url. since the url it created is invalid, most of the links on the page become invalid and broken too.
333
+ // @deprecated
334
+ //window.history.pushState( null, null, "<?php //echo home_url() . $_SERVER['REQUEST_URI']; ?>//" );
335
  </script>
336
  <?php
337
  }
inc/admin/controls/control-alignment.php CHANGED
@@ -63,12 +63,23 @@ class Control_Alignment extends Base_Control {
63
  center,
64
  right,
65
  dataElement,
 
66
  targetAddClass;
 
67
 
68
  if( data.label ) {
69
  label = data.label;
70
  }
71
-
 
 
 
 
 
 
 
 
 
72
  if( 'selected' in data ) {
73
  if( data.selected == 0 ) {
74
  selected0 = 'bnt-selected';
@@ -105,24 +116,54 @@ class Control_Alignment extends Base_Control {
105
  ob_start();
106
  require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/right_align.php';
107
  $right_align_image_svg = ob_get_clean();
108
- ?>
109
- <div class="wptb-settings-item-header">
 
 
 
 
 
 
 
 
 
 
 
 
110
  <p class="wptb-settings-item-title">{{{label}}}</p>
111
  </div>
112
  <div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 0px; padding-top: 23px;">
113
  <ul class="wptb-controls-ul-row">
114
  <li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher wptb-button-svg-center
115
- {{{selected0}}} {{{targetAddClass}}}" data-alignment-value="left" data-element="{{{elemContainer}}}">
 
 
116
  <?php echo $left_align_image_svg; ?>
 
 
 
 
117
  </li>
118
  <li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher wptb-button-svg-center
119
- {{{selected1}}} {{{targetAddClass}}}" data-alignment-value="center" data-element="{{{elemContainer}}}">
120
- <?php echo $center_align_image_svg; ?>
121
- </li>
122
- <li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher wptb-button-svg-center
123
- {{{selected2}}} {{{targetAddClass}}}" data-alignment-value="right" data-element="{{{elemContainer}}}">
124
- <?php echo $right_align_image_svg; ?>
 
 
125
  </li>
 
 
 
 
 
 
 
 
 
 
126
  </ul>
127
  </div>
128
 
@@ -160,13 +201,14 @@ class Control_Alignment extends Base_Control {
160
  convertValue = 'right';
161
  }
162
  } else {
163
- if( value == 'left' ) {
164
- convertValue = 'left';
165
- } else if( value == 'center' ) {
166
- convertValue = 'center';
167
- } else if( value == 'right' ) {
168
- convertValue = 'right';
169
- }
 
170
  }
171
 
172
  if( typeof selectorElements[j].style[selectors[i][1]] != 'undefined' ) {
@@ -199,13 +241,14 @@ class Control_Alignment extends Base_Control {
199
  return 'right';
200
  }
201
  } else {
202
- if( gettingElementValue == 'left' ) {
203
- return 'left';
204
- } else if( gettingElementValue == 'center' ) {
205
- return 'center';
206
- } else if( gettingElementValue == 'right' ) {
207
- return 'right';
208
- }
 
209
  }
210
  }
211
  }
63
  center,
64
  right,
65
  dataElement,
66
+ alignmentAxis = 'horizontal',
67
  targetAddClass;
68
+
69
 
70
  if( data.label ) {
71
  label = data.label;
72
  }
73
+
74
+ if( data.alignmentAxis ) {
75
+ alignmentAxis = data.alignmentAxis;
76
+ }
77
+
78
+ let alignmentValues = ['left', 'center', 'right'];
79
+ if( alignmentAxis === 'vertical' ) {
80
+ alignmentValues = ['top' , 'center', 'bottom'];
81
+ }
82
+
83
  if( 'selected' in data ) {
84
  if( data.selected == 0 ) {
85
  selected0 = 'bnt-selected';
116
  ob_start();
117
  require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/right_align.php';
118
  $right_align_image_svg = ob_get_clean();
119
+
120
+ ob_start();
121
+ require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/top_align.svg';
122
+ $top_align_image_svg = ob_get_clean();
123
+
124
+ ob_start();
125
+ require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/vertical_center_align.svg';
126
+ $vertical_center_align_svg = ob_get_clean();
127
+
128
+ ob_start();
129
+ require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/bottom_align.svg';
130
+ $bottom_align_svg = ob_get_clean();
131
+ ?>
132
+ <div class="wptb-settings-item-header">
133
  <p class="wptb-settings-item-title">{{{label}}}</p>
134
  </div>
135
  <div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 0px; padding-top: 23px;">
136
  <ul class="wptb-controls-ul-row">
137
  <li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher wptb-button-svg-center
138
+ {{{selected0}}} {{{targetAddClass}}}" data-alignment-value="{{{alignmentValues[0]}}}" data-element="{{{elemContainer}}}">
139
+ <# if(alignmentAxis === 'horizontal'){
140
+ #>
141
  <?php echo $left_align_image_svg; ?>
142
+ <# }else{
143
+ #>
144
+ <?php echo $top_align_image_svg; ?>
145
+ <# } #>
146
  </li>
147
  <li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher wptb-button-svg-center
148
+ {{{selected1}}} {{{targetAddClass}}}" data-alignment-value="{{{alignmentValues[1]}}}" data-element="{{{elemContainer}}}">
149
+ <# if(alignmentAxis === 'horizontal'){
150
+ #>
151
+ <?php echo $center_align_image_svg; ?>
152
+ <# }else{
153
+ #>
154
+ <?php echo $vertical_center_align_svg; ?>
155
+ <# } #>
156
  </li>
157
+ <li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher wptb-button-svg-center
158
+ {{{selected2}}} {{{targetAddClass}}}" data-alignment-value="{{{alignmentValues[2]}}}" data-element="{{{elemContainer}}}">
159
+ <# if(alignmentAxis === 'horizontal'){
160
+ #>
161
+ <?php echo $right_align_image_svg; ?>
162
+ <# }else{
163
+ #>
164
+ <?php echo $bottom_align_svg; ?>
165
+ <# } #>
166
+ </li>
167
  </ul>
168
  </div>
169
 
201
  convertValue = 'right';
202
  }
203
  } else {
204
+ <!-- if( value == 'left' ) {-->
205
+ <!-- convertValue = 'left';-->
206
+ <!-- } else if( value == 'center' ) {-->
207
+ <!-- convertValue = 'center';-->
208
+ <!-- } else if( value == 'right' ) {-->
209
+ <!-- convertValue = 'right';-->
210
+ <!-- }-->
211
+ convertValue = value;
212
  }
213
 
214
  if( typeof selectorElements[j].style[selectors[i][1]] != 'undefined' ) {
241
  return 'right';
242
  }
243
  } else {
244
+ <!-- if( gettingElementValue == 'left' ) {-->
245
+ <!-- return 'left';-->
246
+ <!-- } else if( gettingElementValue == 'center' ) {-->
247
+ <!-- return 'center';-->
248
+ <!-- } else if( gettingElementValue == 'right' ) {-->
249
+ <!-- return 'right';-->
250
+ <!-- }-->
251
+ return gettingElementValue;
252
  }
253
  }
254
  }
inc/admin/controls/control-color.php CHANGED
@@ -55,7 +55,6 @@ class Control_Color extends Base_Control {
55
  name,
56
  selectors = [],
57
  elemContainer,
58
- selectorsJson,
59
  useDataset,
60
  targetInputAddClass,
61
  dataSets,
@@ -91,16 +90,14 @@ class Control_Color extends Base_Control {
91
  i++;
92
  }
93
 
94
- if( selectors && Array.isArray( selectors ) ) {
95
- selectorsJson = JSON.stringify( selectors );
96
- }
97
-
98
  if( data.elemContainer ) {
99
  elemContainer = data.elemContainer;
100
  }
101
 
102
  targetInputAddClass = data.elementControlTargetUnicClass;
103
- let dataJson = JSON.stringify( data );
 
 
104
  #>
105
  <div id="{{{targetInputAddClass}}}">
106
  <div class='wptb-settings-item-header'>
@@ -138,16 +135,18 @@ class Control_Color extends Base_Control {
138
  }
139
 
140
  if( targetInput && selectorElement ) {
141
- if( '{{{selectorsJson}}}' ) {
142
- let selectors = JSON.parse( '{{{selectorsJson}}}' );
143
 
144
  let thisColorCss, thisColorCssHex;
145
  for( let i = 0; i < selectors.length; i++ ) {
146
  if( selectors[i] && Array.isArray( selectors[i] ) && selectors[i][0] && selectors[i][1] ) {
147
  let selectorElements = document.querySelectorAll( selectors[i][0] );
148
  if( selectorElements.length > 0 ) {
 
149
  for( let j = 0; j < selectorElements.length; j++ ) {
150
  if( selectors[i][1] ) {
 
151
  if( Array.isArray( selectors[i][1] ) ) {
152
  for( let k = 0; k < selectors[i][1].length; k++ ) {
153
  if( selectorElements[j].style[selectors[i][1][k]] ) {
@@ -177,16 +176,17 @@ class Control_Color extends Base_Control {
177
  }
178
  }
179
 
180
- if( thisColorCss ) {
181
- targetInput.value = thisColorCss;
182
- }
183
  }
184
  }
 
 
 
 
185
  }
186
  }
187
  }
188
 
189
-
190
  function elementColorSet( selectors, color) {
191
  const useDataset = 'true' === '{{{useDataset}}}';
192
  if(useDataset){
55
  name,
56
  selectors = [],
57
  elemContainer,
 
58
  useDataset,
59
  targetInputAddClass,
60
  dataSets,
90
  i++;
91
  }
92
 
 
 
 
 
93
  if( data.elemContainer ) {
94
  elemContainer = data.elemContainer;
95
  }
96
 
97
  targetInputAddClass = data.elementControlTargetUnicClass;
98
+ if(!window[targetInputAddClass]) window[targetInputAddClass] = [];
99
+ if(!window[targetInputAddClass]['control-color']) window[targetInputAddClass]['control-color'] = [];
100
+ window[targetInputAddClass]['control-color']['selectors'] = selectors;
101
  #>
102
  <div id="{{{targetInputAddClass}}}">
103
  <div class='wptb-settings-item-header'>
135
  }
136
 
137
  if( targetInput && selectorElement ) {
138
+ if( window['{{{targetInputAddClass}}}']['control-color']['selectors'] ) {
139
+ let selectors = window['{{{targetInputAddClass}}}']['control-color']['selectors'];
140
 
141
  let thisColorCss, thisColorCssHex;
142
  for( let i = 0; i < selectors.length; i++ ) {
143
  if( selectors[i] && Array.isArray( selectors[i] ) && selectors[i][0] && selectors[i][1] ) {
144
  let selectorElements = document.querySelectorAll( selectors[i][0] );
145
  if( selectorElements.length > 0 ) {
146
+ let thisColorCssArr = [];
147
  for( let j = 0; j < selectorElements.length; j++ ) {
148
  if( selectors[i][1] ) {
149
+ thisColorCss = '';
150
  if( Array.isArray( selectors[i][1] ) ) {
151
  for( let k = 0; k < selectors[i][1].length; k++ ) {
152
  if( selectorElements[j].style[selectors[i][1][k]] ) {
176
  }
177
  }
178
 
179
+ thisColorCssArr.push(thisColorCss);
 
 
180
  }
181
  }
182
+
183
+ if( thisColorCssArr.length > 0 ) {
184
+ targetInput.value = WPTB_Helper.getValueMaxCountSameElementsInArray(thisColorCssArr);
185
+ }
186
  }
187
  }
188
  }
189
 
 
190
  function elementColorSet( selectors, color) {
191
  const useDataset = 'true' === '{{{useDataset}}}';
192
  if(useDataset){
inc/admin/controls/control-icon-select.php CHANGED
@@ -45,18 +45,18 @@ class Control_Icon_Select extends Base_Control {
45
  */
46
  public function content_template() {
47
  ?>
48
- <#
49
- const uniqueItemClass = data.elementControlTargetUnicClass;
50
 
51
- WPTB_ControlsManager.setControlData(uniqueItemClass , data);
52
- #>
53
- <div id="{{{uniqueItemClass}}}">
54
- <icon-select-control :label="label" :icons="icons" :per-page="perPage"
55
- :selectors="selectors"></icon-select-control>
56
- </div>
57
- <wptb-template-script>
58
- WPTB_ControlsManager.callControlScript('ControlIconSelect','{{{uniqueItemClass}}}');
59
- </wptb-template-script>
60
  <?php
61
  }
62
  }
45
  */
46
  public function content_template() {
47
  ?>
48
+ <#
49
+ const uniqueItemClass = data.elementControlTargetUnicClass;
50
 
51
+ WPTB_ControlsManager.setControlData(uniqueItemClass , data);
52
+ #>
53
+ <div id="{{{uniqueItemClass}}}">
54
+ <icon-select-control :label="label" :icons="icons" :per-page="perPage"
55
+ :selectors="selectors" :default-value="defaultValue"></icon-select-control>
56
+ </div>
57
+ <wptb-template-script>
58
+ WPTB_ControlsManager.callControlScript('ControlIconSelect','{{{uniqueItemClass}}}');
59
+ </wptb-template-script>
60
  <?php
61
  }
62
  }
inc/admin/controls/control-named-toggle.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WP_Table_Builder\Inc\Admin\Controls;
4
+
5
+ // if called directly, abort
6
+ if ( ! defined( 'WPINC' ) ) {
7
+ die;
8
+ }
9
+
10
+ /**
11
+ * Class Control_Named_Toggle
12
+ *
13
+ * Toggle control with names as visuals
14
+ *
15
+ * Accepted options
16
+ * label => label for control element
17
+ * selectors => selector array to get/set certain values to html elements
18
+ * items => a key/value array container toggle item id as keys and its translated title as value
19
+ * defaultValue => a default value of the control
20
+ *
21
+ * @package WP_Table_Builder\Inc\Admin\Controls
22
+ */
23
+ class Control_Named_Toggle extends Base_Control {
24
+
25
+ /**
26
+ * Get control type.
27
+ *
28
+ * Return the control type.
29
+ *
30
+ * @since 1.1.2
31
+ * @access public
32
+ */
33
+ public function get_type() {
34
+ return 'named_toggle';
35
+ }
36
+
37
+ /**
38
+ * Control content template.
39
+ *
40
+ * Used to generate the control HTML in the editor using wp js template
41
+ *
42
+ * @since 1.1.2
43
+ * @access public
44
+ */
45
+ public function content_template() {
46
+ ?>
47
+ <#
48
+ const uniqueItemClass = data.elementControlTargetUnicClass;
49
+ WPTB_ControlsManager.setControlData(uniqueItemClass, data);
50
+ const elemContainer = data.elemContainer;
51
+ #>
52
+ <div id="{{{uniqueItemClass}}}">
53
+ <named-toggle-control :label="label" :items="items" :selectors="selectors" :default-value="defaultValue"
54
+ elem-container="{{{elemContainer}}}"
55
+ unique-id="{{{uniqueItemClass}}}"></named-toggle-control>
56
+ </div>
57
+ <wptb-template-script>
58
+ WPTB_ControlsManager.callControlScript('ControlNamedToggle', '{{{uniqueItemClass}}}');
59
+ </wptb-template-script>
60
+ <?php
61
+ }
62
+ }
inc/admin/controls/control-range.php CHANGED
@@ -2,7 +2,6 @@
2
 
3
  namespace WP_Table_Builder\Inc\Admin\Controls;
4
 
5
- use WP_Table_Builder as NS;
6
 
7
  // if called directly, abort
8
  if ( ! defined( 'WPINC' ) ) {
@@ -21,7 +20,7 @@ if ( ! defined( 'WPINC' ) ) {
21
  * max => maximum value of the slider
22
  * step => step value of the slider
23
  * defaultValue => default value of the slider
24
- * suffix => suffix to be added to the end of value
25
  *
26
  * @package WP_Table_Builder\Inc\Admin\Controls
27
  */
@@ -49,20 +48,23 @@ class Control_Range extends Base_Control {
49
  */
50
  public function content_template() {
51
  ?>
52
- <#
53
- const uniqueItemClass = data.elementControlTargetUnicClass;
54
- WPTB_ControlsManager.setControlData(uniqueItemClass, data);
55
- const elemContainer = data.elemContainer;
56
- #>
57
- <div id="{{{uniqueItemClass}}}">
58
- <range-control :label="label" :selectors="selectors" :min="min" :max="max" :step="step"
59
- :default-value="defaultValue" unique-id="{{{uniqueItemClass}}}"
60
- elem-container="{{{elemContainer}}}"></range-control>
61
- </div>
62
- <wptb-template-script>
63
- WPTB_ControlsManager.callControlScript('ControlRange', '{{{uniqueItemClass}}}');
64
- </wptb-template-script>
 
 
 
 
65
  <?php
66
  }
67
- }
68
-
2
 
3
  namespace WP_Table_Builder\Inc\Admin\Controls;
4
 
 
5
 
6
  // if called directly, abort
7
  if ( ! defined( 'WPINC' ) ) {
20
  * max => maximum value of the slider
21
  * step => step value of the slider
22
  * defaultValue => default value of the slider
23
+ * postFix => suffix to be added to the end of value
24
  *
25
  * @package WP_Table_Builder\Inc\Admin\Controls
26
  */
48
  */
49
  public function content_template() {
50
  ?>
51
+ <#
52
+ const uniqueItemClass = data.elementControlTargetUnicClass;
53
+ WPTB_ControlsManager.setControlData(uniqueItemClass, data);
54
+ const elemContainer = data.elemContainer;
55
+
56
+ if(!data.postFix){
57
+ data.postFix='';
58
+ }
59
+ #>
60
+ <div id="{{{uniqueItemClass}}}">
61
+ <range-control :label="label" :selectors="selectors" :min="min" :max="max" :step="step"
62
+ :default-value="defaultValue" unique-id="{{{uniqueItemClass}}}"
63
+ elem-container="{{{elemContainer}}}" :post-fix="postFix"></range-control>
64
+ </div>
65
+ <wptb-template-script>
66
+ WPTB_ControlsManager.callControlScript('ControlRange', '{{{uniqueItemClass}}}');
67
+ </wptb-template-script>
68
  <?php
69
  }
70
+ }
 
inc/admin/controls/control-sides.php CHANGED
@@ -64,7 +64,6 @@ class Control_Sides extends Base_Control {
64
  <#
65
  const uniqueItemClass = data.elementControlTargetUnicClass;
66
  WPTB_ControlsManager.setControlData(uniqueItemClass, data);
67
- const elemContainer = data.elemContainer;
68
  data.strings = JSON.parse('<?php echo $json_strings; ?>');
69
  data.icons = JSON.parse('<?php echo $json_icons; ?>');
70
  #>
64
  <#
65
  const uniqueItemClass = data.elementControlTargetUnicClass;
66
  WPTB_ControlsManager.setControlData(uniqueItemClass, data);
 
67
  data.strings = JSON.parse('<?php echo $json_strings; ?>');
68
  data.icons = JSON.parse('<?php echo $json_icons; ?>');
69
  #>
inc/admin/css/admin.css CHANGED
@@ -1178,6 +1178,7 @@ ul.wptb-tabs {
1178
  grid-template-columns: 1fr;
1179
  grid-template-areas: "header" "tabButtons" "controls";
1180
  grid-auto-flow: row;
 
1181
  }
1182
 
1183
  .wptb-section-group-tabbed-header {
@@ -1204,11 +1205,20 @@ ul.wptb-tabs {
1204
 
1205
  .wptb-section-group-tab-content {
1206
  grid-area: controls;
1207
- animation: wptb-basic-appear 0.2s ease-out;
 
1208
  }
1209
 
1210
  .wptb-plugin-non-visible {
1211
- display: none !important;
 
 
 
 
 
 
 
 
1212
  }
1213
 
1214
  /**
@@ -1376,7 +1386,8 @@ ul.wptb-tabs {
1376
  margin-top: 30px;
1377
  margin-bottom: 30px;
1378
  max-width: 700px;
1379
- overflow: visible;
 
1380
  }
1381
 
1382
  #wptb-cell_mode_background {
@@ -1733,6 +1744,10 @@ table.wptb-table {
1733
  display: none;
1734
  }
1735
 
 
 
 
 
1736
  .wptb-plugin-button-order-right .wptb-button-icon {
1737
  order: 2;
1738
  }
@@ -3007,6 +3022,10 @@ wptb_shortcode_container_element {
3007
  color: #CBD5E0 !important;
3008
  }
3009
 
 
 
 
 
3010
  .wptb-menu-active-section-indicator {
3011
  position: absolute;
3012
  border-bottom: 2px solid #1A202C;
@@ -4160,3 +4179,59 @@ wptb_shortcode_container_element {
4160
 
4161
  /*endregion*/
4162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1178
  grid-template-columns: 1fr;
1179
  grid-template-areas: "header" "tabButtons" "controls";
1180
  grid-auto-flow: row;
1181
+ grid-template-rows: auto;
1182
  }
1183
 
1184
  .wptb-section-group-tabbed-header {
1205
 
1206
  .wptb-section-group-tab-content {
1207
  grid-area: controls;
1208
+ /*animation: wptb-basic-appear 0.2s ease-out;*/
1209
+ transition: opacity 0.2s ease-out;
1210
  }
1211
 
1212
  .wptb-plugin-non-visible {
1213
+ /*display: none !important;*/
1214
+ height: 0;
1215
+ opacity: 0;
1216
+ pointer-events: none;
1217
+ transition: none !important;
1218
+ }
1219
+
1220
+ .wptb-plugin-non-visible div {
1221
+ height: 0;
1222
  }
1223
 
1224
  /**
1386
  margin-top: 30px;
1387
  margin-bottom: 30px;
1388
  max-width: 700px;
1389
+ overflow-x: auto;
1390
+ overflow-y: hidden;
1391
  }
1392
 
1393
  #wptb-cell_mode_background {
1744
  display: none;
1745
  }
1746
 
1747
+ [data-wptb-button-icon-position='right'] .wptb-button-icon {
1748
+ order: 2
1749
+ }
1750
+
1751
  .wptb-plugin-button-order-right .wptb-button-icon {
1752
  order: 2;
1753
  }
3022
  color: #CBD5E0 !important;
3023
  }
3024
 
3025
+ .wptb-panel-tabs .wptb-settings-section-item.disabled{
3026
+ color: inherit !important;
3027
+ }
3028
+
3029
  .wptb-menu-active-section-indicator {
3030
  position: absolute;
3031
  border-bottom: 2px solid #1A202C;
4179
 
4180
  /*endregion*/
4181
 
4182
+ /*region named toggle control*/
4183
+ .wptb-named-toggle-control-wrapper {
4184
+ position: relative;
4185
+ min-height: 30px;
4186
+ display: grid;
4187
+ grid-template-columns: 1fr;
4188
+ grid-auto-columns: 1fr;
4189
+ grid-auto-flow: column;
4190
+ justify-content: center;
4191
+ align-items: center;
4192
+ border: 1px solid var(--wptb-plugin-gray-400);
4193
+ border-radius: 5px;
4194
+ background-color: var(--wptb-plugin-white);
4195
+ overflow: hidden;
4196
+ }
4197
+
4198
+ .wptb-named-toggle-item {
4199
+ display: flex;
4200
+ justify-content: center;
4201
+ align-items: center;
4202
+ text-wrap: avoid;
4203
+ padding: 10px;
4204
+ z-index: 10;
4205
+ cursor: pointer;
4206
+ color: var(--wptb-plugin-gray-400);
4207
+ font-weight: bold;
4208
+ font-size: 90% !important;
4209
+ }
4210
+
4211
+ .wptb-named-toggle-item[data-wptb-named-toggle-active='true'] {
4212
+ color: var(--wptb-plugin-white);
4213
+ }
4214
+
4215
+ .wptb-named-toggle-active-indicator {
4216
+ position: absolute;
4217
+ height: 100%;
4218
+ background-color: var(--wptb-plugin-logo-color);
4219
+ z-index: 9;
4220
+ transition: left 0.2s ease-out;
4221
+ }
4222
+
4223
+ /*endregion*/
4224
+
4225
+ /*region cell vertical alignment*/
4226
+ .wptb-cell[data-wptb-cell-vertical-alignment="top"] {
4227
+ vertical-align: baseline;
4228
+ }
4229
+
4230
+ .wptb-cell[data-wptb-cell-vertical-alignment="center"] {
4231
+ vertical-align: center;
4232
+ }
4233
+
4234
+ .wptb-cell[data-wptb-cell-vertical-alignment="bottom"] {
4235
+ vertical-align: bottom;
4236
+ }
4237
+ /*endregion*/
inc/admin/element-classes/base/element-base.php CHANGED
@@ -59,29 +59,30 @@ abstract class Element_Base extends Element_Base_Object {
59
  protected function _content_template() {
60
  }
61
 
62
- protected function readIcons( $extension, $icon_dir, $icon_url ) {
63
- $creds = request_filesystem_credentials( site_url() . '/wp-admin/', '', true, null );
64
- if ( ! WP_Filesystem( $creds ) ) {
65
- return;
66
- }
67
-
68
- global $wp_filesystem;
69
-
70
- $filtered_files = [];
71
- if ( $wp_filesystem->is_dir( $icon_dir ) ) {
72
- $icons = $wp_filesystem->dirlist( $icon_dir );
73
- foreach ( $icons as $name => $info ) {
74
- $current_file_path = path_join( $icon_dir, $name );
75
- $file_info = pathinfo( $current_file_path );
76
- if ( $file_info['extension'] === $extension ) {
77
- $current_file_url = join( '', [ trailingslashit( $icon_url ), $name ] );
78
- $filtered_files[ $file_info['filename'] ] = $current_file_url;
79
- }
80
- }
81
- }
82
-
83
- return $filtered_files;
84
- }
 
85
 
86
  /**
87
  * Output element template and script.
@@ -103,9 +104,9 @@ abstract class Element_Base extends Element_Base_Object {
103
  }
104
 
105
  ?>
106
- <script type="text/html" id="tmpl-wptb-<?php echo esc_attr( $this->get_name() ); ?>-content">
107
- <?php echo $template_content; ?>
108
- </script>
109
 
110
  <?php
111
  }
@@ -124,12 +125,12 @@ abstract class Element_Base extends Element_Base_Object {
124
 
125
 
126
  /**
127
- * Get relative of element
128
- * This function will be used to determine the positioning of elements on drop events
129
- *
130
  * @return string position relative
131
  */
132
- public function position_relative( ) {
133
- return Elements_Manager::ELEMENT_RELATIVE;
134
  }
135
  }
59
  protected function _content_template() {
60
  }
61
 
62
+ /**
63
+ * Get a list of available icons through icon manager.
64
+ *
65
+ * @param string $extension file extension to filter out results
66
+ *
67
+ * @return array associated array of icon list, keys for icon names and values for icon urls
68
+ */
69
+ protected function read_icons( $extension = 'svg' ) {
70
+ return Init::instance()->get_icon_manager()->get_icon_list( $extension );
71
+
72
+ }
73
+
74
+ /**
75
+ * Get an icon through icon manager.
76
+ *
77
+ * @param string $name icon name
78
+ * @param boolean $echo echo to output buffer
79
+ * @param string $extension extra filename info for icon
80
+ *
81
+ * @return string|void return a string representation of the icon of void depending on to chose to output to buffer
82
+ */
83
+ protected function get_icon( $name, $echo = false, $extension = 'svg' ) {
84
+ return Init::instance()->get_icon_manager()->get_icon( $name, $echo, $extension );
85
+ }
86
 
87
  /**
88
  * Output element template and script.
104
  }
105
 
106
  ?>
107
+ <script type="text/html" id="tmpl-wptb-<?php echo esc_attr( $this->get_name() ); ?>-content">
108
+ <?php echo $template_content; ?>
109
+ </script>
110
 
111
  <?php
112
  }
125
 
126
 
127
  /**
128
+ * Get relative of element
129
+ * This function will be used to determine the positioning of elements on drop events
130
+ *
131
  * @return string position relative
132
  */
133
+ public function position_relative() {
134
+ return Elements_Manager::ELEMENT_RELATIVE;
135
  }
136
  }
inc/admin/element-classes/element-scripts/custom-html-element.js CHANGED
@@ -2,7 +2,22 @@ const infArr = element.className.match(/wptb-element-((.+-)\d+)/i);
2
  const controlKey = 'textarea';
3
  const elementControlTargetUnicClass = `wptb-el-${infArr[1]}-${controlKey}`;
4
 
5
- const allowedChildrenTags = ['div', 'a', 'p', 'ul', 'li', 'ol', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'center'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
  const innerChildTextArray = Array.from(allowedChildrenTags);
8
  innerChildTextArray.push('#text');
2
  const controlKey = 'textarea';
3
  const elementControlTargetUnicClass = `wptb-el-${infArr[1]}-${controlKey}`;
4
 
5
+ const allowedChildrenTags = [
6
+ 'div',
7
+ 'a',
8
+ 'p',
9
+ 'ul',
10
+ 'li',
11
+ 'ol',
12
+ 'span',
13
+ 'h1',
14
+ 'h2',
15
+ 'h3',
16
+ 'h4',
17
+ 'h5',
18
+ 'center',
19
+ 'iframe',
20
+ ];
21
 
22
  const innerChildTextArray = Array.from(allowedChildrenTags);
23
  innerChildTextArray.push('#text');
inc/admin/element-classes/element-scripts/text-element.js CHANGED
@@ -12,6 +12,10 @@ let tinyMceInitStart = function() {
12
  fixed_toolbar_container: '#wpcd_fixed_toolbar',
13
  paste_as_text: true,
14
  toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',
 
 
 
 
15
  setup : function( ed ) {
16
  ed.on( 'change', function(e) {
17
  let row = WPTB_Helper.findAncestor( element, 'wptb-row' );
12
  fixed_toolbar_container: '#wpcd_fixed_toolbar',
13
  paste_as_text: true,
14
  toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',
15
+ rel_list: [
16
+ {title: 'None', value: ''},
17
+ {title: 'nofollow', value: 'nofollow'}
18
+ ],
19
  setup : function( ed ) {
20
  ed.on( 'change', function(e) {
21
  let row = WPTB_Helper.findAncestor( element, 'wptb-row' );
inc/admin/element-classes/elements/button-element.php CHANGED
@@ -203,7 +203,8 @@ class Button_Element extends Element_Base {
203
  'min' => 1,
204
  'max' => 3,
205
  'step' => 0.1,
206
- 'defaultValue' => 1
 
207
  ]
208
  ];
209
 
@@ -211,10 +212,7 @@ class Button_Element extends Element_Base {
211
  'buttonIcon' => [
212
  'label' => __( 'Button Icon', $text_domain ),
213
  'type' => Controls_Manager::ICON_SELECT,
214
- 'icons' => $this->readIcons( 'svg', path_join( NS\WP_TABLE_BUILDER_DIR, 'inc/frontend/views/icons' ), join( '', [
215
- NS\WP_TABLE_BUILDER_URL,
216
- 'inc/frontend/views/icons'
217
- ] ) ),
218
  'perPage' => 20,
219
  'selectors' => [
220
  [
@@ -224,16 +222,36 @@ class Button_Element extends Element_Base {
224
  ]
225
  ]
226
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  'iconPosition' => [
228
- 'label' => __( 'Icon Position', $text_domain ),
229
- 'type' => Controls_Manager::SELECT,
230
- 'options' => [
231
- [ esc_html__( 'Left', $text_domain ), 'left', '' ],
232
- [ esc_html__( 'Right', $text_domain ), 'right', 'wptb-plugin-button-order-right' ],
233
  ],
234
- 'selectors' => [
235
- '{{{data.container}}} .wptb-button-wrapper a .wptb-button' => 'class'
236
- ]
 
 
 
 
 
237
  ],
238
  'iconSize' =>
239
  [
@@ -271,16 +289,16 @@ class Button_Element extends Element_Base {
271
  */
272
  protected function _content_template() {
273
  ?>
274
- <div class="wptb-button-wrapper wptb-size-m">
275
- <a>
276
- <div class="wptb-button"
277
- style="position: relative;">
278
- <p>Button Text</p>
279
- <div class="wptb-button-icon" data-wptb-button-icon-src="">
280
- </div>
281
- </div>
282
- </a>
283
- </div>
284
  <?php
285
  }
286
  }
203
  'min' => 1,
204
  'max' => 3,
205
  'step' => 0.1,
206
+ 'defaultValue' => 1,
207
+ 'postFix' => esc_html__( ' times', 'wp-table-builder' )
208
  ]
209
  ];
210
 
212
  'buttonIcon' => [
213
  'label' => __( 'Button Icon', $text_domain ),
214
  'type' => Controls_Manager::ICON_SELECT,
215
+ 'icons' => $this->read_icons(),
 
 
 
216
  'perPage' => 20,
217
  'selectors' => [
218
  [
222
  ]
223
  ]
224
  ],
225
+ /**
226
+ * changed with new named toggle
227
+ * @deprecated
228
+ */
229
+ // 'iconPosition' => [
230
+ // 'label' => __( 'Icon Position', $text_domain ),
231
+ // 'type' => Controls_Manager::SELECT,
232
+ // 'options' => [
233
+ // [ esc_html__( 'Left', $text_domain ), 'left', '' ],
234
+ // [ esc_html__( 'Right', $text_domain ), 'right', 'wptb-plugin-button-order-right' ],
235
+ // ],
236
+ // 'selectors' => [
237
+ // '{{{data.container}}} .wptb-button-wrapper a .wptb-button' => 'class'
238
+ // ]
239
+ // ],
240
  'iconPosition' => [
241
+ 'label' => esc_html__( 'Icon Position', 'wp-table-builder' ),
242
+ 'type' => Controls_Manager::NAMED_TOGGLE,
243
+ 'items' => [
244
+ 'left' => esc_html__( 'left', 'wp-table-builder' ),
245
+ 'right' => esc_html__( 'right', 'wp-table-builder' ),
246
  ],
247
+ 'selectors' => [
248
+ [
249
+ 'query' => '{{{data.container}}} .wptb-button-wrapper a .wptb-button',
250
+ 'type' => Controls_Manager::CLASSTYPE,
251
+ 'format' => 'wptb-plugin-button-order-{$}'
252
+ ]
253
+ ],
254
+ 'defaultValue' => 'left'
255
  ],
256
  'iconSize' =>
257
  [
289
  */
290
  protected function _content_template() {
291
  ?>
292
+ <div class="wptb-button-wrapper wptb-size-m">
293
+ <a>
294
+ <div class="wptb-button"
295
+ style="position: relative;">
296
+ <p>Button Text</p>
297
+ <div class="wptb-button-icon" data-wptb-button-icon-src="">
298
+ </div>
299
+ </div>
300
+ </a>
301
+ </div>
302
  <?php
303
  }
304
  }
inc/admin/js/WPTB_BuilderControls.js CHANGED
@@ -7,18 +7,21 @@ var e=arguments[3];Object.defineProperty(exports,"__esModule",{value:!0}),export
7
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:["relativeElement","forceHide"],data:function(){return{listening:!1}},watch:{relativeElement:function(){this.relativeElement&&!this.listening&&(this.relativeElement.addEventListener("scroll",this.handleScroll),this.handleScroll(),this.listening=!0)}},methods:{handleScroll:function(){if(!this.forceHide){var e=this.relativeElement.scrollTop,t=this.$refs.observerElement.offsetTop;e+this.relativeElement.clientHeight>=t&&this.$emit("visible")}}}};exports.default=e;
8
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this.$createElement;return(this._self._c||e)("div",{ref:"observerElement"},[this._t("default")],2)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
9
  },{}],"wvh1":[function(require,module,exports) {
10
- "use strict";function e(e){return n(e)||a(e)||r(e)||t()}function t(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}function a(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function n(e){if(Array.isArray(e))return o(e)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=new Array(t);r<t;r++)a[r]=e[r];return a}function u(e,t){var r=null;switch(t){case"dataset":r=e.dataset;break;case"style":r=e.style;break;default:r=e.dataset}return r}function l(t){var r=t.query,a=t.type,n=t.key,o=t.format,l=e(document.querySelectorAll(r));if(l.length>0){var i=u(l[0],a);if(i){var s=i[n];if(o){var c=o.replace("{$}","(.+)"),f=new RegExp("^".concat(c,"$"),"g").exec(s);f&&(s=f[1])}return{elements:l,value:s,type:a,key:n,format:o}}}throw new Error("no related operation found with a type of [".concat(a,"]"))}function i(e,t){var r=e.elements,a=e.type,n=e.key,o=e.format;Array.isArray(r)&&r.length>0&&r.map(function(e){var r=u(e,a),l=t;o&&(l=(l=o.replace("{$}",t)).replace(new RegExp(/\\/g),"")),r[n]=l})}function s(e,t){e.map(function(e){i(e,t)})}function c(e){var t={elements:[],startupValue:null};return e.map(function(e){var r=l(e);t.elements.push(l(e)),e.useAsStartup&&(t.startupValue=r)}),t.startupValue||(t.startupValue=t.elements[0].value),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var f={getTargetValue:l,getAllValues:c,setTargetValue:i,setAllValues:s};exports.default=f;
11
  },{}],"LTB1":[function(require,module,exports) {
12
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("../functions/selector"));function t(e){return e&&e.__esModule?e:{default:e}}var a={props:{label:String,selectors:{type:Array,required:!1,default:function(){return[]}},defaultValue:null,uniqueId:{type:String,required:!1,default:""},elemContainer:{type:String,required:!1,default:""}},data:function(){return{startupValue:null,targetElements:[],elementMainValue:"",mountedDataUpdate:!1}},mounted:function(){if(this.selectors.length>0){var t=e.default.getAllValues(this.selectors);this.targetElements=t.elements,this.startupValue=t.startupValue}},methods:{generateChangeEvent:function(e){var t=this;this.targetElements.map(function(a){a.elements.map(function(a){WPTB_Helper.wptbDocumentEventGenerate("wptb-control:".concat(t.uniqueId),a,{value:e})})})},assignDefaultValue:function(){void 0!==this.startupValue&&""!==this.startupValue&&null!==this.startupValue?(this.mountedDataUpdate=!0,this.elementMainValue=this.startupValue):null!==this.defaultValue&&(this.mountedDataUpdate=!0,this.elementMainValue=this.defaultValue)},setTargetValue:function(t,a){e.default.setTargetValue(t,a)},setAllValues:function(t){e.default.setAllValues(this.targetElements,t)},setTableDirty:function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.mountedDataUpdate||(new WPTB_TableStateSaveManager).tableStateSet(),this.mountedDataUpdate=!1}}},u=a;exports.default=u;
13
  },{"../functions/selector":"wvh1"}],"DTps":[function(require,module,exports) {
14
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("../components/IntersectionObserver")),t=n(require("../mixins/ControlBase"));function n(e){return e&&e.__esModule?e:{default:e}}var r={props:{label:String,icons:Object,perPage:{type:Number,default:20}},mixins:[t.default],components:{IntersectionObserver:e.default},data:function(){return{selectedIcon:{url:null,name:null},openDrawer:!1,innerDrawerRef:null,paginationIndex:1,observerHide:!1,debunkedFilterText:"",debunkId:-1,filterText:"",drawerPosition:{left:0}}},mounted:function(){var e=this;document.addEventListener("keyup",function(t){"Escape"===t.code&&e.openDrawer&&e.setDrawerState(!1)});var t=this.startupValue;this.selectedIcon.name=""===t?null:t,this.selectedIcon.url=""===t?null:this.icons[t]},watch:{debunkedFilterText:function(e){var t=this;clearTimeout(this.debunkId),this.debunkId=setTimeout(function(){t.filterText=e},500)},selectedIcon:{handler:function(){var e=this,t=this.targetElements[0].elements;t&&Array.isArray(t)&&(this.selectedIcon.url?fetch(this.selectedIcon.url).then(function(e){return e.text()}).then(function(n){e.setTargetValue(e.targetElements[0],e.selectedIcon.name);var r=document.createRange();t.map(function(e){e.innerHTML="",r.setStart(e,0);var t=r.createContextualFragment(n);e.appendChild(t)})}):(this.setTargetValue(this.targetElements[0],""),t.map(function(e){e.innerHTML=""})))},deep:!0}},methods:{setDrawerState:function(e){this.openDrawer=e},fullIconList:function(){var e=this;return Object.keys(this.icons).filter(function(t){return t.includes(e.filterText)}).slice(0,this.paginationIndex*this.perPage).reduce(function(t,n){return t[n]=e.icons[n],t},{})},toggleIconDrawer:function(){this.calculateDrawerPosition(),this.openDrawer=!this.openDrawer,this.innerDrawerRef=this.$refs.drawerRefElement},setIcon:function(e,t){this.selectedIcon.url=t,this.selectedIcon.name=e,this.toggleIconDrawer(),this.setTableDirty()},observerVisible:function(){this.paginationIndex+=1},calculateDrawerPosition:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=this.$refs.iconSelectButton.getBoundingClientRect(),n=t.x+t.width+e,r=t.y;this.drawerPosition.top=this.toPx(r),this.drawerPosition.left=this.toPx(n)},toPx:function(e){return"".concat(e,"px")}}};exports.default=r;
15
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"wptb-settings-row wptb-settings-middle-xs"},[i("div",{staticClass:"wptb-settings-space-between"},[i("p",{staticClass:"wptb-settings-item-title"},[e._v(e._s(e.label))]),e._v(" "),i("div",{staticClass:"wptb-icon-select-wrapper"},[i("div",{staticClass:"wptb-icon-select-display"},[i("div",{ref:"iconSelectButton",staticClass:"wptb-icon-select-preview",on:{click:e.toggleIconDrawer}},[i("img",{attrs:{src:e.selectedIcon.url}})]),e._v(" "),i("div",{directives:[{name:"show",rawName:"v-show",value:e.openDrawer,expression:"openDrawer"}],staticClass:"wptb-icon-select-drawer wptb-plugin-box-shadow-md",style:e.drawerPosition},[i("div",{staticClass:"wptb-icon-search-wrapper"},[i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.debunkedFilterText,expression:"debunkedFilterText",modifiers:{trim:!0}}],attrs:{type:"text",placeholder:"Search for icons..."},domProps:{value:e.debunkedFilterText},on:{input:function(t){t.target.composing||(e.debunkedFilterText=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}})]),e._v(" "),i("div",{ref:"drawerRefElement",staticClass:"wptb-icon-previews"},[i("div",{staticClass:"wptb-icon-select-drawer-preview wptb-icon-reset",on:{click:function(t){return e.setIcon("","")}}}),e._v(" "),e._l(e.fullIconList(),function(t,s){return i("div",{key:s,staticClass:"wptb-icon-select-drawer-preview",class:{"wptb-icon-preview-active":e.selectedIcon.name===s}},[i("img",{attrs:{src:t,title:s,draggable:!1},on:{click:function(i){return e.setIcon(s,t)}}})])}),e._v(" "),i("intersection-observer",{attrs:{"relative-element":e.innerDrawerRef,"force-hide":e.observerHide},on:{visible:e.observerVisible}},[i("div",{staticClass:"wptb-icon-select-drawer-end"})])],2)])])])])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
16
  },{"../components/IntersectionObserver":"WV0h","../mixins/ControlBase":"LTB1"}],"Pn7d":[function(require,module,exports) {
17
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("vue")),t=n(require("../functions/WPTB_ControlsManager")),o=n(require("../containers/IconSelectControl"));function n(e){return e&&e.__esModule?e:{default:e}}var r={name:"ControlIconSelect",handler:function(n){var r=t.default.getControlData(n);new e.default({data:r,components:{IconSelectControl:o.default}}).$mount("#".concat(n))}};exports.default=r;
18
- },{"vue":"HYXJ","../functions/WPTB_ControlsManager":"WZJa","../containers/IconSelectControl":"DTps"}],"W4BN":[function(require,module,exports) {
19
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("../mixins/ControlBase"));function t(e){return e&&e.__esModule?e:{default:e}}var u={props:{min:{type:Number,default:1,required:!1},max:{type:Number,default:10,required:!1},step:{type:Number,default:1,required:!1},defaultValue:{type:Number,default:1,required:!1}},mixins:[e.default],mounted:function(){this.assignDefaultValue()},watch:{elementMainValue:function(e){var t=this.clampValue(e);this.setAllValues(t),this.generateChangeEvent(t),this.setTableDirty(!0)}},methods:{clampValue:function(e){return e<this.min?this.min:e>this.max?this.max:e}}};exports.default=u;
20
- (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("div",{staticClass:"wptb-settings-item-header"},[e._v(e._s(e.label))]),e._v(" "),a("div",{staticClass:"wptb-settings-row wptb-settings-middle-xs"},[a("div",{staticClass:"wptb-settings-col-xs-8"},[a("input",{directives:[{name:"model",rawName:"v-model",value:e.elementMainValue,expression:"elementMainValue"}],staticClass:"wptb-element-property wptb-size-slider",class:e.uniqueId,attrs:{type:"range","data-element":e.elemContainer,"data-type":"range",min:e.min,max:e.max,step:e.step},domProps:{value:e.elementMainValue},on:{__r:function(t){e.elementMainValue=t.target.value}}})]),e._v(" "),a("div",{staticClass:"wptb-settings-col-xs-4"},[a("input",{directives:[{name:"model",rawName:"v-model",value:e.elementMainValue,expression:"elementMainValue"}],staticClass:"wptb-size-number wptb-number-input wptb-element-property",class:e.uniqueId,attrs:{type:"number",min:e.min,max:e.max,step:e.step,"data-element":e.elemContainer,"data-type":"range"},domProps:{value:e.elementMainValue},on:{input:function(t){t.target.composing||(e.elementMainValue=t.target.value)}}})])])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
21
- },{"../mixins/ControlBase":"LTB1"}],"YVYX":[function(require,module,exports) {
 
 
 
22
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=o(require("vue")),t=o(require("../containers/RangeControl")),n=o(require("../functions/WPTB_ControlsManager"));function o(e){return e&&e.__esModule?e:{default:e}}var r={name:"ControlRange",handler:function(o){var r=n.default.getControlData(o);new e.default({data:r,components:{RangeControl:t.default}}).$mount("#".concat(o))}};exports.default=r;
23
  },{"vue":"HYXJ","../containers/RangeControl":"W4BN","../functions/WPTB_ControlsManager":"WZJa"}],"Y9Ty":[function(require,module,exports) {
24
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("../mixins/ControlBase"));function t(e){return e&&e.__esModule?e:{default:e}}var s={props:{options:Object},mixins:[e.default],mounted:function(){this.assignDefaultValue()},watch:{elementMainValue:function(e){this.generateChangeEvent(e),this.setAllValues(e),this.setTableDirty(!0)}}};exports.default=s;
@@ -35,10 +38,7 @@ var e=arguments[3];Object.defineProperty(exports,"__esModule",{value:!0}),export
35
  },{}],"cW6v":[function(require,module,exports) {
36
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("../functions/DeBouncer"));function t(e){return e&&e.__esModule?e:{default:e}}var i={props:{clone:{type:Boolean,default:!1,required:!1},cloneQuery:{type:String,required:!0},tableDirectives:{type:String,default:""},tableStyle:{type:Object,default:function(){}}},inheritAttrs:!1,data:function(){return{cloneInner:!1,clonedTable:null,mainTable:null,tableDirectiveDatasetId:"wptbResponsiveDirectives",tableHaveDirectives:!1}},mounted:function(){this.cloneInner=this.clone},watch:{clone:function(e){this.cloneInner=e},cloneInner:function(e){e&&(this.startClone(),this.cloneInner=!1)},tableDirectives:function(e){e&&this.addDirectivesToTable(e)},"appOptions.identifyCells":{handler:function(e){e&&(this.showCellIdentification(),this.appOptions.identifyCells=!1)}},"directives.responsiveEnabled":{handler:function(e){e&&(this.mainTable.dataset.wptbAdaptiveTable=0)}}},methods:{startClone:function(){if(this.mainTable=document.querySelector(this.cloneQuery),!this.mainTable)throw new Error("no clone target is found with a query value of ".concat(this.cloneQuery));this.appOptions.hasLegacyResponsive="1"===this.mainTable.dataset.wptbAdaptiveTable,this.clonedTable=this.mainTable.cloneNode(!0),this.clonedTable.classList.add("wptb-plugin-box-shadow-xl"),this.$refs.tableClone.appendChild(this.clonedTable);var e=this.mainTable.dataset[this.tableDirectiveDatasetId];this.tableDirectives&&this.addDirectivesToTable(this.tableDirectives),this.tableHaveDirectives=void 0!==e,this.setupCellIdentification(this.clonedTable),this.$emit("tableCloned",e)},addDirectivesToTable:function(e){this.clonedTable&&this.mainTable&&(this.clonedTable.dataset[this.tableDirectiveDatasetId]=e,this.mainTable.dataset[this.tableDirectiveDatasetId]=e,this.$emit("directivesCopied",this.tableHaveDirectives),this.tableHaveDirectives=!1)},setupCellIdentification:function(e){Array.from(e.querySelectorAll("td")).map(function(e,t){"relative"!==getComputedStyle(e).position&&(e.style.position="relative");var i=document.createRange();i.setStart(e,0);var a="background-color: hsla(211, 25%, ".concat(t%2==0?70:90,"%, 80%)"),n='<div class="wptb-responsive-cell-identifier" style="'.concat(a,'">').concat(t+1,"</div>"),l=i.createContextualFragment(n);e.appendChild(l.childNodes[0])})},showCellIdentification:function(){var t=this;this.clonedTable.classList.add("wptb-responsive-show-cell-identifier"),(0,e.default)("cellIdentification",function(){t.clonedTable.classList.remove("wptb-responsive-show-cell-identifier")},2e3)}}};exports.default=i;
37
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"wptb-responsive-clone-wrapper"},[t("div",{staticClass:"wptb-responsive-clone-inner-wrapper"},[t("div",{ref:"tableClone",style:this.tableStyle})])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
38
- },{"../functions/DeBouncer":"qsi5"}],"h0P7":[function(require,module,exports) {
39
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t={inheritAttrs:!1,props:{postFix:{type:String,default:""},value:{type:null,default:0},enableDynamicWidth:{type:Boolean,default:!1},dynamicWidthPadding:{type:Number,default:3},onlyEnter:{type:Boolean,default:!1},min:{type:Number,default:0},max:{type:Number,default:1e3},enableLimit:{type:Boolean,default:!1}},model:{prop:"value",event:"valueChanged"},watch:{value:function(t){this.innerValue=t}},data:function(){return{innerValue:0}},mounted:function(){this.innerValue=this.value},computed:{postFixIt:function(){return"".concat(this.innerValue).concat(this.postFix)},dynamicWidth:function(){return this.enableDynamicWidth?{width:"calc(".concat(this.innerValue.toString().length+this.postFix.length+this.dynamicWidthPadding,"ch) !important")}:{}}},methods:{getValue:function(t){var e=Number.parseInt(t,10);return e=isNaN(e)?0:e,this.enableLimit?this.limitValue(e):e},limitValue:function(t){return t<this.min?this.min:t>this.max?this.max:t},handleOnInput:function(t){this.onlyEnter||this.$emit("valueChanged",this.getValue(t.target.value))},handleEnterInput:function(t){this.onlyEnter&&this.$emit("valueChanged",this.getValue(t.target.value))},handleKeyPress:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"up",e=this.getValue(this.innerValue);switch(t){case"up":e+=1;break;case"down":e-=1;break;default:e+=1}e=this.getValue(e),this.$emit("valueChanged",e)}}};exports.default=t;
40
- (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,n=e.$createElement;return(e._self._c||n)("input",{style:e.dynamicWidth,attrs:{type:"text",disabled:e.$attrs.disabled},domProps:{value:e.postFixIt},on:{input:e.handleOnInput,keydown:[function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"up",38,n.key,["Up","ArrowUp"])?null:(n.preventDefault(),e.handleKeyPress("up"))},function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"down",40,n.key,["Down","ArrowDown"])?null:(n.preventDefault(),e.handleKeyPress("down"))},function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"enter",13,n.key,"Enter")?null:(n.preventDefault(),e.handleEnterInput(n))}]}})},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
41
- },{}],"xi3E":[function(require,module,exports) {
42
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=e(require("./NumberPostfixInput"));function e(t){return t&&t.__esModule?t:{default:t}}var a={props:{value:{type:Number,default:0},rawValue:{type:Number,default:0},active:{type:Boolean,default:!1},stopId:String,enableBreakpointCustomization:{type:Boolean,default:!1}},components:{NumberPostfixInput:t.default},data:function(){return{wrapperStyle:{left:0,top:0},innerRawValue:this.rawValue}},watch:{rawValue:function(t){this.innerRawValue=t},value:function(){this.calculateStyle()},innerRawValue:function(t){this.$emit("breakpointChange",t,this.stopId)}},mounted:function(){var t=this;this.$nextTick(function(){t.calculateStyle()})},methods:{clickEvent:function(){this.$emit("click",this.rawValue)},calculateStyle:function(){var t=this.$refs.wrapper,e=this.$refs.knob;if(t){var a=t.getBoundingClientRect().width;this.wrapperStyle.left="calc(".concat(this.value,"% - ").concat(a/2,"px)")}if(e){var n=e.getBoundingClientRect().height;this.wrapperStyle.top="-".concat(n/2,"px")}}}};exports.default=a;
43
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{ref:"wrapper",staticClass:"wptb-slider-stop",class:{"wptb-slider-stop-active":e.active},style:e.wrapperStyle,on:{"!click":function(t){return t.preventDefault(),e.clickEvent(t)}}},[i("div",{ref:"knob",staticClass:"wptb-slider-stop-knob"}),e._v(" "),i("div",{staticClass:"wptb-slider-stop-label"},[e._t("default")],2),e._v(" "),i("div",{directives:[{name:"show",rawName:"v-show",value:e.enableBreakpointCustomization,expression:"enableBreakpointCustomization"}]},[i("number-postfix-input",{staticClass:"wptb-size-input",staticStyle:{"font-size":"90%"},attrs:{"enable-dynamic-width":!0,"only-enter":!0,"post-fix":"px"},model:{value:e.innerRawValue,callback:function(t){e.innerRawValue=t},expression:"innerRawValue"}})],1)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
44
  },{"./NumberPostfixInput":"h0P7"}],"ooD9":[function(require,module,exports) {
@@ -48,15 +48,15 @@ var e=arguments[3];Object.defineProperty(exports,"__esModule",{value:!0}),export
48
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{positionPercentage:{type:Number,default:0}},data:function(){return{style:{left:0}}},watch:{positionPercentage:{handler:function(){this.calculateStyle()},deep:!0}},mounted:function(){this.calculateStyle()},methods:{calculateStyle:function(){var e=this.$refs.arrowWrapper.getBoundingClientRect().width;this.style.left="calc(".concat(this.positionPercentage,"% - ").concat(e/2,"px)")},handleDrag:function(e){var t=e.screenX,a=e.screenY;0===t&&0===a||this.$emit("arrowDrag",e)}}};exports.default=e;
49
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{ref:"arrowWrapper",staticClass:"wptb-screen-size-slider-arrow",style:e.style,attrs:{draggable:"true"},on:{drag:function(t){return t.preventDefault(),e.handleDrag(t)},dragover:function(e){e.preventDefault()},dragend:function(t){return t.preventDefault(),e.$emit("arrowDragEnd")},drop:function(e){e.preventDefault()},dragexit:function(e){e.preventDefault()},dragleave:function(e){e.preventDefault()}}},[r("svg",{attrs:{width:"17",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M8.5 16L0 0h17L8.5 16z",fill:"var(--wptb-plugin-logo-color)"}})])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
50
  },{}],"V4gv":[function(require,module,exports) {
51
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=n(require("./SliderStop")),e=n(require("./SliderFill")),i=n(require("./SliderArrow"));function n(t){return t&&t.__esModule?t:{default:t}}var r={props:{stops:Object,endPadding:{type:Number,default:0},modelVal:{type:Number,default:0},enableBreakpointCustomization:{type:Boolean,default:!1}},components:{SliderStop:t.default,SliderFill:e.default,SliderArrow:i.default},data:function(){return{min:0,max:100,currentVal:0,isDragging:!1,minSizeBetweenBreakpoints:100,repaintId:0}},beforeMount:function(){this.calculateMinMax()},watch:{currentVal:function(){this.$emit("slide",this.currentVal)},modelVal:function(t){this.currentVal=Math.floor(t)}},methods:{handleBreakpointChange:function(t,e){var i=this.directives.breakpoints;if(!i[e])throw new Error("no breakpoint found with the given ID: [".concat(e,"]"));var n=Object.keys(i).sort(function(t,e){return i[t].width-i[e].width}),r=n.indexOf(e),a=n[r-1],s=n[r+1];a&&i[a].width>=t&&(t=i[a].width+this.minSizeBetweenBreakpoints),s&&i[s].width<=t&&(t=i[s].width-this.minSizeBetweenBreakpoints),i[e].width=t,this.calculateMinMax(),this.repaintId+=1},calculateMinMax:function(){var t=Object.values(this.stops).sort(function(t,e){return-1*(e.width-t.width)});this.min=t[0].width-this.endPadding,this.max=t[t.length-1].width+this.endPadding,this.currentVal=t[t.length-1].width},translateIntoPercent:function(t){var e=this.max-this.min;return 100*(t-this.min)/e},slide:function(t){this.currentVal=t},handleArrowDrag:function(t){this.isDragging=!0;var e=this.$refs.sliderWrapper.getBoundingClientRect(),i=e.left,n=e.width,r=(t.clientX-i)*(this.max-this.min)/n;this.currentVal=this.limitToRange(this.min+r)},limitToRange:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=t;return t<this.min&&(i=this.min),t>this.max&&(i=this.max),e&&(i=Math.floor(i)),i},isStopActive:function(t){var e=this;return this.currentVal>=t&&Object.values(this.stops).filter(function(t){return t<=e.currentVal}).every(function(e){return e<=t})}}};exports.default=r;
52
- (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{key:e.repaintId,ref:"sliderWrapper",staticClass:"wptb-screen-size-slider-wrapper",class:{"wptb-drag-active":e.isDragging}},[r("div",{staticClass:"wptb-screen-size-slider-empty"},[r("slider-arrow",{attrs:{"position-percentage":e.translateIntoPercent(e.limitToRange(e.currentVal))},on:{arrowDrag:e.handleArrowDrag,arrowDragEnd:function(t){e.isDragging=!1}}}),e._v(" "),r("slider-fill",{attrs:{amount:e.translateIntoPercent(e.limitToRange(e.currentVal))}}),e._v(" "),e._l(e.stops,function(t,a){var n=t.name,i=t.width;return r("slider-stop",{key:a,attrs:{active:e.isStopActive(i),value:e.translateIntoPercent(i),"raw-value":i,"stop-id":a,enableBreakpointCustomization:e.enableBreakpointCustomization},on:{click:e.slide,breakpointChange:e.handleBreakpointChange}},[e._v(e._s(n))])})],2)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
53
  },{"./SliderStop":"xi3E","./SliderFill":"ooD9","./SliderArrow":"q8F8"}],"phKF":[function(require,module,exports) {
54
 
55
  var t,e,n=module.exports={};function r(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===r||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}function u(t){if(e===clearTimeout)return clearTimeout(t);if((e===o||!e)&&clearTimeout)return e=clearTimeout,clearTimeout(t);try{return e(t)}catch(n){try{return e.call(null,t)}catch(n){return e.call(this,t)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:r}catch(n){t=r}try{e="function"==typeof clearTimeout?clearTimeout:o}catch(n){e=o}}();var c,s=[],l=!1,a=-1;function f(){l&&c&&(l=!1,c.length?s=c.concat(s):a=-1,s.length&&h())}function h(){if(!l){var t=i(f);l=!0;for(var e=s.length;e;){for(c=s,s=[];++a<e;)c&&c[a].run();a=-1,e=s.length}c=null,l=!1,u(t)}}function m(t,e){this.fun=t,this.array=e}function p(){}n.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];s.push(new m(t,e)),1!==s.length||l||i(h)},m.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(t){return[]},n.binding=function(t){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(t){throw new Error("process.chdir is not supported")},n.umask=function(){return 0};
56
  },{}],"Q6f0":[function(require,module,exports) {
57
  var global = arguments[3];
58
  var process = require("process");
59
- var e=arguments[3],t=require("process");function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function r(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e,t,n){"object"===("undefined"==typeof exports?"undefined":a(exports))&&"undefined"!=typeof module?module.exports=n():t[e]=n()}("WPTB_ResponsiveFrontend",self||e,function(){function e(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]}function t(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return this.element=e,this.referenceObject=n,this.mergedRenderStatus=!0,this.mergedCells={row:[],column:[]},this.getMergedRenderStatus=function(){return t.mergedRenderStatus},this.setMergedRenderStatus=function(e){t.mergedRenderStatus=e},this.addToMergedCells=function(e,n){t.mergedCells[e].push(n)},this.isReference=function(){return null!==t.referenceObject},this.isReference()&&(this.element=e.cloneNode(!0)),this.modifications={},this.spans={row:1,col:1},this.remainingSpans={row:0,col:0},this.cacheSpanValues=function(){Object.keys(t.spans).map(function(e){if(Object.prototype.hasOwnProperty.call(t.spans,e)){var n=t.spans[e];t.spans[e]=t.element.getAttribute("".concat(e,"Span"))||n}})},this.cacheSpanValues(),this.getSpan=function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1]?t.getElement().getAttribute("".concat(e,"Span")):t.spans[e];if(n)return n;throw new Error("no span value found with the given type of [".concat(e,"]"))},this.getRemainingSpans=function(e){return t.remainingSpans[e]},this.setRemainingSpans=function(e,n){t.remainingSpans[e]=n},this.getElement=function(){return t.element},this.createCellElement=function(){return document.createElement("td")},e||(this.element=this.createCellElement()),this.setAttribute=function(e,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:",",s=t.getElement()[e];"function"!=typeof s&&"object"!==a(s)||(s=t.getElement().getAttribute(e)),t.modifications[e]&&(s=t.modifications[e].default);var i=s;r?i+="".concat(i).concat(o).concat(n):i=n,t.modifications[e]={value:i,default:s},t.getElement()[e]=i},this.setSpan=function(e,n){if(!t.isReference()){var r=t.getSpan(e)-n<0?t.getSpan(e):n;t.setAttribute("".concat(e,"Span"),r),t.setRemainingSpans(e,t.getSpan(e)-r);for(var o=0;o<r-1;o+=1)t.mergedCells[e]&&t.mergedCells[e][o]&&t.mergedCells[e][o].setMergedRenderStatus(!1);return!0}if(!t.getMergedRenderStatus())return!1;var a=t.referenceObject.getRemainingSpans(e);if(0===a)return!1;var s=a-n<0?a:n,i=a-s;if(t.referenceObject.setRemainingSpans(e,i),t.setAttribute("".concat(e,"Span"),s),0!==i)for(var l=t.referenceObject.mergedCells[e].length-a+1,d=l+s-1,u=l;u<d;u+=1)t.mergedCells[e][u].setMergedRenderStatus(!1);return!0},this.resetAttribute=function(e){t.modifications[e]&&(t.getElement()[e]=t.modifications[e].default,t.modifications[e]=void 0)},this.resetAllAttributes=function(){Object.keys(t.modifications).map(function(e){Object.prototype.hasOwnProperty.call(t.modifications,e)&&t.resetAttribute(e)})},{getElement:this.getElement,el:this.element,setAttribute:this.setAttribute,resetAllAttributes:this.resetAllAttributes,getSpan:this.getSpan,setSpan:this.setSpan,getRemainingSpans:this.getRemainingSpans,setRemainingSpans:this.setRemainingSpans,isReference:this.isReference,addToMergedCells:this.addToMergedCells,mergedCells:this.mergedCells,setMergedRenderStatus:this.setMergedRenderStatus,getMergedRenderStatus:this.getMergedRenderStatus}}function n(n){var r=this;return this.tableElement=n,this.parsedTable=[],this.rowCache=[],this.originals={rows:[]},this.rowColors={header:null,even:null,odd:null},this.addToParsed=function(e,t,n){r.parsedTable[e]||(r.parsedTable[e]=[]),r.parsedTable[e][t]=n},this.parseTable=function(){var e=Array.from(r.tableElement.querySelectorAll("tr"));e.map(function(e,n){r.originals.rows.push(e),Array.from(e.querySelectorAll("td")).map(function(e,o){var a=new t(e);r.addToParsed(n,o,a);var s=a.getSpan(t.spanTypes.row),i=a.getSpan(t.spanTypes.column);if(s>1)for(var l=1;l<s;l+=1){var d=new t(e,a);a.addToMergedCells("row",d),r.addToParsed(n+l,o,d)}if(i>1)for(var u=1;u<i;u+=1){var c=new t(e,a);a.addToMergedCells("column",c),r.addToParsed(n,o+u,c)}})}),r.parseRowColors(e)},this.parseRowColors=function(t){(!t||t.length<=0)&&e("no rows are found to parse their colors","error");var n=r.tableElement.dataset.wptbHeaderBackgroundColor,o=r.tableElement.dataset.wptbEvenRowBackgroundColor,a=r.tableElement.dataset.wptbOddRowBackgroundColor;r.rowColors.header=void 0!==n?n:""===t[0].style.backgroundColor?null:t[0].style.backgroundColor;for(var s=t.length/3>=1?0:1===t.length?2:(t.length-1)%2,i=0;i<s;i+=1){var l=document.createElement("tr");r.tableElement.querySelector("tbody").appendChild(l),t.push(l)}r.rowColors.even=o||getComputedStyle(t[1]).backgroundColor,r.rowColors.odd=o?a:getComputedStyle(t[2]).backgroundColor;for(var d=0;d<s;d+=1)t[t.length-(d+1)].remove()},this.addRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;Array.isArray(e)||(e=[e]);var o,a=r.tableElement.querySelector("tbody");if(t)o=r.originals.rows[n];else{var s=document.createRange();s.setStart(a,0),o=s.createContextualFragment('<tr class="'.concat(e.join(" "),'"></tr>')).childNodes[0]}return a.appendChild(o),r.rowCache.push(o),{el:o,id:r.rowCache.length-1}},this.clearTable=function(){r.rowCache=[],r.tableElement.querySelector("tbody").innerHTML=""},this.getRow=function(t){return r.rowCache[t]?r.rowCache[t]:(e("no row with id [".concat(t,"] found in the cache."),"warn"),null)},this.maxRows=function(){return r.parsedTable.length},this.maxColumns=function(){return r.parsedTable.reduce(function(e,t){return t.length>e&&(e=t.length),e},0)},this.getCell=function(t,n){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{if(r.parsedTable[t][n])return o?r.parsedTable[t][n]:r.parsedTable[t][n].el}catch(a){return e("no cell found at the given address of [".concat(t,"-").concat(n,"]"),"warn"),null}return e("no cell found at the given address of [".concat(t,"-").concat(n,"]"),"warn"),null},this.getCellsAtRow=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[],o=0;o<r.maxColumns();o+=1){var a=r.getCell(e,o,t);a&&n.push(a)}return n},this.appendToRow=function(e,t,n){var o=r.getRow(n),a=r.getCell(e,t,!0);return a&&o&&o.appendChild(a.getElement()),a},this.appendElementToRow=function(e,t){var n=r.getRow(t);e&&n&&n.appendChild(e)},this.appendObjectToRow=function(e,t){var n=r.getRow(t);e&&n&&n.appendChild(e.getElement())},this.parseTable(),{maxRows:this.maxRows,maxColumns:this.maxColumns,addRow:this.addRow,clearTable:this.clearTable,getCell:this.getCell,appendToRow:this.appendToRow,appendElementToRow:this.appendElementToRow,appendObjectToRow:this.appendObjectToRow,getCellsAtRow:this.getCellsAtRow,el:this.tableElement,rowColors:this.rowColors}}t.spanTypes={row:"row",column:"col"};var o={query:".wptb-preview-table",defaultClasses:["wptb-plugin-responsive-base"],bindToResize:!1};return function(){var e=this,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.options=r({},o,{},a),this.elements=Array.from(document.querySelectorAll(this.options.query)),this.elementObjects=this.elements.map(function(e){return{el:e,tableObject:new n(e)}}),this.bindRebuildToResize=function(){window.addEventListener("resize",function(t){e.rebuildTables(t.target.innerWidth)})},this.getDirective=function(e){var t=e.dataset.wptbResponsiveDirectives;return t?JSON.parse(atob(t)):null},this.addDefaultClasses=function(t){t.classList.add(e.options.defaultClasses)},this.removeDefaultClasses=function(t){t.classList.remove(e.options.defaultClasses)},this.autoBuild=function(t,n,r,o){var a=r.cellStackDirection[n],s=r.topRowAsHeader[n],i=r.cellsPerRow[n],l=!!r.staticTopRow&&r.staticTopRow[n];o.clearTable(),"desktop"===n?(e.buildDefault(o),e.removeDefaultClasses(t)):(e.autoDirectionBuild(o,a,s,l,i),e.addDefaultClasses(t))},this.autoDirectionBuild=function(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,s=t.maxRows(),i=t.maxColumns(),l="row"===n;if(r)e.headerBuild(t,n,a);else if(l)!function(){var e=[],n=0;o&&t.getCellsAtRow(0,!0).filter(function(e){return!e.isReference()}).map(function(e){n+=1;var r=t.addRow("wptb-row");r.el.style.backgroundColor=t.rowColors.header,t.appendObjectToRow(e,r.id),e.setAttribute("colSpan",a)});for(var r=n;r<s;r+=1)t.getCellsAtRow(r,!0).forEach(function(t){return e.push(t)});for(var i=e.length,l=0,d=0;l<i;l+=a,d+=1){var u=t.addRow("wptb-row");u.el.style.backgroundColor=t.rowColors[d%2==0?"odd":"even"];for(var c=0;c<a;c+=1){var p=e[l+c];p&&(t.appendElementToRow(p.getElement(),u.id),p.resetAllAttributes(),p.setAttribute("style","width: 100% !important",!0,";"),p.setAttribute("colSpan",1),p.setAttribute("rowSpan",1))}}}();else{var d=[],u=0;o&&t.getCellsAtRow(0,!0).filter(function(e){return!e.isReference()}).map(function(e){u+=1;var n=t.addRow("wptb-row");n.el.style.backgroundColor=t.rowColors.header,t.appendObjectToRow(e,n.id),e.setAttribute("colSpan",a)});for(var c=0;c<i;c+=1)for(var p=u;p<s;p+=1){var f=t.getCell(p,c,!0);f&&d.push(f)}for(var h=d.length,g=0,b=0;g<h;g+=a,b+=1){var m=t.addRow("wptb-row");m.el.style.backgroundColor=t.rowColors[b%2==0?"odd":"even"];for(var w=0;w<a;w+=1){var v=d[g+w];v&&(t.appendElementToRow(v.getElement(),m.id),v.resetAllAttributes(),v.setAttribute("style","width: 100% !important",!0,";"),v.setAttribute("colSpan",1),v.setAttribute("rowSpan",1))}}}},this.headerBuild=function(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o=e.getCellsAtRow(0,!0).map(function(t){return t.setAttribute("style","background-color: ".concat(e.rowColors.header),!0,";"),t}),a="column"===n,s=e.maxRows(),i=e.maxColumns();if(a)for(var l=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=e.addRow("wptb-row");t&&(n.el.style.borderTop="3px solid gray"),o.map(function(t){e.appendElementToRow(t.el.cloneNode(!0),n.id)})},d=Math.ceil((s-1)/r),u=1,c=0;c<d;c+=1){l(c>0);for(var p=0;p<r&&!(u>=s);p+=1){var f=e.addRow("wptb-row");f.el.style.backgroundColor=e.rowColors[p%2==0?"even":"odd"];for(var h=0;h<i;h+=1){var g=e.getCell(u,h,!0);if(g){g.resetAllAttributes();var b=!0,m=g.getSpan(t.spanTypes.row);if(g.getSpan(t.spanTypes.column),m>1){var w=r-p,v=Math.min(m,w);b=g.setSpan(t.spanTypes.row,v),g.setMergedRenderStatus(!0)}b&&e.appendObjectToRow(g,f.id)}}u+=1}}else for(var R=Math.ceil((s-1)/r),C=1,y=0;y<R;y+=1){for(var S=0;S<i;S+=1){var T=e.addRow("wptb-row");T.el.style.backgroundColor="none",y>0&&0===S&&(T.el.style.borderTop="3px solid gray");var A=o[S].el.cloneNode(!0);A.style.backgroundColor="".concat(e.rowColors.header," !important"),e.appendElementToRow(A,T.id);for(var O=0;O<r&&!(C+O>=s);O+=1){var E=e.getCell(C+O,S,!0);if(E){E.resetAllAttributes();var j=!0,k=E.getSpan(t.spanTypes.row);if(E.getSpan(t.spanTypes.column),k>1){var M=r-O,x=Math.min(k,M);j=E.setSpan(t.spanTypes.row,x);var P=E.el.getAttribute("rowSpan"),D=E.el.getAttribute("colSpan");E.setAttribute("rowSpan",D),E.setAttribute("colSpan",P),E.setMergedRenderStatus(!0)}if(j){var B=(C+O+y)%2==0?"even":"odd";1===r&&(B=C%2==0?"even":"odd"),E.setAttribute("style","background-color: ".concat(e.rowColors[B]),!0,";"),e.appendObjectToRow(E,T.id)}}}}C+=r}},this.buildDefault=function(e){for(var t=e.maxRows(),n=e.maxColumns(),r=0;r<t;r+=1)for(var o=e.addRow("",!0,r).id,a=0;a<n;a+=1){var s=e.getCell(r,a,!0);s&&!s.isReference()&&(s.resetAllAttributes(),e.appendElementToRow(s.getElement(),o))}},this.calculateRangeId=function(e,t){var n=Object.keys(t).sort(function(e,n){return t[e].width-t[n].width}),r=n[0];return n.map(function(n){e>=t[n].width&&(r=n)}),r},this.rebuildTable=function(t,n,r){var o=e.getDirective(t);if(o){if(!o.responsiveEnabled)return;var a=o.responsiveMode,s=e["".concat(a,"Build")];n||(n=t.getBoundingClientRect().width);var i=e.calculateRangeId(n,o.breakpoints);if(!s)throw new Error("No build mode named as [".concat(a,"] found."));var l=o.modeOptions[a];s.call(e,t,i,l,r)}},this.rebuildTables=function(t){t||(t=window.innerWidth),e.elementObjects.map(function(n){e.rebuildTable(n.el,t,n.tableObject)})},this.options.bindToResize&&this.bindRebuildToResize(),{rebuildTables:this.rebuildTables}}});
60
  },{"process":"phKF"}],"ATQh":[function(require,module,exports) {
61
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t={props:{click:{type:Function,default:function(){console.log("Material button clicked")}},size:{type:String,default:"fit-content"}},computed:{buttonClass:function(){return["wptb-plugin-button-material-".concat(this.size)]}}};exports.default=t;
62
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this,e=t.$createElement;return(t._self._c||e)("div",{staticClass:"wptb-plugin-button-material",class:t.buttonClass,on:{click:function(e){return e.preventDefault(),t.click(e)}}},[t._t("default")],2)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
@@ -85,7 +85,7 @@ var e=arguments[3],t=require("process");function n(e,t){var n=Object.keys(e);if(
85
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"wptb-element-option wptb-settings-items wptb-plugin-width-full"},[n("div",{staticClass:"wptb-settings-row wptb-settings-middle-xs"},[n("label",{staticClass:"wptb-control-row wptb-flex wptb-flex-row wptb-flex-align-center wptb-flex-justify-space-between"},[n("span",{staticStyle:{"font-size":"16px"}},[e._v(" "+e._s(e.label)+" ")]),e._v(" "),n("select",{directives:[{name:"model",rawName:"v-model",value:e.innerValue,expression:"innerValue"}],attrs:{disabled:e.disabled},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.innerValue=t.target.multiple?n:n[0]}}},e._l(e.options,function(t,l){return n("option",{key:l,domProps:{value:l}},[e._v(e._s(e._f("cap")(t)))])}),0)])])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
86
  },{"../mixins/PanelControlBase":"vpWQ"}],"DmVJ":[function(require,module,exports) {
87
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("vue-fragment"),r=t(require("./PanelToggleControl")),o=t(require("./PanelDropdownControl"));function t(e){return e&&e.__esModule?e:{default:e}}var n={components:{PanelToggleControl:r.default,PanelDropdownControl:o.default,Fragment:e.Fragment}};exports.default=n;
88
- (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,s=e.$createElement,n=e._self._c||s;return n("fragment",[n("panel-toggle-control",{attrs:{label:e._f("cap")(e.strings.enableResponsive)},model:{value:e.directives.responsiveEnabled,callback:function(s){e.$set(e.directives,"responsiveEnabled",s)},expression:"directives.responsiveEnabled"}}),e._v(" "),n("panel-dropdown-control",{attrs:{label:e._f("cap")(e.strings.mode),options:{auto:"auto"},disabled:!e.directives.responsiveEnabled},model:{value:e.directives.responsiveMode,callback:function(s){e.$set(e.directives,"responsiveMode",s)},expression:"directives.responsiveMode"}})],1)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
89
  },{"vue-fragment":"CDb8","./PanelToggleControl":"osOD","./PanelDropdownControl":"fI53"}],"UchZ":[function(require,module,exports) {
90
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{header:{type:String,default:"Tab Header"},tabs:{type:Object,default:function(){return{default:"Default"}}},currentTab:{type:String,default:"default"}},methods:{isActiveTab:function(e){return this.currentTab===e},handleTabClick:function(e){this.$emit("tabClicked",e)}}};exports.default=e;
91
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"wptb-section-group-tabbed wptb-plugin-box-shadow-md wptb-plugin-width-full"},[s("div",{staticClass:"wptb-panel-toggle wptb-section-group-tabbed-header"},[s("div",{staticClass:"header"},[t._v(t._s(t.header))])]),t._v(" "),s("div",{staticClass:"wptb-section-group-tabbed-tabs-buttons"},t._l(t.tabs,function(e,i){return s("div",{key:i,staticClass:"wptb-settings-section-item static-active",class:{active:t.isActiveTab(i),disabled:!t.isActiveTab(i)},on:{"!click":function(e){return e.preventDefault(),t.handleTabClick(i)}}},[t._v(" "+t._s(e)+" ")])}),0),t._v(" "),s("div",{staticClass:"wptb-section-group-tab-content"},[t._t("default")],2)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
@@ -99,7 +99,7 @@ var e=arguments[3],t=require("process");function n(e,t){var n=Object.keys(e);if(
99
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=r(require("./PanelSectionGroupTabbed")),t=r(require("./AutoModePanelControls"));function r(e){return e&&e.__esModule?e:{default:e}}var o={components:{PanelSectionGroupTabbed:e.default,AutoModePanelControls:t.default},computed:{breakpointsObject:function(){var e=this;return Object.keys(this.directives.breakpoints).sort(function(t,r){return e.directives.breakpoints[t].width-e.directives.breakpoints[r].width}).reduce(function(t,r){return Object.prototype.hasOwnProperty.call(e.directives.breakpoints,r)&&(t[r]=e.directives.breakpoints[r].name),t},{})},currentPanelControls:function(){return"".concat(this.directives.responsiveMode[0].toUpperCase()+this.directives.responsiveMode.slice(1),"ModePanelControls")}},methods:{handleTabChange:function(e){this.appOptions.currentBreakpoint=e,this.appOptions.currentSize=this.directives.breakpoints[e].width}}};exports.default=o;
100
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this.$createElement,e=this._self._c||t;return e("panel-section-group-tabbed",{attrs:{"current-tab":this.appOptions.currentBreakpoint,tabs:this.breakpointsObject,header:this.strings[this.directives.responsiveMode]},on:{tabClicked:this.handleTabChange}},[e(this.currentPanelControls,{tag:"component"})],1)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
101
  },{"./PanelSectionGroupTabbed":"UchZ","./AutoModePanelControls":"rfRR"}],"Ub7O":[function(require,module,exports) {
102
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=l(require("vue")),t=l(require("../containers/ResponsiveApp")),n=l(require("../components/ResponsiveControlsRow")),o=l(require("../functions/WPTB_ControlsManager")),r=l(require("../plugins/filters")),s=l(require("../plugins/strings")),a=l(require("../components/ResponsivePanelGeneralControls")),i=l(require("../components/ResponsivePanelModeControls"));function l(e){return e&&e.__esModule?e:{default:e}}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach(function(t){c(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d={name:"ResponsiveTable",handler:function(l){var p=o.default.getControlData("responsiveMenuData"),c={responsiveEnabled:!1,responsiveMode:"auto",preserveRowColor:!1,modeOptions:{auto:{topRowAsHeader:{desktop:!1,tablet:!1,mobile:!1},staticTopRow:{desktop:!1,tablet:!1,mobile:!1},cellStackDirection:{desktop:"row",tablet:"row",mobile:"row"},cellsPerRow:{desktop:1,tablet:1,mobile:1}}},breakpoints:p.screenSizes};e.default.use({install:function(e,t){var n=t.components;e.mixin({components:n})}},{components:{ResponsiveControlsRow:n.default}}),e.default.use({install:function(e,t){e.mixin({data:function(){return t.data}})}},{data:{appOptions:{identifyCells:!1,hasLegacyResponsive:!1,currentBreakpoint:"desktop",currentSize:0},directives:c}}),e.default.use(r.default),e.default.use(s.default,p),new e.default({components:{ResponsiveApp:t.default},data:u({mainTableQuery:".wptb-preview-table"},p),template:'<responsive-app :clone-query="mainTableQuery" :screen-sizes="screenSizes" :compare-sizes="compareSizes"></responsive-app>'}).$mount("#".concat(l)),new e.default({components:{ResponsivePanelGeneralControls:a.default},template:"<responsive-panel-general-controls></responsive-panel-general-controls>"}).$mount("#responsiveBuilderLeftPanelGeneralControls"),new e.default({components:{ResponsivePanelModeControls:i.default},data:u({},p),template:"<responsive-panel-mode-controls></responsive-panel-mode-controls>"}).$mount("#responsiveBuilderLeftPanelModeOptions")}};exports.default=d;
103
  },{"vue":"HYXJ","../containers/ResponsiveApp":"waBm","../components/ResponsiveControlsRow":"TuCQ","../functions/WPTB_ControlsManager":"WZJa","../plugins/filters":"GZC0","../plugins/strings":"yEip","../components/ResponsivePanelGeneralControls":"DmVJ","../components/ResponsivePanelModeControls":"BxO6"}],"n7p4":[function(require,module,exports) {
104
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{label:{type:String,default:"top"},value:{type:Number,default:0},disabled:{type:Boolean,default:!1}},model:{prop:"value",event:"valueChanged"},mounted:function(){this.innerValue=this.value},data:function(){return{innerValue:0}},watch:{value:function(e){this.innerValue=e},innerValue:function(e){this.$emit("valueChanged",Number.parseInt(e,10))}},methods:{inputChange:function(e){this.$emit("changedFromFront",this.$vnode.key,e.target.value),this.innerValue=e.target.value}}};exports.default=e;
105
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"wptb-side-control-input-wrapper wptb-side-control-number-input"},[n("div",{staticClass:"wptb-side-control-header"},[t._v(" "+t._s(t._f("cap")(t.label))+" ")]),t._v(" "),n("div",[n("input",{staticClass:"wptb-side-control-main-input",attrs:{type:"number",disabled:t.disabled},domProps:{value:t.innerValue},on:{input:t.inputChange}})])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
@@ -107,11 +107,22 @@ var e=arguments[3],t=require("process");function n(e,t){var n=Object.keys(e);if(
107
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{value:{type:String,default:"px"}},model:{prop:"value",event:"valueChanged"},data:function(){return{options:["px","%"],innerValue:""}},mounted:function(){this.innerValue=this.value},watch:{value:function(e){this.innerValue=e},innerValue:function(e){this.$emit("valueChanged",e)}},methods:{isSelected:function(e){return this.innerValue===e}}};exports.default=e;
108
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"wptb-side-control-input-wrapper wptb-side-control-dropdown-wrapper"},[n("select",{directives:[{name:"model",rawName:"v-model",value:e.innerValue,expression:"innerValue"}],staticClass:"wptb-side-control-main-input wptb-side-control-dropdown",on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.innerValue=t.target.multiple?n:n[0]}}},e._l(e.options,function(t){return n("option",{key:t,domProps:{value:t,selected:e.isSelected(t)}},[e._v(e._s(t))])}),0)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
109
  },{}],"ouPJ":[function(require,module,exports) {
110
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("../mixins/ControlBase")),t=n(require("../components/SideInput")),i=n(require("../components/SideDropdown"));function n(e){return e&&e.__esModule?e:{default:e}}function a(e){return l(e)||s(e)||d(e)||r()}function r(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function l(e){if(Array.isArray(e))return f(e)}function u(e,t){return h(e)||c(e,t)||d(e,t)||o()}function o(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function d(e,t){if(e){if("string"==typeof e)return f(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(i):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function c(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var i=[],n=!0,a=!1,r=void 0;try{for(var s,l=e[Symbol.iterator]();!(n=(s=l.next()).done)&&(i.push(s.value),!t||i.length!==t);n=!0);}catch(u){a=!0,r=u}finally{try{n||null==l.return||l.return()}finally{if(a)throw r}}return i}}function h(e){if(Array.isArray(e))return e}var p={props:{linkIcon:{type:String,default:null},unlinkIcon:{type:String,default:null},strings:{type:Object,required:!0},defaultValue:{type:String,default:"0 0 0 0"}},mixins:[e.default],components:{SideInput:t.default,SideDropdown:i.default},data:function(){return{linkValues:!1,sideValues:{top:0,right:0,bottom:0,left:0},lastEdited:"top",type:"px"}},mounted:function(){this.assignDefaultValue(),this.parseElementValue()},watch:{sideValues:{handler:function(){this.calculateElementValue()},deep:!0},elementMainValue:function(e){this.setAllValues(e),this.generateChangeEvent(e),this.setTableDirty(!0)},linkValues:function(){this.calculateElementValue()},type:function(){this.calculateElementValue()}},methods:{inputChanged:function(e){this.lastEdited=e},calculateElementValue:function(){var e=this;this.assignLinkedValues(),this.elementMainValue=Object.keys(this.sideValues).map(function(t){if(Object.prototype.hasOwnProperty.call(e.sideValues,t))return e.sideValues[t]+e.type}).join(" ")},assignLinkedValues:function(){var e=this;this.linkValues&&Object.keys(this.sideValues).filter(function(t){return t!==e.lastEdited}).map(function(t){Object.prototype.hasOwnProperty.call(e.sideValues,t)&&(e.sideValues[t]=e.sideValues[e.lastEdited])})},parseElementValue:function(){var e="px";this.elementMainValue.split(" ").map(function(t){var i=t.match(/([a-z%?]+)/);if(i&&i[1]){var n=u(i,2);e=n[1]}}),this.type=e;var t=a(this.elementMainValue.matchAll(/[\d]+/g)).flatMap(function(e){return Number.parseInt(e[0],10)});if(t)if(1===t.length){var i=u(t,1);this.sideValues.top=i[0];var n=u(t,1);this.sideValues.bottom=n[0];var r=u(t,1);this.sideValues.left=r[0];var s=u(t,1);this.sideValues.right=s[0],this.linkValues=!0}else if(2===t.length){var l=u(t,2);this.sideValues.bottom=l[0],this.sideValues.left=l[1];var o=u(t,2);this.sideValues.top=o[0],this.sideValues.right=o[1]}else if(3===t.length){var d=u(t,3);this.sideValues.top=d[0],this.sideValues.right=d[1],this.sideValues.bottom=d[2],this.sideValues.left=0}else{var f=u(t,4);this.sideValues.top=f[0],this.sideValues.right=f[1],this.sideValues.bottom=f[2],this.sideValues.left=f[3]}}}};exports.default=p;
111
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("div",[t("div",{staticClass:"wptb-settings-item-header-include-right"},[t("div",{staticClass:"wptb-settings-space-between"},[t("div",[e._v(e._s(e._f("cap")(e.label)))]),e._v(" "),t("div",{on:{click:function(s){s.preventDefault(),e.linkValues=!e.linkValues}}},[e.linkValues?t("div",{staticClass:"wptb-sides-link-icon-wrapper"},[t("img",{attrs:{src:e.unlinkIcon,title:e.strings.unlink}})]):t("div",{staticClass:"wptb-sides-link-icon-wrapper"},[t("img",{attrs:{src:e.linkIcon,title:e.strings.link}})])])])]),e._v(" "),t("div",{staticClass:"wptb-settings-row wptb-settings-middle-xs wptb-sides-controls-wrapper",class:{"wptb-side-values-linked":e.linkValues}},[e._l(e.sideValues,function(s,i){return t("side-input",{key:i,attrs:{label:e.strings[i]},on:{changedFromFront:e.inputChanged},model:{value:e.sideValues[i],callback:function(s){e.$set(e.sideValues,i,s)},expression:"sideValues[k]"}})}),e._v(" "),t("side-dropdown",{model:{value:e.type,callback:function(s){e.type=s},expression:"type"}})],2)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
112
  },{"../mixins/ControlBase":"LTB1","../components/SideInput":"n7p4","../components/SideDropdown":"VsoX"}],"Qbmt":[function(require,module,exports) {
113
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("vue")),t=n(require("../functions/WPTB_ControlsManager")),r=n(require("../containers/SidesControl")),o=n(require("../plugins/filters"));function n(e){return e&&e.__esModule?e:{default:e}}var u={name:"ControlSides",handler:function(n){var u=t.default.getControlData(n);e.default.use(o.default),new e.default({data:u,components:{SidesControl:r.default}}).$mount("#".concat(n))}};exports.default=u;
114
- },{"vue":"HYXJ","../functions/WPTB_ControlsManager":"WZJa","../containers/SidesControl":"ouPJ","../plugins/filters":"GZC0"}],"Zn1h":[function(require,module,exports) {
 
 
 
 
 
 
 
 
 
 
 
115
 
116
- "use strict";var e=a(require("vue")),t=a(require("./mountPoints/WPTB_IconSelectControl")),o=a(require("./mountPoints/WPTB_RangeControl")),n=a(require("./mountPoints/WPTB_Select2Control")),r=a(require("./mountPoints/WPTB_MediaSelectControl")),u=a(require("./functions/WPTB_ControlsManager")),i=a(require("./mountPoints/WPTB_ResponsiveTable")),l=a(require("./mountPoints/WPTB_SidesControl"));function a(e){return e&&e.__esModule?e:{default:e}}e.default.config.productionTip=!1;var d=self||void 0;d.WPTB_ControlsManager=u.default;var f=[t.default,o.default,u.default,n.default,r.default,i.default,l.default];function s(e){u.default.addControlScript(e.name,e.handler)}f.map(s);
117
- },{"vue":"HYXJ","./mountPoints/WPTB_IconSelectControl":"Pn7d","./mountPoints/WPTB_RangeControl":"YVYX","./mountPoints/WPTB_Select2Control":"eNVe","./mountPoints/WPTB_MediaSelectControl":"Uwhc","./functions/WPTB_ControlsManager":"WZJa","./mountPoints/WPTB_ResponsiveTable":"Ub7O","./mountPoints/WPTB_SidesControl":"Qbmt"}]},{},["Zn1h"], null)
7
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:["relativeElement","forceHide"],data:function(){return{listening:!1}},watch:{relativeElement:function(){this.relativeElement&&!this.listening&&(this.relativeElement.addEventListener("scroll",this.handleScroll),this.handleScroll(),this.listening=!0)}},methods:{handleScroll:function(){if(!this.forceHide){var e=this.relativeElement.scrollTop,t=this.$refs.observerElement.offsetTop;e+this.relativeElement.clientHeight>=t&&this.$emit("visible")}}}};exports.default=e;
8
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this.$createElement;return(this._self._c||e)("div",{ref:"observerElement"},[this._t("default")],2)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
9
  },{}],"wvh1":[function(require,module,exports) {
10
+ "use strict";function e(e,a){return n(e)||r(e,a)||u(e,a)||t()}function t(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var r=[],n=!0,a=!1,o=void 0;try{for(var l,u=e[Symbol.iterator]();!(n=(l=u.next()).done)&&(r.push(l.value),!t||r.length!==t);n=!0);}catch(i){a=!0,o=i}finally{try{n||null==u.return||u.return()}finally{if(a)throw o}}return r}}function n(e){if(Array.isArray(e))return e}function a(e){if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=u(e))){var t=0,r=function(){};return{s:r,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,a,o=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){l=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw a}}}}function o(e){return s(e)||i(e)||u(e)||l()}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function u(e,t){if(e){if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}function i(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function s(e){if(Array.isArray(e))return c(e)}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function f(e,t){var r=null;switch(t){case"dataset":r=e.dataset;break;case"style":r=e.style;break;case"class":r="class";break;default:r=e.dataset}return r}function y(e){var t=e.query,r=e.type,n=e.key,a=e.format,l=o(document.querySelectorAll(t));if(l.length>0){var u=f(l[0],r);if(u){var i;if(i="class"===u?l[0].getAttribute("class"):u[n],a){var s,c=a.replace("{$}","(.+)"),y=new RegExp("^".concat(c,"$"),"g");"class"===u?i.split(" ").some(function(e){var t=y.exec(e);return null!==t&&(s=t,!0)}):s=y.exec(i),i=s?s[1]:null}return{elements:l,value:i,type:r,key:n,format:a}}}throw new Error("no related operation found with a type of [".concat(r,"]"))}function p(t,r){var n=t.elements,o=t.type,l=t.key,u=t.format;Array.isArray(n)&&n.length>0&&n.map(function(t){var n=f(t,o);if("class"===n){var i,s,c=null,y=a(t.classList.entries());try{for(y.s();!(s=y.n()).done;){i=e(s.value,2)[1];var p=u.replace("{$}","(.+)"),m=i.match("^".concat(p,"$"));if(m)c=e(m,2)[1]}}catch(h){y.e(h)}finally{y.f()}if(c){var d=u.replace("{$}",c);t.classList.remove(d)}var v=u.replace("{$}",r);t.classList.add(v)}else{var b=r;u&&(b=(b=u.replace("{$}",r)).replace(new RegExp(/\\/g),"")),n[l]=b}})}function m(e,t){e.map(function(e){p(e,t)})}function d(e){var t={elements:[],startupValue:null};return e.map(function(e){var r=y(e);t.elements.push(y(e)),e.useAsStartup&&(t.startupValue=r)}),t.startupValue||(t.startupValue=t.elements[0].value),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var v={getTargetValue:y,getAllValues:d,setTargetValue:p,setAllValues:m};exports.default=v;
11
  },{}],"LTB1":[function(require,module,exports) {
12
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("../functions/selector"));function t(e){return e&&e.__esModule?e:{default:e}}var a={props:{label:String,selectors:{type:Array,required:!1,default:function(){return[]}},defaultValue:null,uniqueId:{type:String,required:!1,default:""},elemContainer:{type:String,required:!1,default:""}},data:function(){return{startupValue:null,targetElements:[],elementMainValue:"",mountedDataUpdate:!1}},mounted:function(){if(this.selectors.length>0){var t=e.default.getAllValues(this.selectors);this.targetElements=t.elements,this.startupValue=t.startupValue}},methods:{generateChangeEvent:function(e){var t=this;this.targetElements.map(function(a){a.elements.map(function(a){WPTB_Helper.wptbDocumentEventGenerate("wptb-control:".concat(t.uniqueId),a,{value:e})})})},assignDefaultValue:function(){void 0!==this.startupValue&&""!==this.startupValue&&null!==this.startupValue?(this.mountedDataUpdate=!0,this.elementMainValue=this.startupValue):null!==this.defaultValue&&(this.mountedDataUpdate=!0,this.elementMainValue=this.defaultValue)},setTargetValue:function(t,a){e.default.setTargetValue(t,a)},setAllValues:function(t){e.default.setAllValues(this.targetElements,t)},setTableDirty:function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.mountedDataUpdate||(new WPTB_TableStateSaveManager).tableStateSet(),this.mountedDataUpdate=!1},resetMountedState:function(){this.mountedDataUpdate=!0}}},u=a;exports.default=u;
13
  },{"../functions/selector":"wvh1"}],"DTps":[function(require,module,exports) {
14
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("../components/IntersectionObserver")),t=n(require("../mixins/ControlBase"));function n(e){return e&&e.__esModule?e:{default:e}}var r={props:{label:String,icons:Object,perPage:{type:Number,default:20}},mixins:[t.default],components:{IntersectionObserver:e.default},data:function(){return{selectedIcon:{url:null,name:null},openDrawer:!1,innerDrawerRef:null,paginationIndex:1,observerHide:!1,debunkedFilterText:"",debunkId:-1,filterText:"",drawerPosition:{left:0}}},mounted:function(){var e=this;document.addEventListener("keyup",function(t){"Escape"===t.code&&e.openDrawer&&e.setDrawerState(!1)}),this.assignDefaultValue();var t=this.elementMainValue;this.selectedIcon.name=""===t?null:t,this.selectedIcon.url=""===t?null:this.icons[t]},watch:{debunkedFilterText:function(e){var t=this;clearTimeout(this.debunkId),this.debunkId=setTimeout(function(){t.filterText=e},500)},selectedIcon:{handler:function(){var e=this,t=this.targetElements[0].elements;t&&Array.isArray(t)&&(this.selectedIcon.url?fetch(this.selectedIcon.url).then(function(e){return e.text()}).then(function(n){e.setTargetValue(e.targetElements[0],e.selectedIcon.name);var r=document.createRange();t.map(function(e){e.innerHTML="",r.setStart(e,0);var t=r.createContextualFragment(n);e.appendChild(t)})}):(this.setTargetValue(this.targetElements[0],""),t.map(function(e){e.innerHTML=""})))},deep:!0}},methods:{setDrawerState:function(e){this.openDrawer=e},fullIconList:function(){var e=this;return Object.keys(this.icons).filter(function(t){return t.includes(e.filterText)}).slice(0,this.paginationIndex*this.perPage).reduce(function(t,n){return t[n]=e.icons[n],t},{})},toggleIconDrawer:function(){this.calculateDrawerPosition(),this.openDrawer=!this.openDrawer,this.innerDrawerRef=this.$refs.drawerRefElement},setIcon:function(e,t){this.selectedIcon.url=t,this.selectedIcon.name=e,this.toggleIconDrawer(),this.setTableDirty()},observerVisible:function(){this.paginationIndex+=1},calculateDrawerPosition:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=this.$refs.iconSelectButton.getBoundingClientRect(),n=t.x+t.width+e,r=t.y;this.drawerPosition.top=this.toPx(r),this.drawerPosition.left=this.toPx(n)},toPx:function(e){return"".concat(e,"px")}}};exports.default=r;
15
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"wptb-settings-row wptb-settings-middle-xs"},[i("div",{staticClass:"wptb-settings-space-between"},[i("p",{staticClass:"wptb-settings-item-title"},[e._v(e._s(e.label))]),e._v(" "),i("div",{staticClass:"wptb-icon-select-wrapper"},[i("div",{staticClass:"wptb-icon-select-display"},[i("div",{ref:"iconSelectButton",staticClass:"wptb-icon-select-preview",on:{click:e.toggleIconDrawer}},[i("img",{attrs:{src:e.selectedIcon.url}})]),e._v(" "),i("div",{directives:[{name:"show",rawName:"v-show",value:e.openDrawer,expression:"openDrawer"}],staticClass:"wptb-icon-select-drawer wptb-plugin-box-shadow-md",style:e.drawerPosition},[i("div",{staticClass:"wptb-icon-search-wrapper"},[i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.debunkedFilterText,expression:"debunkedFilterText",modifiers:{trim:!0}}],attrs:{type:"text",placeholder:"Search for icons..."},domProps:{value:e.debunkedFilterText},on:{input:function(t){t.target.composing||(e.debunkedFilterText=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}})]),e._v(" "),i("div",{ref:"drawerRefElement",staticClass:"wptb-icon-previews"},[i("div",{staticClass:"wptb-icon-select-drawer-preview wptb-icon-reset",on:{click:function(t){return e.setIcon("","")}}}),e._v(" "),e._l(e.fullIconList(),function(t,s){return i("div",{key:s,staticClass:"wptb-icon-select-drawer-preview",class:{"wptb-icon-preview-active":e.selectedIcon.name===s}},[i("img",{attrs:{src:t,title:s,draggable:!1},on:{click:function(i){return e.setIcon(s,t)}}})])}),e._v(" "),i("intersection-observer",{attrs:{"relative-element":e.innerDrawerRef,"force-hide":e.observerHide},on:{visible:e.observerVisible}},[i("div",{staticClass:"wptb-icon-select-drawer-end"})])],2)])])])])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
16
  },{"../components/IntersectionObserver":"WV0h","../mixins/ControlBase":"LTB1"}],"Pn7d":[function(require,module,exports) {
17
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("vue")),t=n(require("../functions/WPTB_ControlsManager")),o=n(require("../containers/IconSelectControl"));function n(e){return e&&e.__esModule?e:{default:e}}var r={name:"ControlIconSelect",handler:function(n){var r=t.default.getControlData(n);void 0===r.defaultValue&&(r.defaultValue=null),new e.default({data:r,components:{IconSelectControl:o.default}}).$mount("#".concat(n))}};exports.default=r;
18
+ },{"vue":"HYXJ","../functions/WPTB_ControlsManager":"WZJa","../containers/IconSelectControl":"DTps"}],"h0P7":[function(require,module,exports) {
19
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t={inheritAttrs:!1,props:{postFix:{type:String,default:""},value:{type:null,default:0},enableDynamicWidth:{type:Boolean,default:!1},dynamicWidthPadding:{type:Number,default:3},onlyEnter:{type:Boolean,default:!1},min:{type:Number,default:0},max:{type:Number,default:1e3},step:{type:Number,default:1},enableLimit:{type:Boolean,default:!1}},model:{prop:"value",event:"valueChanged"},watch:{value:function(t){this.innerValue=t}},data:function(){return{innerValue:0}},mounted:function(){this.innerValue=this.value},computed:{postFixIt:function(){return"".concat(this.innerValue).concat(this.postFix)},dynamicWidth:function(){return this.enableDynamicWidth?{width:"calc(".concat(this.innerValue.toString().length+this.postFix.length+this.dynamicWidthPadding,"ch) !important")}:{}}},methods:{getValue:function(t){var e=Number.parseFloat(t),i=new RegExp(/^([0-9]+)\.([0-9]+)/,"g").exec(this.step.toString());if(i){var n=i[2].length;e=Number.parseFloat(e.toFixed(n))}return e=isNaN(e)?0:e,this.enableLimit?this.limitValue(e):e},limitValue:function(t){return t<this.min?this.min:t>this.max?this.max:t},handleOnInput:function(t){this.onlyEnter||this.$emit("valueChanged",this.getValue(t.target.value))},handleEnterInput:function(t){this.onlyEnter&&this.$emit("valueChanged",this.getValue(t.target.value))},handleKeyPress:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"up",e=this.getValue(this.innerValue);switch(t){case"up":e+=this.step;break;case"down":e-=this.step;break;default:e+=this.step}e=this.getValue(e),this.$emit("valueChanged",e)}}};exports.default=t;
20
+ (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,n=e.$createElement;return(e._self._c||n)("input",{style:e.dynamicWidth,attrs:{type:"text",disabled:e.$attrs.disabled},domProps:{value:e.postFixIt},on:{input:e.handleOnInput,keydown:[function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"up",38,n.key,["Up","ArrowUp"])?null:(n.preventDefault(),e.handleKeyPress("up"))},function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"down",40,n.key,["Down","ArrowDown"])?null:(n.preventDefault(),e.handleKeyPress("down"))},function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"enter",13,n.key,"Enter")?null:(n.preventDefault(),e.handleEnterInput(n))}]}})},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
21
+ },{}],"W4BN":[function(require,module,exports) {
22
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=u(require("../mixins/ControlBase")),t=u(require("../components/NumberPostfixInput"));function u(e){return e&&e.__esModule?e:{default:e}}var i={props:{min:{type:Number,default:1,required:!1},max:{type:Number,default:10,required:!1},step:{type:Number,default:1,required:!1},defaultValue:{type:Number,default:1,required:!1},postFix:{type:String,default:""}},mixins:[e.default],components:{NumberPostfixInput:t.default},mounted:function(){this.assignDefaultValue()},watch:{elementMainValue:function(e){var t=this.clampValue(e);this.setAllValues(t),this.generateChangeEvent(t),this.setTableDirty(!0)}},methods:{clampValue:function(e){return e<this.min?this.min:e>this.max?this.max:e}}};exports.default=i;
23
+ (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("div",{staticClass:"wptb-settings-item-header"},[e._v(e._s(e.label))]),e._v(" "),a("div",{staticClass:"wptb-settings-row wptb-settings-middle-xs"},[a("div",{staticClass:"wptb-settings-col-xs-8"},[a("input",{directives:[{name:"model",rawName:"v-model",value:e.elementMainValue,expression:"elementMainValue"}],staticClass:"wptb-element-property wptb-size-slider",class:e.uniqueId,attrs:{type:"range","data-element":e.elemContainer,"data-type":"range",min:e.min,max:e.max,step:e.step},domProps:{value:e.elementMainValue},on:{__r:function(t){e.elementMainValue=t.target.value}}})]),e._v(" "),a("div",{staticClass:"wptb-settings-col-xs-4"},[a("number-postfix-input",{staticClass:"wptb-size-number wptb-number-input wptb-element-property",class:e.uniqueId,staticStyle:{"text-align":"center"},attrs:{"post-fix":e.postFix,"only-enter":!0,min:e.min,max:e.max,"data-element":e.elemContainer,step:e.step,"enable-limit":!0,"data-type":"range"},model:{value:e.elementMainValue,callback:function(t){e.elementMainValue=t},expression:"elementMainValue"}})],1)])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
24
+ },{"../mixins/ControlBase":"LTB1","../components/NumberPostfixInput":"h0P7"}],"YVYX":[function(require,module,exports) {
25
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=o(require("vue")),t=o(require("../containers/RangeControl")),n=o(require("../functions/WPTB_ControlsManager"));function o(e){return e&&e.__esModule?e:{default:e}}var r={name:"ControlRange",handler:function(o){var r=n.default.getControlData(o);new e.default({data:r,components:{RangeControl:t.default}}).$mount("#".concat(o))}};exports.default=r;
26
  },{"vue":"HYXJ","../containers/RangeControl":"W4BN","../functions/WPTB_ControlsManager":"WZJa"}],"Y9Ty":[function(require,module,exports) {
27
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("../mixins/ControlBase"));function t(e){return e&&e.__esModule?e:{default:e}}var s={props:{options:Object},mixins:[e.default],mounted:function(){this.assignDefaultValue()},watch:{elementMainValue:function(e){this.generateChangeEvent(e),this.setAllValues(e),this.setTableDirty(!0)}}};exports.default=s;
38
  },{}],"cW6v":[function(require,module,exports) {
39
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("../functions/DeBouncer"));function t(e){return e&&e.__esModule?e:{default:e}}var i={props:{clone:{type:Boolean,default:!1,required:!1},cloneQuery:{type:String,required:!0},tableDirectives:{type:String,default:""},tableStyle:{type:Object,default:function(){}}},inheritAttrs:!1,data:function(){return{cloneInner:!1,clonedTable:null,mainTable:null,tableDirectiveDatasetId:"wptbResponsiveDirectives",tableHaveDirectives:!1}},mounted:function(){this.cloneInner=this.clone},watch:{clone:function(e){this.cloneInner=e},cloneInner:function(e){e&&(this.startClone(),this.cloneInner=!1)},tableDirectives:function(e){e&&this.addDirectivesToTable(e)},"appOptions.identifyCells":{handler:function(e){e&&(this.showCellIdentification(),this.appOptions.identifyCells=!1)}},"directives.responsiveEnabled":{handler:function(e){e&&(this.mainTable.dataset.wptbAdaptiveTable=0)}}},methods:{startClone:function(){if(this.mainTable=document.querySelector(this.cloneQuery),!this.mainTable)throw new Error("no clone target is found with a query value of ".concat(this.cloneQuery));this.appOptions.hasLegacyResponsive="1"===this.mainTable.dataset.wptbAdaptiveTable,this.clonedTable=this.mainTable.cloneNode(!0),this.clonedTable.classList.add("wptb-plugin-box-shadow-xl"),this.$refs.tableClone.appendChild(this.clonedTable);var e=this.mainTable.dataset[this.tableDirectiveDatasetId];this.tableDirectives&&this.addDirectivesToTable(this.tableDirectives),this.tableHaveDirectives=void 0!==e,this.setupCellIdentification(this.clonedTable),this.$emit("tableCloned",e)},addDirectivesToTable:function(e){this.clonedTable&&this.mainTable&&(this.clonedTable.dataset[this.tableDirectiveDatasetId]=e,this.mainTable.dataset[this.tableDirectiveDatasetId]=e,this.$emit("directivesCopied",this.tableHaveDirectives),this.tableHaveDirectives=!1)},setupCellIdentification:function(e){Array.from(e.querySelectorAll("td")).map(function(e,t){"relative"!==getComputedStyle(e).position&&(e.style.position="relative");var i=document.createRange();i.setStart(e,0);var a="background-color: hsla(211, 25%, ".concat(t%2==0?70:90,"%, 80%)"),n='<div class="wptb-responsive-cell-identifier" style="'.concat(a,'">').concat(t+1,"</div>"),l=i.createContextualFragment(n);e.appendChild(l.childNodes[0])})},showCellIdentification:function(){var t=this;this.clonedTable.classList.add("wptb-responsive-show-cell-identifier"),(0,e.default)("cellIdentification",function(){t.clonedTable.classList.remove("wptb-responsive-show-cell-identifier")},2e3)}}};exports.default=i;
40
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"wptb-responsive-clone-wrapper"},[t("div",{staticClass:"wptb-responsive-clone-inner-wrapper"},[t("div",{ref:"tableClone",style:this.tableStyle})])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
41
+ },{"../functions/DeBouncer":"qsi5"}],"xi3E":[function(require,module,exports) {
 
 
 
42
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=e(require("./NumberPostfixInput"));function e(t){return t&&t.__esModule?t:{default:t}}var a={props:{value:{type:Number,default:0},rawValue:{type:Number,default:0},active:{type:Boolean,default:!1},stopId:String,enableBreakpointCustomization:{type:Boolean,default:!1}},components:{NumberPostfixInput:t.default},data:function(){return{wrapperStyle:{left:0,top:0},innerRawValue:this.rawValue}},watch:{rawValue:function(t){this.innerRawValue=t},value:function(){this.calculateStyle()},innerRawValue:function(t){this.$emit("breakpointChange",t,this.stopId)}},mounted:function(){var t=this;this.$nextTick(function(){t.calculateStyle()})},methods:{clickEvent:function(){this.$emit("click",this.rawValue)},calculateStyle:function(){var t=this.$refs.wrapper,e=this.$refs.knob;if(t){var a=t.getBoundingClientRect().width;this.wrapperStyle.left="calc(".concat(this.value,"% - ").concat(a/2,"px)")}if(e){var n=e.getBoundingClientRect().height;this.wrapperStyle.top="-".concat(n/2,"px")}}}};exports.default=a;
43
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{ref:"wrapper",staticClass:"wptb-slider-stop",class:{"wptb-slider-stop-active":e.active},style:e.wrapperStyle,on:{"!click":function(t){return t.preventDefault(),e.clickEvent(t)}}},[i("div",{ref:"knob",staticClass:"wptb-slider-stop-knob"}),e._v(" "),i("div",{staticClass:"wptb-slider-stop-label"},[e._t("default")],2),e._v(" "),i("div",{directives:[{name:"show",rawName:"v-show",value:e.enableBreakpointCustomization,expression:"enableBreakpointCustomization"}]},[i("number-postfix-input",{staticClass:"wptb-size-input",staticStyle:{"font-size":"90%"},attrs:{"enable-dynamic-width":!0,"only-enter":!0,"post-fix":"px"},model:{value:e.innerRawValue,callback:function(t){e.innerRawValue=t},expression:"innerRawValue"}})],1)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
44
  },{"./NumberPostfixInput":"h0P7"}],"ooD9":[function(require,module,exports) {
48
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{positionPercentage:{type:Number,default:0}},data:function(){return{style:{left:0}}},watch:{positionPercentage:{handler:function(){this.calculateStyle()},deep:!0}},mounted:function(){this.calculateStyle()},methods:{calculateStyle:function(){var e=this.$refs.arrowWrapper.getBoundingClientRect().width;this.style.left="calc(".concat(this.positionPercentage,"% - ").concat(e/2,"px)")},handleDrag:function(e){var t=e.screenX,a=e.screenY;0===t&&0===a||this.$emit("arrowDrag",e)}}};exports.default=e;
49
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{ref:"arrowWrapper",staticClass:"wptb-screen-size-slider-arrow",style:e.style,attrs:{draggable:"true"},on:{drag:function(t){return t.preventDefault(),e.handleDrag(t)},dragover:function(e){e.preventDefault()},dragend:function(t){return t.preventDefault(),e.$emit("arrowDragEnd")},drop:function(e){e.preventDefault()},dragexit:function(e){e.preventDefault()},dragleave:function(e){e.preventDefault()}}},[r("svg",{attrs:{width:"17",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M8.5 16L0 0h17L8.5 16z",fill:"var(--wptb-plugin-logo-color)"}})])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
50
  },{}],"V4gv":[function(require,module,exports) {
51
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=n(require("./SliderStop")),e=n(require("./SliderFill")),i=n(require("./SliderArrow"));function n(t){return t&&t.__esModule?t:{default:t}}var r={props:{stops:Object,endPadding:{type:Number,default:0},modelVal:{type:Number,default:0},enableBreakpointCustomization:{type:Boolean,default:!1}},components:{SliderStop:t.default,SliderFill:e.default,SliderArrow:i.default},data:function(){return{min:0,max:100,currentVal:0,isDragging:!1,minSizeBetweenBreakpoints:100,repaintId:0}},beforeMount:function(){this.calculateMinMax()},watch:{currentVal:function(){this.$emit("slide",this.currentVal)},modelVal:function(t){this.currentVal=Math.floor(t)},"directives.relativeWidth":{handler:function(){this.repaintId+=1},deep:!0}},methods:{handleBreakpointChange:function(t,e){var i=this.directives.breakpoints;if(!i[e])throw new Error("no breakpoint found with the given ID: [".concat(e,"]"));var n=Object.keys(i).sort(function(t,e){return i[t].width-i[e].width}),r=n.indexOf(e),a=n[r-1],s=n[r+1];a&&i[a].width>=t&&(t=i[a].width+this.minSizeBetweenBreakpoints),s&&i[s].width<=t&&(t=i[s].width-this.minSizeBetweenBreakpoints),i[e].width=t,this.calculateMinMax(),this.repaintId+=1},calculateMinMax:function(){var t=Object.values(this.stops).sort(function(t,e){return-1*(e.width-t.width)});this.min=t[0].width-this.endPadding,this.max=t[t.length-1].width+this.endPadding,this.currentVal=t[t.length-1].width},translateIntoPercent:function(t){var e=this.max-this.min;return 100*(t-this.min)/e},slide:function(t){this.currentVal=t},handleArrowDrag:function(t){this.isDragging=!0;var e=this.$refs.sliderWrapper.getBoundingClientRect(),i=e.left,n=e.width,r=(t.clientX-i)*(this.max-this.min)/n;this.currentVal=this.limitToRange(this.min+r)},limitToRange:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=t;return t<this.min&&(i=this.min),t>this.max&&(i=this.max),e&&(i=Math.floor(i)),i},isStopActive:function(t){var e=this;return this.currentVal>=t&&Object.values(this.stops).filter(function(t){return t<=e.currentVal}).every(function(e){return e<=t})}}};exports.default=r;
52
+ (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{key:e.repaintId,ref:"sliderWrapper",staticClass:"wptb-screen-size-slider-wrapper",class:{"wptb-drag-active":e.isDragging}},[r("div",{staticClass:"wptb-screen-size-slider-empty"},[r("slider-arrow",{attrs:{"position-percentage":e.translateIntoPercent(e.limitToRange(e.currentVal))},on:{arrowDrag:e.handleArrowDrag,arrowDragEnd:function(t){e.isDragging=!1}}}),e._v(" "),r("slider-fill",{attrs:{amount:e.translateIntoPercent(e.limitToRange(e.currentVal))}}),e._v(" "),e._l(e.stops,function(t,a){var n=t.name,i=t.width;return r("slider-stop",{key:a,attrs:{active:e.isStopActive(i),value:e.translateIntoPercent(i),"raw-value":i,"stop-id":a,enableBreakpointCustomization:e.enableBreakpointCustomization},on:{click:e.slide,breakpointChange:e.handleBreakpointChange}},[e._v(e._s("window"===e.directives.relativeWidth?n:i+"px")+" ")])})],2)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
53
  },{"./SliderStop":"xi3E","./SliderFill":"ooD9","./SliderArrow":"q8F8"}],"phKF":[function(require,module,exports) {
54
 
55
  var t,e,n=module.exports={};function r(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===r||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}function u(t){if(e===clearTimeout)return clearTimeout(t);if((e===o||!e)&&clearTimeout)return e=clearTimeout,clearTimeout(t);try{return e(t)}catch(n){try{return e.call(null,t)}catch(n){return e.call(this,t)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:r}catch(n){t=r}try{e="function"==typeof clearTimeout?clearTimeout:o}catch(n){e=o}}();var c,s=[],l=!1,a=-1;function f(){l&&c&&(l=!1,c.length?s=c.concat(s):a=-1,s.length&&h())}function h(){if(!l){var t=i(f);l=!0;for(var e=s.length;e;){for(c=s,s=[];++a<e;)c&&c[a].run();a=-1,e=s.length}c=null,l=!1,u(t)}}function m(t,e){this.fun=t,this.array=e}function p(){}n.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];s.push(new m(t,e)),1!==s.length||l||i(h)},m.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(t){return[]},n.binding=function(t){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(t){throw new Error("process.chdir is not supported")},n.umask=function(){return 0};
56
  },{}],"Q6f0":[function(require,module,exports) {
57
  var global = arguments[3];
58
  var process = require("process");
59
+ var e=arguments[3],t=require("process");function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function r(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach(function(t){o(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e,t,n){"object"===("undefined"==typeof exports?"undefined":a(exports))&&"undefined"!=typeof module?module.exports=n():t[e]=n()}("WPTB_ResponsiveFrontend",self||e,function(){function e(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]}function t(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return this.element=e,this.referenceObject=n,this.mergedRenderStatus=!0,this.mergedCells={row:[],column:[]},this.getMergedRenderStatus=function(){return t.mergedRenderStatus},this.setMergedRenderStatus=function(e){t.mergedRenderStatus=e},this.addToMergedCells=function(e,n){t.mergedCells[e].push(n)},this.isReference=function(){return null!==t.referenceObject},this.isReference()&&(this.element=e.cloneNode(!0)),this.modifications={},this.spans={row:1,col:1},this.remainingSpans={row:0,col:0},this.cacheSpanValues=function(){Object.keys(t.spans).map(function(e){if(Object.prototype.hasOwnProperty.call(t.spans,e)){var n=t.spans[e];t.spans[e]=t.element.getAttribute("".concat(e,"Span"))||n}})},this.cacheSpanValues(),this.getSpan=function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1]?t.getElement().getAttribute("".concat(e,"Span")):t.spans[e];if(n)return n;throw new Error("no span value found with the given type of [".concat(e,"]"))},this.getRemainingSpans=function(e){return t.remainingSpans[e]},this.setRemainingSpans=function(e,n){t.remainingSpans[e]=n},this.getElement=function(){return t.element},this.createCellElement=function(){return document.createElement("td")},e||(this.element=this.createCellElement()),this.setAttribute=function(e,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:",",i=t.getElement()[e];"function"!=typeof i&&"object"!==a(i)||(i=t.getElement().getAttribute(e)),t.modifications[e]&&(i=t.modifications[e].default);var s=i;r?s+="".concat(s).concat(o).concat(n):s=n,t.modifications[e]={value:s,default:i},t.getElement()[e]=s},this.setSpan=function(e,n){if(!t.isReference()){var r=t.getSpan(e)-n<0?t.getSpan(e):n;t.setAttribute("".concat(e,"Span"),r),t.setRemainingSpans(e,t.getSpan(e)-r);for(var o=0;o<r-1;o+=1)t.mergedCells[e]&&t.mergedCells[e][o]&&t.mergedCells[e][o].setMergedRenderStatus(!1);return!0}if(!t.getMergedRenderStatus())return!1;var a=t.referenceObject.getRemainingSpans(e);if(0===a)return!1;var i=a-n<0?a:n,s=a-i;if(t.referenceObject.setRemainingSpans(e,s),t.setAttribute("".concat(e,"Span"),i),0!==s)for(var l=t.referenceObject.mergedCells[e].length-a+1,d=l+i-1,c=l;c<d;c+=1)t.mergedCells[e][c].setMergedRenderStatus(!1);return!0},this.resetAttribute=function(e){t.modifications[e]&&(t.getElement()[e]=t.modifications[e].default,t.modifications[e]=void 0)},this.resetAllAttributes=function(){Object.keys(t.modifications).map(function(e){Object.prototype.hasOwnProperty.call(t.modifications,e)&&t.resetAttribute(e)})},{getElement:this.getElement,el:this.element,setAttribute:this.setAttribute,resetAllAttributes:this.resetAllAttributes,getSpan:this.getSpan,setSpan:this.setSpan,getRemainingSpans:this.getRemainingSpans,setRemainingSpans:this.setRemainingSpans,isReference:this.isReference,addToMergedCells:this.addToMergedCells,mergedCells:this.mergedCells,setMergedRenderStatus:this.setMergedRenderStatus,getMergedRenderStatus:this.getMergedRenderStatus}}function n(n){var r=this;return this.tableElement=n,this.parsedTable=[],this.rowCache=[],this.originals={rows:[]},this.rowColors={header:null,even:null,odd:null},this.addToParsed=function(e,t,n){r.parsedTable[e]||(r.parsedTable[e]=[]),r.parsedTable[e][t]=n},this.parseTable=function(){var e=Array.from(r.tableElement.querySelectorAll("tr"));e.map(function(e,n){r.originals.rows.push(e),Array.from(e.querySelectorAll("td")).map(function(e,o){var a=new t(e);r.addToParsed(n,o,a);var i=a.getSpan(t.spanTypes.row),s=a.getSpan(t.spanTypes.column);if(i>1)for(var l=1;l<i;l+=1){var d=new t(e,a);a.addToMergedCells("row",d),r.addToParsed(n+l,o,d)}if(s>1)for(var c=1;c<s;c+=1){var u=new t(e,a);a.addToMergedCells("column",u),r.addToParsed(n,o+c,u)}})}),r.parseRowColors(e)},this.parseRowColors=function(t){(!t||t.length<=0)&&e("no rows are found to parse their colors","error");var n=r.tableElement.dataset.wptbHeaderBackgroundColor,o=r.tableElement.dataset.wptbEvenRowBackgroundColor,a=r.tableElement.dataset.wptbOddRowBackgroundColor;r.rowColors.header=void 0!==n?n:""===t[0].style.backgroundColor?null:t[0].style.backgroundColor;for(var i=t.length/3>=1?0:1===t.length?2:(t.length-1)%2,s=0;s<i;s+=1){var l=document.createElement("tr");r.tableElement.querySelector("tbody").appendChild(l),t.push(l)}r.rowColors.even=o||getComputedStyle(t[1]).backgroundColor,r.rowColors.odd=o?a:getComputedStyle(t[2]).backgroundColor;for(var d=0;d<i;d+=1)t[t.length-(d+1)].remove()},this.addRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;Array.isArray(e)||(e=[e]);var o,a=r.tableElement.querySelector("tbody");if(t)o=r.originals.rows[n];else{var i=document.createRange();i.setStart(a,0),o=i.createContextualFragment('<tr class="'.concat(e.join(" "),'"></tr>')).childNodes[0]}return a.appendChild(o),r.rowCache.push(o),{el:o,id:r.rowCache.length-1}},this.clearTable=function(){r.rowCache=[],r.tableElement.querySelector("tbody").innerHTML=""},this.getRow=function(t){return r.rowCache[t]?r.rowCache[t]:(e("no row with id [".concat(t,"] found in the cache."),"warn"),null)},this.maxRows=function(){return r.parsedTable.length},this.maxColumns=function(){return r.parsedTable.reduce(function(e,t){return t.length>e&&(e=t.length),e},0)},this.getCell=function(t,n){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{if(r.parsedTable[t][n])return o?r.parsedTable[t][n]:r.parsedTable[t][n].el}catch(a){return e("no cell found at the given address of [".concat(t,"-").concat(n,"]"),"warn"),null}return e("no cell found at the given address of [".concat(t,"-").concat(n,"]"),"warn"),null},this.getCellsAtRow=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[],o=0;o<r.maxColumns();o+=1){var a=r.getCell(e,o,t);a&&n.push(a)}return n},this.appendToRow=function(e,t,n){var o=r.getRow(n),a=r.getCell(e,t,!0);return a&&o&&o.appendChild(a.getElement()),a},this.appendElementToRow=function(e,t){var n=r.getRow(t);e&&n&&n.appendChild(e)},this.appendObjectToRow=function(e,t){var n=r.getRow(t);e&&n&&n.appendChild(e.getElement())},this.parseTable(),{maxRows:this.maxRows,maxColumns:this.maxColumns,addRow:this.addRow,clearTable:this.clearTable,getCell:this.getCell,appendToRow:this.appendToRow,appendElementToRow:this.appendElementToRow,appendObjectToRow:this.appendObjectToRow,getCellsAtRow:this.getCellsAtRow,el:this.tableElement,rowColors:this.rowColors}}t.spanTypes={row:"row",column:"col"};var o={query:".wptb-preview-table",defaultClasses:["wptb-plugin-responsive-base"],bindToResize:!1};return function(){var e=this,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.options=r({},o,{},a),this.elements=Array.from(document.querySelectorAll(this.options.query)),this.elementObjects=this.elements.map(function(e){return{el:e,tableObject:new n(e)}}),this.bindRebuildToResize=function(){window.addEventListener("resize",function(){e.rebuildTables()})},this.getDirective=function(e){var t=e.dataset.wptbResponsiveDirectives;return t?JSON.parse(atob(t)):null},this.addDefaultClasses=function(t){t.classList.add(e.options.defaultClasses)},this.removeDefaultClasses=function(t){t.classList.remove(e.options.defaultClasses)},this.autoBuild=function(t,n,r,o){var a=r.cellStackDirection[n],i=r.topRowAsHeader[n],s=r.cellsPerRow[n],l=!!r.staticTopRow&&r.staticTopRow[n];o.clearTable(),"desktop"===n?(e.buildDefault(o),e.removeDefaultClasses(t)):(e.autoDirectionBuild(o,a,i,l,s),e.addDefaultClasses(t))},this.autoDirectionBuild=function(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,i=t.maxRows(),s=t.maxColumns(),l="row"===n;if(r)e.headerBuild(t,n,a);else if(l)!function(){var e=[],n=0;o&&t.getCellsAtRow(0,!0).filter(function(e){return!e.isReference()}).map(function(e){n+=1;var r=t.addRow("wptb-row");r.el.style.backgroundColor=t.rowColors.header,t.appendObjectToRow(e,r.id),e.setAttribute("colSpan",a)});for(var r=n;r<i;r+=1)t.getCellsAtRow(r,!0).forEach(function(t){return e.push(t)});for(var s=e.length,l=0,d=0;l<s;l+=a,d+=1){var c=t.addRow("wptb-row");c.el.style.backgroundColor=t.rowColors[d%2==0?"odd":"even"];for(var u=0;u<a;u+=1){var p=e[l+u];p&&(t.appendElementToRow(p.getElement(),c.id),p.resetAllAttributes(),p.setAttribute("style","width: 100% !important",!0,";"),p.setAttribute("colSpan",1),p.setAttribute("rowSpan",1))}}}();else{var d=[],c=0;o&&t.getCellsAtRow(0,!0).filter(function(e){return!e.isReference()}).map(function(e){c+=1;var n=t.addRow("wptb-row");n.el.style.backgroundColor=t.rowColors.header,t.appendObjectToRow(e,n.id),e.setAttribute("colSpan",a)});for(var u=0;u<s;u+=1)for(var p=c;p<i;p+=1){var f=t.getCell(p,u,!0);f&&d.push(f)}for(var h=d.length,g=0,b=0;g<h;g+=a,b+=1){var w=t.addRow("wptb-row");w.el.style.backgroundColor=t.rowColors[b%2==0?"odd":"even"];for(var m=0;m<a;m+=1){var v=d[g+m];v&&(t.appendElementToRow(v.getElement(),w.id),v.resetAllAttributes(),v.setAttribute("style","width: 100% !important",!0,";"),v.setAttribute("colSpan",1),v.setAttribute("rowSpan",1))}}}},this.headerBuild=function(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o=e.getCellsAtRow(0,!0).map(function(t){return t.setAttribute("style","background-color: ".concat(e.rowColors.header),!0,";"),t}),a="column"===n,i=e.maxRows(),s=e.maxColumns();if(a)for(var l=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=e.addRow("wptb-row");t&&(n.el.style.borderTop="3px solid gray"),o.map(function(t){e.appendElementToRow(t.el.cloneNode(!0),n.id)})},d=Math.ceil((i-1)/r),c=1,u=0;u<d;u+=1){l(u>0);for(var p=0;p<r&&!(c>=i);p+=1){var f=e.addRow("wptb-row");f.el.style.backgroundColor=e.rowColors[p%2==0?"even":"odd"];for(var h=0;h<s;h+=1){var g=e.getCell(c,h,!0);if(g){g.resetAllAttributes();var b=!0,w=g.getSpan(t.spanTypes.row);if(g.getSpan(t.spanTypes.column),w>1){var m=r-p,v=Math.min(w,m);b=g.setSpan(t.spanTypes.row,v),g.setMergedRenderStatus(!0)}b&&e.appendObjectToRow(g,f.id)}}c+=1}}else for(var R=Math.ceil((i-1)/r),C=1,y=0;y<R;y+=1){for(var S=0;S<s;S+=1){var T=e.addRow("wptb-row");T.el.style.backgroundColor="none",y>0&&0===S&&(T.el.style.borderTop="3px solid gray");var A=o[S].el.cloneNode(!0);A.style.backgroundColor="".concat(e.rowColors.header," !important"),e.appendElementToRow(A,T.id);for(var O=0;O<r&&!(C+O>=i);O+=1){var E=e.getCell(C+O,S,!0);if(E){E.resetAllAttributes();var j=!0,k=E.getSpan(t.spanTypes.row);if(E.getSpan(t.spanTypes.column),k>1){var M=r-O,x=Math.min(k,M);j=E.setSpan(t.spanTypes.row,x);var D=E.el.getAttribute("rowSpan"),P=E.el.getAttribute("colSpan");E.setAttribute("rowSpan",P),E.setAttribute("colSpan",D),E.setMergedRenderStatus(!0)}if(j){var B=(C+O+y)%2==0?"even":"odd";1===r&&(B=C%2==0?"even":"odd"),E.setAttribute("style","background-color: ".concat(e.rowColors[B]),!0,";"),e.appendObjectToRow(E,T.id)}}}}C+=r}},this.buildDefault=function(e){for(var t=e.maxRows(),n=e.maxColumns(),r=0;r<t;r+=1)for(var o=e.addRow("",!0,r).id,a=0;a<n;a+=1){var i=e.getCell(r,a,!0);i&&!i.isReference()&&(i.resetAllAttributes(),e.appendElementToRow(i.getElement(),o))}},this.calculateRangeId=function(e,t){var n=Object.keys(t).sort(function(e,n){return t[e].width-t[n].width}),r=n[0];return n.map(function(n){e>=t[n].width&&(r=n)}),r},this.rebuildTable=function(t,n,r){var o=e.getDirective(t);if(o){if(!o.responsiveEnabled)return;var a=o.responsiveMode,i=e["".concat(a,"Build")];n||(n=t.getBoundingClientRect().width);var s=e.calculateRangeId(n,o.breakpoints);if(!i)throw new Error("No build mode named as [".concat(a,"] found."));var l=o.modeOptions[a];i.call(e,t,s,l,r)}},this.rebuildTables=function(t){e.elementObjects.map(function(n){var r=t;if(!t){r=window.innerWidth;var o=e.getDirective(n.el);if(o&&o.relativeWidth)switch(o.relativeWidth){case"window":r=window.innerWidth;break;case"container":r=n.el.parentNode.parentNode.parentNode.clientWidth;break;default:r=window.innerWidth}}e.rebuildTable(n.el,r,n.tableObject)})},this.options.bindToResize&&this.bindRebuildToResize(),{rebuildTables:this.rebuildTables}}});
60
  },{"process":"phKF"}],"ATQh":[function(require,module,exports) {
61
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t={props:{click:{type:Function,default:function(){console.log("Material button clicked")}},size:{type:String,default:"fit-content"}},computed:{buttonClass:function(){return["wptb-plugin-button-material-".concat(this.size)]}}};exports.default=t;
62
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this,e=t.$createElement;return(t._self._c||e)("div",{staticClass:"wptb-plugin-button-material",class:t.buttonClass,on:{click:function(e){return e.preventDefault(),t.click(e)}}},[t._t("default")],2)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
85
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"wptb-element-option wptb-settings-items wptb-plugin-width-full"},[n("div",{staticClass:"wptb-settings-row wptb-settings-middle-xs"},[n("label",{staticClass:"wptb-control-row wptb-flex wptb-flex-row wptb-flex-align-center wptb-flex-justify-space-between"},[n("span",{staticStyle:{"font-size":"16px"}},[e._v(" "+e._s(e.label)+" ")]),e._v(" "),n("select",{directives:[{name:"model",rawName:"v-model",value:e.innerValue,expression:"innerValue"}],attrs:{disabled:e.disabled},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.innerValue=t.target.multiple?n:n[0]}}},e._l(e.options,function(t,l){return n("option",{key:l,domProps:{value:l}},[e._v(e._s(e._f("cap")(t)))])}),0)])])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
86
  },{"../mixins/PanelControlBase":"vpWQ"}],"DmVJ":[function(require,module,exports) {
87
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("vue-fragment"),r=t(require("./PanelToggleControl")),o=t(require("./PanelDropdownControl"));function t(e){return e&&e.__esModule?e:{default:e}}var n={components:{PanelToggleControl:r.default,PanelDropdownControl:o.default,Fragment:e.Fragment}};exports.default=n;
88
+ (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,i=e.$createElement,s=e._self._c||i;return s("fragment",[s("panel-toggle-control",{attrs:{label:e._f("cap")(e.strings.enableResponsive)},model:{value:e.directives.responsiveEnabled,callback:function(i){e.$set(e.directives,"responsiveEnabled",i)},expression:"directives.responsiveEnabled"}}),e._v(" "),s("panel-dropdown-control",{attrs:{label:e._f("cap")(e.strings.relative),options:{window:e.strings.window,container:e.strings.container},disabled:!e.directives.responsiveEnabled},model:{value:e.directives.relativeWidth,callback:function(i){e.$set(e.directives,"relativeWidth",i)},expression:"directives.relativeWidth"}}),e._v(" "),s("panel-dropdown-control",{attrs:{label:e._f("cap")(e.strings.mode),options:{auto:"auto"},disabled:!e.directives.responsiveEnabled},model:{value:e.directives.responsiveMode,callback:function(i){e.$set(e.directives,"responsiveMode",i)},expression:"directives.responsiveMode"}})],1)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
89
  },{"vue-fragment":"CDb8","./PanelToggleControl":"osOD","./PanelDropdownControl":"fI53"}],"UchZ":[function(require,module,exports) {
90
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{header:{type:String,default:"Tab Header"},tabs:{type:Object,default:function(){return{default:"Default"}}},currentTab:{type:String,default:"default"}},methods:{isActiveTab:function(e){return this.currentTab===e},handleTabClick:function(e){this.$emit("tabClicked",e)}}};exports.default=e;
91
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"wptb-section-group-tabbed wptb-plugin-box-shadow-md wptb-plugin-width-full"},[s("div",{staticClass:"wptb-panel-toggle wptb-section-group-tabbed-header"},[s("div",{staticClass:"header"},[t._v(t._s(t.header))])]),t._v(" "),s("div",{staticClass:"wptb-section-group-tabbed-tabs-buttons"},t._l(t.tabs,function(e,i){return s("div",{key:i,staticClass:"wptb-settings-section-item static-active",class:{active:t.isActiveTab(i),disabled:!t.isActiveTab(i)},on:{"!click":function(e){return e.preventDefault(),t.handleTabClick(i)}}},[t._v(" "+t._s(e)+" ")])}),0),t._v(" "),s("div",{staticClass:"wptb-section-group-tab-content"},[t._t("default")],2)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
99
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=r(require("./PanelSectionGroupTabbed")),t=r(require("./AutoModePanelControls"));function r(e){return e&&e.__esModule?e:{default:e}}var o={components:{PanelSectionGroupTabbed:e.default,AutoModePanelControls:t.default},computed:{breakpointsObject:function(){var e=this;return Object.keys(this.directives.breakpoints).sort(function(t,r){return e.directives.breakpoints[t].width-e.directives.breakpoints[r].width}).reduce(function(t,r){return Object.prototype.hasOwnProperty.call(e.directives.breakpoints,r)&&(t[r]=e.directives.breakpoints[r].name),t},{})},currentPanelControls:function(){return"".concat(this.directives.responsiveMode[0].toUpperCase()+this.directives.responsiveMode.slice(1),"ModePanelControls")}},methods:{handleTabChange:function(e){this.appOptions.currentBreakpoint=e,this.appOptions.currentSize=this.directives.breakpoints[e].width}}};exports.default=o;
100
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this.$createElement,e=this._self._c||t;return e("panel-section-group-tabbed",{attrs:{"current-tab":this.appOptions.currentBreakpoint,tabs:this.breakpointsObject,header:this.strings[this.directives.responsiveMode]},on:{tabClicked:this.handleTabChange}},[e(this.currentPanelControls,{tag:"component"})],1)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
101
  },{"./PanelSectionGroupTabbed":"UchZ","./AutoModePanelControls":"rfRR"}],"Ub7O":[function(require,module,exports) {
102
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=l(require("vue")),t=l(require("../containers/ResponsiveApp")),n=l(require("../components/ResponsiveControlsRow")),o=l(require("../functions/WPTB_ControlsManager")),r=l(require("../plugins/filters")),s=l(require("../plugins/strings")),a=l(require("../components/ResponsivePanelGeneralControls")),i=l(require("../components/ResponsivePanelModeControls"));function l(e){return e&&e.__esModule?e:{default:e}}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach(function(t){c(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d={name:"ResponsiveTable",handler:function(l){var p=o.default.getControlData("responsiveMenuData"),c={responsiveEnabled:!1,responsiveMode:"auto",preserveRowColor:!1,relativeWidth:"window",modeOptions:{auto:{topRowAsHeader:{desktop:!1,tablet:!1,mobile:!1},staticTopRow:{desktop:!1,tablet:!1,mobile:!1},cellStackDirection:{desktop:"row",tablet:"row",mobile:"row"},cellsPerRow:{desktop:1,tablet:1,mobile:1}}},breakpoints:p.screenSizes};e.default.use({install:function(e,t){var n=t.components;e.mixin({components:n})}},{components:{ResponsiveControlsRow:n.default}}),e.default.use({install:function(e,t){e.mixin({data:function(){return t.data}})}},{data:{appOptions:{identifyCells:!1,hasLegacyResponsive:!1,currentBreakpoint:"desktop",currentSize:0},directives:c}}),e.default.use(r.default),e.default.use(s.default,p),new e.default({components:{ResponsiveApp:t.default},data:u({mainTableQuery:".wptb-preview-table"},p),template:'<responsive-app :clone-query="mainTableQuery" :screen-sizes="screenSizes" :compare-sizes="compareSizes"></responsive-app>'}).$mount("#".concat(l)),new e.default({components:{ResponsivePanelGeneralControls:a.default},template:"<responsive-panel-general-controls></responsive-panel-general-controls>"}).$mount("#responsiveBuilderLeftPanelGeneralControls"),new e.default({components:{ResponsivePanelModeControls:i.default},data:u({},p),template:"<responsive-panel-mode-controls></responsive-panel-mode-controls>"}).$mount("#responsiveBuilderLeftPanelModeOptions")}};exports.default=d;
103
  },{"vue":"HYXJ","../containers/ResponsiveApp":"waBm","../components/ResponsiveControlsRow":"TuCQ","../functions/WPTB_ControlsManager":"WZJa","../plugins/filters":"GZC0","../plugins/strings":"yEip","../components/ResponsivePanelGeneralControls":"DmVJ","../components/ResponsivePanelModeControls":"BxO6"}],"n7p4":[function(require,module,exports) {
104
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{label:{type:String,default:"top"},value:{type:Number,default:0},disabled:{type:Boolean,default:!1}},model:{prop:"value",event:"valueChanged"},mounted:function(){this.innerValue=this.value},data:function(){return{innerValue:0}},watch:{value:function(e){this.innerValue=e},innerValue:function(e){this.$emit("valueChanged",Number.parseInt(e,10))}},methods:{inputChange:function(e){this.$emit("changedFromFront",this.$vnode.key,e.target.value),this.innerValue=e.target.value}}};exports.default=e;
105
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"wptb-side-control-input-wrapper wptb-side-control-number-input"},[n("div",{staticClass:"wptb-side-control-header"},[t._v(" "+t._s(t._f("cap")(t.label))+" ")]),t._v(" "),n("div",[n("input",{staticClass:"wptb-side-control-main-input",attrs:{type:"number",disabled:t.disabled},domProps:{value:t.innerValue},on:{input:t.inputChange}})])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
107
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{value:{type:String,default:"px"}},model:{prop:"value",event:"valueChanged"},data:function(){return{options:["px","%"],innerValue:""}},mounted:function(){this.innerValue=this.value},watch:{value:function(e){this.innerValue=e},innerValue:function(e){this.$emit("valueChanged",e)}},methods:{isSelected:function(e){return this.innerValue===e}}};exports.default=e;
108
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"wptb-side-control-input-wrapper wptb-side-control-dropdown-wrapper"},[n("select",{directives:[{name:"model",rawName:"v-model",value:e.innerValue,expression:"innerValue"}],staticClass:"wptb-side-control-main-input wptb-side-control-dropdown",on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.innerValue=t.target.multiple?n:n[0]}}},e._l(e.options,function(t){return n("option",{key:t,domProps:{value:t,selected:e.isSelected(t)}},[e._v(e._s(t))])}),0)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
109
  },{}],"ouPJ":[function(require,module,exports) {
110
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("../mixins/ControlBase")),t=n(require("../components/SideInput")),i=n(require("../components/SideDropdown"));function n(e){return e&&e.__esModule?e:{default:e}}function r(e){return l(e)||s(e)||d(e)||a()}function a(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function l(e){if(Array.isArray(e))return f(e)}function u(e,t){return h(e)||c(e,t)||d(e,t)||o()}function o(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function d(e,t){if(e){if("string"==typeof e)return f(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(i):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function c(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var i=[],n=!0,r=!1,a=void 0;try{for(var s,l=e[Symbol.iterator]();!(n=(s=l.next()).done)&&(i.push(s.value),!t||i.length!==t);n=!0);}catch(u){r=!0,a=u}finally{try{n||null==l.return||l.return()}finally{if(r)throw a}}return i}}function h(e){if(Array.isArray(e))return e}var p={props:{linkIcon:{type:String,default:null},unlinkIcon:{type:String,default:null},strings:{type:Object,required:!0},defaultValue:{type:String,default:"0 0 0 0"}},mixins:[e.default],components:{SideInput:t.default,SideDropdown:i.default},data:function(){return{linkValues:!1,sideValues:{top:0,right:0,bottom:0,left:0},lastEdited:"top",type:"px",suppressDirty:!0}},mounted:function(){this.assignDefaultValue(),this.parseElementValue()},updated:function(){this.suppressDirty=!1},watch:{sideValues:{handler:function(){this.calculateElementValue()},deep:!0},elementMainValue:{handler:function(e){this.setAllValues(e),this.generateChangeEvent(e),this.suppressDirty&&this.resetMountedState(),this.setTableDirty(!0)},immediate:!0},linkValues:function(){this.calculateElementValue()},type:function(){this.calculateElementValue()}},methods:{inputChanged:function(e){this.lastEdited=e},calculateElementValue:function(){var e=this;this.assignLinkedValues(),this.elementMainValue=Object.keys(this.sideValues).map(function(t){if(Object.prototype.hasOwnProperty.call(e.sideValues,t))return e.sideValues[t]+e.type}).join(" ")},assignLinkedValues:function(){var e=this;this.linkValues&&Object.keys(this.sideValues).filter(function(t){return t!==e.lastEdited}).map(function(t){Object.prototype.hasOwnProperty.call(e.sideValues,t)&&(e.sideValues[t]=e.sideValues[e.lastEdited])})},parseElementValue:function(){var e="px";this.elementMainValue.split(" ").map(function(t){var i=t.match(/([a-z%?]+)/);if(i&&i[1]){var n=u(i,2);e=n[1]}}),this.type=e;var t=r(this.elementMainValue.matchAll(/[\d]+/g)).flatMap(function(e){return Number.parseInt(e[0],10)});if(t)if(1===t.length){var i=u(t,1);this.sideValues.top=i[0];var n=u(t,1);this.sideValues.bottom=n[0];var a=u(t,1);this.sideValues.left=a[0];var s=u(t,1);this.sideValues.right=s[0],this.linkValues=!0}else if(2===t.length){var l=u(t,2);this.sideValues.bottom=l[0],this.sideValues.left=l[1];var o=u(t,2);this.sideValues.top=o[0],this.sideValues.right=o[1]}else if(3===t.length){var d=u(t,3);this.sideValues.top=d[0],this.sideValues.right=d[1],this.sideValues.bottom=d[2],this.sideValues.left=0}else{var f=u(t,4);this.sideValues.top=f[0],this.sideValues.right=f[1],this.sideValues.bottom=f[2],this.sideValues.left=f[3]}}}};exports.default=p;
111
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("div",[t("div",{staticClass:"wptb-settings-item-header-include-right"},[t("div",{staticClass:"wptb-settings-space-between"},[t("div",[e._v(e._s(e._f("cap")(e.label)))]),e._v(" "),t("div",{on:{click:function(s){s.preventDefault(),e.linkValues=!e.linkValues}}},[e.linkValues?t("div",{staticClass:"wptb-sides-link-icon-wrapper"},[t("img",{attrs:{src:e.unlinkIcon,title:e.strings.unlink}})]):t("div",{staticClass:"wptb-sides-link-icon-wrapper"},[t("img",{attrs:{src:e.linkIcon,title:e.strings.link}})])])])]),e._v(" "),t("div",{staticClass:"wptb-settings-row wptb-settings-middle-xs wptb-sides-controls-wrapper",class:{"wptb-side-values-linked":e.linkValues}},[e._l(e.sideValues,function(s,i){return t("side-input",{key:i,attrs:{label:e.strings[i]},on:{changedFromFront:e.inputChanged},model:{value:e.sideValues[i],callback:function(s){e.$set(e.sideValues,i,s)},expression:"sideValues[k]"}})}),e._v(" "),t("side-dropdown",{model:{value:e.type,callback:function(s){e.type=s},expression:"type"}})],2)])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
112
  },{"../mixins/ControlBase":"LTB1","../components/SideInput":"n7p4","../components/SideDropdown":"VsoX"}],"Qbmt":[function(require,module,exports) {
113
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=n(require("vue")),t=n(require("../functions/WPTB_ControlsManager")),r=n(require("../containers/SidesControl")),o=n(require("../plugins/filters"));function n(e){return e&&e.__esModule?e:{default:e}}var u={name:"ControlSides",handler:function(n){var u=t.default.getControlData(n);e.default.use(o.default),new e.default({data:u,components:{SidesControl:r.default}}).$mount("#".concat(n))}};exports.default=u;
114
+ },{"vue":"HYXJ","../functions/WPTB_ControlsManager":"WZJa","../containers/SidesControl":"ouPJ","../plugins/filters":"GZC0"}],"Igda":[function(require,module,exports) {
115
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t={props:{title:{type:String,default:"item"},id:{type:String,required:!0},active:{type:Boolean,default:!1}},watch:{active:function(t){!0===t&&this.$emit("activateItem",this.id,this.$refs.itemWrapper)}},methods:{activateItem:function(t){this.$emit("activateItem",this.id,t.target)}}};exports.default=t;
116
+ (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this,e=t.$createElement;return(t._self._c||e)("div",{ref:"itemWrapper",staticClass:"wptb-named-toggle-item",attrs:{"data-wptb-named-toggle-active":t.active},on:{"!click":function(e){return e.preventDefault(),t.activateItem(e)}}},[t._v(" "+t._s(t.title)+"\n")])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
117
+ },{}],"Cqv2":[function(require,module,exports) {
118
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t={props:{refElement:{type:HTMLElement,default:null}},data:function(){return{style:{left:0,top:0,width:0}}},watch:{refElement:function(t){null!=t&&this.calculatePosition()}},methods:{calculatePosition:function(){var t=this.$refs.main.parentNode.getBoundingClientRect(),e=this.refElement.getBoundingClientRect(),n=e.x-t.x;this.style.left="".concat(Math.floor(n-1),"px"),this.style.width="".concat(e.width+1,"px")}}};exports.default=t;
119
+ (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this.$createElement;return(this._self._c||t)("div",{ref:"main",staticClass:"wptb-named-toggle-active-indicator",style:this.style})},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
120
+ },{}],"rI0T":[function(require,module,exports) {
121
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=i(require("../mixins/ControlBase")),t=i(require("../components/NamedToggleItem")),n=i(require("../components/NamedToggleActiveIndicator"));function i(e){return e&&e.__esModule?e:{default:e}}var a={components:{NamedToggleActiveIndicator:n.default,NamedToggleItem:t.default},props:{items:{type:Object,default:function(){return{item:"item"}}}},mixins:[e.default],data:function(){return{activeElement:null}},mounted:function(){this.assignDefaultValue()},watch:{elementMainValue:function(e){this.setAllValues(e),this.generateChangeEvent(e),this.setTableDirty(!0)}},methods:{isItemActive:function(e){return this.elementMainValue===e},activateItem:function(e,t){this.elementMainValue=e,this.activeElement=t}}};exports.default=a;
122
+ (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"wptb-settings-row wptb-settings-middle-xs wptb-element-property",class:t.uniqueId,attrs:{"data-element":t.elemContainer}},[s("div",{staticClass:"wptb-settings-space-between"},[s("p",{staticClass:"wptb-settings-item-title"},[t._v(t._s(t.label))]),t._v(" "),s("div",{staticClass:"wptb-named-toggle-control-wrapper"},[s("named-toggle-active-indicator",{attrs:{"ref-element":t.activeElement}}),t._v(" "),t._l(t.items,function(e,i){return s("named-toggle-item",{key:i,attrs:{title:e,id:i,active:t.isItemActive(i)},on:{activateItem:t.activateItem}})})],2)])])},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
123
+ },{"../mixins/ControlBase":"LTB1","../components/NamedToggleItem":"Igda","../components/NamedToggleActiveIndicator":"Cqv2"}],"mWd1":[function(require,module,exports) {
124
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=r(require("vue")),t=r(require("../functions/WPTB_ControlsManager")),o=r(require("../containers/NamedToggleControl"));function r(e){return e&&e.__esModule?e:{default:e}}var a={name:"ControlNamedToggle",handler:function(r){var a=t.default.getControlData(r);new e.default({data:a,components:{NamedToggleControl:o.default}}).$mount("#".concat(r))}};exports.default=a;
125
+ },{"vue":"HYXJ","../functions/WPTB_ControlsManager":"WZJa","../containers/NamedToggleControl":"rI0T"}],"Zn1h":[function(require,module,exports) {
126
 
127
+ "use strict";var e=d(require("vue")),t=d(require("./mountPoints/WPTB_IconSelectControl")),o=d(require("./mountPoints/WPTB_RangeControl")),n=d(require("./mountPoints/WPTB_Select2Control")),r=d(require("./mountPoints/WPTB_MediaSelectControl")),u=d(require("./functions/WPTB_ControlsManager")),l=d(require("./mountPoints/WPTB_ResponsiveTable")),i=d(require("./mountPoints/WPTB_SidesControl")),a=d(require("./mountPoints/WPTB_NamedToggleControl"));function d(e){return e&&e.__esModule?e:{default:e}}e.default.config.productionTip=!1;var f=self||void 0;f.WPTB_ControlsManager=u.default;var s=[t.default,o.default,u.default,n.default,r.default,l.default,i.default,a.default];function P(e){u.default.addControlScript(e.name,e.handler)}s.map(P);
128
+ },{"vue":"HYXJ","./mountPoints/WPTB_IconSelectControl":"Pn7d","./mountPoints/WPTB_RangeControl":"YVYX","./mountPoints/WPTB_Select2Control":"eNVe","./mountPoints/WPTB_MediaSelectControl":"Uwhc","./functions/WPTB_ControlsManager":"WZJa","./mountPoints/WPTB_ResponsiveTable":"Ub7O","./mountPoints/WPTB_SidesControl":"Qbmt","./mountPoints/WPTB_NamedToggleControl":"mWd1"}]},{},["Zn1h"], null)
inc/admin/js/WPTB_Import_Menu.js CHANGED
@@ -30,7 +30,7 @@ var e=arguments[3];Object.defineProperty(exports,"__esModule",{value:!0}),export
30
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{center:{type:Boolean,default:!1}}};exports.default=e;
31
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"wptb-settings-controls-wrapper",class:[this.center?"center":"grid"]},[e("transition",{attrs:{name:"wptb-fade",mode:"out-in"}},[this._t("default")],2)],1)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
32
  },{}],"vU4o":[function(require,module,exports) {
33
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:["texts","file","allowedFormats"],model:{prop:"file",event:"fileChanged"},data:function(){return{dragActive:!1,currentFile:null}},mounted:function(){this.currentFile=this.file},watch:{currentFile:function(e){this.$emit("fileChanged",e)},file:function(e){this.currentFile=e}},computed:{eventClass:function(){return this.dragActive?"dragenter":""}},methods:{handleDrop:function(e){this.dragActive=!0;var t=e.dataTransfer;t.files[0]&&this.isTypeAllowed(t.files[0])&&(this.currentFile=t.files[0]),this.dragActive=!1},isTypeAllowed:function(e){var t=e.name.split(".").pop();return this.allowedFormats.includes(t)},openFileSelect:function(){this.$refs.fileSelect.click()},handleFileSelect:function(e){e.target.files.length>0&&this.isTypeAllowed(e.target.files[0])&&(this.currentFile=e.target.files[0])},clearCurrentFile:function(){this.currentFile=null}}};exports.default=e;
34
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"wptb-menu-file-drop",class:e.eventClass,on:{dragenter:function(t){t.stopPropagation(),t.preventDefault(),e.dragActive=!0},dragleave:function(t){t.stopPropagation(),t.preventDefault(),e.dragActive=!1},drop:function(t){return t.stopPropagation(),t.preventDefault(),e.handleDrop(t)},dragover:function(t){t.stopPropagation(),t.preventDefault(),e.dragActive=!0}}},[n("transition",{attrs:{name:"wptb-fade",mode:"out-in"}},[e.dragActive?n("div",{key:"fileLogo",staticClass:"file-icon"},[n("span",{staticClass:"dashicons dashicons-media-spreadsheet"})]):n("div",{key:"controls"},[n("transition",{attrs:{name:"wptb-fade",mode:"out-in"}},[null===e.currentFile?n("div",{key:"selection",staticClass:"wptb-flex wptb-flex-col wptb-flex-align-center"},[n("div",{staticClass:"hint"},[e._v(e._s(e.texts.hint))]),e._v(" "),n("div",{staticClass:"supported wptb-text-transform-none"},[e._v("("+e._s(e.allowedFormats.join(", "))+")")]),e._v(" "),n("div",[n("a",{on:{click:function(t){return t.preventDefault(),e.openFileSelect(t)}}},[e._v(e._s(e.texts.browse))]),e._v(" "),n("input",{ref:"fileSelect",staticStyle:{display:"none"},attrs:{type:"file"},on:{change:e.handleFileSelect}})])]):n("div",{key:"selected",staticClass:"wptb-flex wptb-flex-col wptb-flex-align-center"},[n("div",{staticClass:"file"},[e._v(e._s(e.currentFile.name))]),e._v(" "),n("div",[n("a",{on:{click:function(t){return t.preventDefault(),e.clearCurrentFile(t)}}},[e._v(e._s(e.texts.clear))])])])])],1)])],1)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
35
  },{}],"yXWm":[function(require,module,exports) {
36
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:["fieldData","modelBind"],methods:{isType:function(e){return this.fieldData.type===e}}};exports.default=e;
30
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:{center:{type:Boolean,default:!1}}};exports.default=e;
31
  (function(){var t=exports.default||module.exports;"function"==typeof t&&(t=t.options),Object.assign(t,{render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"wptb-settings-controls-wrapper",class:[this.center?"center":"grid"]},[e("transition",{attrs:{name:"wptb-fade",mode:"out-in"}},[this._t("default")],2)],1)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
32
  },{}],"vU4o":[function(require,module,exports) {
33
+ "use strict";function e(e,n){return l(e)||i(e,n)||r(e,n)||t()}function t(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var r=[],n=!0,i=!1,l=void 0;try{for(var o,a=e[Symbol.iterator]();!(n=(o=a.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(u){i=!0,l=u}finally{try{n||null==a.return||a.return()}finally{if(i)throw l}}return r}}function l(e){if(Array.isArray(e))return e}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var o={props:["texts","file","allowedFormats"],model:{prop:"file",event:"fileChanged"},data:function(){return{dragActive:!1,currentFile:null}},mounted:function(){this.currentFile=this.file},watch:{currentFile:function(e){this.$emit("fileChanged",e)},file:function(e){this.currentFile=e}},computed:{eventClass:function(){return this.dragActive?"dragenter":""}},methods:{handleDrop:function(t){this.dragActive=!0;var r=t.dataTransfer;if(r.files[0]&&this.isTypeAllowed(r.files[0])){var n=e(r.files,1);this.currentFile=n[0]}this.dragActive=!1},isTypeAllowed:function(e){var t=e.name.split(".").pop();return this.allowedFormats.includes(t)},openFileSelect:function(){this.$refs.fileSelect.click()},handleFileSelect:function(t){if(t.target.files.length>0&&this.isTypeAllowed(t.target.files[0])){var r=e(t.target.files,1);this.currentFile=r[0]}},clearCurrentFile:function(){this.currentFile=null}}};exports.default=o;
34
  (function(){var e=exports.default||module.exports;"function"==typeof e&&(e=e.options),Object.assign(e,{render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"wptb-menu-file-drop",class:e.eventClass,on:{dragenter:function(t){t.stopPropagation(),t.preventDefault(),e.dragActive=!0},dragleave:function(t){t.stopPropagation(),t.preventDefault(),e.dragActive=!1},drop:function(t){return t.stopPropagation(),t.preventDefault(),e.handleDrop(t)},dragover:function(t){t.stopPropagation(),t.preventDefault(),e.dragActive=!0}}},[n("transition",{attrs:{name:"wptb-fade",mode:"out-in"}},[e.dragActive?n("div",{key:"fileLogo",staticClass:"file-icon"},[n("span",{staticClass:"dashicons dashicons-media-spreadsheet"})]):n("div",{key:"controls"},[n("transition",{attrs:{name:"wptb-fade",mode:"out-in"}},[null===e.currentFile?n("div",{key:"selection",staticClass:"wptb-flex wptb-flex-col wptb-flex-align-center"},[n("div",{staticClass:"hint"},[e._v(e._s(e.texts.hint))]),e._v(" "),n("div",{staticClass:"supported wptb-text-transform-none"},[e._v("("+e._s(e.allowedFormats.join(", "))+")")]),e._v(" "),n("div",[n("a",{on:{click:function(t){return t.preventDefault(),e.openFileSelect(t)}}},[e._v(e._s(e.texts.browse))]),e._v(" "),n("input",{ref:"fileSelect",staticStyle:{display:"none"},attrs:{type:"file"},on:{change:e.handleFileSelect}})])]):n("div",{key:"selected",staticClass:"wptb-flex wptb-flex-col wptb-flex-align-center"},[n("div",{staticClass:"file"},[e._v(e._s(e.currentFile.name))]),e._v(" "),n("div",[n("a",{on:{click:function(t){return t.preventDefault(),e.clearCurrentFile(t)}}},[e._v(e._s(e.texts.clear))])])])])],1)])],1)},staticRenderFns:[],_compiled:!0,_scopeId:null,functional:void 0});})();
35
  },{}],"yXWm":[function(require,module,exports) {
36
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e={props:["fieldData","modelBind"],methods:{isType:function(e){return this.fieldData.type===e}}};exports.default=e;
inc/admin/js/WPTB_ResponsiveFrontend.js CHANGED
@@ -681,8 +681,8 @@
681
  * Bind rebuilding of tables to window resize event.
682
  */
683
  this.bindRebuildToResize = () => {
684
- window.addEventListener('resize', (e) => {
685
- this.rebuildTables(e.target.innerWidth);
686
  });
687
  };
688
 
@@ -1163,13 +1163,34 @@
1163
  * @param {number} size screen size
1164
  */
1165
  this.rebuildTables = (size) => {
1166
- if (!size) {
1167
- // eslint-disable-next-line no-param-reassign
1168
- size = window.innerWidth;
1169
- }
1170
  // eslint-disable-next-line array-callback-return
1171
  this.elementObjects.map((o) => {
1172
- this.rebuildTable(o.el, size, o.tableObject);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1173
  });
1174
  };
1175
 
681
  * Bind rebuilding of tables to window resize event.
682
  */
683
  this.bindRebuildToResize = () => {
684
+ window.addEventListener('resize', () => {
685
+ this.rebuildTables();
686
  });
687
  };
688
 
1163
  * @param {number} size screen size
1164
  */
1165
  this.rebuildTables = (size) => {
 
 
 
 
1166
  // eslint-disable-next-line array-callback-return
1167
  this.elementObjects.map((o) => {
1168
+ let innerSize = size;
1169
+ if (!size) {
1170
+ // eslint-disable-next-line no-param-reassign
1171
+ innerSize = window.innerWidth;
1172
+
1173
+ const directives = this.getDirective(o.el);
1174
+ // calculate size according to relative width directive
1175
+ if (directives && directives.relativeWidth) {
1176
+ switch (directives.relativeWidth) {
1177
+ case 'window':
1178
+ // eslint-disable-next-line no-param-reassign
1179
+ innerSize = window.innerWidth;
1180
+ break;
1181
+ case 'container':
1182
+ // get the size of the container table is in
1183
+ // eslint-disable-next-line no-param-reassign
1184
+ innerSize = o.el.parentNode.parentNode.parentNode.clientWidth;
1185
+ break;
1186
+ default:
1187
+ // eslint-disable-next-line no-param-reassign
1188
+ innerSize = window.innerWidth;
1189
+ break;
1190
+ }
1191
+ }
1192
+ }
1193
+ this.rebuildTable(o.el, innerSize, o.tableObject);
1194
  });
1195
  };
1196
 
inc/admin/js/admin.js CHANGED
@@ -1,95 +1,5 @@
1
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
2
 
3
- function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
4
-
5
- var applyGenericItemSettings = function applyGenericItemSettings(element, kindIndexProt) {
6
- var copy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7
-
8
- var node = element.getDOMElement(),
9
- index,
10
- copy;
11
- if (node.classList.contains('wptb-ph-element')) {
12
- if (kindIndexProt == undefined || copy == true) {
13
- //index = document.counter.nextIndex( element.kind );
14
- var wptbElements = document.getElementsByClassName('wptb-ph-element');
15
- var elementIndexesArr = [];
16
- for (var i = 0; i < wptbElements.length; i++) {
17
- var regex = new RegExp('wptb-element-' + element.kind + '-(\\d+)', "i");
18
- var infArr = wptbElements[i].className.match(regex);
19
- if (infArr) {
20
- elementIndexesArr.push(infArr[1]);
21
- }
22
- }
23
- if (elementIndexesArr.length > 0) {
24
- var elementIndexMax = Math.max.apply(Math, elementIndexesArr);
25
- index = elementIndexMax + 1;
26
- } else {
27
- index = 1;
28
- }
29
-
30
- if (copy) {
31
- // change all data-elements which save parameters for different controls
32
- var wptbNodeattributes = [].concat(_toConsumableArray(node.attributes));
33
- for (var _i = 0; _i < wptbNodeattributes.length; _i++) {
34
- if (wptbNodeattributes[_i] && _typeof(wptbNodeattributes[_i]) === 'object' && wptbNodeattributes[_i].nodeName) {
35
- var regularText = new RegExp('data-wptb-el-' + element.kind + '-(\\d+)-([a-zA-Z0-9_-]+)', "i");
36
- var attr = wptbNodeattributes[_i].nodeName.match(regularText);
37
- if (attr && Array.isArray(attr)) {
38
- var newDataAttributeName = wptbNodeattributes[_i].nodeName.replace(element.kind + '-' + attr[1], element.kind + '-' + index);
39
- var newDataAttributeValue = wptbNodeattributes[_i].nodeValue;
40
- node.removeAttribute(wptbNodeattributes[_i].nodeName);
41
- node.setAttribute(newDataAttributeName, newDataAttributeValue);
42
- }
43
- }
44
- }
45
- }
46
- } else if (kindIndexProt && !copy) {
47
- var kindIndexProtArr = kindIndexProt.split('-');
48
- index = kindIndexProtArr[kindIndexProtArr.length - 1];
49
- // start element javascript if element is new
50
- }
51
-
52
- var node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\d+)/i);
53
- if (node_wptb_element_kind_num) {
54
- node.classList.remove(node_wptb_element_kind_num[0]);
55
- }
56
- if (!node.classList.contains('wptb-ph-element')) {
57
- node.classList.add('wptb-ph-element');
58
- if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
59
- node.classList.add('wptb-element-' + element.kind + '-' + index);
60
- }
61
- } else {
62
- if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
63
- node.classList.add('wptb-element-' + element.kind + '-' + index);
64
- }
65
- }
66
- WPTB_Helper.elementStartScript(element.getDOMElement());
67
- new WPTB_ElementOptions(element, index, kindIndexProt);
68
- document.counter.increment(element.kind);
69
- }
70
-
71
- node.onmouseenter = function (event) {
72
- if (event.target.classList.contains('wptb-moving-mode')) {
73
- return;
74
- }
75
-
76
- var wptbActionsField = new WPTB_ActionsField();
77
-
78
- wptbActionsField.addActionField(1, node);
79
-
80
- wptbActionsField.setParameters(node);
81
-
82
- node.classList.remove('wptb-ondragenter');
83
- };
84
-
85
- node.onmouseleave = function (event) {
86
- var wptbActionsField = new WPTB_ActionsField();
87
-
88
- wptbActionsField.leaveFromField(event, node);
89
- };
90
- };
91
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
92
-
93
  var WPTB_ActionsField = function WPTB_ActionsField() {
94
  var _this = this;
95
 
@@ -164,6 +74,8 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
164
 
165
  var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
166
  wptbTableStateSaveManager.tableStateSet();
 
 
167
  };
168
 
169
  btnCopy.onclick = function (event) {
@@ -1629,84 +1541,151 @@ var WPTB_Helper = {
1629
  }, false);
1630
  }
1631
  },
1632
- //
1633
- appearDependOnControl: function appearDependOnControl(dependOn, targetControlElementClass) {
1634
- if (Array.isArray(dependOn)) {
1635
- var dependOnControlName = dependOn[0];
 
 
 
 
 
 
 
 
 
1636
  var infArr = targetControlElementClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
1637
-
 
1638
  if (infArr && Array.isArray(infArr)) {
1639
  var controlName = infArr[3];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1640
 
1641
- var dependOnControlElementClass = targetControlElementClass.replace(controlName, dependOnControlName);
 
1642
 
1643
- var dependOnControlElement = document.getElementsByClassName(dependOnControlElementClass);
 
1644
 
1645
- if (dependOnControlElement.length > 0) {
1646
- dependOnControlElement = dependOnControlElement[0];
1647
- var targetControlElement = document.getElementsByClassName(targetControlElementClass);
1648
- if (targetControlElement.length > 0) {
1649
- targetControlElement = targetControlElement[0];
1650
- var controlContainerElem = WPTB_Helper.findAncestor(targetControlElement, 'wptb-element-option');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1651
 
1652
- if (controlContainerElem) {
1653
- var showHideDependOnControlElement = function showHideDependOnControlElement(dependOnControlElementClass, dependOn) {
1654
-
1655
- // let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );
1656
- // if( elementsSettingsTemplateJs.length > 0 ) {
1657
- // elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];
1658
- //
1659
- // let elementsSettings = elementsSettingsTemplateJs.innerHTML;
1660
- // if( elementsSettings ) {
1661
- // elementsSettings = elementsSettings.trim();
1662
- // elementsSettings = JSON.parse( elementsSettings );
1663
- // if( elementsSettings && typeof elementsSettings === 'object' &&
1664
- // ( 'tmpl-wptb-el-datas-' + dependOnControlElementKind ) in elementsSettings ) {
1665
- // let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + dependOnControlElementKind];
1666
- // if( elementSettings && typeof elementSettings === 'object' &&
1667
- // ( 'data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName ) in elementSettings ) {
1668
- // let elementSettingValue = elementSettings['data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName];
1669
- //
1670
- // if( elementSettingValue ) {
1671
- // if( dependOn[1] && Array.isArray( dependOn[1] ) &&
1672
- // ( dependOn[1].indexOf( elementSettingValue ) !== -1 ) ) {
1673
- // controlContainerElem.style.display = 'block';
1674
- // } else if( dependOn[2] && Array.isArray( dependOn[2] ) &&
1675
- // ( dependOn[2].indexOf( elementSettingValue ) !== -1 ) ) {
1676
- // controlContainerElem.style.display = 'none';
1677
- // }
1678
- // }
1679
- // }
1680
- // }
1681
- // }
1682
- // }
1683
- if (dependOnControlElementClass) {
1684
- var dependOnControlElements = document.getElementsByClassName(dependOnControlElementClass);
1685
- if (dependOnControlElements.length > 0) {
1686
- var targetControlValue = WPTB_Helper.targetControlValueGet(dependOnControlElements);
1687
-
1688
- if (dependOn[1] && Array.isArray(dependOn[1]) && dependOn[1].indexOf(targetControlValue) !== -1) {
1689
- controlContainerElem.style.display = 'block';
1690
- var childCheck = controlContainerElem.querySelector('input[type="checkbox"]');
1691
- if (childCheck) {
1692
- childCheck.checked = true;
1693
- }
1694
- } else if (dependOn[2] && Array.isArray(dependOn[2]) && dependOn[2].indexOf(targetControlValue) !== -1) {
1695
- controlContainerElem.style.display = 'none';
1696
- }
1697
- }
1698
- }
1699
- };
1700
 
1701
- showHideDependOnControlElement(dependOnControlElementClass, dependOn);
 
1702
 
1703
- dependOnControlElement.addEventListener('change', function (event) {
1704
- showHideDependOnControlElement(dependOnControlElementClass, dependOn);
1705
- }, false);
 
 
1706
  }
1707
  }
1708
  }
1709
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1710
  }
1711
  },
1712
  //
@@ -1893,7 +1872,7 @@ var WPTB_Helper = {
1893
  }
1894
  },
1895
  //
1896
- elementOptionsSet: function elementOptionsSet(kind, element) {
1897
  // get controls config for this element
1898
  var wptbContrlStacksConfigId = 'wptb-' + kind + '-control-stack';
1899
  var tmplControlsConfig = wp.template(wptbContrlStacksConfigId);
@@ -1926,6 +1905,20 @@ var WPTB_Helper = {
1926
  data = {
1927
  container: '.' + infArr[0]
1928
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1929
 
1930
  elementContainerClass = infArr[0];
1931
  elementOptionClassIndic = infArr[1];
@@ -1940,18 +1933,11 @@ var WPTB_Helper = {
1940
  for (var _i4 = 0; _i4 < children.length; _i4++) {
1941
  if (children[_i4].style) children[_i4].style.display = 'none';
1942
  }
1943
-
1944
- // hide wptb-elements-container and wptb-settings-section
1945
- // document.getElementsByClassName( 'wptb-elements-container' )[0].style.display = 'none';
1946
- // document.getElementsByClassName( 'wptb-settings-section' )[0].style.display = 'none';
1947
-
1948
- // show element-options-group
1949
- // document.getElementById( 'element-options-group' ).style.display = 'block';
1950
  this.activateSection('options_group');
1951
  }
1952
 
1953
- var jsonControlsConfigJson = tmplControlsConfig(data);
1954
- var jsonControlsConfig = JSON.parse(jsonControlsConfigJson);
1955
 
1956
  var elementOptionsGroupIdsInvolved = [],
1957
  elementOptionsGroupInvolved = {},
@@ -1960,14 +1946,22 @@ var WPTB_Helper = {
1960
  // object for save all scrips for each controls
1961
  var controlScriptsObj = {};
1962
 
1963
- // array for keep "appear depend on" parametrs
1964
  var controlappearDependOnControl = [];
1965
 
 
 
 
1966
  // create controls
1967
  var elementOptionsScriptsContainerIndic = false;
 
 
 
 
 
1968
  var i = 0;
1969
- Object.keys(jsonControlsConfig).forEach(function (key) {
1970
- var data = jsonControlsConfig[key];
1971
  data.controlKey = key;
1972
 
1973
  // get necessary wp js template
@@ -1975,6 +1969,11 @@ var WPTB_Helper = {
1975
 
1976
  data.elemContainer = elementContainerClass;
1977
  data.elementControlTargetUnicClass = 'wptb-el-' + elementOptionClassIndic + '-' + data.controlKey;
 
 
 
 
 
1978
  var controlTemplate = tmplControlTemplate(data);
1979
  if ('appearDependOnControl' in data) {
1980
  if (Array.isArray(data.appearDependOnControl)) {
@@ -1982,6 +1981,12 @@ var WPTB_Helper = {
1982
  }
1983
  }
1984
 
 
 
 
 
 
 
1985
  function elementOptionsContainerInvolvedGet(elementOptionsGroupId, elementOptionsContainerInvolved) {
1986
  if (!elementOptionsContainerInvolved[elementOptionsGroupId]) {
1987
  var elementOptionsContainer = document.createElement('div');
@@ -1993,7 +1998,7 @@ var WPTB_Helper = {
1993
  return elementOptionsContainerInvolved[elementOptionsGroupId];
1994
  }
1995
 
1996
- if (elementOptionsGroupIdsInvolved.indexOf(data.elementOptionsGroupId) == -1) {
1997
  elementOptionsGroupIdsInvolved.push(data.elementOptionsGroupId);
1998
  // clear elements from options group
1999
  //document.getElementById( 'element-options-group' ).innerHTML = '';
@@ -2007,7 +2012,7 @@ var WPTB_Helper = {
2007
 
2008
  controlElementParent = elementOptionsGroupInvolved[data.elementOptionsGroupId];
2009
 
2010
- if (data.elementOptionsContainerOn === 'true') {
2011
  controlElementParent = elementOptionsContainerInvolvedGet(data.elementOptionsGroupId, elementOptionsContainerInvolved);
2012
  }
2013
 
@@ -2023,8 +2028,21 @@ var WPTB_Helper = {
2023
  elementOptionContainer.setAttribute('style', data.containerAdditionalStyles);
2024
  }
2025
 
2026
- controlElementParent.appendChild(elementOptionContainer);
 
 
 
 
2027
 
 
 
 
 
 
 
 
 
 
2028
  controlElementParent = elementOptionContainer;
2029
  }
2030
  controlElementParent.innerHTML = controlElementParent.innerHTML + controlTemplate;
@@ -2036,6 +2054,7 @@ var WPTB_Helper = {
2036
  controlElementParent.removeChild(helperJavascriptElem);
2037
  var script = document.createElement('script');
2038
  script.setAttribute('type', 'text/javascript');
 
2039
  script.innerHTML = helperJavascriptCode.replace(/\r|\n|\t/g, '').trim();
2040
  if (!controlScriptsObj[data.elementOptionsGroupId] || !Array.isArray(controlScriptsObj[data.elementOptionsGroupId])) {
2041
  controlScriptsObj[data.elementOptionsGroupId] = [];
@@ -2049,26 +2068,63 @@ var WPTB_Helper = {
2049
  element.optionsGroupIds = elementOptionsGroupIdsInvolved;
2050
 
2051
  Object.keys(controlScriptsObj).forEach(function (elementOptionsGroupId) {
 
 
 
 
 
 
2052
  var controlScriptsArr = controlScriptsObj[elementOptionsGroupId];
2053
- elementOptionsScriptsContainer = document.createElement('div');
2054
- elementOptionsScriptsContainer.classList.add('wptb-element-options-scripts', 'wptb-options-' + infArr[1]);
2055
- elementOptionsGroupInvolved[elementOptionsGroupId].appendChild(elementOptionsScriptsContainer);
2056
  if (controlScriptsArr.length > 0) {
2057
  for (var _i6 = 0; _i6 < controlScriptsArr.length; _i6++) {
2058
- elementOptionsScriptsContainer.appendChild(controlScriptsArr[_i6]);
 
 
 
 
 
 
 
 
2059
  }
2060
  }
2061
  });
2062
 
2063
  // run the scripts of controls
2064
 
2065
-
2066
  // run appearDependOnControl function
2067
  for (var _i7 = 0; _i7 < controlappearDependOnControl.length; _i7++) {
2068
  WPTB_Helper.appearDependOnControl(controlappearDependOnControl[_i7][0], controlappearDependOnControl[_i7][1]);
2069
  }
2070
 
2071
  WPTB_Helper.wptbDocumentEventGenerate('element:controls:active', element);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2072
  },
2073
 
2074
  /**
@@ -2087,9 +2143,9 @@ var WPTB_Helper = {
2087
  if (table.length > 0) {
2088
  table = table[0];
2089
 
2090
- var _infArr = table.className.match(/wptb-element-main(.+)-(\d+)/i);
2091
- if (_infArr && Array.isArray(_infArr)) {
2092
- selector = '.' + _infArr[0] + ' ' + selector;
2093
  }
2094
  }
2095
  }
@@ -2640,8 +2696,8 @@ var WPTB_Helper = {
2640
  wptbPreviewTable.parentNode.classList.remove('wptb-preview-table-manage-cells');
2641
  var wptbPreviewTableTds = wptbPreviewTable.getElementsByTagName('td');
2642
  if (wptbPreviewTableTds.length > 0) {
2643
- for (var _i8 = 0; _i8 < wptbPreviewTableTds.length; _i8++) {
2644
- wptbPreviewTableTds[_i8].classList.remove('wptb-highlighted');
2645
  }
2646
  }
2647
  toggleEditMode = 'closed';
@@ -2781,11 +2837,16 @@ var WPTB_Helper = {
2781
  getValueMaxCountSameElementsInArray: function getValueMaxCountSameElementsInArray(arr) {
2782
  if (arr && Array.isArray(arr)) {
2783
  var check = {};
 
2784
  for (var i = 0; i < arr.length; i++) {
2785
- if (check[arr[i]]) {
2786
- check[arr[i]]++;
 
 
 
 
2787
  } else {
2788
- check[arr[i]] = 1;
2789
  }
2790
  }
2791
 
@@ -2801,7 +2862,7 @@ var WPTB_Helper = {
2801
  }
2802
  }
2803
 
2804
- return maxPropName;
2805
  }
2806
  },
2807
 
@@ -2859,10 +2920,10 @@ var WPTB_Helper = {
2859
  }
2860
  }
2861
  jMainIter++;
 
2862
 
2863
- if (j > maxCols) {
2864
- maxCols = j;
2865
- }
2866
  }
2867
 
2868
  if (i == 0) {
@@ -2932,193 +2993,120 @@ var WPTB_Helper = {
2932
  // get drag relative type
2933
  getDragRelativeType: function getDragRelativeType() {
2934
  return this.dragRelativeType;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2935
  }
2936
  };
2937
  var WPTB_Initializer = function WPTB_Initializer() {
2938
 
2939
- var MIN_COLUMNS = 1,
2940
- MIN_ROWS = 1,
2941
- MAX_COLUMNS = 30,
2942
- MAX_ROWS = 30;
2943
 
2944
- var tableGenerator = document.body;
2945
- columnsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[0], columnsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[0], rowsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[1], rowsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[1], columnsInput = document.getElementById('wptb-columns-number'), rowsInput = document.getElementById('wptb-rows-number');
2946
 
2947
- columnsDecrementButton.onclick = function () {
2948
- if (columnsInput.value > MIN_COLUMNS) {
2949
- columnsInput.value--;
2950
- }
2951
- };
2952
 
2953
- columnsIncrementButton.onclick = function () {
2954
- if (columnsInput.value < MAX_COLUMNS) {
2955
- columnsInput.value++;
2956
- }
2957
- };
2958
 
2959
- rowsDecrementButton.onclick = function () {
2960
- if (rowsInput.value > MIN_ROWS) {
2961
- rowsInput.value--;
2962
- }
2963
- };
2964
 
2965
- rowsIncrementButton.onclick = function () {
2966
- if (rowsInput.value < MAX_ROWS) {
2967
- rowsInput.value++;
2968
- }
2969
- };
2970
 
2971
- document.getElementById('wptb-generate-table').onclick = function () {
2972
- var columns = document.getElementById('wptb-columns-number').value,
2973
- rows = document.getElementById('wptb-rows-number').value;
2974
 
2975
- //wptbTableStateSaveManager.tableStateClear();
2976
 
2977
- WPTB_Table(columns, rows);
2978
 
2979
- var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
2980
- wptbTableStateSaveManager.tableStateSet();
2981
- };
 
 
 
 
2982
 
2983
- // register and setup section buttons
2984
- WPTB_Helper.registerSections(['elements', 'table_settings', 'cell_settings', 'options_group', 'table_responsive_menu']);
2985
- WPTB_Helper.setupSectionButtons();
2986
 
2987
- // activate elements section for startup
2988
- WPTB_Helper.activateSection('elements');
 
2989
 
2990
- // side bar toggle setup
2991
- // WPTB_Helper.setupSidebarToggle('.wptb-panel-drawer-toggle');
2992
- WPTB_Helper.setupSidebarToggle('.wptb-panel-toggle-section .wptb-panel-drawer-icon');
2993
 
2994
- // setup panel sections that have the ability to be toggled on/off
2995
- WPTB_Helper.setupPanelToggleButtons();
2996
 
2997
- // setup responsive menu both at left and builder panel
2998
- new WptbResponsive('table_responsive_menu', 'wptbResponsiveApp', '.wptb-builder-content');
2999
 
3000
- // get builder section from url parameter for easy switch at page load
3001
- WPTB_Helper.getSectionFromUrl();
 
 
 
3002
  };
3003
- var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
3004
 
3005
- element.ondragenter = function (e) {
3006
- var div;
3007
- if (e.dataTransfer.types.indexOf('wptbelement') == -1 && e.dataTransfer.types.indexOf('wptb-moving-mode') == -1) {
3008
- return;
3009
- }
3010
- WPTB_DropHandle(this, e);
3011
 
3012
- element.classList.add('wptb-ondragenter');
3013
- };
3014
- element.ondragover = function (e) {
3015
- e.preventDefault();
3016
- WPTB_DropHandle(this, e);
3017
- };
3018
- element.ondragleave = function (e) {
3019
- WPTB_DropHandle(this, e, true);
3020
- };
3021
- element.ondrop = function (e) {
3022
- this.classList.remove('wptb-ondragenter');
3023
- var element = void 0,
3024
- classId = void 0;
3025
- e.preventDefault();
3026
- e.stopPropagation();
3027
-
3028
- if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {
3029
- return;
3030
- }
3031
- var wptbDropHandle = void 0,
3032
- wptbDropBorderMarker = void 0;
3033
- if (document.getElementsByClassName('wptb-drop-handle').length > 0) {
3034
- wptbDropHandle = document.getElementsByClassName('wptb-drop-handle')[0];
3035
- }
3036
- if (document.getElementsByClassName('wptb-drop-border-marker').length > 0) {
3037
- wptbDropBorderMarker = document.getElementsByClassName('wptb-drop-border-marker')[0];
3038
- }
3039
-
3040
- if (e.dataTransfer.getData('wptbElement')) {
3041
- element = WPTB_Helper.newElementProxy(e.dataTransfer.getData('wptbElement'));
3042
- element = element.getDOMElement();
3043
- } else {
3044
- classId = e.dataTransfer.getData('node');
3045
- element = document.getElementsByClassName(classId)[0];
3046
- //element.classList.remove( 'wptb-moving-mode' );
3047
- }
3048
-
3049
- if (WPTB_Helper.getDragRelativeType() === 'td_relative') {
3050
- WPTB_DropHandle(this, e, true);
3051
- var parentCell = WPTB_Helper.getParentOfType('td', e.target);
3052
-
3053
- parentCell.appendChild(element);
3054
- WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
3055
- } else if (wptbDropHandle.style.display == 'block') {
3056
- var td = void 0;
3057
- if (wptbDropHandle.dataset.text == 'Drop Here') {
3058
- td = wptbDropHandle.getDOMParentElement();
3059
- td.appendChild(element);
3060
- WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
3061
- } else {
3062
- var innerElement = wptbDropHandle.getDOMParentElement();
3063
- td = innerElement.parentNode;
3064
-
3065
- if (wptbDropHandle.dataset.text == 'Above Element') {
3066
- td.insertBefore(element, innerElement);
3067
- WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
3068
- } else if (wptbDropHandle.dataset.text == 'Below Element') {
3069
- var innerElementNext = innerElement.nextSibling;
3070
- td.insertBefore(element, innerElementNext);
3071
- WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
3072
- }
3073
- }
3074
-
3075
- var thisRow = td.parentNode;
3076
- if (WPTB_Helper.rowIsTop(thisRow)) {
3077
- var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
3078
-
3079
- if (table.classList.contains('wptb-table-preview-head')) {
3080
- WPTB_Helper.dataTitleColumnSet(table);
3081
- }
3082
- }
3083
-
3084
- // start item javascript if item is new
3085
- var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
3086
- var elemKind = infArr[1];
3087
- if (e.dataTransfer.getData('wptbElement') && (elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list')) {
3088
- //WPTB_Helper.elementStartScript( element );
3089
- }
3090
- } else {
3091
- return;
3092
- }
3093
-
3094
- if (wptbDropHandle) {
3095
- wptbDropHandle.style.display = 'none';
3096
- wptbDropBorderMarker.style.display = 'none';
3097
- }
3098
-
3099
- WPTB_innerElementSet(element);
3100
-
3101
- if (!element.classList.contains('wptb-image-container') || element.classList.contains('wptb-moving-mode')) {
3102
- element.classList.remove('wptb-moving-mode');
3103
- var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
3104
- wptbTableStateSaveManager.tableStateSet();
3105
- }
3106
- return true;
3107
- };
3108
- element.onmouseover = function (e) {
3109
- element.classList.remove('wptb-ondragenter');
3110
- };
3111
- };
3112
- var WPTB_LeftPanel = function WPTB_LeftPanel() {
3113
-
3114
- var table = document.getElementsByClassName('wptb-preview-table')[0],
3115
- wptbElementButtons = document.getElementsByClassName('wptb-element');
3116
-
3117
- for (var i = 0; i < wptbElementButtons.length; i++) {
3118
- wptbElementButtons[i].ondragstart = function (e) {
3119
- e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);
3120
- e.dataTransfer.setData('wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement);
3121
- };
3122
  };
3123
 
3124
  if (table) {
@@ -3126,18 +3114,6 @@ var WPTB_LeftPanel = function WPTB_LeftPanel() {
3126
  for (var _i = 0; _i < wptbTablesEditModeCloseButton.length; _i++) {
3127
  wptbTablesEditModeCloseButton[_i].onclick = WPTB_Helper.toggleTableEditMode;
3128
  }
3129
- document.getElementById('wptb-add-end-row').onclick = table.addRowToTheEnd;
3130
- document.getElementById('wptb-add-start-row').onclick = table.addRowToTheStart;
3131
- document.getElementById('wptb-add-row-before').onclick = table.addRowBefore;
3132
- document.getElementById('wptb-add-row-after').onclick = table.addRowAfter;
3133
- document.getElementById('wptb-add-end-column').onclick = table.addColumnEnd;
3134
- document.getElementById('wptb-add-start-column').onclick = table.addColumnStart;
3135
- document.getElementById('wptb-add-column-before').onclick = table.addColumnBefore;
3136
- document.getElementById('wptb-add-column-after').onclick = table.addColumnAfter;
3137
- document.getElementById('wptb-delete-column').onclick = table.deleteColumn;
3138
- document.getElementById('wptb-delete-row').onclick = table.deleteRow;
3139
- document.getElementById('wptb-merge-cells').onclick = table.mergeCells;
3140
- document.getElementById('wptb-split-cell').onclick = table.splitCell;
3141
  };
3142
 
3143
  // this code hides the "element parameters" area
@@ -4458,6 +4434,7 @@ var array = [],
4458
  td.getDOMElement().setAttribute('style', currentTdStyle);
4459
  td.getDOMElement().style.width = null;
4460
  td.getDOMElement().style.height = null;
 
4461
  }
4462
 
4463
  table.rows[i].appendChild(td.getDOMElement());
@@ -4501,6 +4478,7 @@ var array = [],
4501
  td.getDOMElement().setAttribute('style', currentTdStyle);
4502
  td.getDOMElement().style.width = null;
4503
  td.getDOMElement().style.height = null;
 
4504
  }
4505
  firstCell = table.rows[i].getElementsByTagName('td')[0];
4506
  if (firstCell) {
@@ -4558,6 +4536,7 @@ var array = [],
4558
  td.getDOMElement().style.width = null;
4559
  td.getDOMElement().style.height = null;
4560
  }
 
4561
  return td;
4562
  };
4563
 
@@ -4802,9 +4781,13 @@ var array = [],
4802
 
4803
  for (j = 0; j < cellsColSpan; j++) {
4804
  var td = new WPTB_Cell(mark);
4805
- td.getDOMElement().setAttribute('style', cellStyle);
4806
- td.getDOMElement().style.width = null;
4807
- td.getDOMElement().style.height = null;
 
 
 
 
4808
  r.appendChild(td.getDOMElement());
4809
  }
4810
 
@@ -5324,6 +5307,25 @@ var array = [],
5324
  // }, false );
5325
  // }
5326
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5327
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5328
 
5329
  var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
@@ -5587,4 +5589,203 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
5587
  }
5588
  };
5589
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5590
  //# sourceMappingURL=admin.js.map
1
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  var WPTB_ActionsField = function WPTB_ActionsField() {
4
  var _this = this;
5
 
74
 
75
  var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
76
  wptbTableStateSaveManager.tableStateSet();
77
+
78
+ WPTB_Helper.wptbDocumentEventGenerate('element:removed:dom', document, act);
79
  };
80
 
81
  btnCopy.onclick = function (event) {
1541
  }, false);
1542
  }
1543
  },
1544
+ /**
1545
+ * Sets the control elements when changing which to will restart this control
1546
+ * @param {array} dependOnControlName
1547
+ * @param {string} targetControlElementClass
1548
+ * @param {array} valueDependOnControlCorrect
1549
+ * @param {string} kind
1550
+ * @param {HTMLElement} element
1551
+ */
1552
+ valueDependOnControl: function valueDependOnControl(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect, kind, element) {
1553
+ function dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect) {
1554
+ if (typeof dependOnControlName === 'string') {
1555
+ dependOnControlName = [dependOnControlName];
1556
+ }
1557
  var infArr = targetControlElementClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
1558
+ var valueDependOnControl = {};
1559
+ var dependOnControlElementsArr = [];
1560
  if (infArr && Array.isArray(infArr)) {
1561
  var controlName = infArr[3];
1562
+ var dependOnControlElements = void 0;
1563
+ var valueDependOnControlCorrectObj = {};
1564
+ if (Array.isArray(valueDependOnControlCorrect)) {
1565
+ if (Array.isArray(valueDependOnControlCorrect[0])) {
1566
+ valueDependOnControlCorrect.map(function (s) {
1567
+ valueDependOnControlCorrectObj[s[0]] = [s[1], s[2]];
1568
+ });
1569
+ } else {
1570
+ valueDependOnControlCorrectObj[valueDependOnControlCorrect[0]] = [valueDependOnControlCorrect[1], valueDependOnControlCorrect[2]];
1571
+ }
1572
+ }
1573
+ dependOnControlName.map(function (s) {
1574
+ var dependOnControlElementClass = targetControlElementClass.replace(controlName, s);
1575
+ if (dependOnControlElementClass) {
1576
+ dependOnControlElements = document.getElementsByClassName(dependOnControlElementClass);
1577
+ if (dependOnControlElements.length > 0 && dependOnControlElements[0].type) {
1578
+ valueDependOnControl[s] = dependOnControlElements[0].value;
1579
+ if (s in valueDependOnControlCorrectObj) {
1580
+ if (valueDependOnControlCorrectObj[s][1] === 'integer') {
1581
+ valueDependOnControl[s] = parseInt(valueDependOnControl[s]) + parseInt(valueDependOnControlCorrectObj[s][0]);
1582
+ } else if (valueDependOnControlCorrectObj[s][1] === 'string') {
1583
+ valueDependOnControl[s] = valueDependOnControl[s] + valueDependOnControlCorrectObj[s][0];
1584
+ }
1585
+ }
1586
+ dependOnControlElementsArr.push(dependOnControlElements[0]);
1587
+ }
1588
+ }
1589
+ });
1590
+ }
1591
 
1592
+ return [valueDependOnControl, dependOnControlElementsArr];
1593
+ }
1594
 
1595
+ var dependOnControlData = dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect);
1596
+ WPTB_Helper.elementOptionsSet(kind, element, dependOnControlData[0], targetControlElementClass);
1597
 
1598
+ Object.keys(dependOnControlData[0]).forEach(function (key) {
1599
+ var infArr = element.className.match(/wptb-element-((.+-)\d+)/i);
1600
+ var unicClass = 'wptb-el-' + infArr[1] + '-' + [key];
1601
+ element.addEventListener('wptb-control:' + unicClass, function (event) {
1602
+ var dependOnControlData = dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect);
1603
+ WPTB_Helper.elementOptionsSet(kind, element, dependOnControlData[0], targetControlElementClass);
1604
+ }, false);
1605
+ });
1606
+ },
1607
+ /**
1608
+ * Sets the visibility of one control to depend on the state of other controls
1609
+ * @param dependOnMain
1610
+ * @param targetControlElementClass
1611
+ */
1612
+ appearDependOnControl: function appearDependOnControl(dependOnMain, targetControlElementClass) {
1613
+ if (Array.isArray(dependOnMain)) {
1614
+ var dependOnControlElementChangeHandler = function dependOnControlElementChangeHandler(controlContainerElem, dependOnControlElementsValue, k) {
1615
+ var dependOn = dependOnControlElementsValue[k][2];
1616
+ var dependOnControlElements = dependOnControlElementsValue[k][1];
1617
+ dependOnControlElementsValue[dependOn[0]] = [dependOnControlElementValue(dependOnControlElements, dependOn), dependOnControlElements, dependOn];
1618
+ showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue);
1619
+ };
1620
 
1621
+ var showHideTargetControlElement = function showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue) {
1622
+ var display = 'block';
1623
+ Object.keys(dependOnControlElementsValue).map(function (k) {
1624
+ if (Object.prototype.hasOwnProperty.call(dependOnControlElementsValue, k)) {
1625
+ if (dependOnControlElementsValue[k][0] === false) {
1626
+ display = 'none';
1627
+ }
1628
+ }
1629
+ });
1630
+
1631
+ controlContainerElem.style.display = display;
1632
+ };
1633
+
1634
+ var dependOnControlElementValue = function dependOnControlElementValue(dependOnControlElements, dependOn) {
1635
+ var targetControlValue = WPTB_Helper.targetControlValueGet(dependOnControlElements);
1636
+
1637
+ if (dependOn[1] && Array.isArray(dependOn[1]) && dependOn[1].indexOf(targetControlValue) !== -1) {
1638
+ return true;
1639
+ // let childCheck = controlContainerElem.querySelector('input[type="checkbox"]')
1640
+ // if (childCheck) {
1641
+ // childCheck.checked = true;
1642
+ // }
1643
+ } else if (dependOn[2] && Array.isArray(dependOn[2]) && dependOn[2].indexOf(targetControlValue) !== -1) {
1644
+ return false;
1645
+ }
1646
+ };
1647
+
1648
+ if (typeof dependOnMain[0] === 'string') {
1649
+ dependOnMain = [dependOnMain];
1650
+ } else if (!Array.isArray(dependOnMain[0])) {
1651
+ return;
1652
+ }
1653
+ var dependOnControlElementsValue = {};
1654
+ for (var i = 0; i < dependOnMain.length; i++) {
1655
+ var dependOn = dependOnMain[i];
1656
+ var dependOnControlName = dependOn[0];
1657
+ var infArr = targetControlElementClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
 
 
 
 
 
 
 
 
 
 
 
1658
 
1659
+ if (infArr && Array.isArray(infArr)) {
1660
+ var controlName = infArr[3];
1661
 
1662
+ var dependOnControlElementClass = targetControlElementClass.replace(controlName, dependOnControlName);
1663
+ if (dependOnControlElementClass) {
1664
+ var dependOnControlElements = document.getElementsByClassName(dependOnControlElementClass);
1665
+ if (dependOnControlElements.length > 0) {
1666
+ dependOnControlElementsValue[dependOn[0]] = [dependOnControlElementValue(dependOnControlElements, dependOn), dependOnControlElements, dependOn];
1667
  }
1668
  }
1669
  }
1670
  }
1671
+
1672
+ var targetControlElement = document.getElementsByClassName(targetControlElementClass);
1673
+ if (targetControlElement.length > 0) {
1674
+ targetControlElement = targetControlElement[0];
1675
+ var controlContainerElem = WPTB_Helper.findAncestor(targetControlElement, 'wptb-element-option');
1676
+
1677
+ if (controlContainerElem) {
1678
+ showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue);
1679
+
1680
+ Object.keys(dependOnControlElementsValue).map(function (k) {
1681
+ if (Object.prototype.hasOwnProperty.call(dependOnControlElementsValue, k)) {
1682
+ var _dependOnControlElements = dependOnControlElementsValue[k][1];
1683
+ var dependOnControlElement = _dependOnControlElements[0];
1684
+ dependOnControlElement.addEventListener('change', dependOnControlElementChangeHandler.bind(null, controlContainerElem, dependOnControlElementsValue, k), false);
1685
+ }
1686
+ });
1687
+ }
1688
+ }
1689
  }
1690
  },
1691
  //
1872
  }
1873
  },
1874
  //
1875
+ elementOptionsSet: function elementOptionsSet(kind, element, valueDependOnControl, targetControlElementClass) {
1876
  // get controls config for this element
1877
  var wptbContrlStacksConfigId = 'wptb-' + kind + '-control-stack';
1878
  var tmplControlsConfig = wp.template(wptbContrlStacksConfigId);
1905
  data = {
1906
  container: '.' + infArr[0]
1907
  };
1908
+ var controlName = void 0;
1909
+ data.valueDependOnControl = {};
1910
+ if (valueDependOnControl) {
1911
+ Object.keys(valueDependOnControl).forEach(function (key) {
1912
+ data.valueDependOnControl[key] = valueDependOnControl[key];
1913
+ });
1914
+ }
1915
+ if (targetControlElementClass) {
1916
+ var _infArr = targetControlElementClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
1917
+
1918
+ if (_infArr && Array.isArray(_infArr)) {
1919
+ controlName = _infArr[3];
1920
+ }
1921
+ }
1922
 
1923
  elementContainerClass = infArr[0];
1924
  elementOptionClassIndic = infArr[1];
1933
  for (var _i4 = 0; _i4 < children.length; _i4++) {
1934
  if (children[_i4].style) children[_i4].style.display = 'none';
1935
  }
 
 
 
 
 
 
 
1936
  this.activateSection('options_group');
1937
  }
1938
 
1939
+ var controlsConfigJson = tmplControlsConfig(data);
1940
+ var controlsConfig = JSON.parse(controlsConfigJson);
1941
 
1942
  var elementOptionsGroupIdsInvolved = [],
1943
  elementOptionsGroupInvolved = {},
1946
  // object for save all scrips for each controls
1947
  var controlScriptsObj = {};
1948
 
1949
+ // array for keep "appear depend on" params
1950
  var controlappearDependOnControl = [];
1951
 
1952
+ // array for keep "value depend on" params
1953
+ var controlValueDependOnControl = [];
1954
+
1955
  // create controls
1956
  var elementOptionsScriptsContainerIndic = false;
1957
+ if (controlName) {
1958
+ var controlsConfigNew = {};
1959
+ controlsConfigNew[controlName] = controlsConfig[controlName];
1960
+ controlsConfig = controlsConfigNew;
1961
+ }
1962
  var i = 0;
1963
+ Object.keys(controlsConfig).forEach(function (key) {
1964
+ var data = controlsConfig[key];
1965
  data.controlKey = key;
1966
 
1967
  // get necessary wp js template
1969
 
1970
  data.elemContainer = elementContainerClass;
1971
  data.elementControlTargetUnicClass = 'wptb-el-' + elementOptionClassIndic + '-' + data.controlKey;
1972
+ Object.keys(data).map(function (k) {
1973
+ if (Object.prototype.hasOwnProperty.call(data, k) && data[k] === 'control_param_calculate_value') {
1974
+ data[k] = WPTB_Helper.controlParamCalculateValue(data.elementControlTargetUnicClass, k);
1975
+ }
1976
+ });
1977
  var controlTemplate = tmplControlTemplate(data);
1978
  if ('appearDependOnControl' in data) {
1979
  if (Array.isArray(data.appearDependOnControl)) {
1981
  }
1982
  }
1983
 
1984
+ if ('valueDependOnControl' in data && !valueDependOnControl && !targetControlElementClass) {
1985
+ var valueDependOnControlCorrect = '';
1986
+ if (data.valueDependOnControlCorrect) valueDependOnControlCorrect = data.valueDependOnControlCorrect;
1987
+ controlValueDependOnControl.push([data.valueDependOnControl, data.elementControlTargetUnicClass, valueDependOnControlCorrect]);
1988
+ }
1989
+
1990
  function elementOptionsContainerInvolvedGet(elementOptionsGroupId, elementOptionsContainerInvolved) {
1991
  if (!elementOptionsContainerInvolved[elementOptionsGroupId]) {
1992
  var elementOptionsContainer = document.createElement('div');
1998
  return elementOptionsContainerInvolved[elementOptionsGroupId];
1999
  }
2000
 
2001
+ if (elementOptionsGroupIdsInvolved.indexOf(data.elementOptionsGroupId) == -1 && !controlName) {
2002
  elementOptionsGroupIdsInvolved.push(data.elementOptionsGroupId);
2003
  // clear elements from options group
2004
  //document.getElementById( 'element-options-group' ).innerHTML = '';
2012
 
2013
  controlElementParent = elementOptionsGroupInvolved[data.elementOptionsGroupId];
2014
 
2015
+ if (data.elementOptionsContainerOn === 'true' && !controlName) {
2016
  controlElementParent = elementOptionsContainerInvolvedGet(data.elementOptionsGroupId, elementOptionsContainerInvolved);
2017
  }
2018
 
2028
  elementOptionContainer.setAttribute('style', data.containerAdditionalStyles);
2029
  }
2030
 
2031
+ if (targetControlElementClass) {
2032
+ var targetControlElement = document.getElementsByClassName(targetControlElementClass);
2033
+ if (targetControlElement.length > 0) {
2034
+ targetControlElement = targetControlElement[0];
2035
+ var controlContainerElem = WPTB_Helper.findAncestor(targetControlElement, 'wptb-element-option');
2036
 
2037
+ if (controlContainerElem) {
2038
+ var controlContainerElemParent = controlContainerElem.parentNode;
2039
+ controlContainerElemParent.insertBefore(elementOptionContainer, controlContainerElem);
2040
+ controlContainerElemParent.removeChild(controlContainerElem);
2041
+ }
2042
+ }
2043
+ } else {
2044
+ controlElementParent.appendChild(elementOptionContainer);
2045
+ }
2046
  controlElementParent = elementOptionContainer;
2047
  }
2048
  controlElementParent.innerHTML = controlElementParent.innerHTML + controlTemplate;
2054
  controlElementParent.removeChild(helperJavascriptElem);
2055
  var script = document.createElement('script');
2056
  script.setAttribute('type', 'text/javascript');
2057
+ script.setAttribute('id', kind + '-' + data.controlKey);
2058
  script.innerHTML = helperJavascriptCode.replace(/\r|\n|\t/g, '').trim();
2059
  if (!controlScriptsObj[data.elementOptionsGroupId] || !Array.isArray(controlScriptsObj[data.elementOptionsGroupId])) {
2060
  controlScriptsObj[data.elementOptionsGroupId] = [];
2068
  element.optionsGroupIds = elementOptionsGroupIdsInvolved;
2069
 
2070
  Object.keys(controlScriptsObj).forEach(function (elementOptionsGroupId) {
2071
+ if (!targetControlElementClass) {
2072
+ elementOptionsScriptsContainer = document.createElement('div');
2073
+ elementOptionsScriptsContainer.classList.add('wptb-element-options-scripts', 'wptb-options-' + infArr[1]);
2074
+ elementOptionsGroupInvolved[elementOptionsGroupId].appendChild(elementOptionsScriptsContainer);
2075
+ }
2076
+
2077
  var controlScriptsArr = controlScriptsObj[elementOptionsGroupId];
 
 
 
2078
  if (controlScriptsArr.length > 0) {
2079
  for (var _i6 = 0; _i6 < controlScriptsArr.length; _i6++) {
2080
+ if (targetControlElementClass) {
2081
+ var id = kind + '-' + controlName;
2082
+ var script = document.getElementById(id);
2083
+ elementOptionsScriptsContainer = script.parentNode;
2084
+ elementOptionsScriptsContainer.insertBefore(controlScriptsArr[_i6], script);
2085
+ elementOptionsScriptsContainer.removeChild(script);
2086
+ } else {
2087
+ elementOptionsScriptsContainer.appendChild(controlScriptsArr[_i6]);
2088
+ }
2089
  }
2090
  }
2091
  });
2092
 
2093
  // run the scripts of controls
2094
 
 
2095
  // run appearDependOnControl function
2096
  for (var _i7 = 0; _i7 < controlappearDependOnControl.length; _i7++) {
2097
  WPTB_Helper.appearDependOnControl(controlappearDependOnControl[_i7][0], controlappearDependOnControl[_i7][1]);
2098
  }
2099
 
2100
  WPTB_Helper.wptbDocumentEventGenerate('element:controls:active', element);
2101
+ // run valueDependOnControl function
2102
+ for (var _i8 = 0; _i8 < controlValueDependOnControl.length; _i8++) {
2103
+ WPTB_Helper.valueDependOnControl(controlValueDependOnControl[_i8][0], controlValueDependOnControl[_i8][1], controlValueDependOnControl[_i8][2], kind, element);
2104
+ }
2105
+ },
2106
+
2107
+ /**
2108
+ *
2109
+ * @param unicClass
2110
+ * @param controlKey
2111
+ * @param key
2112
+ * @returns {*}
2113
+ */
2114
+ controlParamCalculateValue: function controlParamCalculateValue(unicClass, key) {
2115
+ var unicClassP = WPTB_Helper.replaceAll(unicClass, '-', '_');
2116
+ if (window['paramCalculateValue_' + unicClassP + '_' + key] && typeof window['paramCalculateValue_' + unicClassP + '_' + key] === "function") {
2117
+ return window['paramCalculateValue_' + unicClassP + '_' + key]();
2118
+ }
2119
+ },
2120
+
2121
+ controlParamCalculateValueCreateFunction: function controlParamCalculateValueCreateFunction(element, controlKey, key, handlerFunction) {
2122
+ var infArr = element.className.match(/wptb-element-((.+-)\d+)/i);
2123
+ var unicClass = 'wptb-el-' + infArr[1] + '-' + controlKey;
2124
+ var unicClassP = WPTB_Helper.replaceAll(unicClass, '-', '_');
2125
+ window['paramCalculateValue_' + unicClassP + '_' + key] = function () {
2126
+ return handlerFunction(element);
2127
+ };
2128
  },
2129
 
2130
  /**
2143
  if (table.length > 0) {
2144
  table = table[0];
2145
 
2146
+ var _infArr2 = table.className.match(/wptb-element-main(.+)-(\d+)/i);
2147
+ if (_infArr2 && Array.isArray(_infArr2)) {
2148
+ selector = '.' + _infArr2[0] + ' ' + selector;
2149
  }
2150
  }
2151
  }
2696
  wptbPreviewTable.parentNode.classList.remove('wptb-preview-table-manage-cells');
2697
  var wptbPreviewTableTds = wptbPreviewTable.getElementsByTagName('td');
2698
  if (wptbPreviewTableTds.length > 0) {
2699
+ for (var _i9 = 0; _i9 < wptbPreviewTableTds.length; _i9++) {
2700
+ wptbPreviewTableTds[_i9].classList.remove('wptb-highlighted');
2701
  }
2702
  }
2703
  toggleEditMode = 'closed';
2837
  getValueMaxCountSameElementsInArray: function getValueMaxCountSameElementsInArray(arr) {
2838
  if (arr && Array.isArray(arr)) {
2839
  var check = {};
2840
+ var countEmpty = 0;
2841
  for (var i = 0; i < arr.length; i++) {
2842
+ if (arr[i]) {
2843
+ if (check[arr[i]]) {
2844
+ check[arr[i]]++;
2845
+ } else {
2846
+ check[arr[i]] = 1;
2847
+ }
2848
  } else {
2849
+ countEmpty++;
2850
  }
2851
  }
2852
 
2862
  }
2863
  }
2864
 
2865
+ return check[maxPropName] >= countEmpty ? maxPropName : '';
2866
  }
2867
  },
2868
 
2920
  }
2921
  }
2922
  jMainIter++;
2923
+ }
2924
 
2925
+ if (tds.length > maxCols) {
2926
+ maxCols = tds.length;
 
2927
  }
2928
 
2929
  if (i == 0) {
2993
  // get drag relative type
2994
  getDragRelativeType: function getDragRelativeType() {
2995
  return this.dragRelativeType;
2996
+ },
2997
+ /**
2998
+ *
2999
+ * @param {HTMLElement} element
3000
+ * @param {string} styleName
3001
+ */
3002
+ getElementColorStylesHex: function getElementColorStylesHex(element, styleName) {
3003
+ var color = element.style[styleName];
3004
+ color = WPTB_Helper.rgbToHex(color);
3005
+ if (!WPTB_Helper.isHex(color)) {
3006
+ color = '';
3007
+ }
3008
+ return color;
3009
+ },
3010
+ /**
3011
+ * Show element controls on adding them to table.
3012
+ */
3013
+ showControlsOnElementMount: function showControlsOnElementMount() {
3014
+ document.addEventListener('element:mounted:dom', function (e) {
3015
+ e.target.click();
3016
+ });
3017
+ },
3018
+
3019
+ /**
3020
+ * Show elements list menu on left panel on removing element from table
3021
+ */
3022
+ showElementsListOnRemove: function showElementsListOnRemove() {
3023
+ document.addEventListener('element:removed:dom', function () {
3024
+ WPTB_Helper.activateSection('elements');
3025
+ });
3026
  }
3027
  };
3028
  var WPTB_Initializer = function WPTB_Initializer() {
3029
 
3030
+ var MIN_COLUMNS = 1,
3031
+ MIN_ROWS = 1,
3032
+ MAX_COLUMNS = 30,
3033
+ MAX_ROWS = 30;
3034
 
3035
+ var tableGenerator = document.body;
3036
+ columnsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[0], columnsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[0], rowsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[1], rowsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[1], columnsInput = document.getElementById('wptb-columns-number'), rowsInput = document.getElementById('wptb-rows-number');
3037
 
3038
+ columnsDecrementButton.onclick = function () {
3039
+ if (columnsInput.value > MIN_COLUMNS) {
3040
+ columnsInput.value--;
3041
+ }
3042
+ };
3043
 
3044
+ columnsIncrementButton.onclick = function () {
3045
+ if (columnsInput.value < MAX_COLUMNS) {
3046
+ columnsInput.value++;
3047
+ }
3048
+ };
3049
 
3050
+ rowsDecrementButton.onclick = function () {
3051
+ if (rowsInput.value > MIN_ROWS) {
3052
+ rowsInput.value--;
3053
+ }
3054
+ };
3055
 
3056
+ rowsIncrementButton.onclick = function () {
3057
+ if (rowsInput.value < MAX_ROWS) {
3058
+ rowsInput.value++;
3059
+ }
3060
+ };
3061
 
3062
+ document.getElementById('wptb-generate-table').onclick = function () {
3063
+ var columns = document.getElementById('wptb-columns-number').value,
3064
+ rows = document.getElementById('wptb-rows-number').value;
3065
 
3066
+ //wptbTableStateSaveManager.tableStateClear();
3067
 
3068
+ WPTB_Table(columns, rows);
3069
 
3070
+ var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
3071
+ wptbTableStateSaveManager.tableStateSet();
3072
+ };
3073
+
3074
+ // register and setup section buttons
3075
+ WPTB_Helper.registerSections(['elements', 'table_settings', 'cell_settings', 'options_group', 'table_responsive_menu']);
3076
+ WPTB_Helper.setupSectionButtons();
3077
 
3078
+ // activate elements section for startup
3079
+ WPTB_Helper.activateSection('elements');
 
3080
 
3081
+ // side bar toggle setup
3082
+ // WPTB_Helper.setupSidebarToggle('.wptb-panel-drawer-toggle');
3083
+ WPTB_Helper.setupSidebarToggle('.wptb-panel-toggle-section .wptb-panel-drawer-icon');
3084
 
3085
+ // setup panel sections that have the ability to be toggled on/off
3086
+ WPTB_Helper.setupPanelToggleButtons();
 
3087
 
3088
+ // setup responsive menu both at left and builder panel
3089
+ new WptbResponsive('table_responsive_menu', 'wptbResponsiveApp', '.wptb-builder-content');
3090
 
3091
+ // get builder section from url parameter for easy switch at page load
3092
+ WPTB_Helper.getSectionFromUrl();
3093
 
3094
+ // automatically show element controls when dropped to table
3095
+ WPTB_Helper.showControlsOnElementMount();
3096
+
3097
+ // show elements list menu on left panel on removing elements from table
3098
+ WPTB_Helper.showElementsListOnRemove();
3099
  };
3100
+ var WPTB_LeftPanel = function WPTB_LeftPanel() {
3101
 
3102
+ var table = document.getElementsByClassName('wptb-preview-table')[0],
3103
+ wptbElementButtons = document.getElementsByClassName('wptb-element');
 
 
 
 
3104
 
3105
+ for (var i = 0; i < wptbElementButtons.length; i++) {
3106
+ wptbElementButtons[i].ondragstart = function (e) {
3107
+ e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);
3108
+ e.dataTransfer.setData('wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement);
3109
+ };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3110
  };
3111
 
3112
  if (table) {
3114
  for (var _i = 0; _i < wptbTablesEditModeCloseButton.length; _i++) {
3115
  wptbTablesEditModeCloseButton[_i].onclick = WPTB_Helper.toggleTableEditMode;
3116
  }
 
 
 
 
 
 
 
 
 
 
 
 
3117
  };
3118
 
3119
  // this code hides the "element parameters" area
4434
  td.getDOMElement().setAttribute('style', currentTdStyle);
4435
  td.getDOMElement().style.width = null;
4436
  td.getDOMElement().style.height = null;
4437
+ td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');
4438
  }
4439
 
4440
  table.rows[i].appendChild(td.getDOMElement());
4478
  td.getDOMElement().setAttribute('style', currentTdStyle);
4479
  td.getDOMElement().style.width = null;
4480
  td.getDOMElement().style.height = null;
4481
+ td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');
4482
  }
4483
  firstCell = table.rows[i].getElementsByTagName('td')[0];
4484
  if (firstCell) {
4536
  td.getDOMElement().style.width = null;
4537
  td.getDOMElement().style.height = null;
4538
  }
4539
+ td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');
4540
  return td;
4541
  };
4542
 
4781
 
4782
  for (j = 0; j < cellsColSpan; j++) {
4783
  var td = new WPTB_Cell(mark);
4784
+ var currentTableTd = table.querySelector('[data-x-index="' + j + '"]');
4785
+ if (currentTableTd) {
4786
+ var currentTdStyle = currentTableTd.getAttribute('style');
4787
+
4788
+ td.getDOMElement().setAttribute('style', currentTdStyle);
4789
+ td.getDOMElement().style.height = null;
4790
+ }
4791
  r.appendChild(td.getDOMElement());
4792
  }
4793
 
5307
  // }, false );
5308
  // }
5309
  };
5310
+ var WPTB_TableSettingsData = {
5311
+ borderColor: '',
5312
+ /**
5313
+ *
5314
+ * @param {string} name
5315
+ * @param {string} value
5316
+ */
5317
+ setTableSetting: function setTableSetting(name, value) {
5318
+ this[name] = value;
5319
+ },
5320
+ /**
5321
+ *
5322
+ * @param {string} name
5323
+ * @returns {*}
5324
+ */
5325
+ getTableSetting: function getTableSetting(name) {
5326
+ return this[name];
5327
+ }
5328
+ };
5329
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5330
 
5331
  var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
5589
  }
5590
  };
5591
  };
5592
+ var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
5593
+
5594
+ element.ondragenter = function (e) {
5595
+ var div;
5596
+ if (e.dataTransfer.types.indexOf('wptbelement') == -1 && e.dataTransfer.types.indexOf('wptb-moving-mode') == -1) {
5597
+ return;
5598
+ }
5599
+ WPTB_DropHandle(this, e);
5600
+
5601
+ element.classList.add('wptb-ondragenter');
5602
+ };
5603
+ element.ondragover = function (e) {
5604
+ e.preventDefault();
5605
+ WPTB_DropHandle(this, e);
5606
+ };
5607
+ element.ondragleave = function (e) {
5608
+ WPTB_DropHandle(this, e, true);
5609
+ };
5610
+ element.ondrop = function (e) {
5611
+ this.classList.remove('wptb-ondragenter');
5612
+ var element = void 0,
5613
+ classId = void 0;
5614
+ e.preventDefault();
5615
+ e.stopPropagation();
5616
+
5617
+ if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {
5618
+ return;
5619
+ }
5620
+ var wptbDropHandle = void 0,
5621
+ wptbDropBorderMarker = void 0;
5622
+ if (document.getElementsByClassName('wptb-drop-handle').length > 0) {
5623
+ wptbDropHandle = document.getElementsByClassName('wptb-drop-handle')[0];
5624
+ }
5625
+ if (document.getElementsByClassName('wptb-drop-border-marker').length > 0) {
5626
+ wptbDropBorderMarker = document.getElementsByClassName('wptb-drop-border-marker')[0];
5627
+ }
5628
+
5629
+ if (e.dataTransfer.getData('wptbElement')) {
5630
+ element = WPTB_Helper.newElementProxy(e.dataTransfer.getData('wptbElement'));
5631
+ element = element.getDOMElement();
5632
+ } else {
5633
+ classId = e.dataTransfer.getData('node');
5634
+ element = document.getElementsByClassName(classId)[0];
5635
+ //element.classList.remove( 'wptb-moving-mode' );
5636
+ }
5637
+
5638
+ if (WPTB_Helper.getDragRelativeType() === 'td_relative') {
5639
+ WPTB_DropHandle(this, e, true);
5640
+ var parentCell = WPTB_Helper.getParentOfType('td', e.target);
5641
+
5642
+ parentCell.appendChild(element);
5643
+ WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
5644
+ } else if (wptbDropHandle.style.display == 'block') {
5645
+ var td = void 0;
5646
+ if (wptbDropHandle.dataset.text == 'Drop Here') {
5647
+ td = wptbDropHandle.getDOMParentElement();
5648
+ td.appendChild(element);
5649
+ WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
5650
+ } else {
5651
+ var innerElement = wptbDropHandle.getDOMParentElement();
5652
+ td = innerElement.parentNode;
5653
+
5654
+ if (wptbDropHandle.dataset.text == 'Above Element') {
5655
+ td.insertBefore(element, innerElement);
5656
+ WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
5657
+ } else if (wptbDropHandle.dataset.text == 'Below Element') {
5658
+ var innerElementNext = innerElement.nextSibling;
5659
+ td.insertBefore(element, innerElementNext);
5660
+ WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);
5661
+ }
5662
+ }
5663
+
5664
+ var thisRow = td.parentNode;
5665
+ if (WPTB_Helper.rowIsTop(thisRow)) {
5666
+ var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
5667
+
5668
+ if (table.classList.contains('wptb-table-preview-head')) {
5669
+ WPTB_Helper.dataTitleColumnSet(table);
5670
+ }
5671
+ }
5672
+
5673
+ // start item javascript if item is new
5674
+ var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
5675
+ var elemKind = infArr[1];
5676
+ if (e.dataTransfer.getData('wptbElement') && (elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list')) {
5677
+ //WPTB_Helper.elementStartScript( element );
5678
+ }
5679
+ } else {
5680
+ return;
5681
+ }
5682
+
5683
+ if (wptbDropHandle) {
5684
+ wptbDropHandle.style.display = 'none';
5685
+ wptbDropBorderMarker.style.display = 'none';
5686
+ }
5687
+
5688
+ WPTB_innerElementSet(element);
5689
+
5690
+ if (!element.classList.contains('wptb-image-container') || element.classList.contains('wptb-moving-mode')) {
5691
+ element.classList.remove('wptb-moving-mode');
5692
+ var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
5693
+ wptbTableStateSaveManager.tableStateSet();
5694
+ }
5695
+ return true;
5696
+ };
5697
+ element.onmouseover = function (e) {
5698
+ element.classList.remove('wptb-ondragenter');
5699
+ };
5700
+ };
5701
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5702
+
5703
+ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
5704
+
5705
+ var applyGenericItemSettings = function applyGenericItemSettings(element, kindIndexProt) {
5706
+ var copy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
5707
+
5708
+ var node = element.getDOMElement(),
5709
+ index,
5710
+ copy;
5711
+ if (node.classList.contains('wptb-ph-element')) {
5712
+ if (kindIndexProt == undefined || copy == true) {
5713
+ //index = document.counter.nextIndex( element.kind );
5714
+ var wptbElements = document.getElementsByClassName('wptb-ph-element');
5715
+ var elementIndexesArr = [];
5716
+ for (var i = 0; i < wptbElements.length; i++) {
5717
+ var regex = new RegExp('wptb-element-' + element.kind + '-(\\d+)', "i");
5718
+ var infArr = wptbElements[i].className.match(regex);
5719
+ if (infArr) {
5720
+ elementIndexesArr.push(infArr[1]);
5721
+ }
5722
+ }
5723
+ if (elementIndexesArr.length > 0) {
5724
+ var elementIndexMax = Math.max.apply(Math, elementIndexesArr);
5725
+ index = elementIndexMax + 1;
5726
+ } else {
5727
+ index = 1;
5728
+ }
5729
+
5730
+ if (copy) {
5731
+ // change all data-elements which save parameters for different controls
5732
+ var wptbNodeattributes = [].concat(_toConsumableArray(node.attributes));
5733
+ for (var _i = 0; _i < wptbNodeattributes.length; _i++) {
5734
+ if (wptbNodeattributes[_i] && _typeof(wptbNodeattributes[_i]) === 'object' && wptbNodeattributes[_i].nodeName) {
5735
+ var regularText = new RegExp('data-wptb-el-' + element.kind + '-(\\d+)-([a-zA-Z0-9_-]+)', "i");
5736
+ var attr = wptbNodeattributes[_i].nodeName.match(regularText);
5737
+ if (attr && Array.isArray(attr)) {
5738
+ var newDataAttributeName = wptbNodeattributes[_i].nodeName.replace(element.kind + '-' + attr[1], element.kind + '-' + index);
5739
+ var newDataAttributeValue = wptbNodeattributes[_i].nodeValue;
5740
+ node.removeAttribute(wptbNodeattributes[_i].nodeName);
5741
+ node.setAttribute(newDataAttributeName, newDataAttributeValue);
5742
+ }
5743
+ }
5744
+ }
5745
+ }
5746
+ } else if (kindIndexProt && !copy) {
5747
+ var kindIndexProtArr = kindIndexProt.split('-');
5748
+ index = kindIndexProtArr[kindIndexProtArr.length - 1];
5749
+ // start element javascript if element is new
5750
+ }
5751
+
5752
+ var node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\d+)/i);
5753
+ if (node_wptb_element_kind_num) {
5754
+ node.classList.remove(node_wptb_element_kind_num[0]);
5755
+ }
5756
+ if (!node.classList.contains('wptb-ph-element')) {
5757
+ node.classList.add('wptb-ph-element');
5758
+ if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
5759
+ node.classList.add('wptb-element-' + element.kind + '-' + index);
5760
+ }
5761
+ } else {
5762
+ if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
5763
+ node.classList.add('wptb-element-' + element.kind + '-' + index);
5764
+ }
5765
+ }
5766
+ WPTB_Helper.elementStartScript(element.getDOMElement());
5767
+ new WPTB_ElementOptions(element, index, kindIndexProt);
5768
+ document.counter.increment(element.kind);
5769
+ }
5770
+
5771
+ node.onmouseenter = function (event) {
5772
+ if (event.target.classList.contains('wptb-moving-mode')) {
5773
+ return;
5774
+ }
5775
+
5776
+ var wptbActionsField = new WPTB_ActionsField();
5777
+
5778
+ wptbActionsField.addActionField(1, node);
5779
+
5780
+ wptbActionsField.setParameters(node);
5781
+
5782
+ node.classList.remove('wptb-ondragenter');
5783
+ };
5784
+
5785
+ node.onmouseleave = function (event) {
5786
+ var wptbActionsField = new WPTB_ActionsField();
5787
+
5788
+ wptbActionsField.leaveFromField(event, node);
5789
+ };
5790
+ };
5791
  //# sourceMappingURL=admin.js.map
inc/admin/js/admin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["applyGenericItemSettings.js","WPTB_ActionsField.js","WPTB_Builder.js","WPTB_Cell.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementObject.js","WPTB_ElementOptions.js","WPTB_Helper.js","WPTB_Initializer.js","WPTB_innerElementSet.js","WPTB_LeftPanel.js","WPTB_MultipleSelect.js","WPTB_Parser.js","WPTB_Polyfills.js","WPTB_Responsive.js","WPTB_Settings.js","WPTB_Stringifier.js","WPTB_Table.js","WPTB_TableStateSaveManager.js"],"names":["applyGenericItemSettings","element","kindIndexProt","copy","node","getDOMElement","index","classList","contains","undefined","wptbElements","document","getElementsByClassName","elementIndexesArr","i","length","regex","RegExp","kind","infArr","className","match","push","elementIndexMax","Math","max","wptbNodeattributes","attributes","nodeName","regularText","attr","Array","isArray","newDataAttributeName","replace","newDataAttributeValue","nodeValue","removeAttribute","setAttribute","kindIndexProtArr","split","node_wptb_element_kind_num","remove","add","WPTB_Helper","elementStartScript","WPTB_ElementOptions","counter","increment","onmouseenter","event","target","wptbActionsField","WPTB_ActionsField","addActionField","setParameters","onmouseleave","leaveFromField","wptbActions","actionType","thisNode","body","getElementsByTagName","actions","previousNode","activeElem","parentNode","removeChild","btnDelete","btnCopy","createElement","appendChild","type","onclick","act","el","hasOwnProperty","thisRow","rowIsTop","table","findAncestor","dataTitleColumnSet","actionsRemove","wptbTableStateSaveManager","WPTB_TableStateSaveManager","tableStateSet","activeElement","activeElemParent","data","elemProt","tinyMceClear","WPTB_ElementObject","insertBefore","nextSibling","elementCopy","cloneNode","wptbDocumentEventGenerate","WPTB_innerElementSet","btnMove","draggable","ondragstart","wptbElementIconsDirectories","tmplIconsDirectories","wp","template","jsonIconsDirectories","IconsDirectories","JSON","parse","dragImages","getElementIcon","dataTransfer","effectAllowed","setDragImage","setData","style","display","actionsHide","ondragend","elementDragEndClear","coordinatesElement","getBoundingClientRect","wptbContainer","correctTop","top","parseFloat","removeEventListener","left","right","clientWidth","addEventListener","relatedTarget","opacity","WPTB_Builder","table_id","detectMode","http","XMLHttpRequest","urlSet","ajaxurl","open","setRequestHeader","onreadystatechange","d","readyState","status","ans","responseText","getElementById","value","wptbTableSetupEl","WPTB_Parser","WPTB_Table","querySelector","dataset","wptbTableContainerMaxWidth","maxWidth","tdDefaultWidth","WPTB_Settings","send","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","url","window","location","href","results","exec","WPTB_Cell","callback","DOMElement","highlightRow","td","parentRow","columnCount","parseInt","tds","classToAdd","ttd","highlightColumn","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","ondblclick","stopPropagation","currentTarget","newElementProxy","wptbPhElement","wptbElementTypeClass","wptbTypeElementArr","wptbInternalActiveElement","j","wptbInternalActiveElementObj","setCoords","y","x","yIndex","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","width","offsetWidth","height","offsetHeight","borderCollapse","tableFullStyleObj","tableBorderLeft","tableBorderRight","tableBorderTop","tableBorderBottom","toLowerCase","firstChild","lastChild","WPTB_DropHandle","thisElem","e","hide","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","toPx","getDragRelativeType","cellRelatedDropHandle","range","createRange","setStart","shadowRoot","createContextualFragment","children","parentTd","getParentOfType","ondragenter","preventDefault","ondragover","ondragleave","ondrop","getData","wptbMovingMode","text","getDOMParentElement","innerElement","innerElementNext","onscroll","localName","indics","types","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","key","nextIndex","wpTemplateId","itemHtml","trim","innerHTML","wptbElementMutch","elementClearFromTinyMce","inElems","querySelectorAll","inElemObj","elementOptionsSet","capture","hexToRgb","hex","result","rgbToHex","rgb","isHex","rgbm","round","toString","toUpperCase","slice","test","icon_directory","hostName","protocol","hostname","img","src","wptbDropHandles","wptbDropBorderMarkers","linkHttpCheckChange","link","convertToAbs","currentLocation","origin","linkArr","linkClean","cls","parentElement","row","parent","getSelectionText","txt","getSelection","selection","elementOptionsPanelClear","elementOptionsGroup","wpColorPickerCheckChangeForTableStateSaving","originalEvent","wpPickerContainer","irisStripMouseUpStateSaveManager","wpColorPickerClear","attribute","isId","input","newInput","decodeURIComponent","getColumnWidth","cell","xIndexes","cellWidth","getRowHeight","yIndexes","cellHeight","wpColorPickerChange","ui","uiColor","color","classe","ps","number","affectedEl","backgroundColor","ratingStar","span","fill","wptbTextMessageSize","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","ucfirst","str","charAt","eventName","details","CustomEvent","detail","bubbles","dispatchEvent","WPTB_ElementsScriptsLauncher","deleteEventHandlers","off","elementChildren","replaceAll","string","search","join","mceContentBodys","k","dataMceStyle","mceEditFocus","contentEditable","spellCheck","mceIds","elementOptionContainerCustomClassSet","targetInput","customClassForContainer","containerElement","elementOptionContainerAdditionalStyles","containerAdditionalStyles","containerStylesArrOne","containerStylesSet","containerStyleStr","containerStyleStrArr","controlsInclude","functionHandler","acceptEventValues","controlConnectFunctionsName","name","elementKind","elementOptionsGroupIds","optionsGroupIds","elementOptionsGroupId","controlActiveElements","map","controlInfArr","controlActiveElement","controlUnicClassName","controls","controlName","control","targetControlValue","targetControlValueGet","targetValue","eventValue","oneControlInclude","wptbContrlStacksConfigId","tmplControlsConfig","container","jsonControlsConfigJson","jsonControlsConfig","controlClassName","innerElementCopyIncludeHandler","appearDependOnControl","dependOn","targetControlElementClass","dependOnControlName","dependOnControlElementClass","dependOnControlElement","targetControlElement","controlContainerElem","showHideDependOnControlElement","dependOnControlElements","childCheck","checked","controlsStateManager","targetControlClass","controlChangeIndic","targetControls","selectorElement","elementsSettingsTemplatesJs","elementSettings","elementsSettings","stringify","alignmentValue","elementControlsStateCopy","elementProt","copyElem","infArrProt","infArrCopy","elemProtKind","elemCopyKind","elementsSettingsTemplateJs","elementSettingsProt","elementSettingsCopy","Object","keys","forEach","elementSettingValue","elementSettingKeyCopy","elementControlsStateDelete","nameControl","wptbElementDatas","elementContainerClass","elementOptionClassIndic","controlElementParent","elementOptionsScriptsContainer","cellEditActiveClass","activateSection","wptbelementOptionClass","childNodes","elementOptionsGroupIdsInvolved","elementOptionsGroupInvolved","elementOptionsContainerInvolved","controlScriptsObj","controlappearDependOnControl","elementOptionsScriptsContainerIndic","controlKey","tmplControlTemplate","elemContainer","elementControlTargetUnicClass","controlTemplate","elementOptionsContainerInvolvedGet","elementOptionsContainer","elementOptionsGroupChildren","elementOptionsContainerOn","elementOptionContainerOn","elementOptionContainer","elementOptionClass","helperJavascriptElem","helperJavascriptCode","innerText","script","controlScriptsArr","managerExternalCssStyles","elementContainer","selector","cssName","cssValue","head","cssForThisElement","cssText","cssTextArrFirst","pop","selectorExists","cssTextArrSecond","cssTextArrThird","cssNameExists","cssTextArrFourth","splice","registerSections","sections","currentSection","sectionElement","s","sectionDataId","displayType","triggerSectionEvent","prototype","call","visibility","getCurrentSection","getSectionFromUrl","parsedUrl","URL","urlSection","searchParams","get","some","setupSectionButtons","sectionButtons","from","vm","sectionName","wptbSectionButton","wptbSectionDisplayType","setupPanelToggleButtons","$","each","find","click","slideToggle","toggleClass","sectionEvent","setupSidebarToggle","toggleSelector","toggleButton","toggle","externalCssStylesDelete","externalCssStylesCopy","copyElement","activeElemClass","cssForActiveElement","cssForNewElement","infArrCopyEl","cssForActiveElementInnerHTML","cssForNewElementInnerHTML","elementsStylesConvertToObject","stylesElements","stylesObj","styleElemId","getAttribute","elementsStylesSetFromObject","jsonObject","styleCss","saveTable","startSaving","previewSaving","wptbTableStateNumberSave","wptbTableStateNumberShow","bar","toggleTableEditMode","wptb_admin_object","t","messagingArea","code","datas","postId","rs","wptbId","paramIdsNecessaryChange","codeClone","wptbTableSetup","columns","WPTB_Stringifier","outerHTML","datas_containers","styleObjJson","messagingAreaText","setTimeout","params","title","content","elements_datas","elements_styles","security_code","preview_saving","id","action","builderPageUrl","history","pushState","wptbPreviewTable","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","clickOnFreeSpace","cellModeBackground","wpcdFixedToolbar","hasAttribute","elementAjax","dataAjaxData","element_name","element_ajax_data","close","leftScrollPanelCurtain","leftScrollPanelCellSettings","toggleEditMode","deactivateMultipleSelectMode","wptbPreviewTableTds","activateMultipleSelectMode","checkingDimensionValue","dimension","searchIndex","checkSetGetStyleSizeValue","styleName","computedStyleName","elemStyleValue","elementStyles","checkSetGetStyleColorValue","set","elemStyleColorValue","checkSetGetStyleValue","getValueMaxCountSameElementsInArray","arr","check","maxPropName","recalculateIndexes","trs","maxCols","maxColsFull","tdsArr","jMainIter","colSpan","rowSpan","z","tableRowsColorsReinstall","tableIndex","tableHeaderBackground","tableEvenRowBackground","tableOddRowBackground","parentType","dragRelativeType","setDragRelativeType","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","rows","WptbResponsive","div","classId","parentCell","elemKind","onmouseover","WPTB_LeftPanel","wptbElementButtons","wptbElement","wptbTablesEditModeCloseButton","addRowToTheEnd","addRowToTheStart","addRowBefore","addRowAfter","addColumnEnd","addColumnStart","addColumnBefore","addColumnAfter","deleteColumn","deleteRow","mergeCells","splitCell","wptbBuilderPanel","wptbHeader","selectedCells","multipleCellMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","first","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","columnTitleMobile","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","obj","TypeError","prop","responsiveWrapperId","mainContainerQuery","responsiveTable","loaded","addContainerToDom","responsiveContainer","mainContainer","Error","responsiveElement","load","WPTB_ControlsManager","callControlScript","startUp","tablePreview","elems","wptbRelativeElements","wptbUndo","tableStateGet","wptbUndoredo","wptbUndoRedoContainer","wptbRedo","shortcodePopupWindow","onbeforeunload","wptbSaveDisabled","previewId","floor","random","newHref","tableTitleField","onchange","codeMain","tableColumns","minWidth","innerElements","wptbActionsLength","dataMceBogus","array","wptb_preview_table","maxAmountOfCells","maxAmountOfRows","mark","cs","noCells","singleCells","multipleCells","cellSettings","position","column","cellHighlighted","markedCells","controlElemIds","elementControlSizeUnicClass","elementControlSizeFixedUnicClass","sizeName","getSizeFunctionName","size","cellSizeInputs","cellSizeFixedInput","isSquare","settingId","settingElem","countMarkedCells","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","a","undoSelect","fillTableArray","colspansSums","cells","colspanSumInRow","apply","getActualPointsInRow","points","skipInCols","reconstraction","insertRow","borderWidth","setMaxAmountOfCells","getMaxAmountOfCells","addColumnWidth","cleaner","highlighted","dataXIndex","tableTdsFor","colspan","tableRows","widthIsSet","arrayTdsFromPreviousRow","wptbFixedWidth","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTdWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","cssForTdsWidthAutoOld","wptbTableAlignment","float","addRowHeight","dataYIndex","rowspan","heightIsSet","arrayTdsPrevious","wptbFixedHeight","mergingCellsVertically","forBreak","currentTable","currentTableTd","currentTdStyle","firstCell","c_pos","cellStyle","pos","newTd","nextSib","r","aux","cellNew","rowChildren","rowChildrenLength","cellRowSpan","rowAfter","cellsColSpan","tableRowsIChildren","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","dimensions","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","p","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","Number","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","thisRowChildren","nextRow","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","onresize","generate","wptbTableStateSaving","wptbNewTableSetup","wptbHighlighted","wptbDirectlyhovered","cssForTdsWidthAutoValue","wptbTableTitle","wptbSetupName","datawptbUndoredo","wptbTableSetupNew","wptbLeftScrollPanelCellSetting","tableStateClear"],"mappings":"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","file":"admin.js","sourcesContent":["var applyGenericItemSettings = function ( element, kindIndexProt, copy = false ) {\r\n var node = element.getDOMElement(),\r\n index,\r\n copy;\r\n if( node.classList.contains( 'wptb-ph-element' ) ) {\r\n if ( kindIndexProt == undefined || copy == true ) {\r\n //index = document.counter.nextIndex( element.kind );\r\n let wptbElements = document.getElementsByClassName( 'wptb-ph-element' );\r\n let elementIndexesArr = [];\r\n for( let i = 0; i < wptbElements.length; i++ ) {\r\n var regex = new RegExp( 'wptb-element-' + element.kind + '-(\\\\d+)', \"i\" );\r\n let infArr = wptbElements[i].className.match( regex );\r\n if( infArr ) {\r\n elementIndexesArr.push( infArr[1] );\r\n }\r\n }\r\n if( elementIndexesArr.length > 0 ) {\r\n let elementIndexMax = Math.max( ...elementIndexesArr );\r\n index = elementIndexMax + 1;\r\n } else { \r\n index = 1;\r\n }\r\n\r\n if( copy ) {\r\n // change all data-elements which save parameters for different controls\r\n let wptbNodeattributes = [...node.attributes];\r\n for( let i = 0; i < wptbNodeattributes.length; i++ ) {\r\n if( wptbNodeattributes[i] && typeof wptbNodeattributes[i] === 'object' && wptbNodeattributes[i].nodeName ) {\r\n let regularText = new RegExp( 'data-wptb-el-' + element.kind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\r\n let attr = wptbNodeattributes[i].nodeName.match( regularText );\r\n if( attr && Array.isArray( attr ) ) {\r\n let newDataAttributeName = wptbNodeattributes[i].nodeName.replace( element.kind + '-' + attr[1], element.kind + '-' + index );\r\n let newDataAttributeValue = wptbNodeattributes[i].nodeValue;\r\n node.removeAttribute( wptbNodeattributes[i].nodeName );\r\n node.setAttribute( newDataAttributeName, newDataAttributeValue );\r\n }\r\n }\r\n }\r\n }\r\n } else if ( kindIndexProt && ! copy ) {\r\n let kindIndexProtArr = kindIndexProt.split('-');\r\n index = kindIndexProtArr[kindIndexProtArr.length - 1];\r\n // start element javascript if element is new\r\n \r\n }\r\n\r\n let node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\\d+)/i);\r\n if ( node_wptb_element_kind_num ) {\r\n node.classList.remove( node_wptb_element_kind_num[0] );\r\n }\r\n if ( ! node.classList.contains( 'wptb-ph-element' ) ) {\r\n node.classList.add( 'wptb-ph-element' );\r\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\r\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\r\n }\r\n } else {\r\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\r\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\r\n }\r\n }\r\n WPTB_Helper.elementStartScript( element.getDOMElement() );\r\n new WPTB_ElementOptions( element, index, kindIndexProt );\r\n document.counter.increment(element.kind);\r\n }\r\n \r\n node.onmouseenter = function ( event ) {\r\n if( event.target.classList.contains( 'wptb-moving-mode' ) ) {\r\n return;\r\n }\r\n \r\n let wptbActionsField = new WPTB_ActionsField();\r\n \r\n wptbActionsField.addActionField( 1, node );\r\n \r\n wptbActionsField.setParameters( node );\r\n \r\n node.classList.remove( 'wptb-ondragenter' );\r\n };\r\n \r\n node.onmouseleave = function ( event ) {\r\n let wptbActionsField = new WPTB_ActionsField();\r\n \r\n wptbActionsField.leaveFromField( event, node );\r\n };\r\n};","var WPTB_ActionsField = function() {\r\n //this.wptbBorderMarker;\r\n this.wptbActions;\r\n if( document.getElementsByClassName( 'wptb-actions' ).length != 0 ) {\r\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\r\n }\r\n \r\n this.addActionField = ( actionType, thisNode ) => {\r\n let body = document.getElementsByTagName( 'body' )[0];\r\n \r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length != 0 ) {\r\n let previousNode = actions[0].activeElem;\r\n if( previousNode ) {\r\n previousNode.classList.remove( 'wptb-directlyhovered' );\r\n }\r\n \r\n while( actions.length != 0 ) {\r\n actions[0].parentNode.removeChild( actions[0] );\r\n }\r\n }\r\n \r\n if( actionType == 1 ) {\r\n \r\n let btnDelete, btnCopy;\r\n\r\n btnDelete = document.createElement( 'span' ),\r\n btnCopy = document.createElement( 'span' ),\r\n actions = document.createElement( 'div' );\r\n\r\n actions.classList.add( 'wptb-actions' );\r\n btnDelete.classList.add( 'dashicons', 'dashicons-trash', 'wptb-delete-action' );\r\n btnCopy.classList.add( 'dashicons', 'dashicons-admin-page', 'wptb-duplicate-action' );\r\n \r\n actions.appendChild( btnCopy );\r\n actions.appendChild( btnDelete );\r\n \r\n body.appendChild( actions );\r\n\r\n actions.activeElem = thisNode;\r\n\r\n actions.type = 1;\r\n\r\n btnDelete.onclick = function( event ) {\r\n let act = event.target.parentNode.activeElem,\r\n el = act.parentNode;\r\n let infArr = act.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n// if( act && infArr && Array.isArray( infArr ) ) {\r\n// WPTB_Helper.elementControlsStateDelete( act );\r\n// WPTB_Helper.externalCssStylesDelete( infArr[0] );\r\n// }\r\n \r\n if( act ) {\r\n el.removeChild( act );\r\n }\r\n\r\n if( act && typeof act === 'object' && act.hasOwnProperty( 'kind' ) && act.kind == 'text' ) {\r\n let thisRow = el.parentNode;\r\n \r\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n\r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n }\r\n\r\n let wptbActionsField = new WPTB_ActionsField();\r\n wptbActionsField.actionsRemove();\r\n \r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n btnCopy.onclick = ( event ) => {\r\n let copy,\r\n infArr,\r\n type;\r\n let activeElement = event.target.parentNode.activeElem;\r\n let activeElemParent = activeElement.parentNode;\r\n infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n type = infArr[1];\r\n let data = {};\r\n data.kind = type;\r\n data.elemProt = activeElement;\r\n data.tinyMceClear = true;\r\n copy = new WPTB_ElementObject( data );\r\n //WPTB_Helper.elementControlsStateCopy( activeElement, copy.getDOMElement() );\r\n //WPTB_Helper.externalCssStylesCopy( activeElement, copy.getDOMElement() );\r\n //WPTB_Helper.elementStartScript( copy.getDOMElement() );\r\n \r\n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\r\n } else {\r\n copy = {};\r\n let elementCopy = activeElement.cloneNode( true );\r\n elementCopy.classList.remove( 'wptb-directlyhovered' );\r\n \r\n copy.getDOMElement = function() {\r\n return elementCopy;\r\n }\r\n \r\n applyGenericItemSettings( copy );\r\n \r\n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\r\n \r\n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-inner-element:copy', activeElement, copy.getDOMElement() );\r\n }\r\n \r\n WPTB_innerElementSet( copy.getDOMElement() );\r\n\r\n let wptbActionsField = new WPTB_ActionsField( 1, activeElement );\r\n wptbActionsField.setParameters( activeElement );\r\n \r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n \r\n \r\n if( thisNode.classList.contains( 'wptb-ph-element' ) ) {\r\n let btnMove;\r\n btnMove = document.createElement( 'span' );\r\n btnMove.classList.add( \"dashicons\", \"dashicons-move\", 'wptb-move-action' );\r\n btnMove.draggable = true;\r\n actions.appendChild( btnMove );\r\n \r\n btnMove.ondragstart = ( event ) => {\r\n let wptbElementIconsDirectories = 'wptb-element-icons-directories';\r\n let tmplIconsDirectories = wp.template( wptbElementIconsDirectories );\r\n let data = {};\r\n let jsonIconsDirectories = tmplIconsDirectories( data );\r\n let IconsDirectories = JSON.parse( jsonIconsDirectories );\r\n\r\n let dragImages,\r\n actions = event.target.parentNode,\r\n activeElem = actions.activeElem,\r\n infArr,\r\n type;\r\n infArr = activeElem.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n type = infArr[1];\r\n activeElem.classList.add( 'wptb-moving-mode' );\r\n\r\n if( IconsDirectories && typeof IconsDirectories === 'object' && IconsDirectories[type] ) {\r\n dragImages = WPTB_Helper.getElementIcon( IconsDirectories[type] );\r\n }\r\n\r\n event.dataTransfer.effectAllowed = 'move';\r\n event.dataTransfer.setDragImage( dragImages, 0, 0 );\r\n event.dataTransfer.setData( 'node', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\r\n event.dataTransfer.setData( 'wptb-moving-mode', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\r\n event.dataTransfer.setData( 'wptbElIndic-' + infArr[1], 'wptbElIndic-' + infArr[1] );\r\n let act = event.target.parentNode.activeElem;\r\n if( act.kind == 'text' ) {\r\n let thisRow = act.parentNode.parentNode;\r\n \r\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n\r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n }\r\n } else {\r\n this.style.display = 'none';\r\n }\r\n\r\n this.actionsHide();\r\n };\r\n\r\n btnMove.ondragend = ( event ) => {\r\n WPTB_Helper.elementDragEndClear();\r\n }\r\n }\r\n\r\n actions.style.display = 'flex';\r\n\r\n this.wptbActions = actions;\r\n } \r\n }\r\n \r\n this.setParameters = ( thisNode ) => {\r\n \r\n if( ! this.wptbActions ) {\r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length > 0 ) {\r\n this.wptbActions = actions[0];\r\n } else {\r\n this.wptbActions = false;\r\n }\r\n }\r\n \r\n if( this.wptbActions && this.wptbActions.classList.contains( 'wptb-actions' ) ) {\r\n this.wptbActions.style.display = 'flex';\r\n } else {\r\n return;\r\n }\r\n \r\n let coordinatesElement = thisNode.getBoundingClientRect();\r\n \r\n let wptbContainer = document.getElementsByClassName( 'wptb-container' )[0];\r\n let correctTop = () => {\r\n let coordinatesElement = thisNode.getBoundingClientRect();\r\n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\r\n }\r\n wptbContainer.removeEventListener( 'scroll', correctTop, false );\r\n \r\n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\r\n this.wptbActions.style.left = ( parseFloat( coordinatesElement.right ) - parseFloat( this.wptbActions.clientWidth ) ) + 1 + 'px';\r\n \r\n this.wptbActions.style.display = 'flex';\r\n thisNode.classList.add( 'wptb-directlyhovered' );\r\n \r\n wptbContainer.addEventListener( 'scroll', correctTop, false );\r\n }\r\n \r\n this.leaveFromField = ( event, node, actionType ) => {\r\n if( ! this.wptbActions ) {\r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length > 0 ) {\r\n this.wptbActions = actions[0];\r\n } else {\r\n this.wptbActions = false;\r\n }\r\n }\r\n \r\n if( ! this.wptbActions ) {\r\n return;\r\n }\r\n \r\n if( event.relatedTarget ) {\r\n if ( event.relatedTarget.classList.contains( 'wptb-actions' ) ||\r\n event.relatedTarget.classList.contains( 'wptb-move-action' ) ||\r\n event.relatedTarget.classList.contains( 'wptb-duplicate-action' ) ||\r\n event.relatedTarget.classList.contains( 'wptb-delete-action' ) ) {\r\n if( ! this.wptbActions ) {\r\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\r\n }\r\n this.wptbActions.onmouseleave = ( event ) => {\r\n if( event.relatedTarget != null && ( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || \r\n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element') ) && event.relatedTarget != this.wptbActions.activeElem &&\r\n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-directlyhovered' ) != this.wptbActions.activeElem ) {\r\n \r\n// this.wptbActions.style.display = 'none';\r\n// event.relatedTarget.parentNode.parentNode.classList.remove( 'wptb-directlyhovered' );\r\n//\r\n// let wptbActionsField = new WPTB_ActionsField();\r\n//\r\n// wptbActionsField.addActionField( 1, event.relatedTarget.parentNode.parentNode );\r\n//\r\n// wptbActionsField.setParameters( event.relatedTarget.parentNode.parentNode );\r\n } else {\r\n \r\n }\r\n \r\n let wptbActionsField = new WPTB_ActionsField();\r\n\r\n wptbActionsField.leaveFromField( event, event.relatedTarget.parentNode.parentNode );\r\n \r\n event.target.activeElem.classList.remove( 'wptb-directlyhovered' );\r\n }\r\n\r\n return;\r\n } \r\n }\r\n \r\n node.classList.remove( 'wptb-directlyhovered' );\r\n this.wptbActions.style.display = 'none';\r\n \r\n if( event.relatedTarget ) {\r\n if( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element' ) ) {\r\n this.addActionField( 1, event.relatedTarget.parentNode );\r\n\r\n this.setParameters( event.relatedTarget.parentNode );\r\n }\r\n }\r\n }\r\n \r\n this.actionsRemove = () => {\r\n if( ! this.wptbActions ) {\r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length > 0 ) {\r\n this.wptbActions = actions[0];\r\n }\r\n }\r\n \r\n if( this.wptbActions ) {\r\n this.wptbActions.parentNode.removeChild( this.wptbActions );\r\n }\r\n }\r\n \r\n this.actionsHide = () => {\r\n if( ! this.wptbActions ) {\r\n let actions = document.getElementsByClassName( 'wptb-actions' );\r\n if( actions.length > 0 ) {\r\n this.wptbActions = actions[0];\r\n }\r\n }\r\n \r\n if( this.wptbActions ) {\r\n this.wptbActions.style.opacity = 0;\r\n }\r\n }\r\n}","(function () {\r\n var WPTB_Builder = function () {\r\n var table_id = WPTB_Helper.detectMode();\r\n if ( table_id ) {\r\n var http = new XMLHttpRequest(),\r\n urlSet = ajaxurl + \"?action=get_table\" + '&id=' + table_id;\r\n http.open('GET', urlSet, true);\r\n http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\r\n http.onreadystatechange = function (d) {\r\n if (this.readyState == 4 && this.status == 200) {\r\n var ans = JSON.parse( http.responseText );\r\n document.getElementById('wptb-setup-name').value = ans[0];\r\n \r\n if( ans[1] ) {\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\r\n let wptbTableSetupEl = document.getElementsByClassName('wptb-table-setup')[0];\r\n wptbTableSetupEl.appendChild( WPTB_Parser( ans[1] ) );\r\n \r\n let body = document.getElementsByTagName('body')[0];\r\n \r\n WPTB_Table();\r\n let element = document.querySelector( '.wptb-preview-table' );\r\n if( element ) {\r\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if( ! infArr ) {\r\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\r\n }\r\n \r\n if( element.dataset.wptbTableContainerMaxWidth ) {\r\n wptbTableSetupEl.style.maxWidth = element.dataset.wptbTableContainerMaxWidth + 'px';\r\n \r\n element.tdDefaultWidth();\r\n }\r\n }\r\n \r\n //WPTB_LeftPanel();\r\n WPTB_Settings();\r\n \r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n } else {\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n }\r\n \r\n return;\r\n }\r\n };\r\n http.send(null);\r\n } else {\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n document.counter = new ElementCounters();\r\n document.select = new MultipleSelect();\r\n\r\n var initializer = WPTB_Initializer();\r\n settings = WPTB_Settings();\r\n };\r\n\r\n let url = window.location.href,\r\n regex = new RegExp('[?&]page=wptb-builder'),\r\n results = regex.exec( url );\r\n if ( results ) {\r\n document.addEventListener('DOMContentLoaded', WPTB_Builder);\r\n }\r\n})();","var WPTB_Cell = function ( callback, DOMElement ) {\r\n\r\n function highlightRow(td) {\r\n var parentRow = td.parentNode,\r\n columnCount = parseInt(document.getElementById('wptb-columns-number').value),\r\n tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\r\n for (var i = 0; i < tds.length; i++) {\r\n tds[i].classList.remove('wptb-highlighted-row-first', 'wptb-highlighted-row-last', 'wptb-highlighted-row-inner', 'wptb-highlighted-column-first', 'wptb-highlighted-column-last', 'wptb-highlighted-column-inner');\r\n }\r\n for (var i = 0; i < columnCount; i++) {\r\n\r\n var classToAdd = i == 0 ? 'wptb-highlighted-row-first' : i == columnCount - 1 ? 'wptb-highlighted-row-last' : 'wptb-highlighted-row-inner';\r\n var ttd = parentRow.getElementsByTagName('td')[i];\r\n if (ttd !== td) {\r\n ttd.classList.add(classToAdd);\r\n }\r\n }\r\n }\r\n\r\n function highlightColumn(td) {\r\n\r\n var index,\r\n parentRow = td.parentNode;\r\n columnCount = parseInt(document.getElementById('wptb-columns-number').value), rowCount = parseInt(document.getElementById('wptb-rows-number').value), table = document.getElementsByClassName('wptb-preview-table')[0];\r\n for (var i = 0; i < columnCount; i++) {\r\n if (parentRow.getElementsByTagName('td')[i] === td) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n for (var i = 0; i < rowCount; i++) {\r\n var classToAdd = i == 0 ? 'wptb-highlighted-column-first' : i == rowCount - 1 ? 'wptb-highlighted-column-last' : 'wptb-highlighted-column-inner';\r\n var tr = table.getElementsByTagName('tr')[i];\r\n if (tr.getElementsByTagName('td')[index] !== td) {\r\n tr.getElementsByTagName('td')[index].classList.add(classToAdd);\r\n }\r\n }\r\n }\r\n \r\n if( ! DOMElement ) {\r\n DOMElement = document.createElement(\"td\");\r\n\r\n DOMElement.style.padding = jQuery('#wptb-table-padding-number').val() + 'px';\r\n\r\n var innerBorderWidth = jQuery('#wptb-table-inner-border-number').val();\r\n\r\n if (innerBorderWidth != '' && parseInt(innerBorderWidth) != 0) {\r\n DOMElement.style.border = innerBorderWidth + 'px solid ' + jQuery('#wptb-table-border-color').val();\r\n } \r\n\r\n DOMElement.classList.add('wptb-droppable', 'wptb-cell');\r\n }\r\n\r\n DOMElement.draggable = false;\r\n if ( callback ) {\r\n DOMElement.onclick = callback;\r\n }\r\n \r\n // Cell double click handler\r\n DOMElement.ondblclick = function( event ) {\r\n event.stopPropagation();\r\n if( ! WPTB_Helper.findAncestor( DOMElement, 'wptb-preview-table-manage-cells' ) && event.target == event.currentTarget ) {\r\n \r\n WPTB_Helper.wptbDocumentEventGenerate( 'table:cell:dblclick', event.target );\r\n \r\n let element = WPTB_Helper.newElementProxy( 'text' );\r\n element = element.getDOMElement();\r\n \r\n DOMElement.appendChild( element );\r\n \r\n WPTB_innerElementSet( element );\r\n }\r\n }\r\n \r\n WPTB_innerElementSet( DOMElement );\r\n\r\n WPTB_Helper.elementStartScript( DOMElement, 'table_cell_setting' );\r\n\r\n let wptbPhElement = DOMElement.getElementsByClassName( 'wptb-ph-element' );\r\n \r\n if ( wptbPhElement.length > 0 ) {\r\n for( let i = 0; i < wptbPhElement.length; i++ ) {\r\n wptbPhElement[i].getDOMElement = function() {\r\n return wptbPhElement[i];\r\n }\r\n \r\n WPTB_innerElementSet( wptbPhElement[i] );\r\n \r\n let wptbElementTypeClass = wptbPhElement[i].className.match( /wptb-element-((.+-)\\d+)/i );\r\n if( wptbElementTypeClass && Array.isArray( wptbElementTypeClass ) ) {\r\n let wptbTypeElementArr = wptbElementTypeClass[1].split( '-' );\r\n wptbPhElement[i].kind = wptbTypeElementArr[0];\r\n applyGenericItemSettings( wptbPhElement[i], wptbElementTypeClass[1] );\r\n let wptbInternalActiveElement = wptbPhElement[i].getElementsByClassName( 'wptb-in-element' );\r\n if ( wptbInternalActiveElement.length > 0 ) {\r\n for ( let j = 0; j < wptbInternalActiveElement.length; j++ ) {\r\n let wptbInternalActiveElementObj = {};\r\n wptbInternalActiveElementObj.getDOMElement = function() {\r\n return wptbInternalActiveElement[j];\r\n }\r\n \r\n applyGenericItemSettings( wptbInternalActiveElementObj );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n\r\n this.setCoords = function (y, x) {\r\n var el = this.getDOMElement();\r\n el.dataset.yIndex = y;\r\n el.dataset.xIndex = x;\r\n };\r\n\r\n this.getCoords = function () {\r\n var coords,\r\n el = this.getDOMElement();\r\n coords.x = el.dataset.xIndex;\r\n coords.y = el.dataset.yIndex;\r\n return coords;\r\n };\r\n\r\n this.appendElement = function (node) {\r\n getDOMElement().appendChild(node);\r\n };\r\n \r\n DOMElement.getCellDimensions = function() {\r\n\r\n let tdStyleObj = window.getComputedStyle( this, null );\r\n\r\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\r\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\r\n\r\n let tdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\r\n let tdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\r\n\r\n let tdPaddingTop = tdStyleObj.getPropertyValue( 'padding-top' );\r\n let tdPaddingBottom = tdStyleObj.getPropertyValue( 'padding-bottom' );\r\n\r\n let tdBorderTopWidth = tdStyleObj.getPropertyValue( 'border-top-width' );\r\n let tdBorderBottomWidth = tdStyleObj.getPropertyValue( 'border-bottom-width' );\r\n\r\n let width = parseInt( this.offsetWidth, 10 ) -\r\n parseInt( tdPaddingLeft, 10 ) -\r\n parseInt( tdPaddingRight, 10 );\r\n\r\n let height = parseInt( this.offsetHeight, 10 ) -\r\n parseInt( tdPaddingTop, 10 ) -\r\n parseInt( tdPaddingBottom, 10 );\r\n let table = WPTB_Helper.findAncestor( this, 'wptb-preview-table' );\r\n if(table) {\r\n if(table.style.borderCollapse === 'collapse') {\r\n width = width - ( parseInt( tdBorderLeftWidth, 10 ) / 2 ) -\r\n ( parseInt( tdBorderRightWidth, 10 ) / 2 );\r\n height = height - ( parseInt( tdBorderTopWidth, 10 ) / 2 ) -\r\n ( parseInt( tdBorderBottomWidth, 10 ) / 2 );\r\n let tableFullStyleObj = window.getComputedStyle( table, null );\r\n let tableBorderLeft = tableFullStyleObj.getPropertyValue( 'border-left-width' );\r\n let tableBorderRight = tableFullStyleObj.getPropertyValue( 'border-right-width' );\r\n let tableBorderTop = tableFullStyleObj.getPropertyValue( 'border-top-width' );\r\n let tableBorderBottom = tableFullStyleObj.getPropertyValue( 'border-bottom-width' );\r\n\r\n let tr = this.parentNode;\r\n if( tr && tr.nodeName.toLowerCase() === 'tr' ) {\r\n if( tr.firstChild && tr.firstChild.dataset.xIndex === this.dataset.xIndex ) {\r\n if( parseInt( tableBorderLeft, 10 ) > parseInt( tdBorderLeftWidth, 10 ) ) {\r\n width += -( parseInt( tableBorderLeft, 10 ) - parseInt( tdBorderLeftWidth, 10 ) ) / 2;\r\n }\r\n }\r\n\r\n if( tr.lastChild && tr.lastChild.dataset.xIndex === this.dataset.xIndex ) {\r\n if( parseInt( tableBorderRight, 10 ) > parseInt( tdBorderRightWidth, 10 ) ) {\r\n width += -( parseInt( tableBorderRight, 10 ) - parseInt( tdBorderRightWidth, 10 ) ) / 2;\r\n }\r\n }\r\n\r\n let body = tr.parentNode;\r\n if( body && body.nodeName.toLowerCase() === 'body' ) {\r\n if( body.firstChild && body.firstChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\r\n if( parseInt( tableBorderTop, 10 ) > parseInt( tdBorderTopWidth, 10 ) ) {\r\n height += ( parseInt( tableBorderTop, 10 ) - parseInt( tdBorderTopWidth, 10 ) ) / 2;\r\n }\r\n }\r\n\r\n if( body.lastChild && body.lastChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\r\n if( parseInt( tableBorderBottom, 10 ) > parseInt( tdBorderBottomWidth, 10 ) ) {\r\n height += ( parseInt( tableBorderBottom, 10 ) - parseInt( tdBorderBottomWidth, 10 ) ) / 2;\r\n }\r\n }\r\n }\r\n }\r\n } else if(table.style.borderCollapse === 'separate') {\r\n width = width - parseInt( tdBorderLeftWidth, 10 ) -\r\n parseInt( tdBorderRightWidth, 10 );\r\n height = height - parseInt( tdBorderTopWidth, 10 ) -\r\n parseInt( tdBorderBottomWidth, 10 );\r\n }\r\n }\r\n\r\n return {\r\n width: parseInt( width ),\r\n height: parseInt( height )\r\n };\r\n }\r\n\r\n return this;\r\n};","var WPTB_DropHandle = function (thisElem, e, hide = false) {\r\n\r\n let wptbDropHandle,\r\n wptbDropBorderMarker,\r\n wptbDropBorderMarkerTop,\r\n wptbDropBorderMarkerRight,\r\n wptbDropBorderMarkerBottom,\r\n wptbDropBorderMarkerLeft;\r\n\r\n /**\r\n * Add px suffix to a value\r\n *\r\n * @param {any} val value\r\n * @returns {string} string value suffixed with px\r\n */\r\n function toPx(val){\r\n return `${val}px`;\r\n }\r\n\r\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\r\n let cellRelatedDropHandle = document.querySelector('.wptb-cell-related-drop-handle');\r\n if(hide && cellRelatedDropHandle ){\r\n cellRelatedDropHandle.style.display = 'none';\r\n return;\r\n }\r\n if(cellRelatedDropHandle === null){\r\n const range = document.createRange();\r\n range.setStart(document.body , 0);\r\n\r\n const shadowRoot = range.createContextualFragment('<div class=\"wptb-cell-related-drop-handle\">Add to cell</div>').children[0];\r\n\r\n document.body.appendChild(shadowRoot);\r\n cellRelatedDropHandle = shadowRoot.children[0];\r\n }\r\n\r\n const parentTd = WPTB_Helper.getParentOfType('td', thisElem);\r\n const {top,left,width,height} = parentTd.getBoundingClientRect();\r\n\r\n if(!cellRelatedDropHandle){\r\n return;\r\n }\r\n\r\n cellRelatedDropHandle.style.display = 'flex';\r\n cellRelatedDropHandle.style.top = toPx(top);\r\n cellRelatedDropHandle.style.width = toPx(width);\r\n cellRelatedDropHandle.style.height = toPx(height);\r\n cellRelatedDropHandle.style.left = toPx(left);\r\n\r\n return;\r\n }\r\n\r\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length == 0 ) {\r\n wptbDropHandle = document.createElement( 'div' );\r\n wptbDropHandle.classList.add( 'wptb-drop-handle' );\r\n \r\n wptbDropBorderMarker = document.createElement( 'div' );\r\n wptbDropBorderMarker.classList.add( 'wptb-drop-border-marker' );\r\n \r\n wptbDropBorderMarkerTop = document.createElement( 'div' ),\r\n wptbDropBorderMarkerRight = document.createElement( 'div' ),\r\n wptbDropBorderMarkerBottom = document.createElement( 'div' ),\r\n wptbDropBorderMarkerLeft = document.createElement( 'div' );\r\n \r\n wptbDropBorderMarkerTop.classList.add( 'wptb-drop-border-marker-top' );\r\n wptbDropBorderMarkerRight.classList.add( 'wptb-drop-border-marker-right' );\r\n wptbDropBorderMarkerBottom.classList.add( 'wptb-drop-border-marker-bottom' );\r\n wptbDropBorderMarkerLeft.classList.add( 'wptb-drop-border-marker-left' );\r\n \r\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerTop );\r\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerRight );\r\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerBottom );\r\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerLeft );\r\n \r\n let body = document.getElementsByTagName( 'body' );\r\n if ( body.length > 0 ) {\r\n body[0].appendChild( wptbDropHandle );\r\n body[0].appendChild( wptbDropBorderMarker );\r\n }\r\n \r\n wptbDropHandle.ondragenter = function () {\r\n if (e.target.classList.contains('wptb-empty')) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n wptbDropHandle.ondragover = function (e) {\r\n e.preventDefault(); \r\n }\r\n\r\n wptbDropHandle.ondragleave = function () {\r\n\r\n }\r\n wptbDropHandle.ondrop = function (e) {\r\n e.preventDefault();\r\n let element;\r\n \r\n if ( e.dataTransfer.getData('wptbElement') ) {\r\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData('wptbElement') );\r\n element = element.getDOMElement();\r\n } else {\r\n element = document.getElementsByClassName( e.dataTransfer.getData('node') )[0];\r\n element.classList.remove( 'wptb-moving-mode' );\r\n element.classList.remove( 'wptb-moving-into-same-elem' );\r\n element.wptbMovingMode = 1;\r\n }\r\n \r\n let td;\r\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\r\n thisElem = wptbDropHandle.getDOMParentElement();\r\n if ( thisElem.nodeName.toLowerCase() == 'td' ) {\r\n td = wptbDropHandle.getDOMParentElement();\r\n td.appendChild( element );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n }\r\n } else {\r\n let innerElement = wptbDropHandle.getDOMParentElement();\r\n td = innerElement.parentNode;\r\n \r\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\r\n td.insertBefore( element, innerElement );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\r\n let innerElementNext = innerElement.nextSibling;\r\n td.insertBefore( element, innerElementNext );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n }\r\n }\r\n \r\n let thisRow = td.parentNode;\r\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n\r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n \r\n wptbDropHandle.style.display = 'none';\r\n wptbDropBorderMarker.style.display = 'none';\r\n \r\n WPTB_innerElementSet( element );\r\n if( ! element.classList.contains( 'wptb-image-container' ) || element.wptbMovingMode == 1 ) {\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n element.wptbMovingMode == undefined;\r\n }\r\n }\r\n let wptbContainer = document.querySelector( '.wptb-container' );\r\n wptbContainer.onscroll = function() {\r\n wptbDropHandle.style.display = 'none';\r\n wptbDropBorderMarker.style.display = 'none';\r\n }\r\n } else {\r\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\r\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\r\n }\r\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \r\n thisElem.getElementsByClassName( 'wptb-ph-element' ).length != 0) {\r\n return;\r\n }\r\n\r\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \r\n thisElem.classList.contains('wptb-empty')) {\r\n return;\r\n }\r\n \r\n let thisRow;\r\n if ( thisElem.localName == 'td' ) {\r\n thisRow = thisElem.parentNode;\r\n } else if ( thisElem.localName == 'div' && thisElem.classList.contains( 'wptb-ph-element' ) ) {\r\n thisRow = thisElem.parentNode.parentNode;\r\n }\r\n \r\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n \r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n let indics = e.dataTransfer.types;\r\n let notDragEnter = false;\r\n for ( let i = 0; i < indics.length; i++ ) {\r\n let infArr = indics[i].match( /wptbelindic-([a-z]+)/i );\r\n if ( infArr && infArr[1] != 'text' ) {\r\n notDragEnter = true;\r\n break;\r\n }\r\n }\r\n if( notDragEnter ) {\r\n return;\r\n }\r\n }\r\n }\r\n \r\n wptbDropHandle.style.width = thisElem.offsetWidth + 'px';\r\n let height = thisElem.offsetHeight,\r\n coordinatesElement = thisElem.getBoundingClientRect(),\r\n left = parseFloat( coordinatesElement.left ),\r\n top;\r\n wptbDropHandle.style.left = left + 'px';\r\n \r\n if( e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) != -1 ) {\r\n let elementDrag = document.getElementsByClassName( 'wptb-moving-mode' )[0];\r\n if( thisElem == elementDrag ) {\r\n wptbDropHandle.classList.add('wptb-moving-into-same-elem');\r\n wptbDropBorderMarker.classList.add('wptb-moving-into-same-elem');\r\n } else {\r\n wptbDropHandle.classList.remove('wptb-moving-into-same-elem');\r\n wptbDropBorderMarker.classList.remove('wptb-moving-into-same-elem');\r\n }\r\n }\r\n \r\n wptbDropHandle.getDOMParentElement = function() {\r\n return thisElem;\r\n }\r\n \r\n wptbDropHandle.style.display = 'block';\r\n wptbDropBorderMarker.style.display = 'block';\r\n if( thisElem.nodeName.toLowerCase() != 'td' ) {\r\n let y = e.offsetY==undefined?e.layerY:e.offsetY;\r\n top = parseFloat( coordinatesElement.top ) - parseFloat( 11 );\r\n wptbDropHandle.dataset.text = 'Above Element';\r\n if ( y > height/2 ) {\r\n top = parseFloat( coordinatesElement.top ) + height - 1;\r\n wptbDropHandle.dataset.text = 'Below Element';\r\n }\r\n } else {\r\n wptbDropHandle.dataset.text = 'Drop Here';\r\n top = parseFloat( coordinatesElement.top ) + height/2 - 5;\r\n }\r\n wptbDropHandle.style.top = top + 'px';\r\n\r\n wptbDropBorderMarker.style.top = coordinatesElement.top + 'px';\r\n wptbDropBorderMarker.style.left = coordinatesElement.left + 'px';\r\n\r\n wptbDropBorderMarkerTop = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-top' );\r\n wptbDropBorderMarkerTop.style.width = ( parseFloat( thisElem.offsetWidth ) - parseFloat( 1 ) ) + 'px';\r\n\r\n wptbDropBorderMarkerRight = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-right' );\r\n wptbDropBorderMarkerRight.style.height = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) - 1 ) + 'px';\r\n wptbDropBorderMarkerRight.style.left = wptbDropBorderMarkerTop.style.width;\r\n\r\n wptbDropBorderMarkerBottom = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-bottom' );\r\n wptbDropBorderMarkerBottom.style.width = wptbDropBorderMarkerTop.style.width;\r\n wptbDropBorderMarkerBottom.style.top = wptbDropBorderMarkerRight.style.height;\r\n\r\n wptbDropBorderMarkerLeft = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-left' );\r\n wptbDropBorderMarkerLeft.style.height = wptbDropBorderMarkerRight.style.height;\r\n}","var ElementCounters = function () {\r\n\r\n\tvar priv = [];\r\n\tpriv['text'] = 0;\r\n\tpriv['image'] = 0;\r\n\tpriv['list'] = 0;\r\n\tpriv['button'] = 0;\r\n\r\n\tthis.increment = function (key) {\r\n\t\tif (!(key in priv)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tpriv[key]++;\r\n\t}\r\n\r\n\tthis.nextIndex = function (key) {\r\n\t\tif (!(key in priv)) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t\treturn priv[key] + 1;\r\n\t}\r\n\r\n\treturn this;\r\n\r\n};","var WPTB_ElementObject = function ( data ) {\r\n let DOMElement, kindIndexProt, copy;\r\n if( ! data.elemProt ) {\r\n DOMElement = document.createElement('div'),\r\n kindIndexProt = undefined,\r\n copy = false;\r\n DOMElement.classList.add( 'wptb-' + data.kind + '-container', 'wptb-ph-element' );\r\n \r\n let wpTemplateId = 'wptb-' + data.kind + '-content';\r\n let template = wp.template( wpTemplateId );\r\n data.node = DOMElement;\r\n let itemHtml = template( data );\r\n\r\n itemHtml = itemHtml.replace(/\\r|\\n|\\t/g, '').trim();\r\n DOMElement.innerHTML = itemHtml;\r\n } else {\r\n DOMElement = data.elemProt.cloneNode( true );\r\n DOMElement.classList.remove( 'wptb-directlyhovered' );\r\n let wptbElementMutch = data.elemProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\r\n kindIndexProt = wptbElementMutch[1];\r\n };\r\n copy = true;\r\n \r\n if( data.tinyMceClear ) {\r\n DOMElement = WPTB_Helper.elementClearFromTinyMce( DOMElement );\r\n }\r\n }\r\n \r\n let inElems = DOMElement.querySelectorAll( '.wptb-in-element' );\r\n if( inElems.length > 0 ) {\r\n for ( let i = 0; i < inElems.length; i++ ) {\r\n let inElemObj = {};\r\n inElemObj.getDOMElement = function() {\r\n return inElems[i];\r\n }\r\n \r\n applyGenericItemSettings( inElemObj );\r\n }\r\n }\r\n \r\n window.addEventListener( 'item:onmouseenter', function( event ) {\r\n //console.log( event );\r\n }, false);\r\n \r\n \r\n this.kind = data.kind;\r\n this.getDOMElement = function () {\r\n return DOMElement;\r\n };\r\n \r\n applyGenericItemSettings( this, kindIndexProt, copy );\r\n return this;\r\n}\r\n\r\n\r\n","var WPTB_ElementOptions = function ( element, index, kindIndexProt ) {\r\n\r\n var node = element.getDOMElement();\r\n node.addEventListener( 'click', function() {\r\n WPTB_Helper.elementOptionsSet( element.kind, this );\r\n }, {capture: true} );\r\n};","var WPTB_Helper = {\r\n hexToRgb: function( hex ) {\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec( hex );\r\n return result ? 'rgb(' + parseInt( result[1], 16 ) + ',' + parseInt( result[2], 16 ) + ',' + parseInt( result[3], 16 ) + ')' : null;\r\n },\r\n rgbToHex: function ( rgb ) {\r\n if( rgb ) {\r\n if( WPTB_Helper.isHex( rgb ) ) return rgb;\r\n\r\n let rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?((?:[0-9]*[.])?[0-9]+)[\\s+]?\\)/i);\r\n if ( rgbm && rgbm.length === 5) {\r\n return \"#\" +\r\n ('0' + Math.round(parseFloat(rgbm[4], 10) * 255).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\r\n } else {\r\n rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\r\n if (rgbm && rgbm.length === 4) {\r\n return \"#\" +\r\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\r\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\r\n } else {\r\n return '';\r\n }\r\n }\r\n } else {\r\n return '';\r\n }\r\n\r\n },\r\n isHex: function( hex ) {\r\n let regex = new RegExp('^#(?:[A-Fa-f0-9]{3}){1,2}$');\r\n return regex.test( hex );\r\n },\r\n getElementIcon: function ( icon_directory ) {\r\n let hostName = location.protocol + '//' + location.hostname;\r\n let img = document.createElement( 'img' );\r\n img.src = icon_directory;\r\n return img;\r\n },\r\n elementDragEndClear: function() {\r\n let wptbMovingMode = document.getElementsByClassName( 'wptb-moving-mode' );\r\n if ( wptbMovingMode.length > 0 ) {\r\n for( let i = 0; i < wptbMovingMode.length; i++ ) {\r\n wptbMovingMode[i].classList.remove( 'wptb-moving-mode' );\r\n }\r\n }\r\n\r\n let wptbDropHandles = document.getElementsByClassName( 'wptb-drop-handle' );\r\n if ( wptbDropHandles.length > 0 ) {\r\n for( let i = 0; i < wptbDropHandles.length; i++ ) {\r\n wptbDropHandles[i].style.display = 'none';\r\n }\r\n }\r\n\r\n let wptbDropBorderMarkers = document.getElementsByClassName( 'wptb-drop-border-marker' );\r\n if ( wptbDropBorderMarkers.length > 0 ) {\r\n for( let i = 0; i < wptbDropBorderMarkers.length; i++ ) {\r\n wptbDropBorderMarkers[i].style.display = 'none';\r\n }\r\n }\r\n },\r\n linkHttpCheckChange: function( link, convertToAbs = false ) {\r\n if ( link ) {\r\n // even though it is not a best practice and a huge security risk, sometimes our users use javascript tag at href attributes, this check will make sure those tags will not be modified and returned as they are\r\n if(link.match(/^(javascript:)(.+)$/)){\r\n return link;\r\n }\r\n // relative link checking\r\n // if link starts with '/', assume it is a relative link to the origin of the current site\r\n else if( link.match(/^\\/([\\S]+)$/) ){\r\n if (convertToAbs) {\r\n const currentLocation = document.location;\r\n let {origin} = currentLocation;\r\n\r\n\r\n // strip out the '/' at the end of the origin name if there is any\r\n if (origin.match(/^(.+)\\/$/)) {\r\n origin = origin.slice(-1);\r\n }\r\n\r\n return `${origin}${link}`;\r\n }else{\r\n return link;\r\n }\r\n }\r\n else if ( link.indexOf( 'http://' ) == -1 && link.indexOf( 'https://' ) == -1 ) {\r\n let linkArr = link.split( '/' ),\r\n linkClean;\r\n if ( Array.isArray( linkArr ) && linkArr.length > 0 ) {\r\n linkClean = linkArr[linkArr.length - 1];\r\n }\r\n return document.location.protocol + '//' + linkClean;\r\n } else {\r\n return link;\r\n }\r\n } else {\r\n return '';\r\n }\r\n },\r\n dataTitleColumnSet: function( table ) {\r\n // TODO dataTitleColumnSet\r\n // let rows = table.rows,\r\n // rowHead = rows[0];\r\n // let computedStyleRowHead = getComputedStyle( rowHead );\r\n //\r\n // let rowHeadChildren = rowHead.children;\r\n // let contentsForHeader = {};\r\n // for( let i = 0; i < rowHeadChildren.length; i++ ) {\r\n // let tdElements = rowHeadChildren[i].children;\r\n //\r\n // for( let j = 0; j < tdElements.length; j++ ) {\r\n // let element = tdElements[j];\r\n // if( element.classList.contains( 'wptb-ph-element' ) ) {\r\n // let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n // if( infArr[1] == 'text' ) {\r\n // let p = element.querySelector( 'p' ),\r\n // textContent = p.textContent,\r\n // textAlign = p.style.textAlign;\r\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = [textContent, element.style.fontSize,\r\n // element.style.color, computedStyleRowHead.backgroundColor, textAlign];\r\n // break;\r\n // }\r\n // }\r\n // }\r\n // if( ! contentsForHeader[rowHeadChildren[i].dataset.xIndex] ) {\r\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = ['', '',\r\n // '', computedStyleRowHead.backgroundColor, ''];\r\n // }\r\n // }\r\n // for ( let i = 1; i < rows.length; i++ ) {\r\n // let thisRow = rows[i],\r\n // thisRowChildren = thisRow.children;\r\n // for( let j = 0; j < thisRowChildren.length; j++ ) {\r\n // if ( contentsForHeader[thisRowChildren[j].dataset.xIndex] ) {\r\n // thisRowChildren[j].dataset.wptbTitleColumn = contentsForHeader[thisRowChildren[j].dataset.xIndex][0];\r\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = contentsForHeader[thisRowChildren[j].dataset.xIndex][1];\r\n // thisRowChildren[j].dataset.wptbTitleColumnColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][2];\r\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][3];\r\n // thisRowChildren[j].dataset.wptbTitleAlign = contentsForHeader[thisRowChildren[j].dataset.xIndex][4];\r\n // } else {\r\n // thisRowChildren[j].dataset.wptbTitleColumn = null;\r\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = null;\r\n // thisRowChildren[j].dataset.wptbTitleColumnColor = null;\r\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = null;\r\n // thisRowChildren[j].dataset.wptbTitleAlign = null;\r\n // }\r\n // }\r\n // }\r\n },\r\n findAncestor: function( el, cls ) {\r\n while ( ( el = el.parentElement ) && !el.classList.contains( cls ) );\r\n return el;\r\n },\r\n rowIsTop: function( row ) {\r\n var parent = row.parentNode;\r\n if( parent.children[0] == row ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n getSelectionText: function() {\r\n var txt = '';\r\n if (txt = window.getSelection) {\r\n txt = window.getSelection().toString();\r\n } else {\r\n txt = document.selection.createRange().text;\r\n }\r\n return txt;\r\n },\r\n elementOptionsPanelClear: function() {\r\n let elementOptionsGroup = document.getElementById( 'element-options-group' );\r\n if( elementOptionsGroup ) {\r\n elementOptionsGroup.innerHTML = '';\r\n }\r\n },\r\n wpColorPickerCheckChangeForTableStateSaving: function( event ) {\r\n if( event.originalEvent.type == 'external' ) {\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n } else {\r\n let wpPickerContainer = WPTB_Helper.findAncestor( event.target, 'wp-picker-container' );\r\n if( wpPickerContainer ) {\r\n if( event.originalEvent.type == 'square' || event.originalEvent.type == 'strip' ) {\r\n let body = document.getElementsByTagName( 'body' )[0];\r\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\r\n body.addEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\r\n }\r\n }\r\n }\r\n },\r\n irisStripMouseUpStateSaveManager: function() {\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n\r\n let body = document.getElementsByTagName( 'body' )[0];\r\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\r\n },\r\n wpColorPickerClear: function( attribute, isId ) {\r\n let input;\r\n if( isId ) {\r\n input = [document.getElementById( attribute )];\r\n input.length = 1;\r\n } else {\r\n input = document.getElementsByClassName( attribute );\r\n }\r\n for( let i = 0; i < input.length; i++ ) {\r\n let wpPickerContainer = WPTB_Helper.findAncestor( input[i], 'wp-picker-container' );\r\n if( wpPickerContainer ) {\r\n let parent = wpPickerContainer.parentNode;\r\n parent.removeChild( wpPickerContainer );\r\n let newInput = document.createElement( 'input' );\r\n if( isId ) {\r\n newInput.setAttribute( 'id', attribute );\r\n } else {\r\n newInput.classList.add( 'wptb-element-property', attribute );\r\n }\r\n newInput.value = \"\";\r\n parent.appendChild( newInput );\r\n }\r\n }\r\n },\r\n detectMode: function() {\r\n var url = window.location.href,\r\n regex = new RegExp('[?&]table(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if ( ! results ) return false;\r\n if ( ! results[2] ) return '';\r\n return decodeURIComponent( results[2].replace(/\\+/g, ' ') );\r\n },\r\n getColumnWidth: function( table, cell ) {\r\n let xIndex = cell.dataset.xIndex;\r\n let xIndexes = table.querySelectorAll( '[data-x-index=\"' + xIndex + '\"]' );\r\n let cellWidth = cell.getCellDimensions().width;\r\n for( let i = 0; i < xIndexes.length; i++ ) {\r\n if( cellWidth > xIndexes[i].getCellDimensions().width ) {\r\n cellWidth = xIndexes[i].getCellDimensions().width;\r\n }\r\n }\r\n return cellWidth;\r\n },\r\n getRowHeight: function( table, cell ) {\r\n let yIndex = cell.dataset.yIndex;\r\n let yIndexes = table.querySelectorAll( '[data-y-index=\"' + yIndex + '\"]' );\r\n let cellHeight = cell.getCellDimensions().height;\r\n for( let i = 0; i < yIndexes.length; i++ ) {\r\n if( cellHeight > yIndexes[i].getCellDimensions().height ) {\r\n cellHeight = yIndexes[i].getCellDimensions().height;\r\n }\r\n }\r\n return cellHeight;\r\n },\r\n newElementProxy: function( el ) {\r\n if( el ) {\r\n let data = {kind: el};\r\n return new WPTB_ElementObject( data );\r\n }\r\n },\r\n wpColorPickerChange: function( event, ui ) {\r\n let uiColor;\r\n if( ui ) {\r\n uiColor = ui.color.toString();\r\n } else {\r\n uiColor = '';\r\n }\r\n\r\n let parent = WPTB_Helper.findAncestor( event.target, 'wp-picker-input-wrap' ).getElementsByClassName( 'wptb-color-picker' )[0], classe, type, ps, number;\r\n classe = parent.dataset.element.match(/wptb-options-(.+)-(\\d+)/i);\r\n type = classe[1];\r\n number = classe[2];\r\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + type + '-' + number )[0];\r\n if ( type == 'button' ) {\r\n if ( parent.dataset.type == 'button-text-color' ) {\r\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.color = uiColor;\r\n } else {\r\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.backgroundColor = uiColor;\r\n }\r\n } else if( type == 'list' ) {\r\n let ps = affectedEl.querySelectorAll( 'p' );\r\n if( ps.length > 0 ) {\r\n for ( let i = 0; i < ps.length; i++ ) {\r\n ps[i].style.color = uiColor;\r\n }\r\n }\r\n } else if( type == 'star_rating' ) {\r\n if ( parent.dataset.type == 'star-color' ) {\r\n let ratingStar = affectedEl.querySelectorAll('li');\r\n for( let i = 0; i < ratingStar.length; i++ ) {\r\n let span = ratingStar[i].getElementsByTagName( 'span' );\r\n for( let j = 0; j < span.length; j++ ) {\r\n span[j].style.fill = uiColor;\r\n }\r\n }\r\n } else if( parent.dataset.type == 'numeral-rating-color' ) {\r\n let wptbTextMessageSize = affectedEl.querySelector('.wptb-number-rating');\r\n wptbTextMessageSize.style.color = uiColor;\r\n }\r\n\r\n } else {\r\n affectedEl.style.color = uiColor;\r\n }\r\n },\r\n numberImputSize: function ( wptbNumberInputs, maxCount, maxValue ) {\r\n wptbNumberInputs.onkeydown = function() {\r\n let thisValue = this.value;\r\n thisValue = String( thisValue );\r\n if ( thisValue[0] == 0 ) {\r\n this.value = \"\";\r\n } else {\r\n thisValue = thisValue.substring( 0, maxCount );\r\n this.value = thisValue;\r\n }\r\n }\r\n wptbNumberInputs.onkeyup = function( ) {\r\n let thisValue = this.value;\r\n if ( parseInt( thisValue, 10 ) > parseInt( maxValue, 10 ) ) {\r\n this.value = maxValue;\r\n }\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n },\r\n ucfirst: function( str ) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n },\r\n wptbDocumentEventGenerate: function( eventName, element, details ) {\r\n if( eventName && element ) {\r\n if( ! details ) {\r\n details = true;\r\n }\r\n let event = new CustomEvent( eventName, { detail: details, bubbles: true } );\r\n element.dispatchEvent( event );\r\n }\r\n },\r\n // run script for the pointed element\r\n elementStartScript: function( element, kind ) {\r\n //let script = element.getElementsByTagName( 'script' );\r\n if(!kind) {\r\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\r\n if( infArr && Array.isArray( infArr ) ) {\r\n kind = infArr[1];\r\n }\r\n }\r\n\r\n if( kind ) {\r\n// let wpTemplateId = 'wptb-' + kind + '-script';\r\n// let template = wp.template( wpTemplateId );\r\n// let data = {elemClass: infArr[0]};\r\n// let elementScriptText = template( data );\r\n// elementScriptText = elementScriptText.replace(/\\r|\\n|\\t/g, '').trim();\r\n//\r\n// let scriptNew = document.createElement( 'script' );\r\n// scriptNew.setAttribute( 'type', 'text/javascript' );\r\n// scriptNew.innerHTML = elementScriptText;\r\n// element.parentNode.appendChild( scriptNew );\r\n\r\n// element.parentNode.removeChild( scriptNew );\r\n if( kind in WPTB_ElementsScriptsLauncher ) {\r\n WPTB_ElementsScriptsLauncher[kind]( element );\r\n }\r\n }\r\n },\r\n // deletes event handlers from the pointed option element and from all his daughter elements\r\n deleteEventHandlers: function( element ) {\r\n if( element ) {\r\n jQuery( element ).off();\r\n let elementChildren = element.children;\r\n if( elementChildren ) {\r\n for ( let i = 0; i < elementChildren.length; i++ ) {\r\n WPTB_Helper.deleteEventHandlers( elementChildren[i] );\r\n }\r\n }\r\n } else {\r\n return;\r\n }\r\n },\r\n // replace all occurrences in a string\r\n replaceAll: function( string, search, replace ){\r\n return string.split( search ).join( replace );\r\n },\r\n // clears code from TinyMCE attributes\r\n elementClearFromTinyMce: function( element ) {\r\n let mceContentBodys = element.querySelectorAll( '.mce-content-body' );\r\n if( mceContentBodys.length > 0 ) {\r\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\r\n mceContentBodys[k].classList.remove( 'mce-content-body' );\r\n }\r\n }\r\n\r\n let dataMceStyle = element.querySelectorAll( '[data-mce-style]' );\r\n if ( dataMceStyle.length > 0 ) {\r\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\r\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\r\n }\r\n }\r\n\r\n let mceEditFocus = element.querySelectorAll( '.mce-edit-focus' );\r\n if( mceEditFocus.length > 0 ) {\r\n for ( let k = 0; k < mceEditFocus.length; k++ ) {\r\n mceEditFocus[k].classList.remove( 'mce-edit-focus' );\r\n }\r\n }\r\n\r\n let contentEditable = element.querySelectorAll( '[contenteditable]' );\r\n if ( contentEditable.length > 0 ) {\r\n for ( let k = 0; k < contentEditable.length; k++ ) {\r\n contentEditable[k].removeAttribute( 'contenteditable' );\r\n }\r\n }\r\n\r\n let spellCheck = element.querySelectorAll( '[spellcheck]' );\r\n if ( spellCheck.length > 0 ) {\r\n for ( let k = 0; k < spellCheck.length; k++ ) {\r\n spellCheck[k].removeAttribute( 'spellcheck' );\r\n }\r\n }\r\n\r\n let mceIds = element.querySelectorAll( '[id^=mce_]' );\r\n if ( mceIds.length > 0 ) {\r\n for ( let k = 0; k < mceIds.length; k++ ) {\r\n mceIds[k].removeAttribute( 'id' );\r\n }\r\n }\r\n\r\n return element;\r\n },\r\n elementOptionContainerCustomClassSet: function( targetInput, customClassForContainer ) {\r\n if( targetInput && customClassForContainer ) {\r\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\r\n if( containerElement ) {\r\n containerElement.classList.add( customClassForContainer );\r\n }\r\n }\r\n },\r\n elementOptionContainerAdditionalStyles: function( targetInput, containerAdditionalStyles ) {\r\n if( targetInput && containerAdditionalStyles ) {\r\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\r\n let containerStylesArrOne = containerAdditionalStyles.split( ';' );\r\n\r\n if( containerElement && containerStylesArrOne ) {\r\n function containerStylesSet( containerStyleStr, containerElement ) {\r\n if( containerStyleStr ) {\r\n containerStyleStrArr = containerStyleStr.split( ':' );\r\n\r\n if( containerStyleStrArr && Array.isArray( containerStyleStrArr ) ) {\r\n containerElement.style[containerStyleStrArr[0]] = containerStyleStrArr[1];\r\n }\r\n }\r\n }\r\n if( containerStylesArrOne && Array.isArray( containerStylesArrOne ) ) {\r\n for( let i = 0; i < containerStylesArrOne.length; i++ ) {\r\n if( containerStylesArrOne[i] ) {\r\n containerStylesSet( containerStylesArrOne[i], containerElement );\r\n }\r\n }\r\n } else {\r\n containerStylesSet( containerStylesArrOne, containerElement );\r\n }\r\n }\r\n }\r\n },\r\n // function which set handler for event of changes of control\r\n controlsInclude: function( element, functionHandler, acceptEventValues = false ) {\r\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\r\n element.addEventListener( 'element:controls:active', function() {\r\n if(!element.hasOwnProperty('controlConnectFunctionsName') ||\r\n !Array.isArray(element.controlConnectFunctionsName) ||\r\n element.controlConnectFunctionsName.indexOf(functionHandler.name) == -1) {\r\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i ),\r\n elementKind;\r\n\r\n if( infArr && Array.isArray( infArr ) ) {\r\n elementKind = infArr[1];\r\n }\r\n\r\n// if( ! element.hasOwnProperty( 'сontrolsConnectIndic' ) || element.сontrolsConnectIndic !== true && elementKind ) {\r\n// let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\r\n// if( elementsSettingsTemplateJs.length > 0 ) {\r\n// elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\r\n//\r\n// let elementsSettings = elementsSettingsTemplateJs.innerHTML;\r\n// let controlClassesNames = [];\r\n// if( elementsSettings ) {\r\n// elementsSettings = elementsSettings.trim();\r\n// elementsSettings = JSON.parse( elementsSettings );\r\n// if( elementsSettings && typeof elementsSettings === 'object' ) {\r\n// if( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings ) {\r\n// let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\r\n// if( elementSettings && typeof elementSettings === 'object' ) {\r\n// Object.keys( elementSettings ).forEach( function( key ) {\r\n// let regularText = new RegExp( 'data-wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\r\n// let keyInfArr = key.match( regularText );\r\n// if( keyInfArr && Array.isArray( keyInfArr ) ) {\r\n// let controlClass = key.replace( 'data-', '' );\r\n// controlClassesNames.push( [controlClass, keyInfArr[2]] );\r\n// }\r\n// });\r\n// }\r\n// }\r\n// }\r\n// }\r\n// }\r\n// }\r\n if( elementKind ){\r\n let elementOptionsGroupIds = element.optionsGroupIds;\r\n if(elementOptionsGroupIds && Array.isArray(elementOptionsGroupIds)) {\r\n for(let i = 0; i < elementOptionsGroupIds.length; i++) {\r\n let elementOptionsGroupId = elementOptionsGroupIds[i];\r\n\r\n let elementOptionsGroup = document.getElementById(elementOptionsGroupId);\r\n\r\n let controlActiveElements = elementOptionsGroup.querySelectorAll('.wptb-element-property');\r\n controlActiveElements = [...controlActiveElements];\r\n\r\n controlActiveElements.map(controlActiveElement => {\r\n let regularText = new RegExp( 'wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\r\n let controlInfArr = controlActiveElement.className.match( regularText );\r\n if( controlInfArr && Array.isArray( controlInfArr ) ) {\r\n let controlUnicClassName = controlInfArr[0];\r\n\r\n element.addEventListener( 'wptb-control:' + controlUnicClassName, function(e) {\r\n let controls = {};\r\n let controlName = controlInfArr[2];\r\n let control = document.getElementsByClassName( controlUnicClassName );\r\n if( control.length > 0 && controlName ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\r\n\r\n if(acceptEventValues) {\r\n controls[controlName] = {\r\n targetValue: targetControlValue,\r\n eventValue: e.detail.value\r\n }\r\n }else {\r\n controls[controlName] = targetControlValue;\r\n }\r\n }\r\n functionHandler( controls, element );\r\n }, false );\r\n }\r\n });\r\n }\r\n }\r\n //let elementOptionsContainer = document.querySelector( '.wptb-element-options.wptb-options-' + infArr[1] + '-' + infArr[2] );\r\n\r\n // from time to time depend on table cells hierarchy, cell td items may catch mouse clicks which are intended for elements. since the active section is not cell management, this will gives and unharmfull error of not found element, simple check for null equality will be sufficient for now.\r\n // if(!elementOptionsContainer){\r\n // return;\r\n // }\r\n\r\n // let elementOptions = elementOptionsContainer.querySelectorAll( '.wptb-element-option' );\r\n // let controlActiveElements = elementOptions[i].querySelector( '.wptb-element-property' );\r\n //\r\n //\r\n // for( let i = 0; i < elementOptions.length; i++ ) {\r\n // let controlActiveElement = elementOptions[i].querySelector( '.wptb-element-property' );\r\n // if( controlActiveElement ) {\r\n //\r\n // }\r\n // }\r\n\r\n if(!element.controlConnectFunctionsName && !Array.isArray(element.controlConnectFunctionsName)) {\r\n element.controlConnectFunctionsName = [];\r\n }\r\n\r\n element.controlConnectFunctionsName.push( functionHandler.name );\r\n }\r\n }\r\n }, false );\r\n }\r\n },\r\n oneControlInclude: function( element, functionHandler, controlName ) {\r\n if( element && typeof element === 'object' && typeof functionHandler === 'function' && typeof controlName === 'string' ) {\r\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i ),\r\n elementKind;\r\n\r\n if( infArr && Array.isArray( infArr ) ) {\r\n elementKind = infArr[1].split( '-' )[0];\r\n\r\n let wptbContrlStacksConfigId = 'wptb-' + elementKind + '-control-stack';\r\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\r\n let data = {\r\n container: '.' + infArr[0]\r\n };\r\n let jsonControlsConfigJson = tmplControlsConfig( data );\r\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\r\n\r\n if( jsonControlsConfig && typeof jsonControlsConfig === 'object' && jsonControlsConfig.hasOwnProperty( controlName ) ) {\r\n let controlClassName = 'wptb-el-' + infArr[1] + '-' + controlName;\r\n\r\n element.addEventListener( 'wptb-control:' + controlClassName, function( event ) {\r\n let control = document.getElementsByClassName( controlClassName );\r\n if( control.length > 0 ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\r\n\r\n functionHandler( targetControlValue, element );\r\n }\r\n }, false );\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n },\r\n //\r\n innerElementCopyIncludeHandler: function( element, functionHandler ) {\r\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\r\n element.addEventListener( 'wptb-inner-element:copy', function( event ) {\r\n let innerElement = event.detail;\r\n if( innerElement ) {\r\n WPTB_Helper.elementClearFromTinyMce( innerElement );\r\n functionHandler( innerElement, element );\r\n }\r\n }, false );\r\n }\r\n },\r\n //\r\n appearDependOnControl: function( dependOn, targetControlElementClass ) {\r\n if( Array.isArray( dependOn ) ) {\r\n let dependOnControlName = dependOn[0];\r\n let infArr = targetControlElementClass.match( /wptb-el-((.+-)\\d+)-(.+)/i );\r\n\r\n if( infArr && Array.isArray( infArr ) ) {\r\n let controlName = infArr[3];\r\n\r\n let dependOnControlElementClass = targetControlElementClass.replace( controlName, dependOnControlName );\r\n\r\n let dependOnControlElement = document.getElementsByClassName( dependOnControlElementClass );\r\n\r\n if( dependOnControlElement.length > 0 ) {\r\n dependOnControlElement = dependOnControlElement[0];\r\n let targetControlElement = document.getElementsByClassName( targetControlElementClass );\r\n if( targetControlElement.length > 0 ) {\r\n targetControlElement = targetControlElement[0];\r\n let controlContainerElem = WPTB_Helper.findAncestor( targetControlElement, 'wptb-element-option' );\r\n\r\n if( controlContainerElem ) {\r\n function showHideDependOnControlElement( dependOnControlElementClass, dependOn ) {\r\n\r\n// let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\r\n// if( elementsSettingsTemplateJs.length > 0 ) {\r\n// elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\r\n//\r\n// let elementsSettings = elementsSettingsTemplateJs.innerHTML;\r\n// if( elementsSettings ) {\r\n// elementsSettings = elementsSettings.trim();\r\n// elementsSettings = JSON.parse( elementsSettings );\r\n// if( elementsSettings && typeof elementsSettings === 'object' &&\r\n// ( 'tmpl-wptb-el-datas-' + dependOnControlElementKind ) in elementsSettings ) {\r\n// let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + dependOnControlElementKind];\r\n// if( elementSettings && typeof elementSettings === 'object' &&\r\n// ( 'data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName ) in elementSettings ) {\r\n// let elementSettingValue = elementSettings['data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName];\r\n//\r\n// if( elementSettingValue ) {\r\n// if( dependOn[1] && Array.isArray( dependOn[1] ) &&\r\n// ( dependOn[1].indexOf( elementSettingValue ) !== -1 ) ) {\r\n// controlContainerElem.style.display = 'block';\r\n// } else if( dependOn[2] && Array.isArray( dependOn[2] ) &&\r\n// ( dependOn[2].indexOf( elementSettingValue ) !== -1 ) ) {\r\n// controlContainerElem.style.display = 'none';\r\n// }\r\n// }\r\n// }\r\n// }\r\n// }\r\n// }\r\n if( dependOnControlElementClass ) {\r\n let dependOnControlElements = document.getElementsByClassName( dependOnControlElementClass );\r\n if( dependOnControlElements.length > 0 ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( dependOnControlElements );\r\n\r\n if( dependOn[1] && Array.isArray( dependOn[1] ) &&\r\n ( dependOn[1].indexOf( targetControlValue ) !== -1 ) ) {\r\n controlContainerElem.style.display = 'block';\r\n let childCheck = controlContainerElem.querySelector('input[type=\"checkbox\"]')\r\n if (childCheck) {\r\n childCheck.checked = true;\r\n }\r\n } else if( dependOn[2] && Array.isArray( dependOn[2] ) &&\r\n ( dependOn[2].indexOf( targetControlValue ) !== -1 ) ) {\r\n controlContainerElem.style.display = 'none';\r\n }\r\n }\r\n }\r\n }\r\n\r\n showHideDependOnControlElement( dependOnControlElementClass, dependOn );\r\n\r\n dependOnControlElement.addEventListener( 'change', function( event ) {\r\n showHideDependOnControlElement( dependOnControlElementClass, dependOn );\r\n }, false );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n //\r\n controlsStateManager: function ( targetControlClass, controlChangeIndic ) {\r\n let targetControls = document.getElementsByClassName( targetControlClass );\r\n if( targetControls.length > 0 ) {\r\n //targetControls = targetControls[0];\r\n\r\n let infArr = targetControlClass.match( /wptb-el-((.+-)\\d+)-(.+)/i );\r\n\r\n if( infArr && Array.isArray( infArr ) ) {\r\n let selectorElement;\r\n selectorElement = document.querySelector( '.wptb-element-' + infArr[1] );\r\n\r\n if( selectorElement ) {\r\n let elementsSettingsTemplatesJs;\r\n let elementSettings = {};\r\n let elementsSettings;\r\n elementsSettingsTemplatesJs = document.getElementsByClassName( 'wptb-element-datas' );\r\n if( elementsSettingsTemplatesJs.length == 0 || elementsSettingsTemplatesJs[0].innerHTML == '' ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\r\n elementSettings['data-' + targetControlClass] = targetControlValue;\r\n\r\n elementsSettings = {};\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = elementSettings;\r\n elementsSettings = JSON.stringify( elementsSettings );\r\n\r\n if( elementsSettingsTemplatesJs.length == 0 ) {\r\n elementsSettingsTemplatesJs = document.createElement( 'script' );\r\n elementsSettingsTemplatesJs.setAttribute( 'type', 'text/html' );\r\n elementsSettingsTemplatesJs.setAttribute( 'class', 'wptb-element-datas' );\r\n } else {\r\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\r\n }\r\n\r\n elementsSettingsTemplatesJs.innerHTML = elementsSettings;\r\n\r\n let body = document.getElementsByTagName('body')[0];\r\n body.appendChild( elementsSettingsTemplatesJs );\r\n } else {\r\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\r\n elementsSettings = elementsSettingsTemplatesJs.innerHTML;\r\n if( elementsSettings ) {\r\n elementsSettings = elementsSettings.trim();\r\n elementsSettings = JSON.parse( elementsSettings );\r\n\r\n if( elementsSettings && typeof elementsSettings === 'object' ) {\r\n\r\n\r\n if( controlChangeIndic ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\r\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) ||\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\r\n }\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\r\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\r\n } else if( ! ( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) &&\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' &&\r\n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) ) {\r\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\r\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) ||\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\r\n }\r\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\r\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\r\n } else if( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) &&\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' &&\r\n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) {\r\n for( let i = 0; i < targetControls.length; i++ ) {\r\n if( targetControls[i].type == 'checkbox' ) {\r\n let targetControlValue;\r\n if( targetControls[i].name ) {\r\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass][targetControls[i].name];\r\n } else {\r\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\r\n }\r\n\r\n if( targetControlValue == 'checked' ) {\r\n targetControls[i].checked = true;\r\n } else if( targetControlValue == 'unchecked' ) {\r\n targetControls[i].checked = false;\r\n }\r\n } else {\r\n targetControls[i].value = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n //\r\n targetControlValueGet: function( targetControls ) {\r\n let targetControlValue;\r\n for( let i = 0; i < targetControls.length; i++ ) {\r\n if( targetControls[i].type == 'checkbox' && targetControls[i].name ) {\r\n if( ! targetControlValue ) targetControlValue = {};\r\n if( targetControls[i].checked == true ) {\r\n targetControlValue[targetControls[i].name] = 'checked';\r\n } else {\r\n targetControlValue[targetControls[i].name] = 'unchecked';\r\n }\r\n } else if( targetControls[i].type == 'checkbox' ) {\r\n if( targetControls[i].checked == true ) {\r\n targetControlValue = 'checked';\r\n } else {\r\n targetControlValue = 'unchecked';\r\n }\r\n } else if( targetControls[i].type ) {\r\n targetControlValue = targetControls[i].value;\r\n } else if( targetControls[i].dataset.alignmentValue && targetControls[i].classList.contains( 'selected' ) ){\r\n targetControlValue = targetControls[i].dataset.alignmentValue;\r\n }\r\n }\r\n return targetControlValue;\r\n },\r\n //\r\n elementControlsStateCopy: function( elementProt, copyElem ) {\r\n if( elementProt && copyElem ) {\r\n let infArrProt = elementProt.className.match( /wptb-element-((.+-)\\d+)/i );\r\n let infArrCopy = copyElem.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if( infArrProt && Array.isArray( infArrProt ) &&\r\n infArrCopy && Array.isArray( infArrCopy )) {\r\n let elemProtKind = infArrProt[1];\r\n let elemCopyKind = infArrCopy[1];\r\n let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\r\n if( elementsSettingsTemplateJs.length > 0 ) {\r\n elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\r\n\r\n let elementsSettings = elementsSettingsTemplateJs.innerHTML;\r\n if( elementsSettings ) {\r\n elementsSettings = elementsSettings.trim();\r\n elementsSettings = JSON.parse( elementsSettings );\r\n\r\n if( elementsSettings && typeof elementsSettings === 'object' ) {\r\n let elementSettingsProt = elementsSettings['tmpl-wptb-el-datas-' + elemProtKind];\r\n if( elementSettingsProt && typeof elementSettingsProt === 'object' ) {\r\n let elementSettingsCopy = {};\r\n\r\n Object.keys( elementSettingsProt ).forEach( function( key ) {\r\n let elementSettingValue = elementSettingsProt[key];\r\n let elementSettingKeyCopy = key.replace( elemProtKind, elemCopyKind );\r\n elementSettingsCopy[elementSettingKeyCopy] = elementSettingValue;\r\n });\r\n\r\n if( Object.keys( elementSettingsCopy ).length > 0 ) {\r\n elementsSettings['tmpl-wptb-el-datas-' + elemCopyKind] = elementSettingsCopy;\r\n\r\n elementsSettings = JSON.stringify( elementsSettings );\r\n elementsSettingsTemplateJs.innerHTML = elementsSettings;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n //\r\n elementControlsStateDelete: function( element, nameControl ) {\r\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n let body = document.getElementsByTagName( 'body' )[0];\r\n let wptbElementDatas = body.getElementsByClassName( 'wptb-element-datas' );\r\n if( infArr && Array.isArray( infArr ) && wptbElementDatas.length > 0 ) {\r\n wptbElementDatas = wptbElementDatas[0];\r\n let elementsSettings = wptbElementDatas.innerHTML;\r\n if( elementsSettings ) {\r\n elementsSettings = elementsSettings.trim();\r\n elementsSettings = JSON.parse( elementsSettings );\r\n if( elementsSettings && typeof elementsSettings === 'object' &&\r\n ( ( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] ) in elementsSettings ) ) {\r\n if( ! nameControl ) {\r\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\r\n } else {\r\n if( elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] &&\r\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] === 'object' &&\r\n ( 'data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] ) {\r\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]]['data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl];\r\n }\r\n }\r\n\r\n if( Object.keys( elementsSettings ).length == 0 ) {\r\n body.removeChild( wptbElementDatas );\r\n } else {\r\n elementsSettings = JSON.stringify( elementsSettings );\r\n wptbElementDatas.innerHTML = elementsSettings;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n //\r\n elementOptionsSet: function( kind, element ) {\r\n // get controls config for this element\r\n let wptbContrlStacksConfigId = 'wptb-' + kind + '-control-stack';\r\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\r\n let data;\r\n let elementContainerClass;\r\n let elementOptionClassIndic;\r\n let elementOptionsGroup;\r\n\r\n let controlElementParent;\r\n let elementOptionsScriptsContainer;\r\n\r\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\r\n if( ! infArr ) {\r\n let table_id = WPTB_Helper.detectMode();\r\n if (!table_id) {\r\n table_id = 'startedid-0';\r\n }\r\n if( element.classList.contains( 'wptb-preview-table' ) ) {\r\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\r\n } else if( element.classList.contains( 'wptb-cell' ) ) {\r\n let cellEditActiveClass = document.querySelector('.wptb-element-table_cell_setting-' + element.dataset.xIndex + '-' + element.dataset.yIndex);\r\n if( ! cellEditActiveClass ) element.classList.add('wptb-element-table_cell_setting-' + element.dataset.xIndex + '-' + element.dataset.yIndex);\r\n }else if (element.classList.contains('wptb-responsive')){\r\n element.classList.add('wptb-element-table_responsive_setting-' + table_id);\r\n }\r\n\r\n infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\r\n }\r\n\r\n data = {\r\n container: '.' + infArr[0]\r\n };\r\n\r\n elementContainerClass = infArr[0];\r\n elementOptionClassIndic = infArr[1];\r\n\r\n if( element.classList.contains( 'wptb-preview-table' ) ) {\r\n\r\n } else if( element.classList.contains( 'wptb-cell' ) ) {\r\n this.activateSection('cell_settings');\r\n }else if (element.classList.contains('wptb-responsive')){\r\n elementOptionsGroupId = 'table-responsive-group';\r\n wptbelementOptionClass = 'wptb-element-option';\r\n }\r\n else {\r\n let children = document.getElementById( 'element-options-group' ).childNodes;\r\n for ( let i = 0; i < children.length; i++) {\r\n if ( children[i].style )\r\n children[i].style.display = 'none';\r\n }\r\n\r\n // hide wptb-elements-container and wptb-settings-section\r\n // document.getElementsByClassName( 'wptb-elements-container' )[0].style.display = 'none';\r\n // document.getElementsByClassName( 'wptb-settings-section' )[0].style.display = 'none';\r\n\r\n // show element-options-group\r\n // document.getElementById( 'element-options-group' ).style.display = 'block';\r\n this.activateSection('options_group');\r\n }\r\n\r\n let jsonControlsConfigJson = tmplControlsConfig( data );\r\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\r\n\r\n let elementOptionsGroupIdsInvolved = [],\r\n elementOptionsGroupInvolved = {},\r\n elementOptionsContainerInvolved = {};\r\n\r\n // object for save all scrips for each controls\r\n let controlScriptsObj = {};\r\n\r\n // array for keep \"appear depend on\" parametrs\r\n let controlappearDependOnControl = [];\r\n\r\n // create controls\r\n let elementOptionsScriptsContainerIndic = false;\r\n let i = 0;\r\n Object.keys( jsonControlsConfig ).forEach( function( key ) {\r\n let data = jsonControlsConfig[key];\r\n data.controlKey = key;\r\n\r\n // get necessary wp js template\r\n let tmplControlTemplate = wp.template( 'wptb-' + data.type + '-control' );\r\n\r\n data.elemContainer = elementContainerClass;\r\n data.elementControlTargetUnicClass = 'wptb-el-' + elementOptionClassIndic + '-' + data.controlKey;\r\n let controlTemplate = tmplControlTemplate( data );\r\n if( 'appearDependOnControl' in data ) {\r\n if( Array.isArray( data.appearDependOnControl ) ) {\r\n controlappearDependOnControl.push( [data.appearDependOnControl, data.elementControlTargetUnicClass] );\r\n }\r\n }\r\n\r\n function elementOptionsContainerInvolvedGet(elementOptionsGroupId, elementOptionsContainerInvolved) {\r\n if(!elementOptionsContainerInvolved[elementOptionsGroupId]){\r\n let elementOptionsContainer = document.createElement( 'div' );\r\n elementOptionsContainer.classList.add( 'wptb-element-options', 'wptb-options-' + infArr[1] );\r\n document.getElementById( elementOptionsGroupId ).appendChild(elementOptionsContainer);\r\n elementOptionsContainerInvolved[elementOptionsGroupId] = elementOptionsContainer;\r\n }\r\n\r\n return elementOptionsContainerInvolved[elementOptionsGroupId];\r\n }\r\n\r\n if(elementOptionsGroupIdsInvolved.indexOf(data.elementOptionsGroupId) == -1) {\r\n elementOptionsGroupIdsInvolved.push(data.elementOptionsGroupId);\r\n // clear elements from options group\r\n //document.getElementById( 'element-options-group' ).innerHTML = '';\r\n elementOptionsGroup = document.getElementById(data.elementOptionsGroupId);\r\n let elementOptionsGroupChildren = [...elementOptionsGroup.children];\r\n for( let i = 0; i < elementOptionsGroupChildren.length; i++ ) {\r\n elementOptionsGroup.removeChild( elementOptionsGroupChildren[i] );\r\n }\r\n elementOptionsGroupInvolved[data.elementOptionsGroupId] = elementOptionsGroup;\r\n }\r\n\r\n controlElementParent = elementOptionsGroupInvolved[data.elementOptionsGroupId];\r\n\r\n if(data.elementOptionsContainerOn === 'true') {\r\n controlElementParent = elementOptionsContainerInvolvedGet(data.elementOptionsGroupId, elementOptionsContainerInvolved);\r\n }\r\n\r\n\r\n if(data.elementOptionContainerOn === 'true') {\r\n let elementOptionContainer = document.createElement( 'div' );\r\n elementOptionContainer.classList.add( data.elementOptionClass, 'wptb-settings-items' );\r\n\r\n if( data.customClassForContainer ) {\r\n elementOptionContainer.classList.add( data.customClassForContainer );\r\n }\r\n\r\n if( data.containerAdditionalStyles ) {\r\n elementOptionContainer.setAttribute( 'style', data.containerAdditionalStyles );\r\n }\r\n\r\n controlElementParent.appendChild( elementOptionContainer );\r\n\r\n controlElementParent = elementOptionContainer;\r\n }\r\n controlElementParent.innerHTML = controlElementParent.innerHTML + controlTemplate;\r\n\r\n let helperJavascriptElem = controlElementParent.getElementsByTagName( 'wptb-template-script' );\r\n if( helperJavascriptElem.length > 0 ) {\r\n helperJavascriptElem = helperJavascriptElem[0];\r\n let helperJavascriptCode = helperJavascriptElem.innerText;\r\n controlElementParent.removeChild( helperJavascriptElem );\r\n let script = document.createElement( 'script' );\r\n script.setAttribute( 'type', 'text/javascript' );\r\n script.innerHTML = helperJavascriptCode.replace(/\\r|\\n|\\t/g, '').trim();\r\n if(!controlScriptsObj[data.elementOptionsGroupId] || !Array.isArray(controlScriptsObj[data.elementOptionsGroupId])) {\r\n controlScriptsObj[data.elementOptionsGroupId] = [];\r\n }\r\n controlScriptsObj[data.elementOptionsGroupId].push( script );\r\n }\r\n\r\n i++;\r\n });\r\n\r\n element.optionsGroupIds = elementOptionsGroupIdsInvolved;\r\n\r\n Object.keys( controlScriptsObj ).forEach( function( elementOptionsGroupId ) {\r\n let controlScriptsArr = controlScriptsObj[elementOptionsGroupId];\r\n elementOptionsScriptsContainer = document.createElement( 'div' );\r\n elementOptionsScriptsContainer.classList.add( 'wptb-element-options-scripts', 'wptb-options-' + infArr[1] );\r\n elementOptionsGroupInvolved[elementOptionsGroupId].appendChild(elementOptionsScriptsContainer);\r\n if( controlScriptsArr.length > 0 ) {\r\n for( let i = 0; i < controlScriptsArr.length; i++ ) {\r\n elementOptionsScriptsContainer.appendChild(controlScriptsArr[i]);\r\n }\r\n }\r\n });\r\n\r\n\r\n\r\n // run the scripts of controls\r\n\r\n\r\n // run appearDependOnControl function\r\n for ( let i = 0; i < controlappearDependOnControl.length; i++ ) {\r\n WPTB_Helper.appearDependOnControl( controlappearDependOnControl[i][0], controlappearDependOnControl[i][1] );\r\n }\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', element );\r\n },\r\n\r\n /**\r\n * function for create, update css for element\r\n *\r\n * @param elementContainer\r\n * @param selector\r\n * @param cssName\r\n * @param cssValue\r\n */\r\n managerExternalCssStyles: function( elementContainer, selector, cssName, cssValue ) {\r\n let infArr = elementContainer.match( /wptb-element-main(.+)-(\\d+)/i );\r\n if( ! infArr || ! Array.isArray( infArr ) ) {\r\n let table = document.getElementsByClassName( 'wptb-preview-table' );\r\n\r\n if( table.length > 0 ) {\r\n table = table[0];\r\n\r\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n selector = '.' + infArr[0] + ' ' + selector;\r\n }\r\n }\r\n }\r\n\r\n let head = document.head;\r\n if( head ) {\r\n let cssForThisElement = head.querySelector( '#styles-' + elementContainer );\r\n if( cssForThisElement ) {\r\n let cssText = cssForThisElement.innerHTML;\r\n if( cssText ) {\r\n let cssTextArrFirst = cssText.split( '}' );\r\n cssTextArrFirst.pop();\r\n let selectorExists = false;\r\n for( let i = 0; i < cssTextArrFirst.length; i++ ) {\r\n let cssTextArrSecond = cssTextArrFirst[i].split( '{' );\r\n if( cssTextArrSecond[0] === selector ) {\r\n let cssTextArrThird = cssTextArrSecond[1].split( ';' );\r\n cssTextArrThird.pop();\r\n let cssNameExists = false;\r\n for( let j = 0; j < cssTextArrThird.length; j++ ) {\r\n let cssTextArrFourth = cssTextArrThird[j].split( ':' );\r\n if( cssTextArrFourth[0] === cssName ) {\r\n if( cssValue ) {\r\n cssTextArrThird[j] = cssName + ':' + cssValue;\r\n } else {\r\n cssTextArrThird.splice( j, 1 );\r\n }\r\n\r\n cssTextArrSecond[1] = cssTextArrThird.join( ';' ) ? cssTextArrThird.join( ';' ) + ';' : '';\r\n cssNameExists = true;\r\n break;\r\n }\r\n }\r\n if( ! cssNameExists ) {\r\n if( cssValue ) {\r\n cssTextArrSecond[1] += cssName + ':' + cssValue + ';';\r\n }\r\n }\r\n if( cssTextArrSecond[1] ) {\r\n cssTextArrFirst[i] = cssTextArrSecond[0] + '{' + cssTextArrSecond[1]\r\n } else {\r\n cssTextArrFirst.splice( i, 1 );\r\n }\r\n if( cssTextArrFirst.join( '}' ) ) {\r\n cssForThisElement.innerHTML = cssTextArrFirst.join( '}' ) + '}';\r\n } else {\r\n head.removeChild( cssForThisElement );\r\n }\r\n\r\n selectorExists = true;\r\n break;\r\n }\r\n }\r\n\r\n if( ! selectorExists ) {\r\n if( cssValue ) {\r\n cssForThisElement.innerHTML = cssText + selector + '{' + cssName + ':' + cssValue + ';}';\r\n } else {\r\n cssForThisElement.innerHTML = cssText;\r\n }\r\n }\r\n } else {\r\n if( cssValue ) {\r\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\r\n } else {\r\n head.removeChild( cssForThisElement );\r\n }\r\n }\r\n } else {\r\n if( cssValue ) {\r\n let cssForThisElement = document.createElement( 'style' );\r\n cssForThisElement.setAttribute( 'id', 'styles-' + elementContainer );\r\n cssForThisElement.classList.add( 'styles-wptb-elements' );\r\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\r\n head.appendChild( cssForThisElement );\r\n }\r\n }\r\n }\r\n },\r\n /**\r\n *\r\n * Register section parts for sidebar\r\n *\r\n * @param {array} sections an array of section names\r\n */\r\n registerSections(sections) {\r\n this.sections = {};\r\n this.currentSection = '';\r\n if (!Array.isArray(sections)) {\r\n sections = [sections];\r\n }\r\n\r\n sections.map(s => {\r\n const sectionElement = document.querySelector(`[data-wptb-section=${s}]`);\r\n if (sectionElement) {\r\n this.sections[s] = sectionElement;\r\n }\r\n })\r\n },\r\n /**\r\n * Activate a registered section and deactivates others\r\n *\r\n * @param {string} sectionDataId section name to be activated\r\n * @param {string} displayType display type override for section to be used in its display style property\r\n */\r\n activateSection(sectionDataId, displayType = 'block') {\r\n this.currentSection=sectionDataId;\r\n this.triggerSectionEvent(sectionDataId);\r\n Object.keys(this.sections).map(k => {\r\n if (Object.prototype.hasOwnProperty.call(this.sections, k)) {\r\n const visibility = sectionDataId === k ? displayType : 'none';\r\n this.sections[k].style = `display: ${visibility} !important`;\r\n }\r\n })\r\n },\r\n /**\r\n * Get id of current active section\r\n *\r\n * @returns {string} active section i\r\n */\r\n getCurrentSection(){\r\n return this.currentSection;\r\n },\r\n /**\r\n * Get current section from search parameter 'wptb-builder-section' of window location\r\n */\r\n getSectionFromUrl(){\r\n const parsedUrl = new URL(window.location.href);\r\n const urlSection = parsedUrl.searchParams.get('wptb-builder-section');\r\n if(urlSection){\r\n if(Object.keys(this.sections).some(key => key===urlSection)){\r\n this.activateSection(urlSection);\r\n }\r\n }\r\n },\r\n /**\r\n * Set up related buttons and links to trigger certain elements\r\n */\r\n setupSectionButtons() {\r\n const sectionButtons = Array.from( document.querySelectorAll('[data-wptb-section-button'));\r\n const vm = this;\r\n\r\n sectionButtons.map(s => {\r\n const sectionName = s.dataset.wptbSectionButton;\r\n s.addEventListener('click', function() {\r\n const displayType = s.dataset.wptbSectionDisplayType;\r\n vm.activateSection(sectionName, displayType);\r\n })\r\n\r\n document.addEventListener('wptbSectionChanged', (e)=> {\r\n if(e.detail === sectionName){\r\n s.classList.remove('disabled');\r\n s.classList.add('active');\r\n }else{\r\n s.classList.remove('active');\r\n s.classList.add('disabled');\r\n }\r\n })\r\n })\r\n },\r\n setupPanelToggleButtons(){\r\n const $ = jQuery;\r\n\r\n $('.wptb-panel-toggle-group').each(function(){\r\n const vm = $(this);\r\n $(this).find('.toggle-icon').click(() => {\r\n vm.find('.wptb-panel-toggle-target').slideToggle();\r\n vm.toggleClass('wptb-panel-toggle-content');\r\n })\r\n })\r\n },\r\n /**\r\n * Trigger a section change event\r\n *\r\n * @param {string} sectionName section name\r\n */\r\n triggerSectionEvent(sectionName){\r\n const sectionEvent = new CustomEvent('wptbSectionChanged', {detail: sectionName});\r\n\r\n document.dispatchEvent(sectionEvent);\r\n },\r\n /**\r\n * Setup sidebar toggle element\r\n *\r\n * @param {string} toggleSelector query selector for drawer toggle element\r\n */\r\n setupSidebarToggle(toggleSelector){\r\n const toggleButton = document.querySelector(toggleSelector);\r\n if(toggleButton){\r\n toggleButton.addEventListener('click', (e)=>{\r\n e.preventDefault();\r\n document.body.classList.toggle('collapsed');\r\n })\r\n }\r\n },\r\n // function for deleting all external CSS for the element\r\n externalCssStylesDelete: function( elementContainerClass ) {\r\n let head = document.head;\r\n if( head ) {\r\n let cssForThisElement = head.querySelector( '#styles-' + elementContainerClass );\r\n\r\n if( cssForThisElement ) {\r\n head.removeChild( cssForThisElement );\r\n }\r\n }\r\n },\r\n // function for copy all external CSS for the element\r\n externalCssStylesCopy: function( activeElement, copyElement ) {\r\n if( activeElement ) {\r\n let infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n let activeElemClass = infArr[0];\r\n\r\n let head = document.head;\r\n if( head ) {\r\n let cssForActiveElement = head.querySelector( '#styles-' + activeElemClass );\r\n\r\n if( cssForActiveElement ) {\r\n let cssForNewElement = cssForActiveElement.cloneNode( true );\r\n\r\n cssForNewElement.removeAttribute( 'id', 'styles-' + activeElemClass );\r\n\r\n let infArrCopyEl = copyElement.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArrCopyEl && Array.isArray( infArrCopyEl ) ) {\r\n cssForNewElement.setAttribute( 'id', 'styles-' + infArrCopyEl[0] );\r\n let cssForActiveElementInnerHTML = cssForActiveElement.innerHTML;\r\n let cssForNewElementInnerHTML = WPTB_Helper.replaceAll( cssForActiveElementInnerHTML, activeElemClass, infArrCopyEl[0] );\r\n cssForNewElement.innerHTML = cssForNewElementInnerHTML;\r\n head.appendChild( cssForNewElement );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n // function for convertation elements stiles in json\r\n elementsStylesConvertToObject: function() {\r\n let head = document.head;\r\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\r\n let stylesObj = {};\r\n for( let i = 0; i < stylesElements.length; i++ ) {\r\n let styleElemId = stylesElements[i].getAttribute( 'id' );\r\n if( styleElemId && stylesElements[i].innerHTML ) {\r\n stylesObj[styleElemId] = stylesElements[i].innerHTML;\r\n }\r\n }\r\n\r\n if( Object.keys( stylesObj ).length != 0 ) {\r\n return JSON.stringify( stylesObj );\r\n }\r\n return '';\r\n },\r\n // function for set scc styles tags to head\r\n elementsStylesSetFromObject: function( jsonObject ) {\r\n let head = document.head;\r\n if( head ) {\r\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\r\n if( stylesElements.length > 0 ) {\r\n stylesElements = [...stylesElements];\r\n for( let i = 0; i < stylesElements.length; i++ ) {\r\n head.removeChild( stylesElements[i] );\r\n }\r\n }\r\n if( jsonObject ) {\r\n let stylesObj = JSON.parse( jsonObject );\r\n if( Object.keys( stylesObj ).length != 0 ) {\r\n Object.keys( stylesObj ).forEach( function( key ) {\r\n let cssText = stylesObj[key];\r\n let styleCss = document.createElement( 'style' );\r\n styleCss.setAttribute( 'id', key );\r\n styleCss.classList.add( 'styles-wptb-elements' );\r\n styleCss.innerHTML = cssText;\r\n head.appendChild( styleCss );\r\n });\r\n }\r\n }\r\n }\r\n },\r\n // function for table saving\r\n saveTable: function( event, startSaving, previewSaving ) {\r\n if( ! previewSaving && ! startSaving ) {\r\n if( ( ! event.target.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) ||\r\n window.wptbTableStateNumberShow == event.target.dataset.wptbTableStateNumberSave ) {\r\n //return;\r\n }\r\n }\r\n\r\n if( ! previewSaving ) {\r\n let bar = document.querySelector( '.wptb-edit-bar' );\r\n if ( bar && bar.classList.contains( 'visible' ) ) {\r\n let table = document.getElementsByClassName( 'wptb-preview-table' )[0];\r\n WPTB_Helper.toggleTableEditMode();\r\n }\r\n }\r\n\r\n let http = new XMLHttpRequest(),\r\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=save_table\",\r\n t = document.getElementById( 'wptb-setup-name' ).value.trim(),\r\n messagingArea,\r\n code,\r\n datas;\r\n\r\n code = document.getElementsByClassName( 'wptb-preview-table' );\r\n\r\n let postId;\r\n if (( rs = WPTB_Helper.detectMode() ) || ( rs = document.wptbId )) {\r\n postId = rs;\r\n }\r\n let paramIdsNecessaryChange = false;\r\n if( code.length > 0 ) {\r\n code = code[0];\r\n let codeClone = code.cloneNode( true );\r\n if( postId ) {\r\n if( codeClone.classList.contains( 'wptb-element-main-table_setting-startedid-0' ) ) {\r\n codeClone.classList.remove( 'wptb-element-main-table_setting-startedid-0' );\r\n codeClone.classList.add( 'wptb-element-main-table_setting-' + postId );\r\n let wptbTableSetup = document.querySelector('.wptb-table-setup');\r\n if(wptbTableSetup) {\r\n wptbTableSetup.innerHTML = '';\r\n wptbTableSetup.appendChild(codeClone);\r\n WPTB_Table();\r\n }\r\n paramIdsNecessaryChange = true;\r\n }\r\n }\r\n codeClone.columns = code.columns;\r\n code = WPTB_Stringifier( codeClone );\r\n code = code.outerHTML;\r\n } else {\r\n code = '';\r\n }\r\n\r\n if( ! previewSaving ) {\r\n datas = '';\r\n let datas_containers = document.getElementsByClassName( 'wptb-element-datas' );\r\n\r\n if( datas_containers.length > 0 ) {\r\n if( datas_containers[0].innerHTML ) {\r\n datas = datas_containers[0].innerHTML;\r\n\r\n if( paramIdsNecessaryChange ) {\r\n datas = WPTB_Helper.replaceAll( datas, 'tmpl-wptb-el-datas-main-table_setting-startedid-0',\r\n 'tmpl-wptb-el-datas-main-table_setting-' + postId );\r\n\r\n datas = WPTB_Helper.replaceAll( datas, 'data-wptb-el-main-table_setting-startedid-0',\r\n 'data-wptb-el-main-table_setting-' + postId );\r\n }\r\n }\r\n }\r\n }\r\n\r\n let styleObjJson = WPTB_Helper.elementsStylesConvertToObject();\r\n if( paramIdsNecessaryChange ) {\r\n styleObjJson = WPTB_Helper.replaceAll( styleObjJson, '.wptb-element-main-table_setting-startedid-0',\r\n '.wptb-element-main-table_setting-' + postId );\r\n }\r\n\r\n if ( t === '' && code === '' ) {\r\n let messagingAreaText = '';\r\n if( t === '' ) messagingAreaText += 'You must assign a name to the table before saving it.</br>';\r\n if( code === '' ) messagingAreaText += 'Table wasn\\'t created';\r\n messagingArea = document.getElementById( 'wptb-messaging-area' );\r\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Error: ' + messagingAreaText + '</div>';\r\n messagingArea.classList.add( 'wptb-warning' );\r\n setTimeout(function () {\r\n messagingArea.removeChild( messagingArea.firstChild );\r\n }, 4000 );\r\n return;\r\n }\r\n\r\n let params = {\r\n title: t,\r\n content: code,\r\n elements_datas: datas,\r\n elements_styles: styleObjJson,\r\n security_code: wptb_admin_object.security_code\r\n };\r\n\r\n\r\n if( previewSaving ) {\r\n params.preview_saving = previewSaving;\r\n }\r\n\r\n if ( postId ) {\r\n params.id = postId;\r\n }\r\n params = JSON.stringify( params );\r\n\r\n http.open('POST', url, true);\r\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\r\n\r\n http.onreadystatechange = function ( action ) {\r\n if ( this.readyState == 4 && this.status == 200 ) {\r\n var data = JSON.parse( http.responseText );\r\n messagingArea = document.getElementById( 'wptb-messaging-area' );\r\n\r\n if ( data[0] == 'saved' ) {\r\n let builderPageUrl = document.location.href.replace( '#', '' );\r\n let regex = new RegExp( '&table=(.+)', \"i\" );\r\n builderPageUrl = builderPageUrl.replace( regex, '' );\r\n window.history.pushState( null, null, builderPageUrl + '&table=' + data[1] );\r\n\r\n WPTB_Helper.saveTable( event, true );\r\n return;\r\n } else if( data[0] == 'edited' && startSaving ) {\r\n document.wptbId = data[1];\r\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully saved.</div>';\r\n document.getElementsByClassName( 'wptb-embed-btn' )[0].classList.remove( 'wptb-button-disable' );\r\n document.getElementById( 'wptb-embed-shortcode' ).value = '[wptb id=' + data[1] + ']';\r\n let wptbPreviewTable = document.querySelector( '.wptb-preview-table' );\r\n let wptbPreviewBtn = document.getElementsByClassName( 'wptb-preview-btn' );\r\n if( wptbPreviewBtn.length > 0 ) {\r\n wptbPreviewBtn = wptbPreviewBtn[0];\r\n wptbPreviewBtn.classList.remove( 'wptb-button-disable' );\r\n let wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;\r\n wptbPreviewBtnHref = wptbPreviewBtnHref.replace( 'empty', data[1] );\r\n wptbPreviewBtn.setAttribute( 'href', wptbPreviewBtnHref );\r\n }\r\n\r\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n }\r\n } else if( data[0] == 'edited' ) {\r\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully updated.</div>';\r\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\r\n\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n }\r\n } else if( data[0] == 'preview_edited' ) {\r\n return;\r\n } else {\r\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Safety problems</div>';\r\n }\r\n messagingArea.classList.add( 'wptb-success' );\r\n setTimeout( function () {\r\n messagingArea.removeChild( messagingArea.firstChild );\r\n }, 4000 );\r\n }\r\n }\r\n http.send( params );\r\n },\r\n //\r\n clickOnFreeSpace: function() {\r\n // if current active section is responsive menu, ignore this functionality\r\n if(this.getCurrentSection() === 'table_responsive_menu'){\r\n return;\r\n }\r\n\r\n let cellModeBackground = document.querySelector( '#wptb-cell_mode_background' );\r\n if( cellModeBackground && cellModeBackground.classList.contains( 'visible' ) ) {\r\n return;\r\n }\r\n // document.getElementsByClassName( 'wptb-elements-container' )[0].style.display = 'table';\r\n // document.getElementsByClassName( 'wptb-settings-section' )[0].style.display = 'block';\r\n // document.getElementById( 'element-options-group' ).style.display = 'none';\r\n this.activateSection('elements');\r\n\r\n let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\r\n if( wpcdFixedToolbar.hasAttribute( 'data-toolbar-active-id' ) ) {\r\n document.getElementById( wpcdFixedToolbar.getAttribute( 'data-toolbar-active-id' ) ).classList.remove( 'toolbar-active' );\r\n }\r\n let element = document.querySelector( '.wptb-preview-table' );\r\n if( element ) {\r\n WPTB_Helper.elementOptionsSet( 'table_setting', element );\r\n }\r\n },\r\n\r\n /*\r\n * function for sending of element ajax request\r\n */\r\n elementAjax: function( dataAjaxData, element ) {\r\n let http = new XMLHttpRequest(),\r\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=wptb_element_ajax\";\r\n let element_name;\r\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n element_name = infArr[1];\r\n }\r\n\r\n let params = {\r\n element_ajax_data: dataAjaxData,\r\n element_name: element_name,\r\n security_code: wptb_admin_object.security_code\r\n };\r\n params = JSON.stringify( params );\r\n\r\n http.open( 'POST', url, true );\r\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\r\n\r\n http.onreadystatechange = function ( action ) {\r\n if ( this.readyState == 4 && this.status == 200 ) {\r\n var data = JSON.parse( http.responseText );\r\n let detail;\r\n if ( data && Array.isArray( data ) && data[0] == 'element_ajax_responce' ) {\r\n detail = {value: data[1]};\r\n } else {\r\n detail = '';\r\n }\r\n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-element:ajax-response', element, detail );\r\n }\r\n }\r\n http.send( params );\r\n },\r\n\r\n /*\r\n * This just toggles visibility of cell edit bar, and toggles\r\n * cell selecting mode.\r\n */\r\n toggleTableEditMode: function ( close = false ) {\r\n let bar = document.getElementsByClassName('wptb-edit-bar'),\r\n cellModeBackground = document.getElementById('wptb-cell_mode_background'),\r\n leftScrollPanelCurtain = document.getElementById('wptb-left-scroll-panel-curtain'),\r\n leftScrollPanelCellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\r\n wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');\r\n if (wptbPreviewTable.length > 0) {\r\n wptbPreviewTable = wptbPreviewTable[0];\r\n }\r\n\r\n if ( bar.length > 0 ) {\r\n let toggleEditMode = '';\r\n for ( let i = 0; i < bar.length; i++ ) {\r\n if ( bar[i].classList.contains( 'visible' ) ) {\r\n document.select.deactivateMultipleSelectMode();\r\n bar[i].classList.remove( 'visible' );\r\n cellModeBackground.classList.remove( 'visible' );\r\n leftScrollPanelCurtain.classList.remove( 'visible' );\r\n leftScrollPanelCellSettings.classList.remove( 'visible' );\r\n wptbPreviewTable.parentNode.classList.remove( 'wptb-preview-table-manage-cells' );\r\n let wptbPreviewTableTds = wptbPreviewTable.getElementsByTagName( 'td' );\r\n if ( wptbPreviewTableTds.length > 0 ) {\r\n for ( let i = 0; i < wptbPreviewTableTds.length; i++ ) {\r\n wptbPreviewTableTds[i].classList.remove( 'wptb-highlighted' );\r\n }\r\n }\r\n toggleEditMode = 'closed';\r\n\r\n } else if( ! close ) {\r\n document.select.activateMultipleSelectMode();\r\n bar[i].classList.add( 'visible' );\r\n cellModeBackground.classList.add( 'visible' );\r\n leftScrollPanelCurtain.classList.add( 'visible' );\r\n wptbPreviewTable.parentNode.classList.add( 'wptb-preview-table-manage-cells' );\r\n\r\n toggleEditMode = 'opened';\r\n }\r\n }\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-edit-mode/' + toggleEditMode, wptbPreviewTable)\r\n }\r\n },\r\n\r\n /*\r\n * checking of dimension of value\r\n */\r\n checkingDimensionValue: function ( value, dimension ) {\r\n value = String( value );\r\n dimension = String( dimension );\r\n if( value && dimension ) {\r\n let searchIndex = value.indexOf( dimension );\r\n if ( searchIndex != -1 && searchIndex == ( value.length - dimension.length ) ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n /*\r\n * if dimension is included - checking and if it necessary setting value\r\n * without dimension - return value\r\n */\r\n checkSetGetStyleSizeValue: function( element, styleName, computedStyleName, dimension ) {\r\n let elemStyleValue = element.style[styleName];\r\n elemStyleValue = String( elemStyleValue );\r\n\r\n if( ! elemStyleValue || dimension ? ! ( WPTB_Helper.checkingDimensionValue( elemStyleValue, dimension ) ) : false ){\r\n let elementStyles = window.getComputedStyle( element );\r\n if( computedStyleName && elementStyles.getPropertyValue( computedStyleName ) && dimension ? WPTB_Helper.checkingDimensionValue( elementStyles.getPropertyValue( computedStyleName ), dimension ) : true ) {\r\n if( ! dimension ) {\r\n return elementStyles.getPropertyValue( computedStyleName );\r\n } else {\r\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\r\n }\r\n } else {\r\n if( ! dimension ) {\r\n return false;\r\n } else {\r\n element.style[styleName] = null;\r\n }\r\n }\r\n } else if( ! dimension ) {\r\n return elemStyleValue;\r\n }\r\n\r\n return element.style[styleName];\r\n },\r\n\r\n /*\r\n * function checking that element has the style\r\n * if this style is present - checking the format color\r\n * if param set is true - setting style for element (consider hex format of color)\r\n * if param set is false - getting style from element\r\n */\r\n checkSetGetStyleColorValue: function ( element, styleName, computedStyleName, set = false ) {\r\n let elemStyleColorValue = element.style[styleName];\r\n\r\n if( ! elemStyleColorValue ) {\r\n let elementStyles = window.getComputedStyle( element, null );\r\n\r\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\r\n\r\n if( set ) {\r\n elemStyleColorValue = WPTB_Helper.rgbToHex( elementStyles.getPropertyValue( computedStyleName ) );\r\n if( WPTB_Helper.isHex( elemStyleColorValue ) ) {\r\n element.style[styleName] = elemStyleColorValue;\r\n } else {\r\n element.style[styleName] = '';\r\n }\r\n } else {\r\n return elementStyles.getPropertyValue( computedStyleName );\r\n }\r\n\r\n } else {\r\n if( set ) {\r\n element.style[styleName] = '';\r\n } else {\r\n return '';\r\n }\r\n }\r\n } else if( ! set ) {\r\n return elemStyleColorValue;\r\n }\r\n },\r\n\r\n /*\r\n * function checking that element has the style\r\n * if this style is present - checking the format color\r\n * if param set is true - setting style for element (consider hex format of color)\r\n * if param set is false - getting style from element\r\n */\r\n checkSetGetStyleValue: function ( element, styleName, computedStyleName, set = false ) {\r\n let elemStyleColorValue = element.style[styleName];\r\n\r\n if( ! elemStyleColorValue ) {\r\n let elementStyles = window.getComputedStyle( element, null );\r\n\r\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\r\n\r\n if( set ) {\r\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\r\n } else {\r\n return elementStyles.getPropertyValue( computedStyleName );\r\n }\r\n\r\n } else if( ! set ) {\r\n return '';\r\n }\r\n } else if( ! set ) {\r\n return elemStyleColorValue;\r\n }\r\n },\r\n\r\n /*\r\n * get the value of the same elements that have the most count\r\n */\r\n getValueMaxCountSameElementsInArray: function ( arr ) {\r\n if( arr && Array.isArray( arr ) ) {\r\n let check = {};\r\n for( let i = 0; i < arr.length; i++ ) {\r\n if( check[arr[i]] ) {\r\n check[arr[i]]++;\r\n } else {\r\n check[arr[i]] = 1;\r\n }\r\n }\r\n\r\n let maxPropName;\r\n for ( let key in check ) {\r\n if( ! maxPropName ) {\r\n maxPropName = key;\r\n continue;\r\n } else {\r\n if( check[maxPropName] < check[key] ) {\r\n maxPropName = key;\r\n }\r\n }\r\n }\r\n\r\n return maxPropName;\r\n }\r\n },\r\n\r\n /*\r\n * For assigning to each cell xIndex and y Index attributes,\r\n * these are the column number and row number of cell in table.\r\n */\r\n recalculateIndexes: function ( table ) {\r\n let trs = table.getElementsByTagName( 'tr' ),\r\n tds, maxCols = 0, maxColsFull = 0, tdsArr = [];\r\n\r\n for ( let i = 0; i < trs.length; i++ ) {\r\n tds = trs[i].getElementsByTagName( 'td' );\r\n\r\n if ( tdsArr[i] == undefined ) {\r\n tdsArr[i] = [];\r\n }\r\n\r\n let jMainIter = 0;\r\n for ( let j = 0; j < tds.length; j++ ) {\r\n if ( tdsArr[i][j] != undefined ) {\r\n for ( let y = 0; y < 100; y++ ) {\r\n if ( tdsArr[i][jMainIter] != undefined ) {\r\n jMainIter++;\r\n continue;\r\n }\r\n tdsArr[i][jMainIter] = tds[j];\r\n tds[j].dataset.xIndex = jMainIter;\r\n break;\r\n }\r\n } else {\r\n tdsArr[i][j] = tds[j];\r\n tds[j].dataset.xIndex = jMainIter;\r\n }\r\n tds[j].dataset.yIndex = i;\r\n\r\n if ( tds[j].colSpan > 1 ) {\r\n for ( let k = 1; k < tds[j].colSpan; k++ ) {\r\n jMainIter++;\r\n tdsArr[i][jMainIter] = 'tdDummy';\r\n }\r\n }\r\n\r\n if ( tds[j].rowSpan > 1 ) {\r\n for ( let x = 1; x < tds[j].rowSpan; x++ ) {\r\n if ( tdsArr[i + x] == undefined ) {\r\n tdsArr[i + x] = [];\r\n }\r\n for ( let z = 0; z < tds[j].colSpan; z++ ) {\r\n tdsArr[i + x][jMainIter - tds[j].colSpan + 1 + z ] = 'tdDummy';\r\n }\r\n }\r\n }\r\n jMainIter++;\r\n\r\n if ( j > maxCols ) {\r\n maxCols = j;\r\n }\r\n }\r\n\r\n if( i == 0 ) {\r\n maxColsFull = jMainIter;\r\n }\r\n }\r\n table.columns = maxCols;\r\n table.maxCols = maxColsFull;\r\n },\r\n\r\n /**\r\n * Table Rows colors reinstall\r\n */\r\n tableRowsColorsReinstall: function ( table ) {\r\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\r\n if( infArr && Array.isArray( infArr ) ) {\r\n let tableIndex = '';\r\n if( infArr[infArr.length -1] == '0' ) {\r\n tableIndex = 'startedid-0';\r\n } else {\r\n tableIndex = infArr[infArr.length -1];\r\n }\r\n\r\n let tableHeaderBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableHeaderBackground' );\r\n if( tableHeaderBackground ) {\r\n let details = {value: tableHeaderBackground.value};\r\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableHeaderBackground, details );\r\n }\r\n\r\n let tableEvenRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableEvenRowBackground' );\r\n if( tableEvenRowBackground ) {\r\n let details = {value: tableEvenRowBackground.value};\r\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableEvenRowBackground, details );\r\n }\r\n\r\n let tableOddRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableOddRowBackground' );\r\n if( tableOddRowBackground ) {\r\n let details = {value: tableOddRowBackground.value};\r\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableOddRowBackground, details );\r\n }\r\n }\r\n },\r\n /**\r\n * Get parent html element of given type\r\n *\r\n * @param {string} parentType type of parent element\r\n * @param {HTMLElement} el current element\r\n * @returns {*} html element of type\r\n */\r\n getParentOfType: (parentType, el) => {\r\n if(el.nodeName === parentType.toUpperCase()) {\r\n return el;\r\n }\r\n\r\n return WPTB_Helper.getParentOfType(parentType , el.parentElement);\r\n },\r\n // current relative type of drag element\r\n // this type is used on differentiating certain elements based on their positioning on table\r\n dragRelativeType : '',\r\n /**\r\n *\r\n * @param {string} val drag relative type\r\n */\r\n setDragRelativeType: function (val){\r\n this.dragRelativeType = val;\r\n },\r\n // get drag relative type\r\n getDragRelativeType : function(){\r\n return this.dragRelativeType;\r\n },\r\n}\r\n","var WPTB_Initializer = function () {\r\n\r\n const MIN_COLUMNS = 1,\r\n MIN_ROWS = 1,\r\n MAX_COLUMNS = 30,\r\n MAX_ROWS = 30;\r\n\r\n var tableGenerator = document.body;\r\n columnsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[0],\r\n columnsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[0],\r\n rowsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[1],\r\n rowsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[1],\r\n columnsInput = document.getElementById('wptb-columns-number'),\r\n rowsInput = document.getElementById('wptb-rows-number');\r\n \r\n columnsDecrementButton.onclick = function () {\r\n if (columnsInput.value > MIN_COLUMNS) {\r\n columnsInput.value--;\r\n }\r\n };\r\n\r\n columnsIncrementButton.onclick = function () {\r\n if (columnsInput.value < MAX_COLUMNS) {\r\n columnsInput.value++;\r\n }\r\n };\r\n\r\n rowsDecrementButton.onclick = function () {\r\n if (rowsInput.value > MIN_ROWS) {\r\n rowsInput.value--;\r\n }\r\n };\r\n\r\n rowsIncrementButton.onclick = function () {\r\n if (rowsInput.value < MAX_ROWS) {\r\n rowsInput.value++;\r\n }\r\n };\r\n\r\n document.getElementById( 'wptb-generate-table' ).onclick = function ( ) {\r\n var columns = document.getElementById('wptb-columns-number').value,\r\n rows = document.getElementById('wptb-rows-number').value;\r\n\r\n //wptbTableStateSaveManager.tableStateClear();\r\n \r\n WPTB_Table(columns, rows);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n\r\n // register and setup section buttons\r\n WPTB_Helper.registerSections(['elements', 'table_settings', 'cell_settings', 'options_group' , 'table_responsive_menu']);\r\n WPTB_Helper.setupSectionButtons();\r\n\r\n // activate elements section for startup\r\n WPTB_Helper.activateSection('elements');\r\n\r\n // side bar toggle setup\r\n // WPTB_Helper.setupSidebarToggle('.wptb-panel-drawer-toggle');\r\n WPTB_Helper.setupSidebarToggle('.wptb-panel-toggle-section .wptb-panel-drawer-icon');\r\n\r\n // setup panel sections that have the ability to be toggled on/off\r\n WPTB_Helper.setupPanelToggleButtons();\r\n\r\n // setup responsive menu both at left and builder panel\r\n new WptbResponsive('table_responsive_menu', 'wptbResponsiveApp', '.wptb-builder-content');\r\n\r\n // get builder section from url parameter for easy switch at page load\r\n WPTB_Helper.getSectionFromUrl();\r\n};\r\n","var WPTB_innerElementSet = function ( element ) {\r\n \r\n element.ondragenter = function (e) {\r\n var div;\r\n if ( e.dataTransfer.types.indexOf( 'wptbelement' ) == -1 && e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) == -1 ) {\r\n return;\r\n }\r\n WPTB_DropHandle(this, e);\r\n \r\n element.classList.add( 'wptb-ondragenter' );\r\n }\r\n element.ondragover = function (e) {\r\n e.preventDefault();\r\n WPTB_DropHandle(this, e);\r\n }\r\n element.ondragleave = function (e) {\r\n WPTB_DropHandle(this, e, true);\r\n\r\n }\r\n element.ondrop = function(e) {\r\n this.classList.remove( 'wptb-ondragenter' );\r\n let element, classId;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {\r\n return;\r\n }\r\n let wptbDropHandle,\r\n wptbDropBorderMarker;\r\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length > 0 ) {\r\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\r\n }\r\n if( document.getElementsByClassName( 'wptb-drop-border-marker' ).length > 0 ) {\r\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\r\n }\r\n\r\n if ( e.dataTransfer.getData( 'wptbElement' ) ) {\r\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData( 'wptbElement' ) );\r\n element = element.getDOMElement();\r\n } else {\r\n classId = e.dataTransfer.getData( 'node' );\r\n element = document.getElementsByClassName( classId )[0];\r\n //element.classList.remove( 'wptb-moving-mode' );\r\n }\r\n\r\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\r\n WPTB_DropHandle(this, e, true);\r\n const parentCell = WPTB_Helper.getParentOfType('td', e.target);\r\n\r\n parentCell.appendChild(element);\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n\r\n }else if( wptbDropHandle.style.display == 'block' ) {\r\n let td;\r\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\r\n td = wptbDropHandle.getDOMParentElement();\r\n td.appendChild( element );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n } else {\r\n let innerElement = wptbDropHandle.getDOMParentElement();\r\n td = innerElement.parentNode;\r\n\r\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\r\n td.insertBefore( element, innerElement );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\r\n let innerElementNext = innerElement.nextSibling;\r\n td.insertBefore( element, innerElementNext );\r\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\r\n }\r\n }\r\n \r\n let thisRow = td.parentNode;\r\n if( WPTB_Helper.rowIsTop( thisRow ) ) { \r\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\r\n \r\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n }\r\n }\r\n \r\n // start item javascript if item is new\r\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\r\n let elemKind = infArr[1];\r\n if ( e.dataTransfer.getData( 'wptbElement' ) && ( elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list' ) ) {\r\n //WPTB_Helper.elementStartScript( element );\r\n }\r\n } else {\r\n return;\r\n }\r\n\r\n if(wptbDropHandle){\r\n wptbDropHandle.style.display = 'none';\r\n wptbDropBorderMarker.style.display = 'none';\r\n }\r\n\r\n WPTB_innerElementSet( element );\r\n \r\n if( ! element.classList.contains( 'wptb-image-container' ) || element.classList.contains( 'wptb-moving-mode' ) ) {\r\n element.classList.remove( 'wptb-moving-mode' );\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n } \r\n return true;\r\n }\r\n element.onmouseover = function(e) {\r\n element.classList.remove( 'wptb-ondragenter' );\r\n }\r\n}","var WPTB_LeftPanel = function () {\r\n\r\n let table = document.getElementsByClassName('wptb-preview-table')[0],\r\n wptbElementButtons = document.getElementsByClassName('wptb-element');\r\n\r\n for (var i = 0; i < wptbElementButtons.length; i++) {\r\n wptbElementButtons[i].ondragstart = function (e) {\r\n e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);\r\n e.dataTransfer.setData( 'wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement );\r\n }\r\n };\r\n \r\n if( table ) {\r\n let wptbTablesEditModeCloseButton = document.getElementsByClassName( 'wptb-table-edit-mode-close' );\r\n for ( let i = 0; i < wptbTablesEditModeCloseButton.length; i++ ) {\r\n wptbTablesEditModeCloseButton[i].onclick = WPTB_Helper.toggleTableEditMode;\r\n }\r\n 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 // this code hides the \"element parameters\" area\r\n // when clicked outside this element and its \"tinymce\" toolbar \r\n let wptbBuilderPanel = document.getElementsByClassName( 'wptb-builder-panel' )[0];\r\n wptbBuilderPanel.onclick = function( e ) {\r\n if( ! e.target.classList.contains( 'wptb-ph-element' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-ph-element' ) && \r\n ! e.target.classList.contains( 'wptb-fixed-toolbar' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-fixed-toolbar' ) ) {\r\n WPTB_Helper.clickOnFreeSpace();\r\n } \r\n };\r\n \r\n let wptbHeader = document.getElementsByClassName( 'wptb-header' );\r\n if( wptbHeader.length > 0 ) wptbHeader = wptbHeader[0];\r\n wptbHeader.onclick = function() {\r\n WPTB_Helper.clickOnFreeSpace();\r\n };\r\n};","var MultipleSelect = function () {\r\n\r\n\tvar selectedCells = [],\r\n\t\tmultipleCellMode = false;\r\n\r\n\tthis.activateMultipleSelectMode = function () {\r\n\t\tselectedCells = [];\r\n\t\tvar tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\r\n\t\tfor (var i = 0; i < tds.length; i++) {\r\n\t\t\ttds[i].classList.remove('wptb-highlighted');\r\n\t\t}\r\n\t\tmultipleCellMode = true;\r\n\t}\r\n\r\n\tthis.deactivateMultipleSelectMode = function () {\r\n\t\tmultipleCellMode = false;\r\n\t}\r\n\r\n\tthis.isActivated = function () {\r\n\t\treturn multipleCellMode;\r\n\t}\r\n\r\n\tthis.pushSelectedCell = function (cell) {\r\n\t\tif (!multipleCellMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tselectedCells.push(cell);\r\n\t\tcell.classList.add('wptb-highlighted');\r\n\t};\r\n\r\n\tthis.selectedCells = function () {\r\n\t\treturn selectedCells;\r\n\t}\r\n\r\n\tthis.flushSelectedCells = function () {\r\n\t\tselectedCells = [];\r\n\t}\r\n\r\n\tthis.getFirst = function () {\r\n\t\tvar minXIndex = 1000, minYIndex = 1000, first;\r\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\r\n\t\t\tif (minXIndex >= selectedCells[i].dataset.xIndex\r\n\t\t\t\t&& minYIndex >= selectedCells[i].dataset.yIndex) {\r\n\t\t\t\tfirst = selectedCells[i];\r\n\t\t\t\tminXIndex = selectedCells[i].dataset.xIndex;\r\n\t\t\t\tminYIndex = selectedCells[i].dataset.yIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn first;\r\n\t}\r\n\r\n\tthis.getLast = function () {\r\n\t\tvar maxXIndex = -1, maxYIndex = -1, last;\r\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\r\n\t\t\tif (maxXIndex <= selectedCells[i].dataset.xIndex\r\n\t\t\t\t&& maxYIndex <= selectedCells[i].dataset.yIndex) {\r\n\t\t\t\tlast = selectedCells[i];\r\n\t\t\t\tmaxXIndex = selectedCells[i].dataset.xIndex;\r\n\t\t\t\tmaxYIndex = selectedCells[i].dataset.yIndex;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn last;\r\n\t}\r\n\r\n\tthis.removeAllButFirst = function () {\r\n\t\tvar td = this.getFirst();\r\n\t\tfor (var i = 1; i < selectedCells.length; i++) {\r\n\t\t\tselectedCells[i].classList.add('wptb-fused-cell-' + td.dataset.xIndex + '-' + td.dataset.yIndex);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n\r\n};","var WPTB_Parser = function ( code ) {\r\n let div = document.createElement( 'div' );\r\n div.innerHTML = code;\r\n \r\n let table = div.children[0];\r\n let columnTitleMobile = [...table.querySelectorAll( '.wptb-column-title-mobile-container' )];\r\n \r\n for( let i = 0; i < columnTitleMobile.length; i++ ) {\r\n let parent = columnTitleMobile[i].parentNode;\r\n parent.removeChild( columnTitleMobile[i] );\r\n }\r\n \r\n let tds = table.querySelectorAll( 'td' );\r\n for ( let i = 0; i < tds.length; i++ ) {\r\n tds[i].classList.add( 'wptb-droppable' );\r\n tds[i].classList.remove( 'wptb-column-title-mobile-not-elements' );\r\n }\r\n \r\n return table;\r\n}","// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\r\nif (!Object.keys) {\r\n Object.keys = (function () {\r\n 'use strict';\r\n var hasOwnProperty = Object.prototype.hasOwnProperty,\r\n hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\r\n dontEnums = [\r\n 'toString',\r\n 'toLocaleString',\r\n 'valueOf',\r\n 'hasOwnProperty',\r\n 'isPrototypeOf',\r\n 'propertyIsEnumerable',\r\n 'constructor'\r\n ],\r\n dontEnumsLength = dontEnums.length;\r\n\r\n return function (obj) {\r\n if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\r\n throw new TypeError('Object.keys called on non-object');\r\n }\r\n\r\n var result = [], prop, i;\r\n\r\n for (prop in obj) {\r\n if (hasOwnProperty.call(obj, prop)) {\r\n result.push(prop);\r\n }\r\n }\r\n\r\n if (hasDontEnumBug) {\r\n for (i = 0; i < dontEnumsLength; i++) {\r\n if (hasOwnProperty.call(obj, dontEnums[i])) {\r\n result.push(dontEnums[i]);\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n }());\r\n}","/**\r\n * Responsive menu and options class.\r\n *\r\n * This class will be called and instanced at table builder menu to add it the responsive menu and its controls.\r\n *\r\n * @param {string} sectionName section name\r\n * @param {string} responsiveWrapperId id for mount point\r\n * @param {string} mainContainerQuery query to find parent container for responsive menu\r\n * @throws {Error} will throw an error if mainContainerQuery failed to find any element\r\n * @constructor\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction WptbResponsive(sectionName, responsiveWrapperId, mainContainerQuery) {\r\n\tthis.sectionName = sectionName;\r\n\tthis.responsiveWrapperId = responsiveWrapperId;\r\n\tthis.responsiveTable = null;\r\n\tthis.loaded = false;\r\n\r\n\t/**\r\n\t * Add responsive container to dom.\r\n\t */\r\n\tthis.addContainerToDom = () => {\r\n\t\tconst responsiveContainer = document.querySelector(`#${this.responsiveWrapperId}`);\r\n\t\tif (!responsiveContainer) {\r\n\t\t\tconst mainContainer = document.querySelector(mainContainerQuery);\r\n\r\n\t\t\t// parent container not found, throw error\r\n\t\t\tif (!mainContainer) {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`[WPTB_Responsive]: no parent container is found with the given query of [${mainContainerQuery}]`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tconst range = document.createRange();\r\n\t\t\trange.setStart(mainContainer, 0);\r\n\r\n\t\t\tconst responsiveElement = range.createContextualFragment(\r\n\t\t\t\t`<div class=\"wptb-responsive\" id=\"${this.responsiveWrapperId}\">responsive element</div>`\r\n\t\t\t);\r\n\t\t\tmainContainer.appendChild(responsiveElement);\r\n\t\t\tthis.loaded = true;\r\n\t\t}\r\n\r\n\t\tthis.responsiveTable = document.querySelector(`#${this.responsiveWrapperId}`);\r\n\t};\r\n\r\n\t/**\r\n\t * Load and make necessary mount preparations for component.\r\n\t */\r\n\tthis.load = () => {\r\n\t\tif (!this.loaded) {\r\n\t\t\tthis.addContainerToDom();\r\n\r\n\t\t\tWPTB_Helper.elementStartScript(this.responsiveTable, 'table_responsive_menu');\r\n\t\t\tWPTB_Helper.elementOptionsSet('table_responsive_menu', this.responsiveTable);\r\n\t\t\tWPTB_ControlsManager.callControlScript('ResponsiveTable', this.responsiveWrapperId);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Startup hook for the component.\r\n\t */\r\n\tthis.startUp = () => {\r\n\t\t// event listener for section change events\r\n\t\tdocument.addEventListener('wptbSectionChanged', (e) => {\r\n\t\t\tconst tablePreview = document.querySelector('.wptb-preview-table');\r\n\r\n\t\t\t// check if activated section is related to responsive and there is a main table already in the view\r\n\t\t\tif (e.detail === this.sectionName && tablePreview) {\r\n\t\t\t\tthis.load();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// event listener for table ready signal\r\n\t\tdocument.addEventListener('wptb:table:generated', () => {\r\n\t\t\t// check current section to be sure that responsive menu is the active one before calling load related scripts\r\n\t\t\tif (WPTB_Helper.getCurrentSection() === 'table_responsive_menu') {\r\n\t\t\t\tthis.load();\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tthis.startUp();\r\n}\r\n","var WPTB_Settings = function () {\r\n var elems = document.getElementsByClassName('wptb-element');\r\n\r\n for ( var i = 0; i < elems.length; i++ ) {\r\n elems[i].ondragstart = function ( event ) {\r\n event.dataTransfer.effectAllowed = 'move';\r\n event.dataTransfer.setData( 'wptbElement', event.target.dataset.wptbElement );\r\n event.dataTransfer.setData( 'wptbElIndic-' + event.target.dataset.wptbElement, 'wptbElIndic-' + event.target.dataset.wptbElement );\r\n\r\n // set drag relative helper field for future use\r\n WPTB_Helper.setDragRelativeType(this.dataset.wptbRelativeElements || '');\r\n }\r\n elems[i].ondragend = function () {\r\n WPTB_Helper.elementDragEndClear();\r\n }\r\n };\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\r\n if( wptbUndo.length > 0 ) {\r\n wptbUndo = wptbUndo[0];\r\n \r\n wptbUndo.onclick = function( event ) {\r\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\r\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\r\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\r\n if(wptbUndoRedoContainer.length > 0) {\r\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\r\n wptbUndoRedoContainer.onmouseleave = function( event ) {\r\n event.target.onmouseleave = '';\r\n let table = document.querySelector( '.wptb-preview-table' );\r\n WPTB_Table();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\r\n if( wptbRedo.length > 0 ) {\r\n wptbRedo = wptbRedo[0];\r\n \r\n wptbRedo.onclick = function( event ) {\r\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\r\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\r\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\r\n if(wptbUndoRedoContainer.length > 0) {\r\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\r\n wptbUndoRedoContainer.onmouseleave = function( event ) {\r\n event.target.onmouseleave = '';\r\n let table = document.querySelector( '.wptb-preview-table' );\r\n WPTB_Table();\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n \r\n let shortcodePopupWindow = document.getElementsByClassName( 'wptb-popup-window-modal' )[0];\r\n document.getElementsByClassName( 'wptb-embed-btn' )[0].onclick = function () {\r\n if( ! this.classList.contains( 'wptb-button-disable' ) ) {\r\n shortcodePopupWindow.classList.add( 'wptb-popup-show' );\r\n }\r\n }\r\n \r\n window.onbeforeunload = function(e) {\r\n let wptbSaveDisabled = document.getElementsByClassName( 'wptb-save-disabled' );\r\n if( wptbSaveDisabled.length == 0 ) {\r\n return true;\r\n } else {\r\n return null;\r\n }\r\n };\r\n \r\n \r\n document.getElementsByClassName( 'wptb-popup-dark-area' )[0].onclick = function () {\r\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\r\n }\r\n \r\n document.getElementsByClassName( 'wptb-popup-window-close-icon' )[0].onclick = function () {\r\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\r\n }\r\n \r\n document.getElementsByClassName( 'wptb-preview-btn' )[0].onclick = function ( event ) {\r\n if( this.classList.contains( 'wptb-button-disable' ) ) {\r\n return;\r\n } \r\n \r\n let previewId = Math.floor( Math.random() * 10000 );\r\n \r\n var newHref = new URL( event.target.href );\r\n newHref.searchParams.set( 'preview_id', previewId );\r\n event.target.href = newHref.toString();\r\n WPTB_Helper.saveTable( event, false, previewId );\r\n }\r\n\r\n document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function ( event ) {\r\n if( ! this.classList.contains( 'wptb-save-disabled' ) ) {\r\n WPTB_Helper.saveTable( event );\r\n }\r\n }\r\n\r\n let tableTitleField = document.querySelector( '#wptb-setup-name' );\r\n if( tableTitleField ) {\r\n tableTitleField.onchange = function () {\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n }\r\n};\r\n","var WPTB_Stringifier = function ( codeMain ) {\r\n if ( codeMain ) {\r\n let code = codeMain.cloneNode( true );\r\n code.dataset.tableColumns = codeMain.columns;\r\n code.style.width = null;\r\n code.style.minWidth = null;\r\n code.style.maxWidth = null;\r\n \r\n let tds = code.getElementsByTagName( 'td' );\r\n if ( tds.length > 0 ) {\r\n for ( let i = 0; i < tds.length; i++ ) {\r\n\r\n tds[i].removeAttribute( 'data-x-index' );\r\n tds[i].removeAttribute( 'data-y-index' );\r\n tds[i].removeAttribute( 'draggable' );\r\n tds[i].classList.remove( 'wptb-droppable' );\r\n let infArr = tds[i].className.match( /wptb-element-((.+-)\\d+)/i );\r\n if(infArr) tds[i].classList.remove(infArr[0]);\r\n let innerElements = tds[i].getElementsByClassName( 'wptb-ph-element' );\r\n \r\n if ( innerElements.length > 0 ) {\r\n for ( let j = 0; j < innerElements.length; j++ ) {\r\n \r\n let mceContentBodys = innerElements[j].querySelectorAll( '.mce-content-body' );\r\n if( mceContentBodys.length > 0 ) {\r\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\r\n mceContentBodys[k].classList.remove( 'mce-content-body' );\r\n }\r\n }\r\n \r\n let dataMceStyle = innerElements[j].querySelectorAll( '[data-mce-style]' );\r\n if ( dataMceStyle.length > 0 ) {\r\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\r\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\r\n }\r\n }\r\n \r\n let contentEditable = innerElements[j].querySelectorAll( '[contenteditable]' );\r\n if ( contentEditable.length > 0 ) {\r\n for ( let k = 0; k < contentEditable.length; k++ ) {\r\n contentEditable[k].removeAttribute( 'contenteditable' );\r\n }\r\n }\r\n \r\n let spellCheck = innerElements[j].querySelectorAll( '[spellcheck]' );\r\n if ( spellCheck.length > 0 ) {\r\n for ( let k = 0; k < spellCheck.length; k++ ) {\r\n spellCheck[k].removeAttribute( 'spellcheck' );\r\n }\r\n }\r\n \r\n let mceIds = innerElements[j].querySelectorAll( '[id^=mce_]' );\r\n if ( mceIds.length > 0 ) {\r\n for ( let k = 0; k < mceIds.length; k++ ) {\r\n mceIds[k].removeAttribute( 'id' );\r\n }\r\n }\r\n \r\n let wptbActions = innerElements[j].querySelectorAll( '.wptb-actions' );\r\n let wptbActionsLength = wptbActions.length;\r\n while ( wptbActionsLength > 0 ) {\r\n if( wptbActions[0] && wptbActions[0].parentNode ) {\r\n wptbActions[0].parentNode.removeChild( wptbActions[0] );\r\n wptbActionsLength--;\r\n } else {\r\n break;\r\n }\r\n \r\n } \r\n \r\n let dataMceBogus = innerElements[j].querySelectorAll( '[data-mce-bogus]' );\r\n if( dataMceBogus.length > 0 ) {\r\n dataMceBogus = [...dataMceBogus];\r\n for( let k = 0; k < dataMceBogus.length; k++ ) {\r\n if( dataMceBogus[k] && dataMceBogus[k].parentNode ) {\r\n dataMceBogus[k].parentNode.removeChild( dataMceBogus[k] );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // TODO dataTitleColumnSet\r\n // if( tds[i].hasAttribute( 'data-wptb-title-column' ) ) {\r\n // let columnNameDivContainer = document.createElement( 'div' ),\r\n // columnNameDiv = document.createElement( 'div' );\r\n // columnNameDivContainer.classList.add( 'wptb-column-title-mobile-container' );\r\n // columnNameDiv.classList.add( 'wptb-column-title-mobile' );\r\n // columnNameDiv.dataset.wptbTitleColumn = tds[i].dataset.wptbTitleColumn;\r\n // columnNameDiv.setAttribute( 'style', 'font-size:' + tds[i].dataset.wptbTitleColumnFontSize + '; \\n\\\r\n // color:' + tds[i].dataset.wptbTitleColumnColor + '; background-color:' + tds[i].dataset.wptbTitleBackgroundColor + '; text-align:' + tds[i].dataset.wptbTitleAlign + ';' );\r\n // columnNameDiv.style.padding = tds[i].style.padding;\r\n // if( tds[i].children.length == 0 ) {\r\n // tds[i].classList.add( 'wptb-column-title-mobile-not-elements' );\r\n // }\r\n // columnNameDivContainer.appendChild( columnNameDiv );\r\n // tds[i].insertBefore( columnNameDivContainer, tds[i].firstChild );\r\n // }\r\n }\r\n }\r\n \r\n return code;\r\n }\r\n}","var array = [], WPTB_Table = function ( columns, rows, wptb_preview_table ) {\r\n\r\n /* The members of the class */\r\n var settings = document.getElementsByClassName('wptb-settings-items'),\r\n wptbTableSetup = document.getElementsByClassName(\"wptb-table-setup\")[0],\r\n table, row, cell,\r\n maxAmountOfCells,\r\n maxAmountOfRows;\r\n\r\n //HERE ARE THE PRIVATE FUNCTIONS\r\n /*\r\n * This function toggles buttons visibility in cell edit mode\r\n * (according to the amount of currently selected cells), and\r\n * highlights visually the clicked cell if it is not highlighted, or\r\n * removes highlight if clicked cell is already highlighted. \r\n * It too toggles the bits of our abstract representation.\r\n * @param Event this is the event instance of the click performed over a cell.\r\n */\r\n var mark = function ( event ) {\r\n let thisElem = event.currentTarget;\r\n let rs = thisElem.rowSpan,\r\n cs = thisElem.colSpan,\r\n noCells = document.getElementsByClassName('wptb-no-cell-action'),\r\n singleCells = document.getElementsByClassName('wptb-single-action'),\r\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\r\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\r\n position = getCoords(thisElem),\r\n row = position[0],\r\n column = position[1];\r\n if ( ! document.select.isActivated() ) {\r\n return;\r\n }\r\n if (thisElem.className.match(/wptb-highlighted/)) {\r\n thisElem.classList.remove('wptb-highlighted');\r\n for (var i = 0; i < rs; i++) {\r\n for (var j = 0; j < cs; j++) {\r\n array[row + i][column + j] = 0;\r\n }\r\n }\r\n } else {\r\n thisElem.classList.add('wptb-highlighted');\r\n for (var i = 0; i < rs; i++) {\r\n for (var j = 0; j < cs; j++) {\r\n array[row + i][column + j] = 1;\r\n }\r\n }\r\n }\r\n\r\n let cellHighlighted = document.getElementsByClassName('wptb-highlighted'),\r\n markedCells = cellHighlighted.length;\r\n if (markedCells === 0) {\r\n for (var i = 0; i < multipleCells.length; i++) {\r\n multipleCells[i].classList.remove('visible');\r\n multipleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (var i = 0; i < noCells.length; i++) {\r\n noCells[i].classList.add('visible');\r\n noCells[i].removeAttribute('disabled');\r\n }\r\n for (var i = 0; i < singleCells.length; i++) {\r\n singleCells[i].classList.remove('visible');\r\n singleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n cellSettings.classList.remove( 'visible' );\r\n } else if (markedCells === 1) {\r\n for (var i = 0; i < multipleCells.length; i++) {\r\n multipleCells[i].classList.remove('visible');\r\n multipleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (var i = 0; i < noCells.length; i++) {\r\n noCells[i].classList.remove('visible');\r\n noCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (var i = 0; i < singleCells.length; i++) {\r\n singleCells[i].classList.add('visible');\r\n singleCells[i].removeAttribute('disabled');\r\n }\r\n\r\n cellHighlighted = cellHighlighted[0];\r\n WPTB_Helper.elementOptionsSet( 'table_cell_setting', cellHighlighted );\r\n\r\n let infArr = cellHighlighted.className.match( /wptb-element-((.+-)\\d+)/i );\r\n\r\n const controlElemIds = ['cellWidth', 'cellHeight'];\r\n\r\n controlElemIds.map(s => {\r\n let elementControlSizeUnicClass = `wptb-el-${infArr[1]}-${s}`,\r\n elementControlSizeFixedUnicClass = `wptb-el-${infArr[1]}-${s}Fixed`;\r\n if(s === 'cellWidth' || s === 'cellHeight') {\r\n let sizeName = '',\r\n getSizeFunctionName = '';\r\n if(s === 'cellWidth') {\r\n sizeName = 'width';\r\n getSizeFunctionName = 'getColumnWidth';\r\n } else if(s === 'cellHeight') {\r\n sizeName = 'height';\r\n getSizeFunctionName = 'getRowHeight';\r\n }\r\n let size = cellHighlighted.style[sizeName],\r\n cellSizeInputs = document.querySelectorAll( '.' + elementControlSizeUnicClass ),\r\n cellSizeFixedInput = document.querySelector( '.' + elementControlSizeFixedUnicClass );\r\n cellSizeInputs = [...cellSizeInputs];\r\n\r\n if(!size && !cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`]) {\r\n size = WPTB_Helper[getSizeFunctionName](table, cellHighlighted);\r\n cellSizeInputs.map(s => {\r\n s.value = size;\r\n });\r\n\r\n cellSizeFixedInput.checked = false;\r\n } else {\r\n cellSizeInputs.map(s => {\r\n if( size ) {\r\n s.value = parseFloat( size, 10 );\r\n } else if( cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`] ) {\r\n s.value = cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`];\r\n }\r\n });\r\n\r\n cellSizeFixedInput.checked = true;\r\n }\r\n }\r\n });\r\n\r\n cellSettings.classList.add( 'visible' );\r\n } else {\r\n for (var i = 0; i < multipleCells.length; i++) {\r\n if (table.isSquare(array)) {\r\n multipleCells[i].classList.add('visible');\r\n multipleCells[i].removeAttribute('disabled');\r\n } else {\r\n multipleCells[i].classList.remove('visible');\r\n multipleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n }\r\n for (var i = 0; i < noCells.length; i++) {\r\n noCells[i].classList.remove('visible');\r\n noCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (var i = 0; i < singleCells.length; i++) {\r\n singleCells[i].classList.remove('visible');\r\n singleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n cellSettings.classList.remove( 'visible' );\r\n }\r\n\r\n /**\r\n * empty cell setting\r\n */\r\n // let emptySetting = document.\r\n const infArr = thisElem.className.match(/wptb-element-table_cell_setting-((.+-)\\d+)/i);\r\n if (infArr && infArr.length > 1) {\r\n const controlKey = 'emptyCell';\r\n const settingId = `wptb-el-table_cell_setting-${infArr[1]}-${controlKey}`;\r\n const settingElem = document.getElementById(settingId);\r\n if (settingElem) {\r\n settingElem.querySelector('input[type=\"checkbox\"]').checked = thisElem.classList.contains('wptb-empty')\r\n }\r\n }\r\n \r\n\r\n let details = {countMarkedCells:markedCells};\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/cell/mark', thisElem, details);\r\n };\r\n\r\n /* \r\n * This function fills an array with 1's according to the actual design\r\n * of HTML table.\r\n * @returns an array of arrays containing an abstract representation\r\n * of HTML table.\r\n * @deprecated\r\n * */\r\n\r\n var realTimeArray = function () {\r\n var carried = [], tds, cols, matriz = [];\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n carried[i] = 0;\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n cols = [];\r\n\r\n var tds = table.rows[i].getElementsByTagName('td');\r\n\r\n for (items = 0; items < tds.length; items++) {\r\n\r\n for (var k = 0; k < tds[items].colSpan; k++) {\r\n cols.push(1);\r\n }\r\n\r\n if (tds[items].rowSpan > 1) {\r\n for (var k = 0; k < tds[items].colSpan; k++) {\r\n carried[items + k] = {\r\n justAssigned: true,\r\n amount: tds[items].rowSpan\r\n };\r\n }\r\n }\r\n }\r\n\r\n for (var k = 0; k < maxAmountOfCells; k++) {\r\n if (typeof carried[k] == 'object' && carried[k].amount > 0) {\r\n carried[k].amount--;\r\n if (carried[k].justAssigned) {\r\n carried[k].justAssigned = false;\r\n } else {\r\n cols.push(1);\r\n }\r\n }\r\n }\r\n\r\n matriz.push(cols);\r\n\r\n }\r\n return matriz;\r\n };\r\n\r\n /*\r\n * This function gets the number and position of cell spaces in current row that are occuped \r\n * by upper rowspanned cells.\r\n * @param number the number of row where we wish to calculate the carried rowspans up to.\r\n * @return an array with the remaining rowspans in each column.\r\n */\r\n var carriedRowspans = function (row) {\r\n var carried = [], tds, cols;\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n carried[i] = 0;\r\n }\r\n\r\n if (row == -1) {\r\n return carried;\r\n }\r\n\r\n for (var i = 0; i <= row; i++) {\r\n cellsBuffer = table.rows[i].getElementsByTagName('td');\r\n cellPointer = 0;\r\n\r\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\r\n stepsToMove = 1;\r\n\r\n if (carried[xPosition]) {\r\n carried[xPosition]--;\r\n } else {\r\n celda = cellsBuffer[cellPointer++];\r\n if (celda.rowSpan > 1) {\r\n for (k = 0; k < celda.colSpan; k++) {\r\n carried[xPosition + k] = celda.rowSpan - 1;\r\n }\r\n stepsToMove = celda.colSpan;\r\n } else if (celda.colSpan > 1) {\r\n stepsToMove = celda.colSpan;\r\n }\r\n }\r\n }\r\n\r\n }\r\n return carried;\r\n };\r\n\r\n /*\r\n * A helpful function for showing\r\n * the abstract table in console.\r\n * @param Array our abstract table.\r\n */\r\n var drawTable = function (a) {\r\n var string = 'DRAWING TABLE:\\n';\r\n for (var i = 0; i < a.length; i++) {\r\n\r\n for (var j = 0; j < a[i].length; j++) {\r\n string += ' ' + a[i][j];\r\n }\r\n string += '\\n';\r\n }\r\n table.isSquare(a);\r\n };\r\n\r\n /*\r\n * It resets all the bits of our abstract representation\r\n * to 0 and removes the highlighting class of all cells.\r\n */\r\n\r\n var undoSelect = function () {\r\n let noCells = document.getElementsByClassName('wptb-no-cell-action'),\r\n singleCells = document.getElementsByClassName('wptb-single-action'),\r\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\r\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\r\n tds = table.getElementsByClassName('wptb-highlighted');\r\n while (tds.length) {\r\n tds[0].classList.remove('wptb-highlighted');\r\n }\r\n cellSettings.classList.remove( 'visible' );\r\n for (let i = 0; i < array.length; i++) {\r\n for (let j = 0; j < array[i].length; j++) {\r\n array[i][j] = 0;\r\n }\r\n }\r\n for (let i = 0; i < multipleCells.length; i++) {\r\n multipleCells[i].classList.remove('visible');\r\n multipleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n for (let i = 0; i < noCells.length; i++) {\r\n noCells[i].classList.add('visible');\r\n noCells[i].removeAttribute('disabled');\r\n }\r\n for (let i = 0; i < singleCells.length; i++) {\r\n singleCells[i].classList.remove('visible');\r\n singleCells[i].setAttribute('disabled', 'disabled');\r\n }\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/undo-select/active', table);\r\n };\r\n\r\n /*\r\n * This fills the abstract representation of our table with \r\n * zeros, at the start. the max amount of cells is the greatest sum\r\n * of all colspans for row.\r\n */\r\n\r\n var fillTableArray = function () {\r\n var colspansSums = [], a = [];\r\n\r\n //calculate max amount of cells inside a row\r\n for (var i = 0; i < table.rows.length; i++) {\r\n var cells = table.rows[i].getElementsByTagName('td'),\r\n colspanSumInRow = 0;\r\n for (var j = 0; j < cells.length; j++) {\r\n colspanSumInRow += cells[j].colSpan;\r\n }\r\n colspansSums.push(colspanSumInRow);\r\n }\r\n\r\n maxAmountOfCells = Math.max.apply(null, colspansSums);\r\n //calculate max rows\r\n var maxAmountOfRows = table.rows.length;\r\n\r\n // fill with zeros from both values\r\n for (var i = 0; i < maxAmountOfRows; i++) {\r\n a[i] = [];\r\n for (var j = 0; j < maxAmountOfCells; j++) {\r\n a[i].push(0);\r\n }\r\n }\r\n drawTable(a);\r\n return a;\r\n };\r\n\r\n /*\r\n * This function gets the sum of all colspans in a row.\r\n * @param number the number of row to be used as reference.\r\n */\r\n var getActualPointsInRow = function (row) {\r\n var tds = table.rows[row].getElementsByTagName('td'),\r\n points = 0;\r\n for (var i = 0; i < tds.length; i++) {\r\n points += tds[i].colSpan;\r\n }\r\n return points;\r\n }\r\n\r\n /*\r\n * This function gets us the exact coordinates of\r\n * an exact cell, in a more reliable way than xIndex and yIndex,\r\n * these last ones were meant to be used for getting the cell trough them.\r\n * @param DOMElement the cell to get the coordinates.\r\n */\r\n var getCoords = function (search) {\r\n var skipInCols = [], cell;\r\n\r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n skipInCols[i] = 0;\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n var cellsBuffer = table.rows[i].getElementsByTagName('td');\r\n cellPointer = 0;\r\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\r\n stepsToMove = 1;\r\n\r\n if (skipInCols[xPosition]) {\r\n skipInCols[xPosition]--;\r\n } else {\r\n var td = cellsBuffer[cellPointer++];\r\n if (td == search) {\r\n return [i, xPosition];\r\n }\r\n if (td.rowSpan > 1) {\r\n for ( let k = 0; k < td.colSpan; k++ ) {\r\n skipInCols[xPosition + k] = td.rowSpan - 1;\r\n }\r\n stepsToMove = td.colSpan;\r\n } else if (td.colSpan > 1) {\r\n stepsToMove = td.colSpan;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n jQuery('#wptb-table-border-color').val('');\r\n jQuery('#wptb-table-padding-number,#wptb-table-padding-slider').val('15');\r\n\r\n if ( columns || rows ) {\r\n //END OF PRIVATE FUNCTIONS\r\n for (var i = 0; i < settings.length; i++) {\r\n if (settings[i].id !== 'wptb-apply-inner-border') {\r\n settings[i].classList.add('visible');\r\n }\r\n }\r\n\r\n //Create a HTML Table element.\r\n table = document.createElement( 'table' );\r\n table.classList.add( 'wptb-preview-table', 'wptb-element-main-table_setting-startedid-0' );\r\n table.style.border = '0px solid';\r\n table.dataset.reconstraction = 1;\r\n //table.dataset.wptbAdaptiveTable = 1;\r\n //Add the data rows.\r\n for (var i = 0; i < rows; i++) {\r\n\r\n row = table.insertRow(-1);\r\n row.classList.add( 'wptb-row' );\r\n\r\n for (var j = 0; j < columns; j++) {\r\n cell = new WPTB_Cell(mark);\r\n cell.setCoords(i, j);\r\n cell.getDOMElement().style.borderWidth = '1px';\r\n row.appendChild(cell.getDOMElement());\r\n }\r\n }\r\n } else {\r\n if( ! wptb_preview_table ) wptb_preview_table = document.querySelector( '.wptb-preview-table' );\r\n\r\n if ( wptb_preview_table ) {\r\n table = wptb_preview_table;\r\n\r\n let cells = table.getElementsByTagName('td');\r\n\r\n if (cells.length > 0) {\r\n for (let i = 0; i < cells.length; i++) {\r\n WPTB_Cell(mark, cells[i]);\r\n }\r\n }\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n /**\r\n * this method run \"mark\" method of WPTB_Table object\r\n * @param event\r\n */\r\n table.mark = (event) => {\r\n mark(event);\r\n }\r\n\r\n /**\r\n * this method run \"undoSelect\" method of WPTB_Table object\r\n * @param event\r\n */\r\n table.undoSelect = () => {\r\n undoSelect();\r\n }\r\n\r\n /**\r\n * method for set value for maxAmountOfCells\r\n * @param value\r\n */\r\n table.setMaxAmountOfCells = (value) => {\r\n maxAmountOfCells = value;\r\n }\r\n\r\n /**\r\n * this method return maxAmountOfCells value\r\n * @returns {*}\r\n */\r\n table.getMaxAmountOfCells = () => {\r\n return maxAmountOfCells;\r\n }\r\n\r\n /**\r\n * this method run \"fillTableArray\" method of WPTB_Table object\r\n * @returns {[]}\r\n */\r\n table.fillTableArray = () => {\r\n return fillTableArray();\r\n }\r\n /*\r\n * For assigning to each cell xIndex and y Index attributes,\r\n * these are the column number and row number of cell in table. \r\n */\r\n\r\n table.recalculateIndexes = function () {\r\n WPTB_Helper.recalculateIndexes( this );\r\n }\r\n \r\n table.addColumnWidth = function( value, cleaner ) {\r\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\r\n if( highlighted.length > 0 ) {\r\n for( let k = 0; k < highlighted.length; k++ ) {\r\n let dataXIndex = highlighted[k].dataset.xIndex;\r\n if( dataXIndex ) {\r\n function tableTdsFor( dataXIndex, colspan ) {\r\n let tableRows = table.rows;\r\n let widthIsSet = false;\r\n let arrayTdsFromPreviousRow = [];\r\n for( let i = 0; i < tableRows.length; i++ ) {\r\n let row = tableRows[i];\r\n let tds = row.children;\r\n for( let j = 0; j < tds.length; j++ ) {\r\n let td = tds[j];\r\n if( td.dataset.xIndex == dataXIndex ) {\r\n if( value ) {\r\n if( td.colSpan == colspan ) {\r\n td.style.width = value + 'px';\r\n td.removeAttribute( 'data-wptb-fixed-width' );\r\n widthIsSet = true;\r\n } else {\r\n td.style.width = null;\r\n td.dataset.wptbFixedWidth = value;\r\n if( i == tableRows.length - 1 && ! widthIsSet ) {\r\n tableTdsFor( dataXIndex, colspan + 1 );\r\n }\r\n }\r\n } else if( cleaner ) {\r\n td.style.width = null;\r\n td.removeAttribute( 'data-wptb-fixed-width' );\r\n } else {\r\n if( td.dataset.wptbFixedWidth ) {\r\n if( td.colSpan == colspan ) {\r\n td.style.width = td.dataset.wptbFixedWidth + 'px';\r\n td.removeAttribute( 'data-wptb-fixed-width' );\r\n } \r\n } else if( td.style.width ) {\r\n for( let z = 0; z < arrayTdsFromPreviousRow.length; z++ ) {\r\n arrayTdsFromPreviousRow[z].style.width = td.style.width;\r\n }\r\n arrayTdsFromPreviousRow = [];\r\n } else {\r\n arrayTdsFromPreviousRow.push( td );\r\n }\r\n }\r\n break;\r\n } \r\n }\r\n }\r\n }\r\n \r\n tableTdsFor( dataXIndex, 1 );\r\n }\r\n }\r\n \r\n table.tdDefaultWidth();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n }\r\n }\r\n \r\n table.tdDefaultWidth = function() {\r\n let rows = table.rows;\r\n \r\n let tableTdsSumMaxWidth = 0;\r\n let tableTdsSumMaxWidthFixed = 0;\r\n let tableTdsSumMaxWidthAuto = 0;\r\n \r\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' )[0];\r\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\r\n \r\n let arrayCellsWidthFixedHelper = [];\r\n let arrayCellsWidthAutoHelper = [];\r\n let tdPaddingCommon = 0;\r\n let tableTdBorderCommonWidth = 0;\r\n let cssForTdsWidthAuto = '';\r\n \r\n \r\n let tableFullStyleObj = window.getComputedStyle( table, null );\r\n let borderLeftWidth = tableFullStyleObj.getPropertyValue( 'border-left-width' );\r\n let borderRightWidth = tableFullStyleObj.getPropertyValue( 'border-right-width' );\r\n let tableBorderCommon = parseFloat( borderLeftWidth, 10 ) + parseFloat( borderRightWidth, 10 );\r\n \r\n for( let i = 0; i < rows.length; i++ ) {\r\n let tds = rows[i].children;\r\n for( let j = 0; j < tds.length; j++ ) {\r\n let td = tds[j];\r\n \r\n if( ! arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\r\n if( td.style.width ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] = parseFloat( td.style.width );\r\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\r\n } else {\r\n if( ! td.dataset.wptbFixedWidth ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] = table.dataset.wptbTdWidthAuto ? parseFloat( table.dataset.wptbTdWidthAuto, 10 ) : 100;\r\n td.dataset.wptbCssTdAutoWidth = true;\r\n }\r\n }\r\n \r\n if( window.getComputedStyle( td, null ) ) {\r\n let tdStyleObj = window.getComputedStyle( td, null );\r\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\r\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\r\n tdPaddingCommon = parseFloat( tdPaddingLeft, 10 ) + parseFloat( tdPaddingRight, 10 );\r\n\r\n let tableTdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\r\n let tableTdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\r\n tableTdBorderCommonWidth = parseFloat( tableTdBorderLeftWidth, 10 ) + parseFloat( tableTdBorderRightWidth, 10 );\r\n tableTdBorderCommonWidth = tableTdBorderCommonWidth / 2;\r\n \r\n if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\r\n \r\n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\r\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\r\n }\r\n\r\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\r\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\r\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\r\n }\r\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\r\n \r\n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\r\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\r\n }\r\n\r\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\r\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\r\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\r\n }\r\n }\r\n }\r\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\r\n if( ! td.dataset.wptbFixedWidth ) {\r\n td.dataset.wptbCssTdAutoWidth = true;\r\n }\r\n } else if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\r\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\r\n }\r\n }\r\n }\r\n \r\n for( let i = 0; i < arrayCellsWidthFixedHelper.length; i++ ) {\r\n if( arrayCellsWidthFixedHelper[i] ) {\r\n tableTdsSumMaxWidthFixed += arrayCellsWidthFixedHelper[i];\r\n }\r\n }\r\n \r\n let CellsWidthAutoCount = 0;\r\n for( let i = 0; i < arrayCellsWidthAutoHelper.length; i++ ) {\r\n if( arrayCellsWidthAutoHelper[i] ) {\r\n tableTdsSumMaxWidthAuto += arrayCellsWidthAutoHelper[i];\r\n CellsWidthAutoCount++;\r\n }\r\n }\r\n \r\n tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto;\r\n \r\n table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;\r\n if( CellsWidthAutoCount ) {\r\n table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;\r\n if( table.mergingСellsHorizontally ) {\r\n table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed;\r\n } else {\r\n table.removeAttribute( 'data-wptb-fixed-width-size' );\r\n }\r\n } else {\r\n table.removeAttribute( 'data-wptb-fixed-width-size' );\r\n table.removeAttribute( 'data-wptb-cells-width-auto-count' );\r\n }\r\n \r\n let styleElementCreate = false;\r\n let tableTdWidthAuto;\r\n if( tableTdsSumMaxWidth < wptbTableSetupWidth ) {\r\n if( CellsWidthAutoCount ) {\r\n table.style.minWidth = '100%';\r\n if( table.mergingСellsHorizontally ) {\r\n table.style.width = 'auto';\r\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed;\r\n tableTdWidthAuto = tableTdsWidthAutoCommon / CellsWidthAutoCount;\r\n tableTdWidthAuto = tableTdWidthAuto - tdPaddingCommon - tableTdBorderCommonWidth;\r\n styleElementCreate = true;\r\n } else {\r\n table.style.width = '100%';\r\n }\r\n } else {\r\n table.style.width = 'auto';\r\n table.style.minWidth = null;\r\n table.style.maxWidth = null;\r\n }\r\n } else {\r\n table.style.maxWidth = null;\r\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\r\n table.style.width = 'auto';\r\n tableTdWidthAuto = table.dataset.wptbTdWidthAuto ? table.dataset.wptbTdWidthAuto : '100';\r\n styleElementCreate = true;\r\n }\r\n \r\n let head = document.head;\r\n if( head ) {\r\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\r\n if( cssForTdsWidthAutoOld ) {\r\n head.removeChild( cssForTdsWidthAutoOld );\r\n }\r\n }\r\n \r\n if( styleElementCreate ) {\r\n cssForTdsWidthAuto = document.createElement( 'style' );\r\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\r\n cssForTdsWidthAuto.innerHTML = '[data-wptb-css-td-auto-width=true]{width:' + tableTdWidthAuto + 'px}';\r\n if( head ) {\r\n head.appendChild( cssForTdsWidthAuto );\r\n }\r\n }\r\n \r\n if( table.dataset.wptbTableAlignment ) {\r\n let wptbTableAlignment = table.dataset.wptbTableAlignment;\r\n\r\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\r\n if( wptbTableSetupWidth < table.offsetWidth ) {\r\n table.style.float = null;\r\n } else {\r\n if( wptbTableAlignment == 'center' ) {\r\n table.style.float = null;\r\n } else {\r\n table.style.float = wptbTableAlignment;\r\n }\r\n }\r\n\r\n if( wptbTableAlignment == 'center' ) {\r\n wptbTableSetup.style.float = null;\r\n } else {\r\n wptbTableSetup.style.float = wptbTableAlignment;\r\n }\r\n \r\n if( tableTdWidthAuto && table.dataset.wptbTableContainerMaxWidth && table.offsetWidth < table.dataset.wptbTableContainerMaxWidth ) {\r\n table.style.width = '100%';\r\n }\r\n } else {\r\n table.style.float = null;\r\n }\r\n }\r\n \r\n table.addRowHeight = function( value, cleaner ) {\r\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\r\n if( highlighted.length > 0 ) {\r\n for( let k = 0; k < highlighted.length; k++ ) {\r\n let dataYIndex = highlighted[k].dataset.yIndex;\r\n if( dataYIndex ) {\r\n function tableTdsFor( dataYIndex, rowspan ) {\r\n let tableRows = table.rows;\r\n let heightIsSet = false;\r\n let arrayTdsPrevious = [];\r\n for( let i = 0; i < tableRows.length; i++ ) {\r\n let row = tableRows[i];\r\n let tds = row.children;\r\n for( let j = 0; j < tds.length; j++ ) {\r\n let td = tds[j];\r\n if( td.dataset.yIndex == dataYIndex ) {\r\n if( value ) {\r\n if( td.rowSpan == rowspan ) {\r\n td.style.height = value + 'px';\r\n td.removeAttribute( 'data-wptb-fixed-heidht' );\r\n heightIsSet = true;\r\n continue;\r\n } else {\r\n td.style.height = null;\r\n td.dataset.wptbFixedHeight = value;\r\n if( j == tds.length - 1 && ! heightIsSet ) {\r\n tableTdsFor( dataYIndex , rowspan + 1 );\r\n }\r\n }\r\n } else if( cleaner ) {\r\n td.style.height = null;\r\n td.removeAttribute( 'data-wptb-fixed-heidht' );\r\n } else {\r\n if( td.dataset.wptbFixedHeight ) {\r\n if( td.rowSpan = rowspan ) {\r\n td.style.height = td.dataset.wptbFixedHeight + 'px';\r\n td.removeAttribute( 'data-wptb-fixed-width' );\r\n }\r\n } else if( td.style.height ) {\r\n for( let z = 0; z < arrayTdsPrevious.length; z++ ) {\r\n arrayTdsPrevious[z].style.height = td.style.height;\r\n }\r\n arrayTdsPrevious = [];\r\n } else {\r\n arrayTdsPrevious.push( td );\r\n }\r\n }\r\n } \r\n }\r\n }\r\n }\r\n \r\n tableTdsFor( dataYIndex, 1 );\r\n }\r\n }\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n }\r\n }\r\n \r\n table.reconstraction = function() {\r\n let tds = table.getElementsByTagName( 'td' );\r\n table.mergingСellsHorizontally = false;\r\n table.mergingCellsVertically = false;\r\n table.dataset.reconstraction = 1;\r\n let forBreak = 0;\r\n for( let i = 0; i < tds.length; i++ ) {\r\n if( tds[i].colSpan > 1 ) {\r\n table.dataset.reconstraction = 0;\r\n table.mergingСellsHorizontally = true;\r\n forBreak++;\r\n }\r\n \r\n if( tds[i].rowSpan > 1 ) {\r\n table.dataset.reconstraction = 0;\r\n table.mergingCellsVertically = true;\r\n forBreak++;\r\n }\r\n \r\n if( forBreak == 2 ) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /*\r\n * As simple as it is: adds a column to the end of table.\r\n */\r\n table.addColumnEnd = function () {\r\n let td,\r\n currentTable = document.getElementsByClassName('wptb-preview-table'),\r\n currentTableTd,\r\n currentTdStyle;\r\n if (currentTable.length > 0) {\r\n currentTableTd = currentTable[0].querySelector('td');\r\n }\r\n\r\n if (currentTableTd) {\r\n currentTdStyle = currentTableTd.getAttribute('style');\r\n }\r\n \r\n for (var i = 0; i < table.rows.length; i++) {\r\n td = new WPTB_Cell(mark);\r\n \r\n if (currentTdStyle) {\r\n td.getDOMElement().setAttribute('style', currentTdStyle);\r\n td.getDOMElement().style.width = null;\r\n td.getDOMElement().style.height = null;\r\n }\r\n \r\n table.rows[i].appendChild(td.getDOMElement());\r\n array[i].push(0);\r\n }\r\n \r\n maxAmountOfCells++;\r\n table.recalculateIndexes();\r\n table.tdDefaultWidth();\r\n table.addRowHeight();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * As simple as it looks: adds a column to the start of table.\r\n */\r\n\r\n table.addColumnStart = function () {\r\n let td,\r\n firstCell,\r\n currentTable = document.getElementsByClassName('wptb-preview-table'),\r\n currentTableTd,\r\n currentTdStyle;\r\n if ( currentTable.length > 0 ) {\r\n currentTableTd = currentTable[0].querySelector('td');\r\n }\r\n\r\n if ( currentTableTd ) {\r\n currentTdStyle = currentTableTd.getAttribute('style');\r\n }\r\n \r\n for (var i = 0; i < table.rows.length; i++) {\r\n td = new WPTB_Cell(mark);\r\n if (currentTdStyle) {\r\n td.getDOMElement().setAttribute('style', currentTdStyle);\r\n td.getDOMElement().style.width = null;\r\n td.getDOMElement().style.height = null;\r\n }\r\n firstCell = table.rows[i].getElementsByTagName('td')[0];\r\n if (firstCell) {\r\n table.rows[i].insertBefore(td.getDOMElement(), firstCell);\r\n } else {\r\n table.rows[i].appendChild(td.getDOMElement());\r\n }\r\n array[i].push(0);\r\n }\r\n\r\n maxAmountOfCells++;\r\n table.recalculateIndexes();\r\n table.tdDefaultWidth();\r\n table.addRowHeight();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * Well, not so simple as previous functions.\r\n * It adds a column after a certain column of reference.\r\n * @param integer the column number to be used as reference.\r\n *\tIf empty, then the first highlighted cell is used as reference.\r\n */\r\n\r\n table.addColumnAfter = function (c_pos) {\r\n let rows = table.rows,\r\n cell,\r\n cellStyle,\r\n pos;\r\n\r\n if(c_pos != undefined && typeof c_pos === 'number') {\r\n pos = c_pos;\r\n cell = document.querySelector('[data-x-index=\"' + pos + '\"]');\r\n } else {\r\n cell = document.querySelector('.wptb-highlighted');\r\n pos = getCoords(cell)[1];\r\n }\r\n\r\n if(cell) {\r\n cellStyle = cell.getAttribute('style');\r\n\r\n if( maxAmountOfCells - pos - cell.colSpan + 1 == 1 ) {\r\n table.addColumnEnd();\r\n } else {\r\n for(let i = 0; i < rows.length; i++) {\r\n let tds = rows[i].children;\r\n for(let j = 0; j < tds.length; j++) {\r\n if(parseInt(tds[j].dataset.xIndex) <= pos) {\r\n if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan == pos + cell.colSpan) {\r\n let td = newTd(cellStyle);\r\n let nextSib = tds[j].nextSibling;\r\n if (nextSib) {\r\n rows[i].insertBefore(td.getDOMElement(), nextSib);\r\n } else {\r\n rows[i].appendChild(td.getDOMElement());\r\n }\r\n\r\n break;\r\n } else if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan > pos + cell.colSpan) {\r\n tds[j].colSpan++;\r\n if(tds[j].rowSpan > 1) i += tds[j].rowSpan - 1;\r\n break;\r\n }\r\n } else if(parseInt(tds[j].dataset.xIndex) > pos) {\r\n let td = newTd(cellStyle);\r\n rows[i].insertBefore(td.getDOMElement(), tds[j]);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function newTd(cellStyle) {\r\n let td = new WPTB_Cell(mark);\r\n if (cellStyle) {\r\n td.getDOMElement().setAttribute('style', cellStyle);\r\n td.getDOMElement().style.width = null;\r\n td.getDOMElement().style.height = null;\r\n }\r\n return td;\r\n }\r\n\r\n for (var i = 0; i < array.length; i++) {\r\n array[i].push(0);\r\n }\r\n maxAmountOfCells++;\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n table.addColumnWidth();\r\n table.addRowHeight();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n }\r\n };\r\n\r\n /*\r\n * For preventing us to take a lot of time,\r\n * This is just calling the function addColumnAfter, but\r\n * using the previous column to current one as reference.\r\n * @see addColumnAfter\r\n */\r\n\r\n table.addColumnBefore = function () {\r\n var cell = document.querySelector('.wptb-highlighted'),\r\n pos = getCoords(cell)[1];\r\n\r\n if (pos === 0) {\r\n table.addColumnStart();\r\n } else {\r\n table.addColumnAfter(pos - 1);\r\n }\r\n };\r\n\r\n /*\r\n * Luckily, thisfunction is simple, \r\n * it just add a row to the end of table.\r\n */\r\n\r\n table.addRowToTheEnd = function () {\r\n let r = table.insertRow(-1),\r\n td,\r\n aux,\r\n currentTable = document.getElementsByClassName('wptb-preview-table');\r\n r.classList.add( 'wptb-row' );\r\n if (currentTable.length > 0) {\r\n currentTable = currentTable[0];\r\n \r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n td = new WPTB_Cell(mark);\r\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\r\n if( currentTableTd ) {\r\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\r\n \r\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\r\n td.getDOMElement().style.height = null;\r\n }\r\n r.appendChild(td.getDOMElement());\r\n }\r\n \r\n aux = Array.from(array[0]);\r\n array.push(aux);\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n WPTB_Helper.tableRowsColorsReinstall( table );\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n };\r\n\r\n /*\r\n * Yet another simple function, \r\n * it just add a row to the start of table.\r\n */\r\n\r\n table.addRowToTheStart = function () {\r\n let r = table.insertRow(0),\r\n td,\r\n aux,\r\n currentTable = document.getElementsByClassName('wptb-preview-table'),\r\n currentTableTd,\r\n currentTdStyle;\r\n r.classList.add( 'wptb-row' );\r\n if (currentTable.length > 0) {\r\n currentTable = currentTable[0];\r\n \r\n for (var i = 0; i < maxAmountOfCells; i++) {\r\n td = new WPTB_Cell(mark);\r\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\r\n if( currentTableTd ) {\r\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\r\n \r\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\r\n td.getDOMElement().style.height = null;\r\n }\r\n r.appendChild(td.getDOMElement());\r\n }\r\n \r\n aux = Array.from(array[0]);\r\n array.push(aux);\r\n drawTable(array);\r\n table.recalculateIndexes();\r\n WPTB_Helper.tableRowsColorsReinstall( table );\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n };\r\n\r\n /* \r\n * This function adds a row before the current one.\r\n * Since the biggest factor of problem is a not-started but ongoing rowspan,\r\n * the most of the troubles is not here.\r\n */\r\n\r\n table.addRowBefore = function () {\r\n let cell = document.querySelector('.wptb-highlighted'),\r\n cellStyle = cell.getAttribute('style'),\r\n row = getCoords(cell)[0],\r\n cellNew;\r\n for( let i = row - 1; i >= 0; i-- ) {\r\n let rowChildren = table.rows[i].children;\r\n let rowChildrenLength = rowChildren.length;\r\n if( rowChildrenLength > 0 ) {\r\n for( let j = 0; j < rowChildrenLength; j++ ) {\r\n if( rowChildren[j].rowSpan == 1 ) {\r\n row = i;\r\n cellNew = true;\r\n break;\r\n }\r\n }\r\n }\r\n if ( cellNew ) {\r\n break;\r\n }\r\n }\r\n\r\n if (row === 0) {\r\n table.addRowToTheStart();\r\n } else {\r\n table.addRowAfter( row, cellStyle );\r\n }\r\n };\r\n\r\n /*\r\n * Well... by the name convention of the previous 3 functions,\r\n * it's pretty obvious that this functions attaches a new\r\n * row after highlighted cell row. The greatest obstacle it was\r\n * the possibility of a TR not having the exact amount of columns\r\n * occuped by actual node but rowspanned upper cells. For that purpose\r\n * it was created the function realTimeArray.\r\n * @see realTimeArray\r\n */\r\n\r\n table.addRowAfter = function ( row, cellStyle ) {\r\n let cellRowSpan,\r\n rowAfter,\r\n aux;\r\n \r\n if ( ( row == undefined || typeof row !== 'number' ) && cellStyle == undefined ) {\r\n let cell = document.querySelector('.wptb-highlighted');\r\n cellStyle = cell.getAttribute('style'),\r\n row = getCoords(cell)[0],\r\n cellRowSpan = cell.rowSpan,\r\n rowAfter = row + cellRowSpan - 1;\r\n } else {\r\n rowAfter = row;\r\n }\r\n \r\n \r\n let cellsColSpan = 0;\r\n if ( rowAfter < table.rows.length -1 ) {\r\n for( let i = 0; i <= rowAfter ; i++ ) {\r\n let tableRowsIChildren = table.rows[i].children,\r\n tableRIChildrenLength = tableRowsIChildren.length;\r\n if( tableRIChildrenLength > 0 ) {\r\n for( let j = 0; j < tableRIChildrenLength; j++ ) {\r\n let rowIRowSpan = tableRowsIChildren[j].rowSpan;\r\n\r\n if ( rowIRowSpan - 1 + i > rowAfter ) {\r\n tableRowsIChildren[j].rowSpan++;\r\n }\r\n }\r\n }\r\n }\r\n \r\n let rNext = table.rows[rowAfter + 1],\r\n rNextChildren = rNext.children,\r\n rNextChildrenLength = rNextChildren.length;\r\n \r\n if( rNextChildrenLength > 0 ) {\r\n for ( let i = 0; i < rNextChildrenLength; i++ ) {\r\n cellsColSpan += rNextChildren[i].colSpan;\r\n }\r\n }\r\n } else {\r\n cellsColSpan = array[0].length;\r\n }\r\n \r\n let r = table.insertRow( rowAfter + 1 );\r\n r.classList.add( 'wptb-row' );\r\n \r\n for ( j = 0; j < cellsColSpan; j++ ) {\r\n let td = new WPTB_Cell( mark );\r\n 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 WPTB_Helper.tableRowsColorsReinstall( table );\r\n table.addColumnWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after');\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * This function checks the current selected cells\r\n * make a rectangular shape.\r\n * @param Array the abstract table.\r\n * @return false, if not making a rectangle, or\r\n *\tArray an array containing number of rows and columns, if selection makes a rectangle.\r\n */\r\n\r\n table.isSquare = function (a) {\r\n var rowStart = -1,\r\n columnStart = -1,\r\n rowEnd = -1,\r\n columnEnd = -1,\r\n height,\r\n width,\r\n itemsEstimate = 0,\r\n items = 0;\r\n\r\n for (var i = 0; i < a.length; i++) {\r\n for (var j = 0; j < a[i].length; j++) {\r\n if (a[i][j] == 1) {\r\n if ( j < columnStart || columnStart == -1 ) {\r\n columnStart = j;\r\n }\r\n if ( i < rowStart || rowStart == -1 ) {\r\n rowStart = i;\r\n }\r\n }\r\n }\r\n \r\n }\r\n\r\n for (var i = a.length - 1; i > -1; i--) {\r\n for (var j = a[i].length - 1; j > -1; j--) {\r\n if (a[i][j] == 1) {\r\n if ( j > columnEnd ) {\r\n columnEnd = j;\r\n }\r\n if ( i > rowEnd ) {\r\n rowEnd = i;\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = rowStart; i < rowEnd; i++) {\r\n for (var j = columnStart; j < columnEnd; j++) {\r\n if (a[i][j] == 0 || a[i][j] == undefined) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < a.length; i++) {\r\n for (var j = 0; j < a[i].length; j++) {\r\n if (a[i][j] == 1) {\r\n items++;\r\n }\r\n }\r\n }\r\n\r\n height = rowEnd - rowStart + 1;\r\n width = columnEnd - columnStart + 1;\r\n itemsEstimate = height * width;\r\n\r\n if (itemsEstimate !== items) {\r\n return false;\r\n }\r\n return [height, width];\r\n };\r\n\r\n /*\r\n * This function merges all selected cells.\r\n * Well, actually sets the colspan and rowspan of first \r\n * upper left cell in selection and deletes the another selected cells.\r\n */\r\n\r\n table.mergeCells = function () {\r\n var dimensions = table.isSquare(array),\r\n rowspan = dimensions[0],\r\n colspan = dimensions[1],\r\n first = document.querySelector('.wptb-highlighted'),\r\n tds = [].slice.call(document.getElementsByClassName('wptb-highlighted'), 1),\r\n tdsChildrenNew = [];\r\n\r\n for (let i = 0; i < tds.length; i++) {\r\n let tdsInternalElements = tds[i].getElementsByClassName('wptb-ph-element');\r\n if (tdsInternalElements.length > 0) {\r\n let tdsIntElemLength = tdsInternalElements.length;\r\n for (let j = 0; j < tdsIntElemLength; j++) {\r\n tdsChildrenNew.push(tdsInternalElements[j]);\r\n }\r\n }\r\n let p = tds[i].parentNode;\r\n p.removeChild(tds[i]);\r\n }\r\n if (tdsChildrenNew.length > 0) {\r\n for (let i = 0; i < tdsChildrenNew.length; i++) {\r\n first.appendChild(tdsChildrenNew[i]);\r\n }\r\n }\r\n\r\n first.colSpan = colspan;\r\n first.rowSpan = rowspan;\r\n table.recalculateIndexes();\r\n table.reconstraction();\r\n let firstWidth = first.style.width;\r\n let firstDataFixedWidth = first.dataset.wptbFixedWidth;\r\n if( firstWidth ) {\r\n table.addColumnWidth( parseFloat( firstWidth, 10 ) );\r\n } else if( firstDataFixedWidth ) {\r\n table.addColumnWidth();\r\n } else {\r\n table.addColumnWidth( false, true );\r\n }\r\n \r\n let firstHeight = first.style.height;\r\n let firstDataFixedHeight = first.dataset.wptbFixedHeight;\r\n if( firstHeight ) {\r\n table.addRowHeight( parseFloat( firstHeight, 10 ) );\r\n } else if( firstDataFixedHeight ) {\r\n table.addRowHeight();\r\n } else {\r\n table.addRowHeight( false, true );\r\n }\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * This functions makes the exact inverse as above.\r\n * It resets colspan and rowspan and appends \r\n * the same amount in cells to the table.\r\n * @bug\r\n */\r\n\r\n table.splitCell = function () {\r\n var cell = document.getElementsByClassName('wptb-highlighted')[0],\r\n rowspan = cell.rowSpan,\r\n colspan = cell.colSpan,\r\n cellStyles = cell.getAttribute('style'),\r\n row = getCoords(cell)[0],\r\n thisRow = table.rows[row],\r\n cellXIndex =cell.dataset.xIndex;\r\n \r\n cell.rowSpan = 1;\r\n cell.colSpan = 1;\r\n \r\n for (let i = 1; i < colspan; i++) {\r\n let td = new WPTB_Cell(mark);\r\n td.getDOMElement().setAttribute('style', cellStyles);\r\n td.getDOMElement().classList.add( 'wptb-highlighted' );\r\n if ( cell.nextSibling ) {\r\n thisRow.insertBefore( td.getDOMElement(), cell.nextSibling );\r\n } else {\r\n thisRow.appendChild( td.getDOMElement() );\r\n }\r\n \r\n }\r\n\r\n if (rowspan > 1) {\r\n for (let i = 1; i < rowspan; i++) {\r\n let rowChildInsertBefore = undefined,\r\n rowNext = table.rows[row + i],\r\n rowChildren = rowNext.children,\r\n rowChildrenLength = rowChildren.length;\r\n \r\n if ( rowChildrenLength > 0 ) {\r\n for ( let k = 0; k < rowChildrenLength; k++ ) {\r\n if ( Number( rowChildren[k].dataset.xIndex ) > Number( cellXIndex ) ) {\r\n rowChildInsertBefore = rowChildren[k];\r\n break;\r\n } \r\n }\r\n }\r\n for ( let j = 0; j < colspan; j++ ) {\r\n let td = new WPTB_Cell( mark );\r\n td.getDOMElement().setAttribute( 'style', cellStyles );\r\n if ( rowChildInsertBefore != undefined ) {\r\n rowNext.insertBefore( td.getDOMElement(), rowChildInsertBefore );\r\n } else {\r\n rowNext.appendChild( td.getDOMElement() );\r\n }\r\n }\r\n }\r\n }\r\n\r\n table.recalculateIndexes();\r\n table.reconstraction();\r\n table.addColumnWidth();\r\n table.addRowHeight();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n /*\r\n * Searches for rowspanned cells up to row number meeting it.\r\n * @param number the number of row where the function\r\n * must search up to.\r\n */\r\n\r\n table.findRowspannedCells = function (row) {\r\n var array = [],\r\n difference;\r\n actualPoints = getActualPointsInRow(row);\r\n if (actualPoints === maxAmountOfCells) {\r\n return [];\r\n }\r\n difference = maxAmountOfCells - actualPoints;\r\n\r\n for (var i = row - 1; i >= 0 && difference; i--) {\r\n var tds = table.rows[i].getElementsByTagName('td');\r\n for (var i = 0; i < tds.length; i++) {\r\n if (tds[i].rowSpan > 1) {\r\n array.push(tds[i]);\r\n difference -= tds[i].colSpan;\r\n }\r\n }\r\n }\r\n return array;\r\n\r\n }\r\n\r\n /*\r\n * This function explores the table and adds \r\n * a cell for each lacking one for each row\r\n * to meet an even amount of cells.\r\n */\r\n\r\n table.addLackingCells = function () {\r\n var sumRows = [];\r\n for (var i = 0; i < table.rows.length; i++) {\r\n sumRows.push(0);\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n var tds = table.rows[i].getElementsByTagName('td');\r\n for (var j = 0; j < tds.length; j++) {\r\n if (tds[j].rowSpan > 1) {\r\n for (var k = 1; k < tds[j].rowSpan; k++) {\r\n sumRows[i + k]++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < table.rows.length; i++) {\r\n var tds = table.rows[i].getElementsByTagName('td'),\r\n totalColspan = 0;\r\n for (var j = 0; j < tds.length; j++) {\r\n totalColspan += tds[j].colSpan;\r\n }\r\n totalColspan += sumRows[i];\r\n difference = maxAmountOfCells - totalColspan;\r\n for (var j = 0; j < difference; j++) {\r\n var td = new WPTB_Cell(mark);\r\n table.rows[i].appendChild(td.getDOMElement());\r\n //table.rows[i].insertBefore( td.getDOMElement(), rows[i].nextSibling );\r\n }\r\n }\r\n };\r\n\r\n /*\r\n * This function deletes the row of currently\r\n * selected cell. \r\n */\r\n\r\n table.deleteRow = function () {\r\n let cell = document.querySelector('.wptb-highlighted'),\r\n cellStyles = cell.getAttribute('style'),\r\n rowspan = cell.rowSpan,\r\n row = getCoords(cell)[0],\r\n thisRow,\r\n aux;\r\n \r\n if ( rowspan == undefined ) rowspan = 1;\r\n \r\n for ( let i = 0; i < rowspan; i++ ) {\r\n thisRow = table.rows[row];\r\n let thisRowChildren = thisRow.children,\r\n nextRow = table.rows[row + 1],\r\n nextRowChildren,\r\n nextRowChildrenLength,\r\n tdArr = [];\r\n\r\n if( nextRow != undefined ) {\r\n nextRowChildren = nextRow.children;\r\n nextRowChildrenLength = nextRowChildren.length;\r\n for (let j = 0; j < thisRowChildren.length; j++) {\r\n if ( thisRowChildren[j].rowSpan > 1 ) {\r\n let td = new WPTB_Cell(mark);\r\n td.getDOMElement().setAttribute('style', cellStyles);\r\n td.getDOMElement().colSpan = thisRowChildren[j].colSpan;\r\n td.getDOMElement().rowSpan = thisRowChildren[j].rowSpan - 1;\r\n\r\n let nextRowChildrenK = undefined;\r\n for ( let k = 0; k < nextRowChildrenLength; k++ ) {\r\n if ( Number( nextRowChildren[k].dataset.xIndex ) > Number( thisRowChildren[j].dataset.xIndex ) ) {\r\n nextRowChildrenK = nextRowChildren[k];\r\n break;\r\n } \r\n }\r\n\r\n if ( nextRowChildrenK ) {\r\n tdArr.push( [td, nextRowChildrenK] );\r\n } else {\r\n tdArr.push( [td] );\r\n }\r\n }\r\n }\r\n\r\n if ( tdArr.length > 0 ) {\r\n for ( let k = 0; k < tdArr.length; k++ ) {\r\n if ( tdArr[k][1] != undefined ) {\r\n nextRow.insertBefore( tdArr[k][0].getDOMElement(), tdArr[k][1] );\r\n } else {\r\n nextRow.appendChild( tdArr[k][0].getDOMElement() );\r\n }\r\n }\r\n }\r\n }\r\n \r\n let tableRows = table.rows;\r\n if ( tableRows.length > 0 ) {\r\n for ( let j = 0; j < row; j++ ) {\r\n let jRowChildren = tableRows[j].children;\r\n if ( jRowChildren.length > 0 ) {\r\n for ( let x = 0; x < jRowChildren.length; x++ ) {\r\n if ( jRowChildren[x].rowSpan - 1 >= row - j ) {\r\n jRowChildren[x].rowSpan--;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n aux = Array.from(array[0]);\r\n array.pop(aux);\r\n drawTable(array);\r\n table.getElementsByTagName('tbody')[0].removeChild(table.rows[row]);\r\n \r\n if( table.rows.length == 0 ) {\r\n WPTB_Helper.toggleTableEditMode();\r\n wptbTableSetup.innerHTML = '';\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n \r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n }\r\n } else {\r\n table.recalculateIndexes();\r\n WPTB_Helper.tableRowsColorsReinstall( table );\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n table.reconstraction();\r\n }\r\n }\r\n \r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n }\r\n\r\n /*\r\n * This function deletes the column of currently\r\n * selected cell. Again, this is way more complicated than\r\n * delete row case.\r\n */\r\n\r\n table.deleteColumn = function () {\r\n let cell = document.querySelector('.wptb-highlighted'),\r\n cellXIndex = cell.dataset.xIndex,\r\n colspan = cell.colSpan;\r\n \r\n for ( let i = 0; i < colspan; i++ ) {\r\n for ( let j = 0; j < table.rows.length; j++ ) {\r\n let rowChildren = table.rows[j].children;\r\n let rowChildrenLength = rowChildren.length;\r\n if( rowChildrenLength > 0 ) {\r\n for ( let k = rowChildrenLength - 1; k >= 0; k-- ) {\r\n if ( Number( rowChildren[k].dataset.xIndex ) == Number( cellXIndex ) ) {\r\n if ( rowChildren[k].colSpan > 1 ) {\r\n rowChildren[k].colSpan--;\r\n } else {\r\n table.rows[j].removeChild( rowChildren[k] );\r\n }\r\n break;\r\n } else if( Number( rowChildren[k].dataset.xIndex ) < Number( cellXIndex ) && \r\n Number( rowChildren[k].dataset.xIndex ) + \r\n Number( rowChildren[k].colSpan -1 ) >= cellXIndex ) {\r\n if ( rowChildren[k].colSpan > 1 ) {\r\n rowChildren[k].colSpan--;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n \r\n for ( let j = 0; j < table.rows.length; j++ ) {\r\n if (array[j] != undefined)\r\n array[j].pop();\r\n }\r\n \r\n maxAmountOfCells--;\r\n \r\n if( table.querySelectorAll( 'td' ).length == 0 ) {\r\n WPTB_Helper.toggleTableEditMode();\r\n wptbTableSetup.innerHTML = '';\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n \r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n }\r\n } else {\r\n table.recalculateIndexes();\r\n table.tdDefaultWidth();\r\n WPTB_Helper.dataTitleColumnSet( table );\r\n table.reconstraction();\r\n }\r\n }\r\n \r\n undoSelect();\r\n\r\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\r\n\r\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\r\n wptbTableStateSaveManager.tableStateSet();\r\n };\r\n\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\r\n\r\n array = fillTableArray();\r\n\r\n undoSelect();\r\n drawTable(array);\r\n\r\n wptbTableSetup.appendChild(table);\r\n //if (columns || rows) {\r\n table.recalculateIndexes( true );\r\n //}\r\n table.reconstraction();\r\n table.tdDefaultWidth();\r\n \r\n wptbTableSetup.onresize = function() {\r\n table.tdDefaultWidth();\r\n };\r\n\r\n WPTB_LeftPanel();\r\n\r\n // event hook to signal that table is generated and ready to be used\r\n WPTB_Helper.wptbDocumentEventGenerate('wptb:table:generated', document);\r\n\r\n WPTB_Helper.elementStartScript( table, 'table_setting' );\r\n WPTB_Helper.elementOptionsSet( 'table_setting', table );\r\n \r\n // this code gets the ID of the active element in the toolbar \r\n // and stores it in the data attribute of the common container element \"wpcd_fixed_toolbar\"\r\n// let wptbPhElement = document.getElementsByClassName( 'wptb-ph-element' );\r\n// let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\r\n// for ( let i = 0; i < wptbPhElement.length; i++ ) {\r\n// wptbPhElement[i].addEventListener( 'click', function( e ) {\r\n// let wptbToolbar = document.getElementById( 'wpcd_fixed_toolbar' ).children;\r\n// for ( let j = 0; j < wptbToolbar.length; j++ ) {\r\n// let elementStyles = window.getComputedStyle( wptbToolbar[j], 'null' );\r\n// if( elementStyles.getPropertyValue( 'display' ) == 'block' ) {\r\n// wpcdFixedToolbar.dataset.toolbarActiveId = wptbToolbar[j].getAttribute( 'id' );\r\n// }\r\n// }\r\n// }, false );\r\n// }\r\n \r\n// let wptbPanelLeft = document.getElementsByClassName( 'wptb-panel-left' );\r\n// if( wptbPanelLeft.length > 0 ) {\r\n// wptbPanelLeft[0].addEventListener( 'click', function( e ) {\r\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\r\n// document.getElementById( toolbarActiveElementId ).style.display = '';\r\n// }, false );\r\n// }\r\n \r\n// let body = document.getElementsByTagName( 'body' );\r\n// if( body.length > 0 ) {\r\n// body[0].addEventListener( 'click', function( e ) {\r\n// if ( e.target.classList.contains( 'wptb-panel-left' ) || WPTB_Helper.findAncestor( e.target, 'wptb-panel-left' ) ) {\r\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\r\n// document.getElementById( toolbarActiveElementId ).style.display = '';\r\n// }\r\n// }, false );\r\n// }\r\n};","var WPTB_TableStateSaveManager = function() {\r\n this.tableStateSet = ( generate ) => {\r\n \r\n if( generate && window.wptbTableStateSaving && Array.isArray( window.wptbTableStateSaving ) ) {\r\n return;\r\n }\r\n \r\n // get table setup\r\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' );\r\n let wptbPreviewTable = '';\r\n if( wptbTableSetup.length > 0 ) {\r\n wptbTableSetup = wptbTableSetup[0];\r\n\r\n wptbPreviewTable = wptbTableSetup.querySelector( '.wptb-preview-table' );\r\n } else {\r\n wptbTableSetup = '';\r\n }\r\n\r\n\r\n \r\n // check if a global array doesn't exist with saved versions of the table \r\n // them create it\r\n if( ! window.wptbTableStateSaving && ! Array.isArray( window.wptbTableStateSaving ) ) {\r\n window.wptbTableStateSaving = [];\r\n } \r\n\r\n // remove the extra part of the array after changing the table \r\n // when it is showed in the not last modified version\r\n if( window.wptbTableStateSaving.length > window.wptbTableStateNumberShow ) {\r\n window.wptbTableStateSaving = window.wptbTableStateSaving.slice( 0, window.wptbTableStateNumberShow + 1 );\r\n }\r\n\r\n //add new state of table\r\n let wptbNewTableSetup = '';\r\n if( wptbTableSetup ) {\r\n wptbNewTableSetup = wptbTableSetup.cloneNode( true );\r\n let wptbHighlighted = wptbNewTableSetup.getElementsByClassName( 'wptb-highlighted' );\r\n for( let i = 0; i < wptbHighlighted.length; i++ ) {\r\n wptbHighlighted[i].classList.remove( 'wptb-highlighted' );\r\n }\r\n let wptbDirectlyhovered = wptbNewTableSetup.getElementsByClassName( 'wptb-directlyhovered' );\r\n for( let i = 0; i < wptbDirectlyhovered.length; i++ ) {\r\n wptbDirectlyhovered[i].classList.remove( 'wptb-directlyhovered' );\r\n }\r\n let mceContentBodys = wptbNewTableSetup.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 let dataMceStyle = wptbNewTableSetup.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 let mceIds = wptbNewTableSetup.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\r\n let cssForTdsWidthAutoValue = '';\r\n let head = document.head;\r\n if( head ) {\r\n let cssForTdsWidthAuto = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\r\n if( cssForTdsWidthAuto ) {\r\n cssForTdsWidthAutoValue = cssForTdsWidthAuto.innerHTML;\r\n }\r\n }\r\n\r\n let wptbTableTitle = '';\r\n let wptbSetupName = document.getElementById( 'wptb-setup-name' );\r\n if( wptbSetupName ) wptbTableTitle = wptbSetupName.value;\r\n\r\n window.wptbTableStateSaving.push( [wptbNewTableSetup, cssForTdsWidthAutoValue, wptbTableTitle] );\r\n\r\n // set new number of state which is showed now\r\n window.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;\r\n\r\n // make undo arrow active when the table was changed\r\n if( window.wptbTableStateSaving.length - 1 > 0 ) {\r\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\r\n if( wptbUndo.length > 0 ) {\r\n wptbUndo = wptbUndo[0];\r\n\r\n wptbUndo.classList.remove( 'wptb-undoredo-disabled' );\r\n }\r\n }\r\n\r\n // make redo arrow not active when the table was changed\r\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\r\n if( wptbRedo.length > 0 ) {\r\n wptbRedo = wptbRedo[0];\r\n\r\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\r\n }\r\n\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n if( ( ! wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \r\n window.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave || ! wptbPreviewTable ) {\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n } else {\r\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.add('active');\r\n }\r\n }\r\n }\r\n \r\n this.tableStateGet = ( datawptbUndoredo ) => {\r\n if( datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length > 0 ) {\r\n \r\n // changes the number of the state which displays now\r\n if( datawptbUndoredo == 'undo' ) {\r\n if( window.wptbTableStateNumberShow > 0 ) {\r\n window.wptbTableStateNumberShow--;\r\n } else {\r\n return false;\r\n }\r\n } else if( datawptbUndoredo == 'redo' ) {\r\n if( window.wptbTableStateNumberShow < window.wptbTableStateSaving.length ) {\r\n window.wptbTableStateNumberShow++;\r\n } else {\r\n return false;\r\n }\r\n }\r\n \r\n // add or delete class \"wptb-undoredo-disabled\" for undo button\r\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\r\n if( wptbUndo.length > 0 ) {\r\n wptbUndo = wptbUndo[0];\r\n \r\n if( window.wptbTableStateNumberShow == 0 ) {\r\n if( wptbUndo ) {\r\n wptbUndo.classList.add( 'wptb-undoredo-disabled' );\r\n }\r\n } else if( window.wptbTableStateNumberShow > 0 ) {\r\n if( wptbUndo ) {\r\n wptbUndo.classList.remove( 'wptb-undoredo-disabled' );\r\n }\r\n }\r\n }\r\n \r\n // add or delete class \"wptb-undoredo-disabled\" for redo button\r\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\r\n if( wptbRedo.length > 0 ) {\r\n wptbRedo = wptbRedo[0];\r\n \r\n if( window.wptbTableStateNumberShow == window.wptbTableStateSaving.length - 1 ) {\r\n if( wptbRedo ) {\r\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\r\n }\r\n } else if( window.wptbTableStateNumberShow < window.wptbTableStateSaving.length - 1 ) {\r\n if( wptbRedo ) {\r\n wptbRedo.classList.remove( 'wptb-undoredo-disabled' );\r\n }\r\n }\r\n }\r\n \r\n // add or delete class \"wptb-save-disabled\" for save button\r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n if( ( ! wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \r\n window.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave ) {\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n } else {\r\n wptbSaveBtn.classList.add('active');\r\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\r\n }\r\n }\r\n \r\n // load necessary saved table state\r\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' );\r\n if( wptbTableSetup.length > 0 ) {\r\n wptbTableSetup = wptbTableSetup[0];\r\n\r\n //wptbTableSetup.outerHTML = '';\r\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow] ) {\r\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] && \r\n typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] === 'object' ) {\r\n if( 'outerHTML' in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] ) {\r\n wptbTableSetup.outerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;\r\n }\r\n }\r\n\r\n let wptbTableSetupNew = document.querySelector( '.wptb-table-setup' );\r\n if( wptbTableSetupNew && wptbTableSetupNew.children.length == 0 ) {\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\r\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\r\n wptbSaveBtn.classList.remove('active');\r\n } else {\r\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\r\n }\r\n\r\n // add or change or delete style element in the head for table cells who have auto width\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 if( window.wptbTableStateSaving[window.wptbTableStateNumberShow][1] ) {\r\n let cssForTdsWidthAuto = document.createElement( 'style' );\r\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\r\n cssForTdsWidthAuto.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][1];\r\n head.appendChild( cssForTdsWidthAuto );\r\n }\r\n }\r\n\r\n // change value of table title field\r\n let wptbSetupName = document.getElementById( 'wptb-setup-name' );\r\n if( typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][2] != 'undefined' ) {\r\n if( wptbSetupName ) wptbSetupName.value = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];\r\n }\r\n }\r\n \r\n let body = document.getElementsByTagName( 'body' );\r\n if( body.length > 0 ) {\r\n body = body[0];\r\n }\r\n\r\n WPTB_Helper.elementOptionsPanelClear();\r\n WPTB_LeftPanel();\r\n\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 \r\n this.tableStateClear = function() {\r\n delete window.wptbTableStateSaving;\r\n delete window.wptbTableStateNumberShow;\r\n \r\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\r\n if( wptbSaveBtn.length > 0 ) {\r\n wptbSaveBtn = wptbSaveBtn[0];\r\n \r\n wptbSaveBtn.removeAttribute( 'data-wptb-table-state-number-save' );\r\n }\r\n \r\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\r\n if( wptbUndo.length > 0 ) {\r\n wptbUndo = wptbUndo[0];\r\n \r\n wptbUndo.classList.add( 'wptb-undoredo-disabled' );\r\n }\r\n \r\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\r\n if( wptbRedo.length > 0 ) {\r\n wptbRedo = wptbRedo[0];\r\n\r\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\r\n }\r\n }\r\n}"]}
1
+ {"version":3,"sources":["WPTB_ActionsField.js","WPTB_Builder.js","WPTB_Cell.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementObject.js","WPTB_ElementOptions.js","WPTB_Helper.js","WPTB_Initializer.js","WPTB_LeftPanel.js","WPTB_MultipleSelect.js","WPTB_Parser.js","WPTB_Polyfills.js","WPTB_Responsive.js","WPTB_Settings.js","WPTB_Stringifier.js","WPTB_Table.js","WPTB_TableSettingsData.js","WPTB_TableStateSaveManager.js","WPTB_innerElementSet.js","applyGenericItemSettings.js"],"names":["WPTB_ActionsField","wptbActions","document","getElementsByClassName","length","addActionField","actionType","thisNode","body","getElementsByTagName","actions","previousNode","activeElem","classList","remove","parentNode","removeChild","btnDelete","btnCopy","createElement","add","appendChild","type","onclick","event","act","target","el","infArr","className","match","hasOwnProperty","kind","thisRow","WPTB_Helper","rowIsTop","table","findAncestor","contains","dataTitleColumnSet","wptbActionsField","actionsRemove","wptbTableStateSaveManager","WPTB_TableStateSaveManager","tableStateSet","wptbDocumentEventGenerate","copy","activeElement","activeElemParent","Array","isArray","data","elemProt","tinyMceClear","WPTB_ElementObject","insertBefore","getDOMElement","nextSibling","elementCopy","cloneNode","applyGenericItemSettings","WPTB_innerElementSet","setParameters","btnMove","draggable","ondragstart","wptbElementIconsDirectories","tmplIconsDirectories","wp","template","jsonIconsDirectories","IconsDirectories","JSON","parse","dragImages","getElementIcon","dataTransfer","effectAllowed","setDragImage","setData","style","display","actionsHide","ondragend","elementDragEndClear","coordinatesElement","getBoundingClientRect","wptbContainer","correctTop","top","parseFloat","removeEventListener","left","right","clientWidth","addEventListener","leaveFromField","node","relatedTarget","onmouseleave","opacity","WPTB_Builder","table_id","detectMode","http","XMLHttpRequest","urlSet","ajaxurl","open","setRequestHeader","onreadystatechange","d","readyState","status","ans","responseText","getElementById","value","wptbTableSetupEl","WPTB_Parser","WPTB_Table","element","querySelector","dataset","wptbTableContainerMaxWidth","maxWidth","tdDefaultWidth","WPTB_Settings","send","counter","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","url","window","location","href","regex","RegExp","results","exec","WPTB_Cell","callback","DOMElement","highlightRow","td","parentRow","columnCount","parseInt","tds","i","classToAdd","ttd","highlightColumn","index","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","ondblclick","stopPropagation","currentTarget","newElementProxy","elementStartScript","wptbPhElement","wptbElementTypeClass","wptbTypeElementArr","split","wptbInternalActiveElement","j","wptbInternalActiveElementObj","setCoords","y","x","yIndex","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","width","offsetWidth","height","offsetHeight","borderCollapse","tableFullStyleObj","tableBorderLeft","tableBorderRight","tableBorderTop","tableBorderBottom","nodeName","toLowerCase","firstChild","lastChild","WPTB_DropHandle","thisElem","e","hide","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","toPx","getDragRelativeType","cellRelatedDropHandle","range","createRange","setStart","shadowRoot","createContextualFragment","children","parentTd","getParentOfType","ondragenter","preventDefault","ondragover","ondragleave","ondrop","getData","wptbMovingMode","text","getDOMParentElement","innerElement","innerElementNext","undefined","onscroll","localName","indics","types","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","increment","key","nextIndex","kindIndexProt","wpTemplateId","itemHtml","replace","trim","innerHTML","wptbElementMutch","elementClearFromTinyMce","inElems","querySelectorAll","inElemObj","WPTB_ElementOptions","elementOptionsSet","capture","hexToRgb","hex","result","rgbToHex","rgb","isHex","rgbm","Math","round","toString","toUpperCase","slice","test","icon_directory","hostName","protocol","hostname","img","src","wptbDropHandles","wptbDropBorderMarkers","linkHttpCheckChange","link","convertToAbs","currentLocation","origin","linkArr","linkClean","cls","parentElement","row","parent","getSelectionText","txt","getSelection","selection","elementOptionsPanelClear","elementOptionsGroup","wpColorPickerCheckChangeForTableStateSaving","originalEvent","wpPickerContainer","irisStripMouseUpStateSaveManager","wpColorPickerClear","attribute","isId","input","newInput","setAttribute","decodeURIComponent","getColumnWidth","cell","xIndexes","cellWidth","getRowHeight","yIndexes","cellHeight","wpColorPickerChange","ui","uiColor","color","classe","ps","number","affectedEl","backgroundColor","ratingStar","span","fill","wptbTextMessageSize","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","ucfirst","str","charAt","eventName","details","CustomEvent","detail","bubbles","dispatchEvent","WPTB_ElementsScriptsLauncher","deleteEventHandlers","off","elementChildren","replaceAll","string","search","join","mceContentBodys","k","dataMceStyle","removeAttribute","mceEditFocus","contentEditable","spellCheck","mceIds","elementOptionContainerCustomClassSet","targetInput","customClassForContainer","containerElement","elementOptionContainerAdditionalStyles","containerAdditionalStyles","containerStylesArrOne","containerStylesSet","containerStyleStr","containerStyleStrArr","controlsInclude","functionHandler","acceptEventValues","controlConnectFunctionsName","name","elementKind","elementOptionsGroupIds","optionsGroupIds","elementOptionsGroupId","controlActiveElements","map","regularText","controlInfArr","controlActiveElement","controlUnicClassName","controls","controlName","control","targetControlValue","targetControlValueGet","targetValue","eventValue","push","oneControlInclude","wptbContrlStacksConfigId","tmplControlsConfig","container","jsonControlsConfigJson","jsonControlsConfig","controlClassName","innerElementCopyIncludeHandler","valueDependOnControl","dependOnControlName","targetControlElementClass","valueDependOnControlCorrect","dependOnControlDataGet","dependOnControlElementsArr","dependOnControlElements","valueDependOnControlCorrectObj","s","dependOnControlElementClass","dependOnControlData","Object","keys","forEach","unicClass","appearDependOnControl","dependOnMain","dependOnControlElementChangeHandler","controlContainerElem","dependOnControlElementsValue","dependOn","dependOnControlElementValue","showHideTargetControlElement","prototype","call","targetControlElement","dependOnControlElement","bind","controlsStateManager","targetControlClass","controlChangeIndic","targetControls","selectorElement","elementsSettingsTemplatesJs","elementSettings","elementsSettings","stringify","checked","alignmentValue","elementControlsStateCopy","elementProt","copyElem","infArrProt","infArrCopy","elemProtKind","elemCopyKind","elementsSettingsTemplateJs","elementSettingsProt","elementSettingsCopy","elementSettingValue","elementSettingKeyCopy","elementControlsStateDelete","nameControl","wptbElementDatas","elementContainerClass","elementOptionClassIndic","controlElementParent","elementOptionsScriptsContainer","cellEditActiveClass","activateSection","wptbelementOptionClass","childNodes","controlsConfigJson","controlsConfig","elementOptionsGroupIdsInvolved","elementOptionsGroupInvolved","elementOptionsContainerInvolved","controlScriptsObj","controlappearDependOnControl","controlValueDependOnControl","elementOptionsScriptsContainerIndic","controlsConfigNew","controlKey","tmplControlTemplate","elemContainer","elementControlTargetUnicClass","controlParamCalculateValue","controlTemplate","elementOptionsContainerInvolvedGet","elementOptionsContainer","elementOptionsGroupChildren","elementOptionsContainerOn","elementOptionContainerOn","elementOptionContainer","elementOptionClass","controlContainerElemParent","helperJavascriptElem","helperJavascriptCode","innerText","script","controlScriptsArr","id","unicClassP","controlParamCalculateValueCreateFunction","handlerFunction","managerExternalCssStyles","elementContainer","selector","cssName","cssValue","head","cssForThisElement","cssText","cssTextArrFirst","pop","selectorExists","cssTextArrSecond","cssTextArrThird","cssNameExists","cssTextArrFourth","splice","registerSections","sections","currentSection","sectionElement","sectionDataId","displayType","triggerSectionEvent","visibility","getCurrentSection","getSectionFromUrl","parsedUrl","URL","urlSection","searchParams","get","some","setupSectionButtons","sectionButtons","from","vm","sectionName","wptbSectionButton","wptbSectionDisplayType","setupPanelToggleButtons","$","each","find","click","slideToggle","toggleClass","sectionEvent","setupSidebarToggle","toggleSelector","toggleButton","toggle","externalCssStylesDelete","externalCssStylesCopy","copyElement","activeElemClass","cssForActiveElement","cssForNewElement","infArrCopyEl","cssForActiveElementInnerHTML","cssForNewElementInnerHTML","elementsStylesConvertToObject","stylesElements","stylesObj","styleElemId","getAttribute","elementsStylesSetFromObject","jsonObject","styleCss","saveTable","startSaving","previewSaving","wptbTableStateNumberSave","wptbTableStateNumberShow","bar","toggleTableEditMode","wptb_admin_object","t","messagingArea","code","datas","postId","rs","wptbId","paramIdsNecessaryChange","codeClone","wptbTableSetup","columns","WPTB_Stringifier","outerHTML","datas_containers","styleObjJson","messagingAreaText","setTimeout","params","title","content","elements_datas","elements_styles","security_code","preview_saving","action","builderPageUrl","history","pushState","wptbPreviewTable","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","clickOnFreeSpace","cellModeBackground","wpcdFixedToolbar","hasAttribute","elementAjax","dataAjaxData","element_name","element_ajax_data","close","leftScrollPanelCurtain","leftScrollPanelCellSettings","toggleEditMode","deactivateMultipleSelectMode","wptbPreviewTableTds","activateMultipleSelectMode","checkingDimensionValue","dimension","searchIndex","checkSetGetStyleSizeValue","styleName","computedStyleName","elemStyleValue","elementStyles","checkSetGetStyleColorValue","set","elemStyleColorValue","checkSetGetStyleValue","getValueMaxCountSameElementsInArray","arr","check","countEmpty","maxPropName","recalculateIndexes","trs","maxCols","maxColsFull","tdsArr","jMainIter","colSpan","rowSpan","z","tableRowsColorsReinstall","tableIndex","tableHeaderBackground","tableEvenRowBackground","tableOddRowBackground","parentType","dragRelativeType","setDragRelativeType","getElementColorStylesHex","showControlsOnElementMount","showElementsListOnRemove","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","rows","WptbResponsive","WPTB_LeftPanel","wptbElementButtons","wptbElement","wptbTablesEditModeCloseButton","wptbBuilderPanel","wptbHeader","selectedCells","multipleCellMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","first","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","div","columnTitleMobile","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","obj","TypeError","prop","responsiveWrapperId","mainContainerQuery","responsiveTable","loaded","addContainerToDom","responsiveContainer","mainContainer","Error","responsiveElement","load","WPTB_ControlsManager","callControlScript","startUp","tablePreview","elems","wptbRelativeElements","wptbUndo","tableStateGet","wptbUndoredo","wptbUndoRedoContainer","wptbRedo","shortcodePopupWindow","onbeforeunload","wptbSaveDisabled","previewId","floor","random","newHref","tableTitleField","onchange","codeMain","tableColumns","minWidth","innerElements","wptbActionsLength","dataMceBogus","array","wptb_preview_table","maxAmountOfCells","maxAmountOfRows","mark","cs","noCells","singleCells","multipleCells","cellSettings","position","column","cellHighlighted","markedCells","controlElemIds","elementControlSizeUnicClass","elementControlSizeFixedUnicClass","sizeName","getSizeFunctionName","size","cellSizeInputs","cellSizeFixedInput","isSquare","settingId","settingElem","countMarkedCells","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","a","undoSelect","fillTableArray","colspansSums","cells","colspanSumInRow","max","apply","getActualPointsInRow","points","skipInCols","reconstraction","insertRow","borderWidth","setMaxAmountOfCells","getMaxAmountOfCells","addColumnWidth","cleaner","highlighted","dataXIndex","tableTdsFor","colspan","tableRows","widthIsSet","arrayTdsFromPreviousRow","wptbFixedWidth","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTdWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","cssForTdsWidthAutoOld","wptbTableAlignment","float","addRowHeight","dataYIndex","rowspan","heightIsSet","arrayTdsPrevious","wptbFixedHeight","mergingCellsVertically","forBreak","addColumnEnd","currentTable","currentTableTd","currentTdStyle","borderColor","WPTB_TableSettingsData","getTableSetting","addColumnStart","firstCell","addColumnAfter","c_pos","cellStyle","pos","newTd","nextSib","addColumnBefore","addRowToTheEnd","r","aux","addRowToTheStart","addRowBefore","cellNew","rowChildren","rowChildrenLength","addRowAfter","cellRowSpan","rowAfter","cellsColSpan","tableRowsIChildren","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","mergeCells","dimensions","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","p","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","splitCell","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","Number","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","deleteRow","thisRowChildren","nextRow","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","deleteColumn","onresize","setTableSetting","generate","wptbTableStateSaving","wptbNewTableSetup","wptbHighlighted","wptbDirectlyhovered","cssForTdsWidthAutoValue","wptbTableTitle","wptbSetupName","datawptbUndoredo","wptbTableSetupNew","wptbLeftScrollPanelCellSetting","tableStateClear","classId","parentCell","elemKind","onmouseover","wptbElements","elementIndexesArr","elementIndexMax","wptbNodeattributes","attributes","attr","newDataAttributeName","newDataAttributeValue","nodeValue","kindIndexProtArr","node_wptb_element_kind_num","onmouseenter"],"mappings":"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","file":"admin.js","sourcesContent":["var WPTB_ActionsField = function() {\n //this.wptbBorderMarker;\n this.wptbActions;\n if( document.getElementsByClassName( 'wptb-actions' ).length != 0 ) {\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\n }\n \n this.addActionField = ( actionType, thisNode ) => {\n let body = document.getElementsByTagName( 'body' )[0];\n \n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length != 0 ) {\n let previousNode = actions[0].activeElem;\n if( previousNode ) {\n previousNode.classList.remove( 'wptb-directlyhovered' );\n }\n \n while( actions.length != 0 ) {\n actions[0].parentNode.removeChild( actions[0] );\n }\n }\n \n if( actionType == 1 ) {\n \n let btnDelete, btnCopy;\n\n btnDelete = document.createElement( 'span' ),\n btnCopy = document.createElement( 'span' ),\n actions = document.createElement( 'div' );\n\n actions.classList.add( 'wptb-actions' );\n btnDelete.classList.add( 'dashicons', 'dashicons-trash', 'wptb-delete-action' );\n btnCopy.classList.add( 'dashicons', 'dashicons-admin-page', 'wptb-duplicate-action' );\n \n actions.appendChild( btnCopy );\n actions.appendChild( btnDelete );\n \n body.appendChild( actions );\n\n actions.activeElem = thisNode;\n\n actions.type = 1;\n\n btnDelete.onclick = function( event ) {\n let act = event.target.parentNode.activeElem,\n el = act.parentNode;\n let infArr = act.className.match( /wptb-element-(.+)-(\\d+)/i );\n// if( act && infArr && Array.isArray( infArr ) ) {\n// WPTB_Helper.elementControlsStateDelete( act );\n// WPTB_Helper.externalCssStylesDelete( infArr[0] );\n// }\n \n if( act ) {\n el.removeChild( act );\n }\n\n if( act && typeof act === 'object' && act.hasOwnProperty( 'kind' ) && act.kind == 'text' ) {\n let thisRow = el.parentNode;\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n }\n\n let wptbActionsField = new WPTB_ActionsField();\n wptbActionsField.actionsRemove();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n\n WPTB_Helper.wptbDocumentEventGenerate('element:removed:dom', document, act);\n };\n\n btnCopy.onclick = ( event ) => {\n let copy,\n infArr,\n type;\n let activeElement = event.target.parentNode.activeElem;\n let activeElemParent = activeElement.parentNode;\n infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n type = infArr[1];\n let data = {};\n data.kind = type;\n data.elemProt = activeElement;\n data.tinyMceClear = true;\n copy = new WPTB_ElementObject( data );\n //WPTB_Helper.elementControlsStateCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.externalCssStylesCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.elementStartScript( copy.getDOMElement() );\n \n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n } else {\n copy = {};\n let elementCopy = activeElement.cloneNode( true );\n elementCopy.classList.remove( 'wptb-directlyhovered' );\n \n copy.getDOMElement = function() {\n return elementCopy;\n }\n \n applyGenericItemSettings( copy );\n \n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n \n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-inner-element:copy', activeElement, copy.getDOMElement() );\n }\n \n WPTB_innerElementSet( copy.getDOMElement() );\n\n let wptbActionsField = new WPTB_ActionsField( 1, activeElement );\n wptbActionsField.setParameters( activeElement );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n \n if( thisNode.classList.contains( 'wptb-ph-element' ) ) {\n let btnMove;\n btnMove = document.createElement( 'span' );\n btnMove.classList.add( \"dashicons\", \"dashicons-move\", 'wptb-move-action' );\n btnMove.draggable = true;\n actions.appendChild( btnMove );\n \n btnMove.ondragstart = ( event ) => {\n let wptbElementIconsDirectories = 'wptb-element-icons-directories';\n let tmplIconsDirectories = wp.template( wptbElementIconsDirectories );\n let data = {};\n let jsonIconsDirectories = tmplIconsDirectories( data );\n let IconsDirectories = JSON.parse( jsonIconsDirectories );\n\n let dragImages,\n actions = event.target.parentNode,\n activeElem = actions.activeElem,\n infArr,\n type;\n infArr = activeElem.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n type = infArr[1];\n activeElem.classList.add( 'wptb-moving-mode' );\n\n if( IconsDirectories && typeof IconsDirectories === 'object' && IconsDirectories[type] ) {\n dragImages = WPTB_Helper.getElementIcon( IconsDirectories[type] );\n }\n\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setDragImage( dragImages, 0, 0 );\n event.dataTransfer.setData( 'node', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\n event.dataTransfer.setData( 'wptb-moving-mode', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\n event.dataTransfer.setData( 'wptbElIndic-' + infArr[1], 'wptbElIndic-' + infArr[1] );\n let act = event.target.parentNode.activeElem;\n if( act.kind == 'text' ) {\n let thisRow = act.parentNode.parentNode;\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n }\n } else {\n this.style.display = 'none';\n }\n\n this.actionsHide();\n };\n\n btnMove.ondragend = ( event ) => {\n WPTB_Helper.elementDragEndClear();\n }\n }\n\n actions.style.display = 'flex';\n\n this.wptbActions = actions;\n } \n }\n \n this.setParameters = ( thisNode ) => {\n \n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n } else {\n this.wptbActions = false;\n }\n }\n \n if( this.wptbActions && this.wptbActions.classList.contains( 'wptb-actions' ) ) {\n this.wptbActions.style.display = 'flex';\n } else {\n return;\n }\n \n let coordinatesElement = thisNode.getBoundingClientRect();\n \n let wptbContainer = document.getElementsByClassName( 'wptb-container' )[0];\n let correctTop = () => {\n let coordinatesElement = thisNode.getBoundingClientRect();\n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\n }\n wptbContainer.removeEventListener( 'scroll', correctTop, false );\n \n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\n this.wptbActions.style.left = ( parseFloat( coordinatesElement.right ) - parseFloat( this.wptbActions.clientWidth ) ) + 1 + 'px';\n \n this.wptbActions.style.display = 'flex';\n thisNode.classList.add( 'wptb-directlyhovered' );\n \n wptbContainer.addEventListener( 'scroll', correctTop, false );\n }\n \n this.leaveFromField = ( event, node, actionType ) => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n } else {\n this.wptbActions = false;\n }\n }\n \n if( ! this.wptbActions ) {\n return;\n }\n \n if( event.relatedTarget ) {\n if ( event.relatedTarget.classList.contains( 'wptb-actions' ) ||\n event.relatedTarget.classList.contains( 'wptb-move-action' ) ||\n event.relatedTarget.classList.contains( 'wptb-duplicate-action' ) ||\n event.relatedTarget.classList.contains( 'wptb-delete-action' ) ) {\n if( ! this.wptbActions ) {\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\n }\n this.wptbActions.onmouseleave = ( event ) => {\n if( event.relatedTarget != null && ( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || \n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element') ) && event.relatedTarget != this.wptbActions.activeElem &&\n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-directlyhovered' ) != this.wptbActions.activeElem ) {\n \n// this.wptbActions.style.display = 'none';\n// event.relatedTarget.parentNode.parentNode.classList.remove( 'wptb-directlyhovered' );\n//\n// let wptbActionsField = new WPTB_ActionsField();\n//\n// wptbActionsField.addActionField( 1, event.relatedTarget.parentNode.parentNode );\n//\n// wptbActionsField.setParameters( event.relatedTarget.parentNode.parentNode );\n } else {\n \n }\n \n let wptbActionsField = new WPTB_ActionsField();\n\n wptbActionsField.leaveFromField( event, event.relatedTarget.parentNode.parentNode );\n \n event.target.activeElem.classList.remove( 'wptb-directlyhovered' );\n }\n\n return;\n } \n }\n \n node.classList.remove( 'wptb-directlyhovered' );\n this.wptbActions.style.display = 'none';\n \n if( event.relatedTarget ) {\n if( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element' ) ) {\n this.addActionField( 1, event.relatedTarget.parentNode );\n\n this.setParameters( event.relatedTarget.parentNode );\n }\n }\n }\n \n this.actionsRemove = () => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n }\n }\n \n if( this.wptbActions ) {\n this.wptbActions.parentNode.removeChild( this.wptbActions );\n }\n }\n \n this.actionsHide = () => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n }\n }\n \n if( this.wptbActions ) {\n this.wptbActions.style.opacity = 0;\n }\n }\n}","(function () {\n var WPTB_Builder = function () {\n var table_id = WPTB_Helper.detectMode();\n if ( table_id ) {\n var http = new XMLHttpRequest(),\n urlSet = ajaxurl + \"?action=get_table\" + '&id=' + table_id;\n http.open('GET', urlSet, true);\n http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n http.onreadystatechange = function (d) {\n if (this.readyState == 4 && this.status == 200) {\n var ans = JSON.parse( http.responseText );\n document.getElementById('wptb-setup-name').value = ans[0];\n \n if( ans[1] ) {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n let wptbTableSetupEl = document.getElementsByClassName('wptb-table-setup')[0];\n wptbTableSetupEl.appendChild( WPTB_Parser( ans[1] ) );\n \n let body = document.getElementsByTagName('body')[0];\n \n WPTB_Table();\n let element = document.querySelector( '.wptb-preview-table' );\n if( element ) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n if( ! infArr ) {\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\n }\n \n if( element.dataset.wptbTableContainerMaxWidth ) {\n wptbTableSetupEl.style.maxWidth = element.dataset.wptbTableContainerMaxWidth + 'px';\n \n element.tdDefaultWidth();\n }\n }\n \n //WPTB_LeftPanel();\n WPTB_Settings();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n }\n \n return;\n }\n };\n http.send(null);\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n document.counter = new ElementCounters();\n document.select = new MultipleSelect();\n\n var initializer = WPTB_Initializer();\n settings = WPTB_Settings();\n };\n\n let url = window.location.href,\n regex = new RegExp('[?&]page=wptb-builder'),\n results = regex.exec( url );\n if ( results ) {\n document.addEventListener('DOMContentLoaded', WPTB_Builder);\n }\n})();","var WPTB_Cell = function ( callback, DOMElement ) {\n\n function highlightRow(td) {\n var parentRow = td.parentNode,\n columnCount = parseInt(document.getElementById('wptb-columns-number').value),\n tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\n for (var i = 0; i < tds.length; i++) {\n tds[i].classList.remove('wptb-highlighted-row-first', 'wptb-highlighted-row-last', 'wptb-highlighted-row-inner', 'wptb-highlighted-column-first', 'wptb-highlighted-column-last', 'wptb-highlighted-column-inner');\n }\n for (var i = 0; i < columnCount; i++) {\n\n var classToAdd = i == 0 ? 'wptb-highlighted-row-first' : i == columnCount - 1 ? 'wptb-highlighted-row-last' : 'wptb-highlighted-row-inner';\n var ttd = parentRow.getElementsByTagName('td')[i];\n if (ttd !== td) {\n ttd.classList.add(classToAdd);\n }\n }\n }\n\n function highlightColumn(td) {\n\n var index,\n parentRow = td.parentNode;\n columnCount = parseInt(document.getElementById('wptb-columns-number').value), rowCount = parseInt(document.getElementById('wptb-rows-number').value), table = document.getElementsByClassName('wptb-preview-table')[0];\n for (var i = 0; i < columnCount; i++) {\n if (parentRow.getElementsByTagName('td')[i] === td) {\n index = i;\n break;\n }\n }\n\n for (var i = 0; i < rowCount; i++) {\n var classToAdd = i == 0 ? 'wptb-highlighted-column-first' : i == rowCount - 1 ? 'wptb-highlighted-column-last' : 'wptb-highlighted-column-inner';\n var tr = table.getElementsByTagName('tr')[i];\n if (tr.getElementsByTagName('td')[index] !== td) {\n tr.getElementsByTagName('td')[index].classList.add(classToAdd);\n }\n }\n }\n \n if( ! DOMElement ) {\n DOMElement = document.createElement(\"td\");\n\n DOMElement.style.padding = jQuery('#wptb-table-padding-number').val() + 'px';\n\n var innerBorderWidth = jQuery('#wptb-table-inner-border-number').val();\n\n if (innerBorderWidth != '' && parseInt(innerBorderWidth) != 0) {\n DOMElement.style.border = innerBorderWidth + 'px solid ' + jQuery('#wptb-table-border-color').val();\n } \n\n DOMElement.classList.add('wptb-droppable', 'wptb-cell');\n }\n\n DOMElement.draggable = false;\n if ( callback ) {\n DOMElement.onclick = callback;\n }\n \n // Cell double click handler\n DOMElement.ondblclick = function( event ) {\n event.stopPropagation();\n if( ! WPTB_Helper.findAncestor( DOMElement, 'wptb-preview-table-manage-cells' ) && event.target == event.currentTarget ) {\n \n WPTB_Helper.wptbDocumentEventGenerate( 'table:cell:dblclick', event.target );\n \n let element = WPTB_Helper.newElementProxy( 'text' );\n element = element.getDOMElement();\n \n DOMElement.appendChild( element );\n \n WPTB_innerElementSet( element );\n }\n }\n \n WPTB_innerElementSet( DOMElement );\n\n WPTB_Helper.elementStartScript( DOMElement, 'table_cell_setting' );\n\n let wptbPhElement = DOMElement.getElementsByClassName( 'wptb-ph-element' );\n \n if ( wptbPhElement.length > 0 ) {\n for( let i = 0; i < wptbPhElement.length; i++ ) {\n wptbPhElement[i].getDOMElement = function() {\n return wptbPhElement[i];\n }\n \n WPTB_innerElementSet( wptbPhElement[i] );\n \n let wptbElementTypeClass = wptbPhElement[i].className.match( /wptb-element-((.+-)\\d+)/i );\n if( wptbElementTypeClass && Array.isArray( wptbElementTypeClass ) ) {\n let wptbTypeElementArr = wptbElementTypeClass[1].split( '-' );\n wptbPhElement[i].kind = wptbTypeElementArr[0];\n applyGenericItemSettings( wptbPhElement[i], wptbElementTypeClass[1] );\n let wptbInternalActiveElement = wptbPhElement[i].getElementsByClassName( 'wptb-in-element' );\n if ( wptbInternalActiveElement.length > 0 ) {\n for ( let j = 0; j < wptbInternalActiveElement.length; j++ ) {\n let wptbInternalActiveElementObj = {};\n wptbInternalActiveElementObj.getDOMElement = function() {\n return wptbInternalActiveElement[j];\n }\n \n applyGenericItemSettings( wptbInternalActiveElementObj );\n }\n }\n }\n }\n }\n\n this.getDOMElement = function () {\n return DOMElement;\n };\n\n this.setCoords = function (y, x) {\n var el = this.getDOMElement();\n el.dataset.yIndex = y;\n el.dataset.xIndex = x;\n };\n\n this.getCoords = function () {\n var coords,\n el = this.getDOMElement();\n coords.x = el.dataset.xIndex;\n coords.y = el.dataset.yIndex;\n return coords;\n };\n\n this.appendElement = function (node) {\n getDOMElement().appendChild(node);\n };\n \n DOMElement.getCellDimensions = function() {\n\n let tdStyleObj = window.getComputedStyle( this, null );\n\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n\n let tdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n\n let tdPaddingTop = tdStyleObj.getPropertyValue( 'padding-top' );\n let tdPaddingBottom = tdStyleObj.getPropertyValue( 'padding-bottom' );\n\n let tdBorderTopWidth = tdStyleObj.getPropertyValue( 'border-top-width' );\n let tdBorderBottomWidth = tdStyleObj.getPropertyValue( 'border-bottom-width' );\n\n let width = parseInt( this.offsetWidth, 10 ) -\n parseInt( tdPaddingLeft, 10 ) -\n parseInt( tdPaddingRight, 10 );\n\n let height = parseInt( this.offsetHeight, 10 ) -\n parseInt( tdPaddingTop, 10 ) -\n parseInt( tdPaddingBottom, 10 );\n let table = WPTB_Helper.findAncestor( this, 'wptb-preview-table' );\n if(table) {\n if(table.style.borderCollapse === 'collapse') {\n width = width - ( parseInt( tdBorderLeftWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderRightWidth, 10 ) / 2 );\n height = height - ( parseInt( tdBorderTopWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderBottomWidth, 10 ) / 2 );\n let tableFullStyleObj = window.getComputedStyle( table, null );\n let tableBorderLeft = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let tableBorderRight = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderTop = tableFullStyleObj.getPropertyValue( 'border-top-width' );\n let tableBorderBottom = tableFullStyleObj.getPropertyValue( 'border-bottom-width' );\n\n let tr = this.parentNode;\n if( tr && tr.nodeName.toLowerCase() === 'tr' ) {\n if( tr.firstChild && tr.firstChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderLeft, 10 ) > parseInt( tdBorderLeftWidth, 10 ) ) {\n width += -( parseInt( tableBorderLeft, 10 ) - parseInt( tdBorderLeftWidth, 10 ) ) / 2;\n }\n }\n\n if( tr.lastChild && tr.lastChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderRight, 10 ) > parseInt( tdBorderRightWidth, 10 ) ) {\n width += -( parseInt( tableBorderRight, 10 ) - parseInt( tdBorderRightWidth, 10 ) ) / 2;\n }\n }\n\n let body = tr.parentNode;\n if( body && body.nodeName.toLowerCase() === 'body' ) {\n if( body.firstChild && body.firstChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderTop, 10 ) > parseInt( tdBorderTopWidth, 10 ) ) {\n height += ( parseInt( tableBorderTop, 10 ) - parseInt( tdBorderTopWidth, 10 ) ) / 2;\n }\n }\n\n if( body.lastChild && body.lastChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderBottom, 10 ) > parseInt( tdBorderBottomWidth, 10 ) ) {\n height += ( parseInt( tableBorderBottom, 10 ) - parseInt( tdBorderBottomWidth, 10 ) ) / 2;\n }\n }\n }\n }\n } else if(table.style.borderCollapse === 'separate') {\n width = width - parseInt( tdBorderLeftWidth, 10 ) -\n parseInt( tdBorderRightWidth, 10 );\n height = height - parseInt( tdBorderTopWidth, 10 ) -\n parseInt( tdBorderBottomWidth, 10 );\n }\n }\n\n return {\n width: parseInt( width ),\n height: parseInt( height )\n };\n }\n\n return this;\n};","var WPTB_DropHandle = function (thisElem, e, hide = false) {\n\n let wptbDropHandle,\n wptbDropBorderMarker,\n wptbDropBorderMarkerTop,\n wptbDropBorderMarkerRight,\n wptbDropBorderMarkerBottom,\n wptbDropBorderMarkerLeft;\n\n /**\n * Add px suffix to a value\n *\n * @param {any} val value\n * @returns {string} string value suffixed with px\n */\n function toPx(val){\n return `${val}px`;\n }\n\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\n let cellRelatedDropHandle = document.querySelector('.wptb-cell-related-drop-handle');\n if(hide && cellRelatedDropHandle ){\n cellRelatedDropHandle.style.display = 'none';\n return;\n }\n if(cellRelatedDropHandle === null){\n const range = document.createRange();\n range.setStart(document.body , 0);\n\n const shadowRoot = range.createContextualFragment('<div class=\"wptb-cell-related-drop-handle\">Add to cell</div>').children[0];\n\n document.body.appendChild(shadowRoot);\n cellRelatedDropHandle = shadowRoot.children[0];\n }\n\n const parentTd = WPTB_Helper.getParentOfType('td', thisElem);\n const {top,left,width,height} = parentTd.getBoundingClientRect();\n\n if(!cellRelatedDropHandle){\n return;\n }\n\n cellRelatedDropHandle.style.display = 'flex';\n cellRelatedDropHandle.style.top = toPx(top);\n cellRelatedDropHandle.style.width = toPx(width);\n cellRelatedDropHandle.style.height = toPx(height);\n cellRelatedDropHandle.style.left = toPx(left);\n\n return;\n }\n\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length == 0 ) {\n wptbDropHandle = document.createElement( 'div' );\n wptbDropHandle.classList.add( 'wptb-drop-handle' );\n \n wptbDropBorderMarker = document.createElement( 'div' );\n wptbDropBorderMarker.classList.add( 'wptb-drop-border-marker' );\n \n wptbDropBorderMarkerTop = document.createElement( 'div' ),\n wptbDropBorderMarkerRight = document.createElement( 'div' ),\n wptbDropBorderMarkerBottom = document.createElement( 'div' ),\n wptbDropBorderMarkerLeft = document.createElement( 'div' );\n \n wptbDropBorderMarkerTop.classList.add( 'wptb-drop-border-marker-top' );\n wptbDropBorderMarkerRight.classList.add( 'wptb-drop-border-marker-right' );\n wptbDropBorderMarkerBottom.classList.add( 'wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerLeft.classList.add( 'wptb-drop-border-marker-left' );\n \n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerTop );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerRight );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerBottom );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerLeft );\n \n let body = document.getElementsByTagName( 'body' );\n if ( body.length > 0 ) {\n body[0].appendChild( wptbDropHandle );\n body[0].appendChild( wptbDropBorderMarker );\n }\n \n wptbDropHandle.ondragenter = function () {\n if (e.target.classList.contains('wptb-empty')) {\n e.preventDefault();\n return false;\n }\n }\n\n wptbDropHandle.ondragover = function (e) {\n e.preventDefault(); \n }\n\n wptbDropHandle.ondragleave = function () {\n\n }\n wptbDropHandle.ondrop = function (e) {\n e.preventDefault();\n let element;\n \n if ( e.dataTransfer.getData('wptbElement') ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData('wptbElement') );\n element = element.getDOMElement();\n } else {\n element = document.getElementsByClassName( e.dataTransfer.getData('node') )[0];\n element.classList.remove( 'wptb-moving-mode' );\n element.classList.remove( 'wptb-moving-into-same-elem' );\n element.wptbMovingMode = 1;\n }\n \n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n thisElem = wptbDropHandle.getDOMParentElement();\n if ( thisElem.nodeName.toLowerCase() == 'td' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n }\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n \n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n \n WPTB_innerElementSet( element );\n if( ! element.classList.contains( 'wptb-image-container' ) || element.wptbMovingMode == 1 ) {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n element.wptbMovingMode == undefined;\n }\n }\n let wptbContainer = document.querySelector( '.wptb-container' );\n wptbContainer.onscroll = function() {\n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n }\n } else {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \n thisElem.getElementsByClassName( 'wptb-ph-element' ).length != 0) {\n return;\n }\n\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \n thisElem.classList.contains('wptb-empty')) {\n return;\n }\n \n let thisRow;\n if ( thisElem.localName == 'td' ) {\n thisRow = thisElem.parentNode;\n } else if ( thisElem.localName == 'div' && thisElem.classList.contains( 'wptb-ph-element' ) ) {\n thisRow = thisElem.parentNode.parentNode;\n }\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n let indics = e.dataTransfer.types;\n let notDragEnter = false;\n for ( let i = 0; i < indics.length; i++ ) {\n let infArr = indics[i].match( /wptbelindic-([a-z]+)/i );\n if ( infArr && infArr[1] != 'text' ) {\n notDragEnter = true;\n break;\n }\n }\n if( notDragEnter ) {\n return;\n }\n }\n }\n \n wptbDropHandle.style.width = thisElem.offsetWidth + 'px';\n let height = thisElem.offsetHeight,\n coordinatesElement = thisElem.getBoundingClientRect(),\n left = parseFloat( coordinatesElement.left ),\n top;\n wptbDropHandle.style.left = left + 'px';\n \n if( e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) != -1 ) {\n let elementDrag = document.getElementsByClassName( 'wptb-moving-mode' )[0];\n if( thisElem == elementDrag ) {\n wptbDropHandle.classList.add('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.add('wptb-moving-into-same-elem');\n } else {\n wptbDropHandle.classList.remove('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.remove('wptb-moving-into-same-elem');\n }\n }\n \n wptbDropHandle.getDOMParentElement = function() {\n return thisElem;\n }\n \n wptbDropHandle.style.display = 'block';\n wptbDropBorderMarker.style.display = 'block';\n if( thisElem.nodeName.toLowerCase() != 'td' ) {\n let y = e.offsetY==undefined?e.layerY:e.offsetY;\n top = parseFloat( coordinatesElement.top ) - parseFloat( 11 );\n wptbDropHandle.dataset.text = 'Above Element';\n if ( y > height/2 ) {\n top = parseFloat( coordinatesElement.top ) + height - 1;\n wptbDropHandle.dataset.text = 'Below Element';\n }\n } else {\n wptbDropHandle.dataset.text = 'Drop Here';\n top = parseFloat( coordinatesElement.top ) + height/2 - 5;\n }\n wptbDropHandle.style.top = top + 'px';\n\n wptbDropBorderMarker.style.top = coordinatesElement.top + 'px';\n wptbDropBorderMarker.style.left = coordinatesElement.left + 'px';\n\n wptbDropBorderMarkerTop = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-top' );\n wptbDropBorderMarkerTop.style.width = ( parseFloat( thisElem.offsetWidth ) - parseFloat( 1 ) ) + 'px';\n\n wptbDropBorderMarkerRight = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-right' );\n wptbDropBorderMarkerRight.style.height = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) - 1 ) + 'px';\n wptbDropBorderMarkerRight.style.left = wptbDropBorderMarkerTop.style.width;\n\n wptbDropBorderMarkerBottom = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerBottom.style.width = wptbDropBorderMarkerTop.style.width;\n wptbDropBorderMarkerBottom.style.top = wptbDropBorderMarkerRight.style.height;\n\n wptbDropBorderMarkerLeft = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-left' );\n wptbDropBorderMarkerLeft.style.height = wptbDropBorderMarkerRight.style.height;\n}","var ElementCounters = function () {\n\n\tvar priv = [];\n\tpriv['text'] = 0;\n\tpriv['image'] = 0;\n\tpriv['list'] = 0;\n\tpriv['button'] = 0;\n\n\tthis.increment = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn;\n\t\t}\n\t\tpriv[key]++;\n\t}\n\n\tthis.nextIndex = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn priv[key] + 1;\n\t}\n\n\treturn this;\n\n};","var WPTB_ElementObject = function ( data ) {\n let DOMElement, kindIndexProt, copy;\n if( ! data.elemProt ) {\n DOMElement = document.createElement('div'),\n kindIndexProt = undefined,\n copy = false;\n DOMElement.classList.add( 'wptb-' + data.kind + '-container', 'wptb-ph-element' );\n \n let wpTemplateId = 'wptb-' + data.kind + '-content';\n let template = wp.template( wpTemplateId );\n data.node = DOMElement;\n let itemHtml = template( data );\n\n itemHtml = itemHtml.replace(/\\r|\\n|\\t/g, '').trim();\n DOMElement.innerHTML = itemHtml;\n } else {\n DOMElement = data.elemProt.cloneNode( true );\n DOMElement.classList.remove( 'wptb-directlyhovered' );\n let wptbElementMutch = data.elemProt.className.match( /wptb-element-((.+-)\\d+)/i );\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\n kindIndexProt = wptbElementMutch[1];\n };\n copy = true;\n \n if( data.tinyMceClear ) {\n DOMElement = WPTB_Helper.elementClearFromTinyMce( DOMElement );\n }\n }\n \n let inElems = DOMElement.querySelectorAll( '.wptb-in-element' );\n if( inElems.length > 0 ) {\n for ( let i = 0; i < inElems.length; i++ ) {\n let inElemObj = {};\n inElemObj.getDOMElement = function() {\n return inElems[i];\n }\n \n applyGenericItemSettings( inElemObj );\n }\n }\n \n window.addEventListener( 'item:onmouseenter', function( event ) {\n //console.log( event );\n }, false);\n \n \n this.kind = data.kind;\n this.getDOMElement = function () {\n return DOMElement;\n };\n \n applyGenericItemSettings( this, kindIndexProt, copy );\n return this;\n}\n\n\n","var WPTB_ElementOptions = function ( element, index, kindIndexProt ) {\n\n var node = element.getDOMElement();\n node.addEventListener( 'click', function() {\n WPTB_Helper.elementOptionsSet( element.kind, this );\n }, {capture: true} );\n};","var WPTB_Helper = {\n hexToRgb: function( hex ) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec( hex );\n return result ? 'rgb(' + parseInt( result[1], 16 ) + ',' + parseInt( result[2], 16 ) + ',' + parseInt( result[3], 16 ) + ')' : null;\n },\n rgbToHex: function ( rgb ) {\n if( rgb ) {\n if( WPTB_Helper.isHex( rgb ) ) return rgb;\n\n let rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?((?:[0-9]*[.])?[0-9]+)[\\s+]?\\)/i);\n if ( rgbm && rgbm.length === 5) {\n return \"#\" +\n ('0' + Math.round(parseFloat(rgbm[4], 10) * 255).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\n } else {\n rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgbm && rgbm.length === 4) {\n return \"#\" +\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\n } else {\n return '';\n }\n }\n } else {\n return '';\n }\n\n },\n isHex: function( hex ) {\n let regex = new RegExp('^#(?:[A-Fa-f0-9]{3}){1,2}$');\n return regex.test( hex );\n },\n getElementIcon: function ( icon_directory ) {\n let hostName = location.protocol + '//' + location.hostname;\n let img = document.createElement( 'img' );\n img.src = icon_directory;\n return img;\n },\n elementDragEndClear: function() {\n let wptbMovingMode = document.getElementsByClassName( 'wptb-moving-mode' );\n if ( wptbMovingMode.length > 0 ) {\n for( let i = 0; i < wptbMovingMode.length; i++ ) {\n wptbMovingMode[i].classList.remove( 'wptb-moving-mode' );\n }\n }\n\n let wptbDropHandles = document.getElementsByClassName( 'wptb-drop-handle' );\n if ( wptbDropHandles.length > 0 ) {\n for( let i = 0; i < wptbDropHandles.length; i++ ) {\n wptbDropHandles[i].style.display = 'none';\n }\n }\n\n let wptbDropBorderMarkers = document.getElementsByClassName( 'wptb-drop-border-marker' );\n if ( wptbDropBorderMarkers.length > 0 ) {\n for( let i = 0; i < wptbDropBorderMarkers.length; i++ ) {\n wptbDropBorderMarkers[i].style.display = 'none';\n }\n }\n },\n linkHttpCheckChange: function( link, convertToAbs = false ) {\n if ( link ) {\n // even though it is not a best practice and a huge security risk, sometimes our users use javascript tag at href attributes, this check will make sure those tags will not be modified and returned as they are\n if(link.match(/^(javascript:)(.+)$/)){\n return link;\n }\n // relative link checking\n // if link starts with '/', assume it is a relative link to the origin of the current site\n else if( link.match(/^\\/([\\S]+)$/) ){\n if (convertToAbs) {\n const currentLocation = document.location;\n let {origin} = currentLocation;\n\n\n // strip out the '/' at the end of the origin name if there is any\n if (origin.match(/^(.+)\\/$/)) {\n origin = origin.slice(-1);\n }\n\n return `${origin}${link}`;\n }else{\n return link;\n }\n }\n else if ( link.indexOf( 'http://' ) == -1 && link.indexOf( 'https://' ) == -1 ) {\n let linkArr = link.split( '/' ),\n linkClean;\n if ( Array.isArray( linkArr ) && linkArr.length > 0 ) {\n linkClean = linkArr[linkArr.length - 1];\n }\n return document.location.protocol + '//' + linkClean;\n } else {\n return link;\n }\n } else {\n return '';\n }\n },\n dataTitleColumnSet: function( table ) {\n // TODO dataTitleColumnSet\n // let rows = table.rows,\n // rowHead = rows[0];\n // let computedStyleRowHead = getComputedStyle( rowHead );\n //\n // let rowHeadChildren = rowHead.children;\n // let contentsForHeader = {};\n // for( let i = 0; i < rowHeadChildren.length; i++ ) {\n // let tdElements = rowHeadChildren[i].children;\n //\n // for( let j = 0; j < tdElements.length; j++ ) {\n // let element = tdElements[j];\n // if( element.classList.contains( 'wptb-ph-element' ) ) {\n // let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n // if( infArr[1] == 'text' ) {\n // let p = element.querySelector( 'p' ),\n // textContent = p.textContent,\n // textAlign = p.style.textAlign;\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = [textContent, element.style.fontSize,\n // element.style.color, computedStyleRowHead.backgroundColor, textAlign];\n // break;\n // }\n // }\n // }\n // if( ! contentsForHeader[rowHeadChildren[i].dataset.xIndex] ) {\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = ['', '',\n // '', computedStyleRowHead.backgroundColor, ''];\n // }\n // }\n // for ( let i = 1; i < rows.length; i++ ) {\n // let thisRow = rows[i],\n // thisRowChildren = thisRow.children;\n // for( let j = 0; j < thisRowChildren.length; j++ ) {\n // if ( contentsForHeader[thisRowChildren[j].dataset.xIndex] ) {\n // thisRowChildren[j].dataset.wptbTitleColumn = contentsForHeader[thisRowChildren[j].dataset.xIndex][0];\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = contentsForHeader[thisRowChildren[j].dataset.xIndex][1];\n // thisRowChildren[j].dataset.wptbTitleColumnColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][2];\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][3];\n // thisRowChildren[j].dataset.wptbTitleAlign = contentsForHeader[thisRowChildren[j].dataset.xIndex][4];\n // } else {\n // thisRowChildren[j].dataset.wptbTitleColumn = null;\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = null;\n // thisRowChildren[j].dataset.wptbTitleColumnColor = null;\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = null;\n // thisRowChildren[j].dataset.wptbTitleAlign = null;\n // }\n // }\n // }\n },\n findAncestor: function( el, cls ) {\n while ( ( el = el.parentElement ) && !el.classList.contains( cls ) );\n return el;\n },\n rowIsTop: function( row ) {\n var parent = row.parentNode;\n if( parent.children[0] == row ) {\n return true;\n } else {\n return false;\n }\n },\n getSelectionText: function() {\n var txt = '';\n if (txt = window.getSelection) {\n txt = window.getSelection().toString();\n } else {\n txt = document.selection.createRange().text;\n }\n return txt;\n },\n elementOptionsPanelClear: function() {\n let elementOptionsGroup = document.getElementById( 'element-options-group' );\n if( elementOptionsGroup ) {\n elementOptionsGroup.innerHTML = '';\n }\n },\n wpColorPickerCheckChangeForTableStateSaving: function( event ) {\n if( event.originalEvent.type == 'external' ) {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } else {\n let wpPickerContainer = WPTB_Helper.findAncestor( event.target, 'wp-picker-container' );\n if( wpPickerContainer ) {\n if( event.originalEvent.type == 'square' || event.originalEvent.type == 'strip' ) {\n let body = document.getElementsByTagName( 'body' )[0];\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n body.addEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n }\n }\n }\n },\n irisStripMouseUpStateSaveManager: function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n\n let body = document.getElementsByTagName( 'body' )[0];\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n },\n wpColorPickerClear: function( attribute, isId ) {\n let input;\n if( isId ) {\n input = [document.getElementById( attribute )];\n input.length = 1;\n } else {\n input = document.getElementsByClassName( attribute );\n }\n for( let i = 0; i < input.length; i++ ) {\n let wpPickerContainer = WPTB_Helper.findAncestor( input[i], 'wp-picker-container' );\n if( wpPickerContainer ) {\n let parent = wpPickerContainer.parentNode;\n parent.removeChild( wpPickerContainer );\n let newInput = document.createElement( 'input' );\n if( isId ) {\n newInput.setAttribute( 'id', attribute );\n } else {\n newInput.classList.add( 'wptb-element-property', attribute );\n }\n newInput.value = \"\";\n parent.appendChild( newInput );\n }\n }\n },\n detectMode: function() {\n var url = window.location.href,\n regex = new RegExp('[?&]table(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if ( ! results ) return false;\n if ( ! results[2] ) return '';\n return decodeURIComponent( results[2].replace(/\\+/g, ' ') );\n },\n getColumnWidth: function( table, cell ) {\n let xIndex = cell.dataset.xIndex;\n let xIndexes = table.querySelectorAll( '[data-x-index=\"' + xIndex + '\"]' );\n let cellWidth = cell.getCellDimensions().width;\n for( let i = 0; i < xIndexes.length; i++ ) {\n if( cellWidth > xIndexes[i].getCellDimensions().width ) {\n cellWidth = xIndexes[i].getCellDimensions().width;\n }\n }\n return cellWidth;\n },\n getRowHeight: function( table, cell ) {\n let yIndex = cell.dataset.yIndex;\n let yIndexes = table.querySelectorAll( '[data-y-index=\"' + yIndex + '\"]' );\n let cellHeight = cell.getCellDimensions().height;\n for( let i = 0; i < yIndexes.length; i++ ) {\n if( cellHeight > yIndexes[i].getCellDimensions().height ) {\n cellHeight = yIndexes[i].getCellDimensions().height;\n }\n }\n return cellHeight;\n },\n newElementProxy: function( el ) {\n if( el ) {\n let data = {kind: el};\n return new WPTB_ElementObject( data );\n }\n },\n wpColorPickerChange: function( event, ui ) {\n let uiColor;\n if( ui ) {\n uiColor = ui.color.toString();\n } else {\n uiColor = '';\n }\n\n let parent = WPTB_Helper.findAncestor( event.target, 'wp-picker-input-wrap' ).getElementsByClassName( 'wptb-color-picker' )[0], classe, type, ps, number;\n classe = parent.dataset.element.match(/wptb-options-(.+)-(\\d+)/i);\n type = classe[1];\n number = classe[2];\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + type + '-' + number )[0];\n if ( type == 'button' ) {\n if ( parent.dataset.type == 'button-text-color' ) {\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.color = uiColor;\n } else {\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.backgroundColor = uiColor;\n }\n } else if( type == 'list' ) {\n let ps = affectedEl.querySelectorAll( 'p' );\n if( ps.length > 0 ) {\n for ( let i = 0; i < ps.length; i++ ) {\n ps[i].style.color = uiColor;\n }\n }\n } else if( type == 'star_rating' ) {\n if ( parent.dataset.type == 'star-color' ) {\n let ratingStar = affectedEl.querySelectorAll('li');\n for( let i = 0; i < ratingStar.length; i++ ) {\n let span = ratingStar[i].getElementsByTagName( 'span' );\n for( let j = 0; j < span.length; j++ ) {\n span[j].style.fill = uiColor;\n }\n }\n } else if( parent.dataset.type == 'numeral-rating-color' ) {\n let wptbTextMessageSize = affectedEl.querySelector('.wptb-number-rating');\n wptbTextMessageSize.style.color = uiColor;\n }\n\n } else {\n affectedEl.style.color = uiColor;\n }\n },\n numberImputSize: function ( wptbNumberInputs, maxCount, maxValue ) {\n wptbNumberInputs.onkeydown = function() {\n let thisValue = this.value;\n thisValue = String( thisValue );\n if ( thisValue[0] == 0 ) {\n this.value = \"\";\n } else {\n thisValue = thisValue.substring( 0, maxCount );\n this.value = thisValue;\n }\n }\n wptbNumberInputs.onkeyup = function( ) {\n let thisValue = this.value;\n if ( parseInt( thisValue, 10 ) > parseInt( maxValue, 10 ) ) {\n this.value = maxValue;\n }\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n },\n ucfirst: function( str ) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n wptbDocumentEventGenerate: function( eventName, element, details ) {\n if( eventName && element ) {\n if( ! details ) {\n details = true;\n }\n let event = new CustomEvent( eventName, { detail: details, bubbles: true } );\n element.dispatchEvent( event );\n }\n },\n // run script for the pointed element\n elementStartScript: function( element, kind ) {\n //let script = element.getElementsByTagName( 'script' );\n if(!kind) {\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n if( infArr && Array.isArray( infArr ) ) {\n kind = infArr[1];\n }\n }\n\n if( kind ) {\n// let wpTemplateId = 'wptb-' + kind + '-script';\n// let template = wp.template( wpTemplateId );\n// let data = {elemClass: infArr[0]};\n// let elementScriptText = template( data );\n// elementScriptText = elementScriptText.replace(/\\r|\\n|\\t/g, '').trim();\n//\n// let scriptNew = document.createElement( 'script' );\n// scriptNew.setAttribute( 'type', 'text/javascript' );\n// scriptNew.innerHTML = elementScriptText;\n// element.parentNode.appendChild( scriptNew );\n\n// element.parentNode.removeChild( scriptNew );\n if( kind in WPTB_ElementsScriptsLauncher ) {\n WPTB_ElementsScriptsLauncher[kind]( element );\n }\n }\n },\n // deletes event handlers from the pointed option element and from all his daughter elements\n deleteEventHandlers: function( element ) {\n if( element ) {\n jQuery( element ).off();\n let elementChildren = element.children;\n if( elementChildren ) {\n for ( let i = 0; i < elementChildren.length; i++ ) {\n WPTB_Helper.deleteEventHandlers( elementChildren[i] );\n }\n }\n } else {\n return;\n }\n },\n // replace all occurrences in a string\n replaceAll: function( string, search, replace ){\n return string.split( search ).join( replace );\n },\n // clears code from TinyMCE attributes\n elementClearFromTinyMce: function( element ) {\n let mceContentBodys = element.querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n\n let dataMceStyle = element.querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n\n let mceEditFocus = element.querySelectorAll( '.mce-edit-focus' );\n if( mceEditFocus.length > 0 ) {\n for ( let k = 0; k < mceEditFocus.length; k++ ) {\n mceEditFocus[k].classList.remove( 'mce-edit-focus' );\n }\n }\n\n let contentEditable = element.querySelectorAll( '[contenteditable]' );\n if ( contentEditable.length > 0 ) {\n for ( let k = 0; k < contentEditable.length; k++ ) {\n contentEditable[k].removeAttribute( 'contenteditable' );\n }\n }\n\n let spellCheck = element.querySelectorAll( '[spellcheck]' );\n if ( spellCheck.length > 0 ) {\n for ( let k = 0; k < spellCheck.length; k++ ) {\n spellCheck[k].removeAttribute( 'spellcheck' );\n }\n }\n\n let mceIds = element.querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n\n return element;\n },\n elementOptionContainerCustomClassSet: function( targetInput, customClassForContainer ) {\n if( targetInput && customClassForContainer ) {\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\n if( containerElement ) {\n containerElement.classList.add( customClassForContainer );\n }\n }\n },\n elementOptionContainerAdditionalStyles: function( targetInput, containerAdditionalStyles ) {\n if( targetInput && containerAdditionalStyles ) {\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\n let containerStylesArrOne = containerAdditionalStyles.split( ';' );\n\n if( containerElement && containerStylesArrOne ) {\n function containerStylesSet( containerStyleStr, containerElement ) {\n if( containerStyleStr ) {\n containerStyleStrArr = containerStyleStr.split( ':' );\n\n if( containerStyleStrArr && Array.isArray( containerStyleStrArr ) ) {\n containerElement.style[containerStyleStrArr[0]] = containerStyleStrArr[1];\n }\n }\n }\n if( containerStylesArrOne && Array.isArray( containerStylesArrOne ) ) {\n for( let i = 0; i < containerStylesArrOne.length; i++ ) {\n if( containerStylesArrOne[i] ) {\n containerStylesSet( containerStylesArrOne[i], containerElement );\n }\n }\n } else {\n containerStylesSet( containerStylesArrOne, containerElement );\n }\n }\n }\n },\n // function which set handler for event of changes of control\n controlsInclude: function( element, functionHandler, acceptEventValues = false ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\n element.addEventListener( 'element:controls:active', function() {\n if(!element.hasOwnProperty('controlConnectFunctionsName') ||\n !Array.isArray(element.controlConnectFunctionsName) ||\n element.controlConnectFunctionsName.indexOf(functionHandler.name) == -1) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i ),\n elementKind;\n\n if( infArr && Array.isArray( infArr ) ) {\n elementKind = infArr[1];\n }\n\n// if( ! element.hasOwnProperty( 'сontrolsConnectIndic' ) || element.сontrolsConnectIndic !== true && elementKind ) {\n// let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\n// if( elementsSettingsTemplateJs.length > 0 ) {\n// elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\n//\n// let elementsSettings = elementsSettingsTemplateJs.innerHTML;\n// let controlClassesNames = [];\n// if( elementsSettings ) {\n// elementsSettings = elementsSettings.trim();\n// elementsSettings = JSON.parse( elementsSettings );\n// if( elementsSettings && typeof elementsSettings === 'object' ) {\n// if( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings ) {\n// let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\n// if( elementSettings && typeof elementSettings === 'object' ) {\n// Object.keys( elementSettings ).forEach( function( key ) {\n// let regularText = new RegExp( 'data-wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n// let keyInfArr = key.match( regularText );\n// if( keyInfArr && Array.isArray( keyInfArr ) ) {\n// let controlClass = key.replace( 'data-', '' );\n// controlClassesNames.push( [controlClass, keyInfArr[2]] );\n// }\n// });\n// }\n// }\n// }\n// }\n// }\n// }\n if( elementKind ){\n let elementOptionsGroupIds = element.optionsGroupIds;\n if(elementOptionsGroupIds && Array.isArray(elementOptionsGroupIds)) {\n for(let i = 0; i < elementOptionsGroupIds.length; i++) {\n let elementOptionsGroupId = elementOptionsGroupIds[i];\n\n let elementOptionsGroup = document.getElementById(elementOptionsGroupId);\n\n let controlActiveElements = elementOptionsGroup.querySelectorAll('.wptb-element-property');\n controlActiveElements = [...controlActiveElements];\n\n controlActiveElements.map(controlActiveElement => {\n let regularText = new RegExp( 'wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n let controlInfArr = controlActiveElement.className.match( regularText );\n if( controlInfArr && Array.isArray( controlInfArr ) ) {\n let controlUnicClassName = controlInfArr[0];\n\n element.addEventListener( 'wptb-control:' + controlUnicClassName, function(e) {\n let controls = {};\n let controlName = controlInfArr[2];\n let control = document.getElementsByClassName( controlUnicClassName );\n if( control.length > 0 && controlName ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n if(acceptEventValues) {\n controls[controlName] = {\n targetValue: targetControlValue,\n eventValue: e.detail.value\n }\n }else {\n controls[controlName] = targetControlValue;\n }\n }\n functionHandler( controls, element );\n }, false );\n }\n });\n }\n }\n //let elementOptionsContainer = document.querySelector( '.wptb-element-options.wptb-options-' + infArr[1] + '-' + infArr[2] );\n\n // from time to time depend on table cells hierarchy, cell td items may catch mouse clicks which are intended for elements. since the active section is not cell management, this will gives and unharmfull error of not found element, simple check for null equality will be sufficient for now.\n // if(!elementOptionsContainer){\n // return;\n // }\n\n // let elementOptions = elementOptionsContainer.querySelectorAll( '.wptb-element-option' );\n // let controlActiveElements = elementOptions[i].querySelector( '.wptb-element-property' );\n //\n //\n // for( let i = 0; i < elementOptions.length; i++ ) {\n // let controlActiveElement = elementOptions[i].querySelector( '.wptb-element-property' );\n // if( controlActiveElement ) {\n //\n // }\n // }\n\n if(!element.controlConnectFunctionsName && !Array.isArray(element.controlConnectFunctionsName)) {\n element.controlConnectFunctionsName = [];\n }\n\n element.controlConnectFunctionsName.push( functionHandler.name );\n }\n }\n }, false );\n }\n },\n oneControlInclude: function( element, functionHandler, controlName ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' && typeof controlName === 'string' ) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i ),\n elementKind;\n\n if( infArr && Array.isArray( infArr ) ) {\n elementKind = infArr[1].split( '-' )[0];\n\n let wptbContrlStacksConfigId = 'wptb-' + elementKind + '-control-stack';\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\n let data = {\n container: '.' + infArr[0]\n };\n let jsonControlsConfigJson = tmplControlsConfig( data );\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\n\n if( jsonControlsConfig && typeof jsonControlsConfig === 'object' && jsonControlsConfig.hasOwnProperty( controlName ) ) {\n let controlClassName = 'wptb-el-' + infArr[1] + '-' + controlName;\n\n element.addEventListener( 'wptb-control:' + controlClassName, function( event ) {\n let control = document.getElementsByClassName( controlClassName );\n if( control.length > 0 ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n functionHandler( targetControlValue, element );\n }\n }, false );\n }\n }\n } else {\n return false;\n }\n },\n //\n innerElementCopyIncludeHandler: function( element, functionHandler ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\n element.addEventListener( 'wptb-inner-element:copy', function( event ) {\n let innerElement = event.detail;\n if( innerElement ) {\n WPTB_Helper.elementClearFromTinyMce( innerElement );\n functionHandler( innerElement, element );\n }\n }, false );\n }\n },\n /**\n * Sets the control elements when changing which to will restart this control\n * @param {array} dependOnControlName\n * @param {string} targetControlElementClass\n * @param {array} valueDependOnControlCorrect\n * @param {string} kind\n * @param {HTMLElement} element\n */\n valueDependOnControl: function(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect, kind, element) {\n function dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect) {\n if(typeof dependOnControlName === 'string') {\n dependOnControlName = [dependOnControlName];\n }\n let infArr = targetControlElementClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\n let valueDependOnControl = {};\n let dependOnControlElementsArr = [];\n if (infArr && Array.isArray(infArr)) {\n let controlName = infArr[3];\n let dependOnControlElements;\n let valueDependOnControlCorrectObj = {};\n if(Array.isArray(valueDependOnControlCorrect)) {\n if(Array.isArray(valueDependOnControlCorrect[0])) {\n valueDependOnControlCorrect.map(s => {\n valueDependOnControlCorrectObj[s[0]] = [s[1], s[2]];\n });\n } else {\n valueDependOnControlCorrectObj[valueDependOnControlCorrect[0]] = [valueDependOnControlCorrect[1], valueDependOnControlCorrect[2]];\n }\n }\n dependOnControlName.map(s => {\n let dependOnControlElementClass = targetControlElementClass.replace(controlName, s);\n if(dependOnControlElementClass) {\n dependOnControlElements = document.getElementsByClassName(dependOnControlElementClass);\n if(dependOnControlElements.length > 0 && dependOnControlElements[0].type) {\n valueDependOnControl[s] = dependOnControlElements[0].value;\n if(s in valueDependOnControlCorrectObj) {\n if(valueDependOnControlCorrectObj[s][1] === 'integer') {\n valueDependOnControl[s] = parseInt(valueDependOnControl[s]) + parseInt(valueDependOnControlCorrectObj[s][0]);\n } else if(valueDependOnControlCorrectObj[s][1] === 'string') {\n valueDependOnControl[s] = valueDependOnControl[s] + valueDependOnControlCorrectObj[s][0];\n }\n }\n dependOnControlElementsArr.push(dependOnControlElements[0]);\n }\n }\n });\n }\n\n return [valueDependOnControl, dependOnControlElementsArr];\n }\n\n let dependOnControlData = dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect);\n WPTB_Helper.elementOptionsSet(kind, element, dependOnControlData[0], targetControlElementClass);\n\n Object.keys(dependOnControlData[0]).forEach(function (key) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n let unicClass = 'wptb-el-' + infArr[1] + '-' + [key];\n element.addEventListener(`wptb-control:${unicClass}`, function(event){\n let dependOnControlData = dependOnControlDataGet(dependOnControlName, targetControlElementClass, valueDependOnControlCorrect);\n WPTB_Helper.elementOptionsSet(kind, element, dependOnControlData[0], targetControlElementClass);\n }, false);\n });\n },\n /**\n * Sets the visibility of one control to depend on the state of other controls\n * @param dependOnMain\n * @param targetControlElementClass\n */\n appearDependOnControl: function( dependOnMain, targetControlElementClass ) {\n if( Array.isArray( dependOnMain ) ) {\n if(typeof dependOnMain[0] === 'string') {\n dependOnMain = [dependOnMain];\n } else if(!Array.isArray(dependOnMain[0])) {\n return;\n }\n let dependOnControlElementsValue = {};\n for(let i = 0; i < dependOnMain.length; i++) {\n let dependOn = dependOnMain[i];\n let dependOnControlName = dependOn[0];\n let infArr = targetControlElementClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\n\n if (infArr && Array.isArray(infArr)) {\n let controlName = infArr[3];\n\n let dependOnControlElementClass = targetControlElementClass.replace(controlName, dependOnControlName);\n if(dependOnControlElementClass) {\n let dependOnControlElements = document.getElementsByClassName(dependOnControlElementClass);\n if(dependOnControlElements.length > 0) {\n dependOnControlElementsValue[dependOn[0]] = [dependOnControlElementValue(dependOnControlElements, dependOn), dependOnControlElements, dependOn];\n }\n }\n }\n }\n\n let targetControlElement = document.getElementsByClassName( targetControlElementClass );\n if( targetControlElement.length > 0 ) {\n targetControlElement = targetControlElement[0];\n let controlContainerElem = WPTB_Helper.findAncestor( targetControlElement, 'wptb-element-option' );\n\n if( controlContainerElem ) {\n showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue);\n\n Object.keys(dependOnControlElementsValue).map(k => {\n if (Object.prototype.hasOwnProperty.call(dependOnControlElementsValue, k)) {\n let dependOnControlElements = dependOnControlElementsValue[k][1];\n let dependOnControlElement = dependOnControlElements[0];\n dependOnControlElement.addEventListener( 'change', dependOnControlElementChangeHandler.bind(null, controlContainerElem, dependOnControlElementsValue, k), false );\n }\n });\n }\n }\n\n function dependOnControlElementChangeHandler(controlContainerElem, dependOnControlElementsValue, k) {\n let dependOn = dependOnControlElementsValue[k][2];\n let dependOnControlElements = dependOnControlElementsValue[k][1];\n dependOnControlElementsValue[dependOn[0]] = [dependOnControlElementValue(dependOnControlElements, dependOn), dependOnControlElements, dependOn];\n showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue)\n }\n\n function showHideTargetControlElement(controlContainerElem, dependOnControlElementsValue) {\n let display = 'block';\n Object.keys(dependOnControlElementsValue).map(k => {\n if (Object.prototype.hasOwnProperty.call(dependOnControlElementsValue, k)) {\n if(dependOnControlElementsValue[k][0] === false){\n display = 'none';\n }\n }\n })\n\n controlContainerElem.style.display = display;\n }\n\n function dependOnControlElementValue(dependOnControlElements, dependOn) {\n let targetControlValue = WPTB_Helper.targetControlValueGet(dependOnControlElements);\n\n if(dependOn[1] && Array.isArray(dependOn[1]) &&\n (dependOn[1].indexOf(targetControlValue) !== -1 )) {\n return true;\n // let childCheck = controlContainerElem.querySelector('input[type=\"checkbox\"]')\n // if (childCheck) {\n // childCheck.checked = true;\n // }\n } else if(dependOn[2] && Array.isArray(dependOn[2]) &&\n (dependOn[2].indexOf(targetControlValue) !== -1)) {\n return false;\n }\n }\n }\n },\n //\n controlsStateManager: function ( targetControlClass, controlChangeIndic ) {\n let targetControls = document.getElementsByClassName( targetControlClass );\n if( targetControls.length > 0 ) {\n //targetControls = targetControls[0];\n\n let infArr = targetControlClass.match( /wptb-el-((.+-)\\d+)-(.+)/i );\n\n if( infArr && Array.isArray( infArr ) ) {\n let selectorElement;\n selectorElement = document.querySelector( '.wptb-element-' + infArr[1] );\n\n if( selectorElement ) {\n let elementsSettingsTemplatesJs;\n let elementSettings = {};\n let elementsSettings;\n elementsSettingsTemplatesJs = document.getElementsByClassName( 'wptb-element-datas' );\n if( elementsSettingsTemplatesJs.length == 0 || elementsSettingsTemplatesJs[0].innerHTML == '' ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n elementSettings['data-' + targetControlClass] = targetControlValue;\n\n elementsSettings = {};\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = elementSettings;\n elementsSettings = JSON.stringify( elementsSettings );\n\n if( elementsSettingsTemplatesJs.length == 0 ) {\n elementsSettingsTemplatesJs = document.createElement( 'script' );\n elementsSettingsTemplatesJs.setAttribute( 'type', 'text/html' );\n elementsSettingsTemplatesJs.setAttribute( 'class', 'wptb-element-datas' );\n } else {\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\n }\n\n elementsSettingsTemplatesJs.innerHTML = elementsSettings;\n\n let body = document.getElementsByTagName('body')[0];\n body.appendChild( elementsSettingsTemplatesJs );\n } else {\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\n elementsSettings = elementsSettingsTemplatesJs.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n\n if( elementsSettings && typeof elementsSettings === 'object' ) {\n\n\n if( controlChangeIndic ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) ||\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ! ( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) &&\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' &&\n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) ||\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) &&\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' &&\n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) {\n for( let i = 0; i < targetControls.length; i++ ) {\n if( targetControls[i].type == 'checkbox' ) {\n let targetControlValue;\n if( targetControls[i].name ) {\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass][targetControls[i].name];\n } else {\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\n }\n\n if( targetControlValue == 'checked' ) {\n targetControls[i].checked = true;\n } else if( targetControlValue == 'unchecked' ) {\n targetControls[i].checked = false;\n }\n } else {\n targetControls[i].value = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n //\n targetControlValueGet: function( targetControls ) {\n let targetControlValue;\n for( let i = 0; i < targetControls.length; i++ ) {\n if( targetControls[i].type == 'checkbox' && targetControls[i].name ) {\n if( ! targetControlValue ) targetControlValue = {};\n if( targetControls[i].checked == true ) {\n targetControlValue[targetControls[i].name] = 'checked';\n } else {\n targetControlValue[targetControls[i].name] = 'unchecked';\n }\n } else if( targetControls[i].type == 'checkbox' ) {\n if( targetControls[i].checked == true ) {\n targetControlValue = 'checked';\n } else {\n targetControlValue = 'unchecked';\n }\n } else if( targetControls[i].type ) {\n targetControlValue = targetControls[i].value;\n } else if( targetControls[i].dataset.alignmentValue && targetControls[i].classList.contains( 'selected' ) ){\n targetControlValue = targetControls[i].dataset.alignmentValue;\n }\n }\n return targetControlValue;\n },\n //\n elementControlsStateCopy: function( elementProt, copyElem ) {\n if( elementProt && copyElem ) {\n let infArrProt = elementProt.className.match( /wptb-element-((.+-)\\d+)/i );\n let infArrCopy = copyElem.className.match( /wptb-element-((.+-)\\d+)/i );\n if( infArrProt && Array.isArray( infArrProt ) &&\n infArrCopy && Array.isArray( infArrCopy )) {\n let elemProtKind = infArrProt[1];\n let elemCopyKind = infArrCopy[1];\n let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\n if( elementsSettingsTemplateJs.length > 0 ) {\n elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\n\n let elementsSettings = elementsSettingsTemplateJs.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n\n if( elementsSettings && typeof elementsSettings === 'object' ) {\n let elementSettingsProt = elementsSettings['tmpl-wptb-el-datas-' + elemProtKind];\n if( elementSettingsProt && typeof elementSettingsProt === 'object' ) {\n let elementSettingsCopy = {};\n\n Object.keys( elementSettingsProt ).forEach( function( key ) {\n let elementSettingValue = elementSettingsProt[key];\n let elementSettingKeyCopy = key.replace( elemProtKind, elemCopyKind );\n elementSettingsCopy[elementSettingKeyCopy] = elementSettingValue;\n });\n\n if( Object.keys( elementSettingsCopy ).length > 0 ) {\n elementsSettings['tmpl-wptb-el-datas-' + elemCopyKind] = elementSettingsCopy;\n\n elementsSettings = JSON.stringify( elementsSettings );\n elementsSettingsTemplateJs.innerHTML = elementsSettings;\n }\n }\n }\n }\n }\n }\n }\n },\n //\n elementControlsStateDelete: function( element, nameControl ) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n let body = document.getElementsByTagName( 'body' )[0];\n let wptbElementDatas = body.getElementsByClassName( 'wptb-element-datas' );\n if( infArr && Array.isArray( infArr ) && wptbElementDatas.length > 0 ) {\n wptbElementDatas = wptbElementDatas[0];\n let elementsSettings = wptbElementDatas.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n if( elementsSettings && typeof elementsSettings === 'object' &&\n ( ( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] ) in elementsSettings ) ) {\n if( ! nameControl ) {\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\n } else {\n if( elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] &&\n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] === 'object' &&\n ( 'data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] ) {\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]]['data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl];\n }\n }\n\n if( Object.keys( elementsSettings ).length == 0 ) {\n body.removeChild( wptbElementDatas );\n } else {\n elementsSettings = JSON.stringify( elementsSettings );\n wptbElementDatas.innerHTML = elementsSettings;\n }\n }\n }\n }\n },\n //\n elementOptionsSet: function( kind, element, valueDependOnControl, targetControlElementClass ) {\n // get controls config for this element\n let wptbContrlStacksConfigId = 'wptb-' + kind + '-control-stack';\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\n let data;\n let elementContainerClass;\n let elementOptionClassIndic;\n let elementOptionsGroup;\n\n let controlElementParent;\n let elementOptionsScriptsContainer;\n\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n if( ! infArr ) {\n let table_id = WPTB_Helper.detectMode();\n if (!table_id) {\n table_id = 'startedid-0';\n }\n if( element.classList.contains( 'wptb-preview-table' ) ) {\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\n } else if( element.classList.contains( 'wptb-cell' ) ) {\n let cellEditActiveClass = document.querySelector('.wptb-element-table_cell_setting-' + element.dataset.xIndex + '-' + element.dataset.yIndex);\n if( ! cellEditActiveClass ) element.classList.add('wptb-element-table_cell_setting-' + element.dataset.xIndex + '-' + element.dataset.yIndex);\n }else if (element.classList.contains('wptb-responsive')){\n element.classList.add('wptb-element-table_responsive_setting-' + table_id);\n }\n\n infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n }\n\n data = {\n container: '.' + infArr[0]\n };\n let controlName;\n data.valueDependOnControl = {};\n if(valueDependOnControl) {\n Object.keys(valueDependOnControl).forEach(function (key) {\n data.valueDependOnControl[key] = valueDependOnControl[key];\n });\n }\n if(targetControlElementClass) {\n let infArr = targetControlElementClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\n\n if (infArr && Array.isArray(infArr)) {\n controlName = infArr[3];\n }\n }\n\n elementContainerClass = infArr[0];\n elementOptionClassIndic = infArr[1];\n\n if( element.classList.contains( 'wptb-preview-table' ) ) {\n\n } else if( element.classList.contains( 'wptb-cell' ) ) {\n this.activateSection('cell_settings');\n }else if (element.classList.contains('wptb-responsive')){\n elementOptionsGroupId = 'table-responsive-group';\n wptbelementOptionClass = 'wptb-element-option';\n }\n else {\n let children = document.getElementById( 'element-options-group' ).childNodes;\n for ( let i = 0; i < children.length; i++) {\n if ( children[i].style )\n children[i].style.display = 'none';\n }\n this.activateSection('options_group');\n }\n\n let controlsConfigJson = tmplControlsConfig( data );\n let controlsConfig = JSON.parse( controlsConfigJson );\n\n let elementOptionsGroupIdsInvolved = [],\n elementOptionsGroupInvolved = {},\n elementOptionsContainerInvolved = {};\n\n // object for save all scrips for each controls\n let controlScriptsObj = {};\n\n // array for keep \"appear depend on\" params\n let controlappearDependOnControl = [];\n\n // array for keep \"value depend on\" params\n let controlValueDependOnControl = [];\n\n // create controls\n let elementOptionsScriptsContainerIndic = false;\n if(controlName) {\n let controlsConfigNew = {};\n controlsConfigNew[controlName] = controlsConfig[controlName];\n controlsConfig = controlsConfigNew;\n }\n let i = 0;\n Object.keys( controlsConfig ).forEach( function( key ) {\n let data = controlsConfig[key];\n data.controlKey = key;\n\n // get necessary wp js template\n let tmplControlTemplate = wp.template( 'wptb-' + data.type + '-control' );\n\n data.elemContainer = elementContainerClass;\n data.elementControlTargetUnicClass = 'wptb-el-' + elementOptionClassIndic + '-' + data.controlKey;\n Object.keys(data).map(k => {\n if (Object.prototype.hasOwnProperty.call(data, k) && data[k] === 'control_param_calculate_value') {\n data[k] = WPTB_Helper.controlParamCalculateValue(data.elementControlTargetUnicClass, k);\n }\n });\n let controlTemplate = tmplControlTemplate( data );\n if( 'appearDependOnControl' in data ) {\n if( Array.isArray( data.appearDependOnControl ) ) {\n controlappearDependOnControl.push( [data.appearDependOnControl, data.elementControlTargetUnicClass] );\n }\n }\n\n if('valueDependOnControl' in data && !valueDependOnControl && !targetControlElementClass) {\n let valueDependOnControlCorrect = '';\n if(data.valueDependOnControlCorrect) valueDependOnControlCorrect = data.valueDependOnControlCorrect;\n controlValueDependOnControl.push([data.valueDependOnControl, data.elementControlTargetUnicClass, valueDependOnControlCorrect]);\n }\n\n function elementOptionsContainerInvolvedGet(elementOptionsGroupId, elementOptionsContainerInvolved) {\n if(!elementOptionsContainerInvolved[elementOptionsGroupId]){\n let elementOptionsContainer = document.createElement( 'div' );\n elementOptionsContainer.classList.add( 'wptb-element-options', 'wptb-options-' + infArr[1] );\n document.getElementById( elementOptionsGroupId ).appendChild(elementOptionsContainer);\n elementOptionsContainerInvolved[elementOptionsGroupId] = elementOptionsContainer;\n }\n\n return elementOptionsContainerInvolved[elementOptionsGroupId];\n }\n\n if(elementOptionsGroupIdsInvolved.indexOf(data.elementOptionsGroupId) == -1 && !controlName) {\n elementOptionsGroupIdsInvolved.push(data.elementOptionsGroupId);\n // clear elements from options group\n //document.getElementById( 'element-options-group' ).innerHTML = '';\n elementOptionsGroup = document.getElementById(data.elementOptionsGroupId);\n let elementOptionsGroupChildren = [...elementOptionsGroup.children];\n for( let i = 0; i < elementOptionsGroupChildren.length; i++ ) {\n elementOptionsGroup.removeChild( elementOptionsGroupChildren[i] );\n }\n elementOptionsGroupInvolved[data.elementOptionsGroupId] = elementOptionsGroup;\n }\n\n controlElementParent = elementOptionsGroupInvolved[data.elementOptionsGroupId];\n\n if(data.elementOptionsContainerOn === 'true' && !controlName) {\n controlElementParent = elementOptionsContainerInvolvedGet(data.elementOptionsGroupId, elementOptionsContainerInvolved);\n }\n\n\n if(data.elementOptionContainerOn === 'true') {\n let elementOptionContainer = document.createElement( 'div' );\n elementOptionContainer.classList.add( data.elementOptionClass, 'wptb-settings-items' );\n\n if( data.customClassForContainer ) {\n elementOptionContainer.classList.add( data.customClassForContainer );\n }\n\n if( data.containerAdditionalStyles ) {\n elementOptionContainer.setAttribute( 'style', data.containerAdditionalStyles );\n }\n\n if(targetControlElementClass) {\n let targetControlElement = document.getElementsByClassName( targetControlElementClass );\n if( targetControlElement.length > 0 ) {\n targetControlElement = targetControlElement[0];\n let controlContainerElem = WPTB_Helper.findAncestor(targetControlElement, 'wptb-element-option');\n\n if (controlContainerElem) {\n let controlContainerElemParent = controlContainerElem.parentNode;\n controlContainerElemParent.insertBefore(elementOptionContainer, controlContainerElem);\n controlContainerElemParent.removeChild(controlContainerElem);\n }\n }\n } else {\n controlElementParent.appendChild( elementOptionContainer );\n }\n controlElementParent = elementOptionContainer;\n }\n controlElementParent.innerHTML = controlElementParent.innerHTML + controlTemplate;\n\n let helperJavascriptElem = controlElementParent.getElementsByTagName( 'wptb-template-script' );\n if( helperJavascriptElem.length > 0 ) {\n helperJavascriptElem = helperJavascriptElem[0];\n let helperJavascriptCode = helperJavascriptElem.innerText;\n controlElementParent.removeChild( helperJavascriptElem );\n let script = document.createElement( 'script' );\n script.setAttribute( 'type', 'text/javascript' );\n script.setAttribute('id', kind + '-' + data.controlKey);\n script.innerHTML = helperJavascriptCode.replace(/\\r|\\n|\\t/g, '').trim();\n if(!controlScriptsObj[data.elementOptionsGroupId] || !Array.isArray(controlScriptsObj[data.elementOptionsGroupId])) {\n controlScriptsObj[data.elementOptionsGroupId] = [];\n }\n controlScriptsObj[data.elementOptionsGroupId].push( script );\n }\n\n i++;\n });\n\n element.optionsGroupIds = elementOptionsGroupIdsInvolved;\n\n Object.keys( controlScriptsObj ).forEach( function( elementOptionsGroupId ) {\n if(!targetControlElementClass) {\n elementOptionsScriptsContainer = document.createElement( 'div' );\n elementOptionsScriptsContainer.classList.add( 'wptb-element-options-scripts', 'wptb-options-' + infArr[1] );\n elementOptionsGroupInvolved[elementOptionsGroupId].appendChild(elementOptionsScriptsContainer);\n }\n\n let controlScriptsArr = controlScriptsObj[elementOptionsGroupId];\n if( controlScriptsArr.length > 0 ) {\n for( let i = 0; i < controlScriptsArr.length; i++ ) {\n if(targetControlElementClass) {\n let id = kind + '-' + controlName;\n let script = document.getElementById(id);\n elementOptionsScriptsContainer = script.parentNode;\n elementOptionsScriptsContainer.insertBefore(controlScriptsArr[i], script);\n elementOptionsScriptsContainer.removeChild(script);\n } else {\n elementOptionsScriptsContainer.appendChild(controlScriptsArr[i]);\n }\n }\n }\n });\n\n // run the scripts of controls\n \n // run appearDependOnControl function\n for ( let i = 0; i < controlappearDependOnControl.length; i++ ) {\n WPTB_Helper.appearDependOnControl( controlappearDependOnControl[i][0], controlappearDependOnControl[i][1] );\n }\n\n WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', element );\n // run valueDependOnControl function\n for (let i = 0; i < controlValueDependOnControl.length; i++) {\n WPTB_Helper.valueDependOnControl(controlValueDependOnControl[i][0], controlValueDependOnControl[i][1], controlValueDependOnControl[i][2], kind, element);\n }\n\n },\n\n /**\n *\n * @param unicClass\n * @param controlKey\n * @param key\n * @returns {*}\n */\n controlParamCalculateValue: function(unicClass, key) {\n let unicClassP = WPTB_Helper.replaceAll(unicClass, '-', '_');\n if (window['paramCalculateValue_' + unicClassP + '_' + key] && typeof (window['paramCalculateValue_' + unicClassP + '_' + key]) === \"function\") {\n return window['paramCalculateValue_' + unicClassP + '_' + key]();\n }\n },\n\n controlParamCalculateValueCreateFunction: function(element, controlKey, key, handlerFunction) {\n const infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n const unicClass = 'wptb-el-' + infArr[1] + '-' + controlKey;\n let unicClassP = WPTB_Helper.replaceAll(unicClass, '-', '_');\n window['paramCalculateValue_' + unicClassP + '_' + key] = function () {\n return handlerFunction(element);\n };\n },\n\n /**\n * function for create, update css for element\n *\n * @param elementContainer\n * @param selector\n * @param cssName\n * @param cssValue\n */\n managerExternalCssStyles: function( elementContainer, selector, cssName, cssValue ) {\n let infArr = elementContainer.match( /wptb-element-main(.+)-(\\d+)/i );\n if( ! infArr || ! Array.isArray( infArr ) ) {\n let table = document.getElementsByClassName( 'wptb-preview-table' );\n\n if( table.length > 0 ) {\n table = table[0];\n\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n selector = '.' + infArr[0] + ' ' + selector;\n }\n }\n }\n\n let head = document.head;\n if( head ) {\n let cssForThisElement = head.querySelector( '#styles-' + elementContainer );\n if( cssForThisElement ) {\n let cssText = cssForThisElement.innerHTML;\n if( cssText ) {\n let cssTextArrFirst = cssText.split( '}' );\n cssTextArrFirst.pop();\n let selectorExists = false;\n for( let i = 0; i < cssTextArrFirst.length; i++ ) {\n let cssTextArrSecond = cssTextArrFirst[i].split( '{' );\n if( cssTextArrSecond[0] === selector ) {\n let cssTextArrThird = cssTextArrSecond[1].split( ';' );\n cssTextArrThird.pop();\n let cssNameExists = false;\n for( let j = 0; j < cssTextArrThird.length; j++ ) {\n let cssTextArrFourth = cssTextArrThird[j].split( ':' );\n if( cssTextArrFourth[0] === cssName ) {\n if( cssValue ) {\n cssTextArrThird[j] = cssName + ':' + cssValue;\n } else {\n cssTextArrThird.splice( j, 1 );\n }\n\n cssTextArrSecond[1] = cssTextArrThird.join( ';' ) ? cssTextArrThird.join( ';' ) + ';' : '';\n cssNameExists = true;\n break;\n }\n }\n if( ! cssNameExists ) {\n if( cssValue ) {\n cssTextArrSecond[1] += cssName + ':' + cssValue + ';';\n }\n }\n if( cssTextArrSecond[1] ) {\n cssTextArrFirst[i] = cssTextArrSecond[0] + '{' + cssTextArrSecond[1]\n } else {\n cssTextArrFirst.splice( i, 1 );\n }\n if( cssTextArrFirst.join( '}' ) ) {\n cssForThisElement.innerHTML = cssTextArrFirst.join( '}' ) + '}';\n } else {\n head.removeChild( cssForThisElement );\n }\n\n selectorExists = true;\n break;\n }\n }\n\n if( ! selectorExists ) {\n if( cssValue ) {\n cssForThisElement.innerHTML = cssText + selector + '{' + cssName + ':' + cssValue + ';}';\n } else {\n cssForThisElement.innerHTML = cssText;\n }\n }\n } else {\n if( cssValue ) {\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\n } else {\n head.removeChild( cssForThisElement );\n }\n }\n } else {\n if( cssValue ) {\n let cssForThisElement = document.createElement( 'style' );\n cssForThisElement.setAttribute( 'id', 'styles-' + elementContainer );\n cssForThisElement.classList.add( 'styles-wptb-elements' );\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\n head.appendChild( cssForThisElement );\n }\n }\n }\n },\n /**\n *\n * Register section parts for sidebar\n *\n * @param {array} sections an array of section names\n */\n registerSections(sections) {\n this.sections = {};\n this.currentSection = '';\n if (!Array.isArray(sections)) {\n sections = [sections];\n }\n\n sections.map(s => {\n const sectionElement = document.querySelector(`[data-wptb-section=${s}]`);\n if (sectionElement) {\n this.sections[s] = sectionElement;\n }\n })\n },\n /**\n * Activate a registered section and deactivates others\n *\n * @param {string} sectionDataId section name to be activated\n * @param {string} displayType display type override for section to be used in its display style property\n */\n activateSection(sectionDataId, displayType = 'block') {\n this.currentSection=sectionDataId;\n this.triggerSectionEvent(sectionDataId);\n Object.keys(this.sections).map(k => {\n if (Object.prototype.hasOwnProperty.call(this.sections, k)) {\n const visibility = sectionDataId === k ? displayType : 'none';\n this.sections[k].style = `display: ${visibility} !important`;\n }\n })\n },\n /**\n * Get id of current active section\n *\n * @returns {string} active section i\n */\n getCurrentSection(){\n return this.currentSection;\n },\n /**\n * Get current section from search parameter 'wptb-builder-section' of window location\n */\n getSectionFromUrl(){\n const parsedUrl = new URL(window.location.href);\n const urlSection = parsedUrl.searchParams.get('wptb-builder-section');\n if(urlSection){\n if(Object.keys(this.sections).some(key => key===urlSection)){\n this.activateSection(urlSection);\n }\n }\n },\n /**\n * Set up related buttons and links to trigger certain elements\n */\n setupSectionButtons() {\n const sectionButtons = Array.from( document.querySelectorAll('[data-wptb-section-button'));\n const vm = this;\n\n sectionButtons.map(s => {\n const sectionName = s.dataset.wptbSectionButton;\n s.addEventListener('click', function() {\n const displayType = s.dataset.wptbSectionDisplayType;\n vm.activateSection(sectionName, displayType);\n })\n\n document.addEventListener('wptbSectionChanged', (e)=> {\n if(e.detail === sectionName){\n s.classList.remove('disabled');\n s.classList.add('active');\n }else{\n s.classList.remove('active');\n s.classList.add('disabled');\n }\n })\n })\n },\n setupPanelToggleButtons(){\n const $ = jQuery;\n\n $('.wptb-panel-toggle-group').each(function(){\n const vm = $(this);\n $(this).find('.toggle-icon').click(() => {\n vm.find('.wptb-panel-toggle-target').slideToggle();\n vm.toggleClass('wptb-panel-toggle-content');\n })\n })\n },\n /**\n * Trigger a section change event\n *\n * @param {string} sectionName section name\n */\n triggerSectionEvent(sectionName){\n const sectionEvent = new CustomEvent('wptbSectionChanged', {detail: sectionName});\n\n document.dispatchEvent(sectionEvent);\n },\n /**\n * Setup sidebar toggle element\n *\n * @param {string} toggleSelector query selector for drawer toggle element\n */\n setupSidebarToggle(toggleSelector){\n const toggleButton = document.querySelector(toggleSelector);\n if(toggleButton){\n toggleButton.addEventListener('click', (e)=>{\n e.preventDefault();\n document.body.classList.toggle('collapsed');\n })\n }\n },\n // function for deleting all external CSS for the element\n externalCssStylesDelete: function( elementContainerClass ) {\n let head = document.head;\n if( head ) {\n let cssForThisElement = head.querySelector( '#styles-' + elementContainerClass );\n\n if( cssForThisElement ) {\n head.removeChild( cssForThisElement );\n }\n }\n },\n // function for copy all external CSS for the element\n externalCssStylesCopy: function( activeElement, copyElement ) {\n if( activeElement ) {\n let infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n let activeElemClass = infArr[0];\n\n let head = document.head;\n if( head ) {\n let cssForActiveElement = head.querySelector( '#styles-' + activeElemClass );\n\n if( cssForActiveElement ) {\n let cssForNewElement = cssForActiveElement.cloneNode( true );\n\n cssForNewElement.removeAttribute( 'id', 'styles-' + activeElemClass );\n\n let infArrCopyEl = copyElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArrCopyEl && Array.isArray( infArrCopyEl ) ) {\n cssForNewElement.setAttribute( 'id', 'styles-' + infArrCopyEl[0] );\n let cssForActiveElementInnerHTML = cssForActiveElement.innerHTML;\n let cssForNewElementInnerHTML = WPTB_Helper.replaceAll( cssForActiveElementInnerHTML, activeElemClass, infArrCopyEl[0] );\n cssForNewElement.innerHTML = cssForNewElementInnerHTML;\n head.appendChild( cssForNewElement );\n }\n }\n }\n }\n }\n },\n // function for convertation elements stiles in json\n elementsStylesConvertToObject: function() {\n let head = document.head;\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\n let stylesObj = {};\n for( let i = 0; i < stylesElements.length; i++ ) {\n let styleElemId = stylesElements[i].getAttribute( 'id' );\n if( styleElemId && stylesElements[i].innerHTML ) {\n stylesObj[styleElemId] = stylesElements[i].innerHTML;\n }\n }\n\n if( Object.keys( stylesObj ).length != 0 ) {\n return JSON.stringify( stylesObj );\n }\n return '';\n },\n // function for set scc styles tags to head\n elementsStylesSetFromObject: function( jsonObject ) {\n let head = document.head;\n if( head ) {\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\n if( stylesElements.length > 0 ) {\n stylesElements = [...stylesElements];\n for( let i = 0; i < stylesElements.length; i++ ) {\n head.removeChild( stylesElements[i] );\n }\n }\n if( jsonObject ) {\n let stylesObj = JSON.parse( jsonObject );\n if( Object.keys( stylesObj ).length != 0 ) {\n Object.keys( stylesObj ).forEach( function( key ) {\n let cssText = stylesObj[key];\n let styleCss = document.createElement( 'style' );\n styleCss.setAttribute( 'id', key );\n styleCss.classList.add( 'styles-wptb-elements' );\n styleCss.innerHTML = cssText;\n head.appendChild( styleCss );\n });\n }\n }\n }\n },\n // function for table saving\n saveTable: function( event, startSaving, previewSaving ) {\n if( ! previewSaving && ! startSaving ) {\n if( ( ! event.target.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) ||\n window.wptbTableStateNumberShow == event.target.dataset.wptbTableStateNumberSave ) {\n //return;\n }\n }\n\n if( ! previewSaving ) {\n let bar = document.querySelector( '.wptb-edit-bar' );\n if ( bar && bar.classList.contains( 'visible' ) ) {\n let table = document.getElementsByClassName( 'wptb-preview-table' )[0];\n WPTB_Helper.toggleTableEditMode();\n }\n }\n\n let http = new XMLHttpRequest(),\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=save_table\",\n t = document.getElementById( 'wptb-setup-name' ).value.trim(),\n messagingArea,\n code,\n datas;\n\n code = document.getElementsByClassName( 'wptb-preview-table' );\n\n let postId;\n if (( rs = WPTB_Helper.detectMode() ) || ( rs = document.wptbId )) {\n postId = rs;\n }\n let paramIdsNecessaryChange = false;\n if( code.length > 0 ) {\n code = code[0];\n let codeClone = code.cloneNode( true );\n if( postId ) {\n if( codeClone.classList.contains( 'wptb-element-main-table_setting-startedid-0' ) ) {\n codeClone.classList.remove( 'wptb-element-main-table_setting-startedid-0' );\n codeClone.classList.add( 'wptb-element-main-table_setting-' + postId );\n let wptbTableSetup = document.querySelector('.wptb-table-setup');\n if(wptbTableSetup) {\n wptbTableSetup.innerHTML = '';\n wptbTableSetup.appendChild(codeClone);\n WPTB_Table();\n }\n paramIdsNecessaryChange = true;\n }\n }\n codeClone.columns = code.columns;\n code = WPTB_Stringifier( codeClone );\n code = code.outerHTML;\n } else {\n code = '';\n }\n\n if( ! previewSaving ) {\n datas = '';\n let datas_containers = document.getElementsByClassName( 'wptb-element-datas' );\n\n if( datas_containers.length > 0 ) {\n if( datas_containers[0].innerHTML ) {\n datas = datas_containers[0].innerHTML;\n\n if( paramIdsNecessaryChange ) {\n datas = WPTB_Helper.replaceAll( datas, 'tmpl-wptb-el-datas-main-table_setting-startedid-0',\n 'tmpl-wptb-el-datas-main-table_setting-' + postId );\n\n datas = WPTB_Helper.replaceAll( datas, 'data-wptb-el-main-table_setting-startedid-0',\n 'data-wptb-el-main-table_setting-' + postId );\n }\n }\n }\n }\n\n let styleObjJson = WPTB_Helper.elementsStylesConvertToObject();\n if( paramIdsNecessaryChange ) {\n styleObjJson = WPTB_Helper.replaceAll( styleObjJson, '.wptb-element-main-table_setting-startedid-0',\n '.wptb-element-main-table_setting-' + postId );\n }\n\n if ( t === '' && code === '' ) {\n let messagingAreaText = '';\n if( t === '' ) messagingAreaText += 'You must assign a name to the table before saving it.</br>';\n if( code === '' ) messagingAreaText += 'Table wasn\\'t created';\n messagingArea = document.getElementById( 'wptb-messaging-area' );\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Error: ' + messagingAreaText + '</div>';\n messagingArea.classList.add( 'wptb-warning' );\n setTimeout(function () {\n messagingArea.removeChild( messagingArea.firstChild );\n }, 4000 );\n return;\n }\n\n let params = {\n title: t,\n content: code,\n elements_datas: datas,\n elements_styles: styleObjJson,\n security_code: wptb_admin_object.security_code\n };\n\n\n if( previewSaving ) {\n params.preview_saving = previewSaving;\n }\n\n if ( postId ) {\n params.id = postId;\n }\n params = JSON.stringify( params );\n\n http.open('POST', url, true);\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\n\n http.onreadystatechange = function ( action ) {\n if ( this.readyState == 4 && this.status == 200 ) {\n var data = JSON.parse( http.responseText );\n messagingArea = document.getElementById( 'wptb-messaging-area' );\n\n if ( data[0] == 'saved' ) {\n let builderPageUrl = document.location.href.replace( '#', '' );\n let regex = new RegExp( '&table=(.+)', \"i\" );\n builderPageUrl = builderPageUrl.replace( regex, '' );\n window.history.pushState( null, null, builderPageUrl + '&table=' + data[1] );\n\n WPTB_Helper.saveTable( event, true );\n return;\n } else if( data[0] == 'edited' && startSaving ) {\n document.wptbId = data[1];\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully saved.</div>';\n document.getElementsByClassName( 'wptb-embed-btn' )[0].classList.remove( 'wptb-button-disable' );\n document.getElementById( 'wptb-embed-shortcode' ).value = '[wptb id=' + data[1] + ']';\n let wptbPreviewTable = document.querySelector( '.wptb-preview-table' );\n let wptbPreviewBtn = document.getElementsByClassName( 'wptb-preview-btn' );\n if( wptbPreviewBtn.length > 0 ) {\n wptbPreviewBtn = wptbPreviewBtn[0];\n wptbPreviewBtn.classList.remove( 'wptb-button-disable' );\n let wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;\n wptbPreviewBtnHref = wptbPreviewBtnHref.replace( 'empty', data[1] );\n wptbPreviewBtn.setAttribute( 'href', wptbPreviewBtnHref );\n }\n\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else if( data[0] == 'edited' ) {\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully updated.</div>';\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\n\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else if( data[0] == 'preview_edited' ) {\n return;\n } else {\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Safety problems</div>';\n }\n messagingArea.classList.add( 'wptb-success' );\n setTimeout( function () {\n messagingArea.removeChild( messagingArea.firstChild );\n }, 4000 );\n }\n }\n http.send( params );\n },\n //\n clickOnFreeSpace: function() {\n // if current active section is responsive menu, ignore this functionality\n if(this.getCurrentSection() === 'table_responsive_menu'){\n return;\n }\n\n let cellModeBackground = document.querySelector( '#wptb-cell_mode_background' );\n if( cellModeBackground && cellModeBackground.classList.contains( 'visible' ) ) {\n return;\n }\n // document.getElementsByClassName( 'wptb-elements-container' )[0].style.display = 'table';\n // document.getElementsByClassName( 'wptb-settings-section' )[0].style.display = 'block';\n // document.getElementById( 'element-options-group' ).style.display = 'none';\n this.activateSection('elements');\n\n let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\n if( wpcdFixedToolbar.hasAttribute( 'data-toolbar-active-id' ) ) {\n document.getElementById( wpcdFixedToolbar.getAttribute( 'data-toolbar-active-id' ) ).classList.remove( 'toolbar-active' );\n }\n let element = document.querySelector( '.wptb-preview-table' );\n if( element ) {\n WPTB_Helper.elementOptionsSet( 'table_setting', element );\n }\n },\n\n /*\n * function for sending of element ajax request\n */\n elementAjax: function( dataAjaxData, element ) {\n let http = new XMLHttpRequest(),\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=wptb_element_ajax\";\n let element_name;\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n element_name = infArr[1];\n }\n\n let params = {\n element_ajax_data: dataAjaxData,\n element_name: element_name,\n security_code: wptb_admin_object.security_code\n };\n params = JSON.stringify( params );\n\n http.open( 'POST', url, true );\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\n\n http.onreadystatechange = function ( action ) {\n if ( this.readyState == 4 && this.status == 200 ) {\n var data = JSON.parse( http.responseText );\n let detail;\n if ( data && Array.isArray( data ) && data[0] == 'element_ajax_responce' ) {\n detail = {value: data[1]};\n } else {\n detail = '';\n }\n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-element:ajax-response', element, detail );\n }\n }\n http.send( params );\n },\n\n /*\n * This just toggles visibility of cell edit bar, and toggles\n * cell selecting mode.\n */\n toggleTableEditMode: function ( close = false ) {\n let bar = document.getElementsByClassName('wptb-edit-bar'),\n cellModeBackground = document.getElementById('wptb-cell_mode_background'),\n leftScrollPanelCurtain = document.getElementById('wptb-left-scroll-panel-curtain'),\n leftScrollPanelCellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');\n if (wptbPreviewTable.length > 0) {\n wptbPreviewTable = wptbPreviewTable[0];\n }\n\n if ( bar.length > 0 ) {\n let toggleEditMode = '';\n for ( let i = 0; i < bar.length; i++ ) {\n if ( bar[i].classList.contains( 'visible' ) ) {\n document.select.deactivateMultipleSelectMode();\n bar[i].classList.remove( 'visible' );\n cellModeBackground.classList.remove( 'visible' );\n leftScrollPanelCurtain.classList.remove( 'visible' );\n leftScrollPanelCellSettings.classList.remove( 'visible' );\n wptbPreviewTable.parentNode.classList.remove( 'wptb-preview-table-manage-cells' );\n let wptbPreviewTableTds = wptbPreviewTable.getElementsByTagName( 'td' );\n if ( wptbPreviewTableTds.length > 0 ) {\n for ( let i = 0; i < wptbPreviewTableTds.length; i++ ) {\n wptbPreviewTableTds[i].classList.remove( 'wptb-highlighted' );\n }\n }\n toggleEditMode = 'closed';\n\n } else if( ! close ) {\n document.select.activateMultipleSelectMode();\n bar[i].classList.add( 'visible' );\n cellModeBackground.classList.add( 'visible' );\n leftScrollPanelCurtain.classList.add( 'visible' );\n wptbPreviewTable.parentNode.classList.add( 'wptb-preview-table-manage-cells' );\n\n toggleEditMode = 'opened';\n }\n }\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-edit-mode/' + toggleEditMode, wptbPreviewTable)\n }\n },\n\n /*\n * checking of dimension of value\n */\n checkingDimensionValue: function ( value, dimension ) {\n value = String( value );\n dimension = String( dimension );\n if( value && dimension ) {\n let searchIndex = value.indexOf( dimension );\n if ( searchIndex != -1 && searchIndex == ( value.length - dimension.length ) ) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n },\n\n /*\n * if dimension is included - checking and if it necessary setting value\n * without dimension - return value\n */\n checkSetGetStyleSizeValue: function( element, styleName, computedStyleName, dimension ) {\n let elemStyleValue = element.style[styleName];\n elemStyleValue = String( elemStyleValue );\n\n if( ! elemStyleValue || dimension ? ! ( WPTB_Helper.checkingDimensionValue( elemStyleValue, dimension ) ) : false ){\n let elementStyles = window.getComputedStyle( element );\n if( computedStyleName && elementStyles.getPropertyValue( computedStyleName ) && dimension ? WPTB_Helper.checkingDimensionValue( elementStyles.getPropertyValue( computedStyleName ), dimension ) : true ) {\n if( ! dimension ) {\n return elementStyles.getPropertyValue( computedStyleName );\n } else {\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\n }\n } else {\n if( ! dimension ) {\n return false;\n } else {\n element.style[styleName] = null;\n }\n }\n } else if( ! dimension ) {\n return elemStyleValue;\n }\n\n return element.style[styleName];\n },\n\n /*\n * function checking that element has the style\n * if this style is present - checking the format color\n * if param set is true - setting style for element (consider hex format of color)\n * if param set is false - getting style from element\n */\n checkSetGetStyleColorValue: function ( element, styleName, computedStyleName, set = false ) {\n let elemStyleColorValue = element.style[styleName];\n\n if( ! elemStyleColorValue ) {\n let elementStyles = window.getComputedStyle( element, null );\n\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\n\n if( set ) {\n elemStyleColorValue = WPTB_Helper.rgbToHex( elementStyles.getPropertyValue( computedStyleName ) );\n if( WPTB_Helper.isHex( elemStyleColorValue ) ) {\n element.style[styleName] = elemStyleColorValue;\n } else {\n element.style[styleName] = '';\n }\n } else {\n return elementStyles.getPropertyValue( computedStyleName );\n }\n\n } else {\n if( set ) {\n element.style[styleName] = '';\n } else {\n return '';\n }\n }\n } else if( ! set ) {\n return elemStyleColorValue;\n }\n },\n\n /*\n * function checking that element has the style\n * if this style is present - checking the format color\n * if param set is true - setting style for element (consider hex format of color)\n * if param set is false - getting style from element\n */\n checkSetGetStyleValue: function ( element, styleName, computedStyleName, set = false ) {\n let elemStyleColorValue = element.style[styleName];\n\n if( ! elemStyleColorValue ) {\n let elementStyles = window.getComputedStyle( element, null );\n\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\n\n if( set ) {\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\n } else {\n return elementStyles.getPropertyValue( computedStyleName );\n }\n\n } else if( ! set ) {\n return '';\n }\n } else if( ! set ) {\n return elemStyleColorValue;\n }\n },\n\n /*\n * get the value of the same elements that have the most count\n */\n getValueMaxCountSameElementsInArray: function ( arr ) {\n if( arr && Array.isArray( arr ) ) {\n let check = {};\n let countEmpty = 0;\n for( let i = 0; i < arr.length; i++ ) {\n if(arr[i]) {\n if( check[arr[i]] ) {\n check[arr[i]]++;\n } else {\n check[arr[i]] = 1;\n }\n } else {\n countEmpty++;\n }\n }\n\n let maxPropName;\n for ( let key in check ) {\n if( ! maxPropName ) {\n maxPropName = key;\n continue;\n } else {\n if( check[maxPropName] < check[key] ) {\n maxPropName = key;\n }\n }\n }\n\n return check[maxPropName] >= countEmpty ? maxPropName : '';\n }\n },\n\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table.\n */\n recalculateIndexes: function ( table ) {\n let trs = table.getElementsByTagName( 'tr' ),\n tds, maxCols = 0, maxColsFull = 0, tdsArr = [];\n\n for ( let i = 0; i < trs.length; i++ ) {\n tds = trs[i].getElementsByTagName( 'td' );\n\n if ( tdsArr[i] == undefined ) {\n tdsArr[i] = [];\n }\n\n let jMainIter = 0;\n for ( let j = 0; j < tds.length; j++ ) {\n if ( tdsArr[i][j] != undefined ) {\n for ( let y = 0; y < 100; y++ ) {\n if ( tdsArr[i][jMainIter] != undefined ) {\n jMainIter++;\n continue;\n }\n tdsArr[i][jMainIter] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n break;\n }\n } else {\n tdsArr[i][j] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n }\n tds[j].dataset.yIndex = i;\n\n if ( tds[j].colSpan > 1 ) {\n for ( let k = 1; k < tds[j].colSpan; k++ ) {\n jMainIter++;\n tdsArr[i][jMainIter] = 'tdDummy';\n }\n }\n\n if ( tds[j].rowSpan > 1 ) {\n for ( let x = 1; x < tds[j].rowSpan; x++ ) {\n if ( tdsArr[i + x] == undefined ) {\n tdsArr[i + x] = [];\n }\n for ( let z = 0; z < tds[j].colSpan; z++ ) {\n tdsArr[i + x][jMainIter - tds[j].colSpan + 1 + z ] = 'tdDummy';\n }\n }\n }\n jMainIter++;\n }\n\n if ( tds.length > maxCols ) {\n maxCols = tds.length;\n }\n\n if( i == 0 ) {\n maxColsFull = jMainIter;\n }\n }\n table.columns = maxCols;\n table.maxCols = maxColsFull;\n },\n\n /**\n * Table Rows colors reinstall\n */\n tableRowsColorsReinstall: function ( table ) {\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n let tableIndex = '';\n if( infArr[infArr.length -1] == '0' ) {\n tableIndex = 'startedid-0';\n } else {\n tableIndex = infArr[infArr.length -1];\n }\n\n let tableHeaderBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableHeaderBackground' );\n if( tableHeaderBackground ) {\n let details = {value: tableHeaderBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableHeaderBackground, details );\n }\n\n let tableEvenRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableEvenRowBackground' );\n if( tableEvenRowBackground ) {\n let details = {value: tableEvenRowBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableEvenRowBackground, details );\n }\n\n let tableOddRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableOddRowBackground' );\n if( tableOddRowBackground ) {\n let details = {value: tableOddRowBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableOddRowBackground, details );\n }\n }\n },\n /**\n * Get parent html element of given type\n *\n * @param {string} parentType type of parent element\n * @param {HTMLElement} el current element\n * @returns {*} html element of type\n */\n getParentOfType: (parentType, el) => {\n if(el.nodeName === parentType.toUpperCase()) {\n return el;\n }\n\n return WPTB_Helper.getParentOfType(parentType , el.parentElement);\n },\n // current relative type of drag element\n // this type is used on differentiating certain elements based on their positioning on table\n dragRelativeType : '',\n /**\n *\n * @param {string} val drag relative type\n */\n setDragRelativeType: function (val){\n this.dragRelativeType = val;\n },\n // get drag relative type\n getDragRelativeType : function(){\n return this.dragRelativeType;\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {string} styleName\n */\n getElementColorStylesHex: function (element, styleName) {\n let color = element.style[styleName];\n color = WPTB_Helper.rgbToHex( color );\n if( ! WPTB_Helper.isHex( color ) ) {\n color = '';\n }\n return color;\n },\n /**\n * Show element controls on adding them to table.\n */\n showControlsOnElementMount(){\n document.addEventListener('element:mounted:dom', function(e){\n e.target.click();\n });\n },\n /**\n * Show elements list menu on left panel on removing element from table\n */\n showElementsListOnRemove(){\n document.addEventListener('element:removed:dom', function(){\n WPTB_Helper.activateSection('elements');\n })\n }\n}\n","var WPTB_Initializer = function () {\n\n const MIN_COLUMNS = 1,\n MIN_ROWS = 1,\n MAX_COLUMNS = 30,\n MAX_ROWS = 30;\n\n var tableGenerator = document.body;\n columnsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[0],\n columnsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[0],\n rowsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[1],\n rowsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[1],\n columnsInput = document.getElementById('wptb-columns-number'),\n rowsInput = document.getElementById('wptb-rows-number');\n \n columnsDecrementButton.onclick = function () {\n if (columnsInput.value > MIN_COLUMNS) {\n columnsInput.value--;\n }\n };\n\n columnsIncrementButton.onclick = function () {\n if (columnsInput.value < MAX_COLUMNS) {\n columnsInput.value++;\n }\n };\n\n rowsDecrementButton.onclick = function () {\n if (rowsInput.value > MIN_ROWS) {\n rowsInput.value--;\n }\n };\n\n rowsIncrementButton.onclick = function () {\n if (rowsInput.value < MAX_ROWS) {\n rowsInput.value++;\n }\n };\n\n document.getElementById( 'wptb-generate-table' ).onclick = function ( ) {\n var columns = document.getElementById('wptb-columns-number').value,\n rows = document.getElementById('wptb-rows-number').value;\n\n //wptbTableStateSaveManager.tableStateClear();\n \n WPTB_Table(columns, rows);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n // register and setup section buttons\n WPTB_Helper.registerSections(['elements', 'table_settings', 'cell_settings', 'options_group' , 'table_responsive_menu']);\n WPTB_Helper.setupSectionButtons();\n\n // activate elements section for startup\n WPTB_Helper.activateSection('elements');\n\n // side bar toggle setup\n // WPTB_Helper.setupSidebarToggle('.wptb-panel-drawer-toggle');\n WPTB_Helper.setupSidebarToggle('.wptb-panel-toggle-section .wptb-panel-drawer-icon');\n\n // setup panel sections that have the ability to be toggled on/off\n WPTB_Helper.setupPanelToggleButtons();\n\n // setup responsive menu both at left and builder panel\n new WptbResponsive('table_responsive_menu', 'wptbResponsiveApp', '.wptb-builder-content');\n\n // get builder section from url parameter for easy switch at page load\n WPTB_Helper.getSectionFromUrl();\n\n // automatically show element controls when dropped to table\n WPTB_Helper.showControlsOnElementMount();\n\n // show elements list menu on left panel on removing elements from table\n WPTB_Helper.showElementsListOnRemove();\n\n};\n","var WPTB_LeftPanel = function () {\r\n\r\n let table = document.getElementsByClassName('wptb-preview-table')[0],\r\n wptbElementButtons = document.getElementsByClassName('wptb-element');\r\n\r\n for (var i = 0; i < wptbElementButtons.length; i++) {\r\n wptbElementButtons[i].ondragstart = function (e) {\r\n e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);\r\n e.dataTransfer.setData( 'wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement );\r\n }\r\n };\r\n \r\n if( table ) {\r\n let wptbTablesEditModeCloseButton = document.getElementsByClassName( 'wptb-table-edit-mode-close' );\r\n for ( let i = 0; i < wptbTablesEditModeCloseButton.length; i++ ) {\r\n wptbTablesEditModeCloseButton[i].onclick = WPTB_Helper.toggleTableEditMode;\r\n }\r\n };\r\n\r\n // this code hides the \"element parameters\" area\r\n // when clicked outside this element and its \"tinymce\" toolbar \r\n let wptbBuilderPanel = document.getElementsByClassName( 'wptb-builder-panel' )[0];\r\n wptbBuilderPanel.onclick = function( e ) {\r\n if( ! e.target.classList.contains( 'wptb-ph-element' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-ph-element' ) && \r\n ! e.target.classList.contains( 'wptb-fixed-toolbar' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-fixed-toolbar' ) ) {\r\n WPTB_Helper.clickOnFreeSpace();\r\n } \r\n };\r\n \r\n let wptbHeader = document.getElementsByClassName( 'wptb-header' );\r\n if( wptbHeader.length > 0 ) wptbHeader = wptbHeader[0];\r\n wptbHeader.onclick = function() {\r\n WPTB_Helper.clickOnFreeSpace();\r\n };\r\n};","var MultipleSelect = function () {\n\n\tvar selectedCells = [],\n\t\tmultipleCellMode = false;\n\n\tthis.activateMultipleSelectMode = function () {\n\t\tselectedCells = [];\n\t\tvar tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\n\t\tfor (var i = 0; i < tds.length; i++) {\n\t\t\ttds[i].classList.remove('wptb-highlighted');\n\t\t}\n\t\tmultipleCellMode = true;\n\t}\n\n\tthis.deactivateMultipleSelectMode = function () {\n\t\tmultipleCellMode = false;\n\t}\n\n\tthis.isActivated = function () {\n\t\treturn multipleCellMode;\n\t}\n\n\tthis.pushSelectedCell = function (cell) {\n\t\tif (!multipleCellMode) {\n\t\t\treturn;\n\t\t}\n\t\tselectedCells.push(cell);\n\t\tcell.classList.add('wptb-highlighted');\n\t};\n\n\tthis.selectedCells = function () {\n\t\treturn selectedCells;\n\t}\n\n\tthis.flushSelectedCells = function () {\n\t\tselectedCells = [];\n\t}\n\n\tthis.getFirst = function () {\n\t\tvar minXIndex = 1000, minYIndex = 1000, first;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (minXIndex >= selectedCells[i].dataset.xIndex\n\t\t\t\t&& minYIndex >= selectedCells[i].dataset.yIndex) {\n\t\t\t\tfirst = selectedCells[i];\n\t\t\t\tminXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tminYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn first;\n\t}\n\n\tthis.getLast = function () {\n\t\tvar maxXIndex = -1, maxYIndex = -1, last;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (maxXIndex <= selectedCells[i].dataset.xIndex\n\t\t\t\t&& maxYIndex <= selectedCells[i].dataset.yIndex) {\n\t\t\t\tlast = selectedCells[i];\n\t\t\t\tmaxXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tmaxYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn last;\n\t}\n\n\tthis.removeAllButFirst = function () {\n\t\tvar td = this.getFirst();\n\t\tfor (var i = 1; i < selectedCells.length; i++) {\n\t\t\tselectedCells[i].classList.add('wptb-fused-cell-' + td.dataset.xIndex + '-' + td.dataset.yIndex);\n\t\t}\n\t}\n\n\treturn this;\n\n};","var WPTB_Parser = function ( code ) {\n let div = document.createElement( 'div' );\n div.innerHTML = code;\n \n let table = div.children[0];\n let columnTitleMobile = [...table.querySelectorAll( '.wptb-column-title-mobile-container' )];\n \n for( let i = 0; i < columnTitleMobile.length; i++ ) {\n let parent = columnTitleMobile[i].parentNode;\n parent.removeChild( columnTitleMobile[i] );\n }\n \n let tds = table.querySelectorAll( 'td' );\n for ( let i = 0; i < tds.length; i++ ) {\n tds[i].classList.add( 'wptb-droppable' );\n tds[i].classList.remove( 'wptb-column-title-mobile-not-elements' );\n }\n \n return table;\n}","// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\nif (!Object.keys) {\n Object.keys = (function () {\n 'use strict';\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\n dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ],\n dontEnumsLength = dontEnums.length;\n\n return function (obj) {\n if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n var result = [], prop, i;\n\n for (prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n return result;\n };\n }());\n}","/**\n * Responsive menu and options class.\n *\n * This class will be called and instanced at table builder menu to add it the responsive menu and its controls.\n *\n * @param {string} sectionName section name\n * @param {string} responsiveWrapperId id for mount point\n * @param {string} mainContainerQuery query to find parent container for responsive menu\n * @throws {Error} will throw an error if mainContainerQuery failed to find any element\n * @constructor\n */\n// eslint-disable-next-line no-unused-vars\nfunction WptbResponsive(sectionName, responsiveWrapperId, mainContainerQuery) {\n\tthis.sectionName = sectionName;\n\tthis.responsiveWrapperId = responsiveWrapperId;\n\tthis.responsiveTable = null;\n\tthis.loaded = false;\n\n\t/**\n\t * Add responsive container to dom.\n\t */\n\tthis.addContainerToDom = () => {\n\t\tconst responsiveContainer = document.querySelector(`#${this.responsiveWrapperId}`);\n\t\tif (!responsiveContainer) {\n\t\t\tconst mainContainer = document.querySelector(mainContainerQuery);\n\n\t\t\t// parent container not found, throw error\n\t\t\tif (!mainContainer) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`[WPTB_Responsive]: no parent container is found with the given query of [${mainContainerQuery}]`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst range = document.createRange();\n\t\t\trange.setStart(mainContainer, 0);\n\n\t\t\tconst responsiveElement = range.createContextualFragment(\n\t\t\t\t`<div class=\"wptb-responsive\" id=\"${this.responsiveWrapperId}\">responsive element</div>`\n\t\t\t);\n\t\t\tmainContainer.appendChild(responsiveElement);\n\t\t\tthis.loaded = true;\n\t\t}\n\n\t\tthis.responsiveTable = document.querySelector(`#${this.responsiveWrapperId}`);\n\t};\n\n\t/**\n\t * Load and make necessary mount preparations for component.\n\t */\n\tthis.load = () => {\n\t\tif (!this.loaded) {\n\t\t\tthis.addContainerToDom();\n\n\t\t\tWPTB_Helper.elementStartScript(this.responsiveTable, 'table_responsive_menu');\n\t\t\tWPTB_Helper.elementOptionsSet('table_responsive_menu', this.responsiveTable);\n\t\t\tWPTB_ControlsManager.callControlScript('ResponsiveTable', this.responsiveWrapperId);\n\t\t}\n\t};\n\n\t/**\n\t * Startup hook for the component.\n\t */\n\tthis.startUp = () => {\n\t\t// event listener for section change events\n\t\tdocument.addEventListener('wptbSectionChanged', (e) => {\n\t\t\tconst tablePreview = document.querySelector('.wptb-preview-table');\n\n\t\t\t// check if activated section is related to responsive and there is a main table already in the view\n\t\t\tif (e.detail === this.sectionName && tablePreview) {\n\t\t\t\tthis.load();\n\t\t\t}\n\t\t});\n\n\t\t// event listener for table ready signal\n\t\tdocument.addEventListener('wptb:table:generated', () => {\n\t\t\t// check current section to be sure that responsive menu is the active one before calling load related scripts\n\t\t\tif (WPTB_Helper.getCurrentSection() === 'table_responsive_menu') {\n\t\t\t\tthis.load();\n\t\t\t}\n\t\t});\n\t};\n\n\tthis.startUp();\n}\n","var WPTB_Settings = function () {\n var elems = document.getElementsByClassName('wptb-element');\n\n for ( var i = 0; i < elems.length; i++ ) {\n elems[i].ondragstart = function ( event ) {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData( 'wptbElement', event.target.dataset.wptbElement );\n event.dataTransfer.setData( 'wptbElIndic-' + event.target.dataset.wptbElement, 'wptbElIndic-' + event.target.dataset.wptbElement );\n\n // set drag relative helper field for future use\n WPTB_Helper.setDragRelativeType(this.dataset.wptbRelativeElements || '');\n }\n elems[i].ondragend = function () {\n WPTB_Helper.elementDragEndClear();\n }\n };\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n wptbUndo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n }\n }\n }\n }\n }\n \n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n \n wptbRedo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n }\n }\n }\n \n }\n }\n \n let shortcodePopupWindow = document.getElementsByClassName( 'wptb-popup-window-modal' )[0];\n document.getElementsByClassName( 'wptb-embed-btn' )[0].onclick = function () {\n if( ! this.classList.contains( 'wptb-button-disable' ) ) {\n shortcodePopupWindow.classList.add( 'wptb-popup-show' );\n }\n }\n \n window.onbeforeunload = function(e) {\n let wptbSaveDisabled = document.getElementsByClassName( 'wptb-save-disabled' );\n if( wptbSaveDisabled.length == 0 ) {\n return true;\n } else {\n return null;\n }\n };\n \n \n document.getElementsByClassName( 'wptb-popup-dark-area' )[0].onclick = function () {\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\n }\n \n document.getElementsByClassName( 'wptb-popup-window-close-icon' )[0].onclick = function () {\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\n }\n \n document.getElementsByClassName( 'wptb-preview-btn' )[0].onclick = function ( event ) {\n if( this.classList.contains( 'wptb-button-disable' ) ) {\n return;\n } \n \n let previewId = Math.floor( Math.random() * 10000 );\n \n var newHref = new URL( event.target.href );\n newHref.searchParams.set( 'preview_id', previewId );\n event.target.href = newHref.toString();\n WPTB_Helper.saveTable( event, false, previewId );\n }\n\n document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function ( event ) {\n if( ! this.classList.contains( 'wptb-save-disabled' ) ) {\n WPTB_Helper.saveTable( event );\n }\n }\n\n let tableTitleField = document.querySelector( '#wptb-setup-name' );\n if( tableTitleField ) {\n tableTitleField.onchange = function () {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n};\n","var WPTB_Stringifier = function ( codeMain ) {\n if ( codeMain ) {\n let code = codeMain.cloneNode( true );\n code.dataset.tableColumns = codeMain.columns;\n code.style.width = null;\n code.style.minWidth = null;\n code.style.maxWidth = null;\n \n let tds = code.getElementsByTagName( 'td' );\n if ( tds.length > 0 ) {\n for ( let i = 0; i < tds.length; i++ ) {\n\n tds[i].removeAttribute( 'data-x-index' );\n tds[i].removeAttribute( 'data-y-index' );\n tds[i].removeAttribute( 'draggable' );\n tds[i].classList.remove( 'wptb-droppable' );\n let infArr = tds[i].className.match( /wptb-element-((.+-)\\d+)/i );\n if(infArr) tds[i].classList.remove(infArr[0]);\n let innerElements = tds[i].getElementsByClassName( 'wptb-ph-element' );\n \n if ( innerElements.length > 0 ) {\n for ( let j = 0; j < innerElements.length; j++ ) {\n \n let mceContentBodys = innerElements[j].querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n \n let dataMceStyle = innerElements[j].querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n \n let contentEditable = innerElements[j].querySelectorAll( '[contenteditable]' );\n if ( contentEditable.length > 0 ) {\n for ( let k = 0; k < contentEditable.length; k++ ) {\n contentEditable[k].removeAttribute( 'contenteditable' );\n }\n }\n \n let spellCheck = innerElements[j].querySelectorAll( '[spellcheck]' );\n if ( spellCheck.length > 0 ) {\n for ( let k = 0; k < spellCheck.length; k++ ) {\n spellCheck[k].removeAttribute( 'spellcheck' );\n }\n }\n \n let mceIds = innerElements[j].querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n \n let wptbActions = innerElements[j].querySelectorAll( '.wptb-actions' );\n let wptbActionsLength = wptbActions.length;\n while ( wptbActionsLength > 0 ) {\n if( wptbActions[0] && wptbActions[0].parentNode ) {\n wptbActions[0].parentNode.removeChild( wptbActions[0] );\n wptbActionsLength--;\n } else {\n break;\n }\n \n } \n \n let dataMceBogus = innerElements[j].querySelectorAll( '[data-mce-bogus]' );\n if( dataMceBogus.length > 0 ) {\n dataMceBogus = [...dataMceBogus];\n for( let k = 0; k < dataMceBogus.length; k++ ) {\n if( dataMceBogus[k] && dataMceBogus[k].parentNode ) {\n dataMceBogus[k].parentNode.removeChild( dataMceBogus[k] );\n }\n }\n }\n }\n }\n\n // TODO dataTitleColumnSet\n // if( tds[i].hasAttribute( 'data-wptb-title-column' ) ) {\n // let columnNameDivContainer = document.createElement( 'div' ),\n // columnNameDiv = document.createElement( 'div' );\n // columnNameDivContainer.classList.add( 'wptb-column-title-mobile-container' );\n // columnNameDiv.classList.add( 'wptb-column-title-mobile' );\n // columnNameDiv.dataset.wptbTitleColumn = tds[i].dataset.wptbTitleColumn;\n // columnNameDiv.setAttribute( 'style', 'font-size:' + tds[i].dataset.wptbTitleColumnFontSize + '; \\n\\\n // color:' + tds[i].dataset.wptbTitleColumnColor + '; background-color:' + tds[i].dataset.wptbTitleBackgroundColor + '; text-align:' + tds[i].dataset.wptbTitleAlign + ';' );\n // columnNameDiv.style.padding = tds[i].style.padding;\n // if( tds[i].children.length == 0 ) {\n // tds[i].classList.add( 'wptb-column-title-mobile-not-elements' );\n // }\n // columnNameDivContainer.appendChild( columnNameDiv );\n // tds[i].insertBefore( columnNameDivContainer, tds[i].firstChild );\n // }\n }\n }\n \n return code;\n }\n}","var array = [], WPTB_Table = function ( columns, rows, wptb_preview_table ) {\n\n /* The members of the class */\n var settings = document.getElementsByClassName('wptb-settings-items'),\n wptbTableSetup = document.getElementsByClassName(\"wptb-table-setup\")[0],\n table, row, cell,\n maxAmountOfCells,\n maxAmountOfRows;\n\n //HERE ARE THE PRIVATE FUNCTIONS\n /*\n * This function toggles buttons visibility in cell edit mode\n * (according to the amount of currently selected cells), and\n * highlights visually the clicked cell if it is not highlighted, or\n * removes highlight if clicked cell is already highlighted. \n * It too toggles the bits of our abstract representation.\n * @param Event this is the event instance of the click performed over a cell.\n */\n var mark = function ( event ) {\n let thisElem = event.currentTarget;\n let rs = thisElem.rowSpan,\n cs = thisElem.colSpan,\n noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n position = getCoords(thisElem),\n row = position[0],\n column = position[1];\n if ( ! document.select.isActivated() ) {\n return;\n }\n if (thisElem.className.match(/wptb-highlighted/)) {\n thisElem.classList.remove('wptb-highlighted');\n for (var i = 0; i < rs; i++) {\n for (var j = 0; j < cs; j++) {\n array[row + i][column + j] = 0;\n }\n }\n } else {\n thisElem.classList.add('wptb-highlighted');\n for (var i = 0; i < rs; i++) {\n for (var j = 0; j < cs; j++) {\n array[row + i][column + j] = 1;\n }\n }\n }\n\n let cellHighlighted = document.getElementsByClassName('wptb-highlighted'),\n markedCells = cellHighlighted.length;\n if (markedCells === 0) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n } else if (markedCells === 1) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.add('visible');\n singleCells[i].removeAttribute('disabled');\n }\n\n cellHighlighted = cellHighlighted[0];\n WPTB_Helper.elementOptionsSet( 'table_cell_setting', cellHighlighted );\n\n let infArr = cellHighlighted.className.match( /wptb-element-((.+-)\\d+)/i );\n\n const controlElemIds = ['cellWidth', 'cellHeight'];\n\n controlElemIds.map(s => {\n let elementControlSizeUnicClass = `wptb-el-${infArr[1]}-${s}`,\n elementControlSizeFixedUnicClass = `wptb-el-${infArr[1]}-${s}Fixed`;\n if(s === 'cellWidth' || s === 'cellHeight') {\n let sizeName = '',\n getSizeFunctionName = '';\n if(s === 'cellWidth') {\n sizeName = 'width';\n getSizeFunctionName = 'getColumnWidth';\n } else if(s === 'cellHeight') {\n sizeName = 'height';\n getSizeFunctionName = 'getRowHeight';\n }\n let size = cellHighlighted.style[sizeName],\n cellSizeInputs = document.querySelectorAll( '.' + elementControlSizeUnicClass ),\n cellSizeFixedInput = document.querySelector( '.' + elementControlSizeFixedUnicClass );\n cellSizeInputs = [...cellSizeInputs];\n\n if(!size && !cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`]) {\n size = WPTB_Helper[getSizeFunctionName](table, cellHighlighted);\n cellSizeInputs.map(s => {\n s.value = size;\n });\n\n cellSizeFixedInput.checked = false;\n } else {\n cellSizeInputs.map(s => {\n if( size ) {\n s.value = parseFloat( size, 10 );\n } else if( cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`] ) {\n s.value = cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`];\n }\n });\n\n cellSizeFixedInput.checked = true;\n }\n }\n });\n\n cellSettings.classList.add( 'visible' );\n } else {\n for (var i = 0; i < multipleCells.length; i++) {\n if (table.isSquare(array)) {\n multipleCells[i].classList.add('visible');\n multipleCells[i].removeAttribute('disabled');\n } else {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n }\n\n /**\n * empty cell setting\n */\n // let emptySetting = document.\n const infArr = thisElem.className.match(/wptb-element-table_cell_setting-((.+-)\\d+)/i);\n if (infArr && infArr.length > 1) {\n const controlKey = 'emptyCell';\n const settingId = `wptb-el-table_cell_setting-${infArr[1]}-${controlKey}`;\n const settingElem = document.getElementById(settingId);\n if (settingElem) {\n settingElem.querySelector('input[type=\"checkbox\"]').checked = thisElem.classList.contains('wptb-empty')\n }\n }\n \n\n let details = {countMarkedCells:markedCells};\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/cell/mark', thisElem, details);\n };\n\n /* \n * This function fills an array with 1's according to the actual design\n * of HTML table.\n * @returns an array of arrays containing an abstract representation\n * of HTML table.\n * @deprecated\n * */\n\n var realTimeArray = function () {\n var carried = [], tds, cols, matriz = [];\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carried[i] = 0;\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n cols = [];\n\n var tds = table.rows[i].getElementsByTagName('td');\n\n for (items = 0; items < tds.length; items++) {\n\n for (var k = 0; k < tds[items].colSpan; k++) {\n cols.push(1);\n }\n\n if (tds[items].rowSpan > 1) {\n for (var k = 0; k < tds[items].colSpan; k++) {\n carried[items + k] = {\n justAssigned: true,\n amount: tds[items].rowSpan\n };\n }\n }\n }\n\n for (var k = 0; k < maxAmountOfCells; k++) {\n if (typeof carried[k] == 'object' && carried[k].amount > 0) {\n carried[k].amount--;\n if (carried[k].justAssigned) {\n carried[k].justAssigned = false;\n } else {\n cols.push(1);\n }\n }\n }\n\n matriz.push(cols);\n\n }\n return matriz;\n };\n\n /*\n * This function gets the number and position of cell spaces in current row that are occuped \n * by upper rowspanned cells.\n * @param number the number of row where we wish to calculate the carried rowspans up to.\n * @return an array with the remaining rowspans in each column.\n */\n var carriedRowspans = function (row) {\n var carried = [], tds, cols;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carried[i] = 0;\n }\n\n if (row == -1) {\n return carried;\n }\n\n for (var i = 0; i <= row; i++) {\n cellsBuffer = table.rows[i].getElementsByTagName('td');\n cellPointer = 0;\n\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (carried[xPosition]) {\n carried[xPosition]--;\n } else {\n celda = cellsBuffer[cellPointer++];\n if (celda.rowSpan > 1) {\n for (k = 0; k < celda.colSpan; k++) {\n carried[xPosition + k] = celda.rowSpan - 1;\n }\n stepsToMove = celda.colSpan;\n } else if (celda.colSpan > 1) {\n stepsToMove = celda.colSpan;\n }\n }\n }\n\n }\n return carried;\n };\n\n /*\n * A helpful function for showing\n * the abstract table in console.\n * @param Array our abstract table.\n */\n var drawTable = function (a) {\n var string = 'DRAWING TABLE:\\n';\n for (var i = 0; i < a.length; i++) {\n\n for (var j = 0; j < a[i].length; j++) {\n string += ' ' + a[i][j];\n }\n string += '\\n';\n }\n table.isSquare(a);\n };\n\n /*\n * It resets all the bits of our abstract representation\n * to 0 and removes the highlighting class of all cells.\n */\n\n var undoSelect = function () {\n let noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n tds = table.getElementsByClassName('wptb-highlighted');\n while (tds.length) {\n tds[0].classList.remove('wptb-highlighted');\n }\n cellSettings.classList.remove( 'visible' );\n for (let i = 0; i < array.length; i++) {\n for (let j = 0; j < array[i].length; j++) {\n array[i][j] = 0;\n }\n }\n for (let i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (let i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (let i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/undo-select/active', table);\n };\n\n /*\n * This fills the abstract representation of our table with \n * zeros, at the start. the max amount of cells is the greatest sum\n * of all colspans for row.\n */\n\n var fillTableArray = function () {\n var colspansSums = [], a = [];\n\n //calculate max amount of cells inside a row\n for (var i = 0; i < table.rows.length; i++) {\n var cells = table.rows[i].getElementsByTagName('td'),\n colspanSumInRow = 0;\n for (var j = 0; j < cells.length; j++) {\n colspanSumInRow += cells[j].colSpan;\n }\n colspansSums.push(colspanSumInRow);\n }\n\n maxAmountOfCells = Math.max.apply(null, colspansSums);\n //calculate max rows\n var maxAmountOfRows = table.rows.length;\n\n // fill with zeros from both values\n for (var i = 0; i < maxAmountOfRows; i++) {\n a[i] = [];\n for (var j = 0; j < maxAmountOfCells; j++) {\n a[i].push(0);\n }\n }\n drawTable(a);\n return a;\n };\n\n /*\n * This function gets the sum of all colspans in a row.\n * @param number the number of row to be used as reference.\n */\n var getActualPointsInRow = function (row) {\n var tds = table.rows[row].getElementsByTagName('td'),\n points = 0;\n for (var i = 0; i < tds.length; i++) {\n points += tds[i].colSpan;\n }\n return points;\n }\n\n /*\n * This function gets us the exact coordinates of\n * an exact cell, in a more reliable way than xIndex and yIndex,\n * these last ones were meant to be used for getting the cell trough them.\n * @param DOMElement the cell to get the coordinates.\n */\n var getCoords = function (search) {\n var skipInCols = [], cell;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n skipInCols[i] = 0;\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var cellsBuffer = table.rows[i].getElementsByTagName('td');\n cellPointer = 0;\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (skipInCols[xPosition]) {\n skipInCols[xPosition]--;\n } else {\n var td = cellsBuffer[cellPointer++];\n if (td == search) {\n return [i, xPosition];\n }\n if (td.rowSpan > 1) {\n for ( let k = 0; k < td.colSpan; k++ ) {\n skipInCols[xPosition + k] = td.rowSpan - 1;\n }\n stepsToMove = td.colSpan;\n } else if (td.colSpan > 1) {\n stepsToMove = td.colSpan;\n }\n }\n }\n }\n };\n\n jQuery('#wptb-table-border-color').val('');\n jQuery('#wptb-table-padding-number,#wptb-table-padding-slider').val('15');\n\n if ( columns || rows ) {\n //END OF PRIVATE FUNCTIONS\n for (var i = 0; i < settings.length; i++) {\n if (settings[i].id !== 'wptb-apply-inner-border') {\n settings[i].classList.add('visible');\n }\n }\n\n //Create a HTML Table element.\n table = document.createElement( 'table' );\n table.classList.add( 'wptb-preview-table', 'wptb-element-main-table_setting-startedid-0' );\n table.style.border = '0px solid';\n table.dataset.reconstraction = 1;\n //table.dataset.wptbAdaptiveTable = 1;\n //Add the data rows.\n for (var i = 0; i < rows; i++) {\n\n row = table.insertRow(-1);\n row.classList.add( 'wptb-row' );\n\n for (var j = 0; j < columns; j++) {\n cell = new WPTB_Cell(mark);\n cell.setCoords(i, j);\n cell.getDOMElement().style.borderWidth = '1px';\n row.appendChild(cell.getDOMElement());\n }\n }\n } else {\n if( ! wptb_preview_table ) wptb_preview_table = document.querySelector( '.wptb-preview-table' );\n\n if ( wptb_preview_table ) {\n table = wptb_preview_table;\n\n let cells = table.getElementsByTagName('td');\n\n if (cells.length > 0) {\n for (let i = 0; i < cells.length; i++) {\n WPTB_Cell(mark, cells[i]);\n }\n }\n } else {\n return;\n }\n }\n\n /**\n * this method run \"mark\" method of WPTB_Table object\n * @param event\n */\n table.mark = (event) => {\n mark(event);\n }\n\n /**\n * this method run \"undoSelect\" method of WPTB_Table object\n * @param event\n */\n table.undoSelect = () => {\n undoSelect();\n }\n\n /**\n * method for set value for maxAmountOfCells\n * @param value\n */\n table.setMaxAmountOfCells = (value) => {\n maxAmountOfCells = value;\n }\n\n /**\n * this method return maxAmountOfCells value\n * @returns {*}\n */\n table.getMaxAmountOfCells = () => {\n return maxAmountOfCells;\n }\n\n /**\n * this method run \"fillTableArray\" method of WPTB_Table object\n * @returns {[]}\n */\n table.fillTableArray = () => {\n return fillTableArray();\n }\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table. \n */\n\n table.recalculateIndexes = function () {\n WPTB_Helper.recalculateIndexes( this );\n }\n \n table.addColumnWidth = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataXIndex = highlighted[k].dataset.xIndex;\n if( dataXIndex ) {\n function tableTdsFor( dataXIndex, colspan ) {\n let tableRows = table.rows;\n let widthIsSet = false;\n let arrayTdsFromPreviousRow = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.xIndex == dataXIndex ) {\n if( value ) {\n if( td.colSpan == colspan ) {\n td.style.width = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n widthIsSet = true;\n } else {\n td.style.width = null;\n td.dataset.wptbFixedWidth = value;\n if( i == tableRows.length - 1 && ! widthIsSet ) {\n tableTdsFor( dataXIndex, colspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.width = null;\n td.removeAttribute( 'data-wptb-fixed-width' );\n } else {\n if( td.dataset.wptbFixedWidth ) {\n if( td.colSpan == colspan ) {\n td.style.width = td.dataset.wptbFixedWidth + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n } \n } else if( td.style.width ) {\n for( let z = 0; z < arrayTdsFromPreviousRow.length; z++ ) {\n arrayTdsFromPreviousRow[z].style.width = td.style.width;\n }\n arrayTdsFromPreviousRow = [];\n } else {\n arrayTdsFromPreviousRow.push( td );\n }\n }\n break;\n } \n }\n }\n }\n \n tableTdsFor( dataXIndex, 1 );\n }\n }\n \n table.tdDefaultWidth();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n }\n }\n \n table.tdDefaultWidth = function() {\n let rows = table.rows;\n \n let tableTdsSumMaxWidth = 0;\n let tableTdsSumMaxWidthFixed = 0;\n let tableTdsSumMaxWidthAuto = 0;\n \n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' )[0];\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n \n let arrayCellsWidthFixedHelper = [];\n let arrayCellsWidthAutoHelper = [];\n let tdPaddingCommon = 0;\n let tableTdBorderCommonWidth = 0;\n let cssForTdsWidthAuto = '';\n \n \n let tableFullStyleObj = window.getComputedStyle( table, null );\n let borderLeftWidth = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let borderRightWidth = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderCommon = parseFloat( borderLeftWidth, 10 ) + parseFloat( borderRightWidth, 10 );\n \n for( let i = 0; i < rows.length; i++ ) {\n let tds = rows[i].children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n \n if( ! arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( td.style.width ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] = parseFloat( td.style.width );\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n } else {\n if( ! td.dataset.wptbFixedWidth ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] = table.dataset.wptbTdWidthAuto ? parseFloat( table.dataset.wptbTdWidthAuto, 10 ) : 100;\n td.dataset.wptbCssTdAutoWidth = true;\n }\n }\n \n if( window.getComputedStyle( td, null ) ) {\n let tdStyleObj = window.getComputedStyle( td, null );\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n tdPaddingCommon = parseFloat( tdPaddingLeft, 10 ) + parseFloat( tdPaddingRight, 10 );\n\n let tableTdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tableTdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n tableTdBorderCommonWidth = parseFloat( tableTdBorderLeftWidth, 10 ) + parseFloat( tableTdBorderRightWidth, 10 );\n tableTdBorderCommonWidth = tableTdBorderCommonWidth / 2;\n \n if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n \n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n \n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n }\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( ! td.dataset.wptbFixedWidth ) {\n td.dataset.wptbCssTdAutoWidth = true;\n }\n } else if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n }\n }\n }\n \n for( let i = 0; i < arrayCellsWidthFixedHelper.length; i++ ) {\n if( arrayCellsWidthFixedHelper[i] ) {\n tableTdsSumMaxWidthFixed += arrayCellsWidthFixedHelper[i];\n }\n }\n \n let CellsWidthAutoCount = 0;\n for( let i = 0; i < arrayCellsWidthAutoHelper.length; i++ ) {\n if( arrayCellsWidthAutoHelper[i] ) {\n tableTdsSumMaxWidthAuto += arrayCellsWidthAutoHelper[i];\n CellsWidthAutoCount++;\n }\n }\n \n tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto;\n \n table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;\n if( CellsWidthAutoCount ) {\n table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;\n if( table.mergingСellsHorizontally ) {\n table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed;\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n }\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n table.removeAttribute( 'data-wptb-cells-width-auto-count' );\n }\n \n let styleElementCreate = false;\n let tableTdWidthAuto;\n if( tableTdsSumMaxWidth < wptbTableSetupWidth ) {\n if( CellsWidthAutoCount ) {\n table.style.minWidth = '100%';\n if( table.mergingСellsHorizontally ) {\n table.style.width = 'auto';\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed;\n tableTdWidthAuto = tableTdsWidthAutoCommon / CellsWidthAutoCount;\n tableTdWidthAuto = tableTdWidthAuto - tdPaddingCommon - tableTdBorderCommonWidth;\n styleElementCreate = true;\n } else {\n table.style.width = '100%';\n }\n } else {\n table.style.width = 'auto';\n table.style.minWidth = null;\n table.style.maxWidth = null;\n }\n } else {\n table.style.maxWidth = null;\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\n table.style.width = 'auto';\n tableTdWidthAuto = table.dataset.wptbTdWidthAuto ? table.dataset.wptbTdWidthAuto : '100';\n styleElementCreate = true;\n }\n \n let head = document.head;\n if( head ) {\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAutoOld ) {\n head.removeChild( cssForTdsWidthAutoOld );\n }\n }\n \n if( styleElementCreate ) {\n cssForTdsWidthAuto = document.createElement( 'style' );\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\n cssForTdsWidthAuto.innerHTML = '[data-wptb-css-td-auto-width=true]{width:' + tableTdWidthAuto + 'px}';\n if( head ) {\n head.appendChild( cssForTdsWidthAuto );\n }\n }\n \n if( table.dataset.wptbTableAlignment ) {\n let wptbTableAlignment = table.dataset.wptbTableAlignment;\n\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n if( wptbTableSetupWidth < table.offsetWidth ) {\n table.style.float = null;\n } else {\n if( wptbTableAlignment == 'center' ) {\n table.style.float = null;\n } else {\n table.style.float = wptbTableAlignment;\n }\n }\n\n if( wptbTableAlignment == 'center' ) {\n wptbTableSetup.style.float = null;\n } else {\n wptbTableSetup.style.float = wptbTableAlignment;\n }\n \n if( tableTdWidthAuto && table.dataset.wptbTableContainerMaxWidth && table.offsetWidth < table.dataset.wptbTableContainerMaxWidth ) {\n table.style.width = '100%';\n }\n } else {\n table.style.float = null;\n }\n }\n \n table.addRowHeight = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataYIndex = highlighted[k].dataset.yIndex;\n if( dataYIndex ) {\n function tableTdsFor( dataYIndex, rowspan ) {\n let tableRows = table.rows;\n let heightIsSet = false;\n let arrayTdsPrevious = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.yIndex == dataYIndex ) {\n if( value ) {\n if( td.rowSpan == rowspan ) {\n td.style.height = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n heightIsSet = true;\n continue;\n } else {\n td.style.height = null;\n td.dataset.wptbFixedHeight = value;\n if( j == tds.length - 1 && ! heightIsSet ) {\n tableTdsFor( dataYIndex , rowspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.height = null;\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n } else {\n if( td.dataset.wptbFixedHeight ) {\n if( td.rowSpan = rowspan ) {\n td.style.height = td.dataset.wptbFixedHeight + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n }\n } else if( td.style.height ) {\n for( let z = 0; z < arrayTdsPrevious.length; z++ ) {\n arrayTdsPrevious[z].style.height = td.style.height;\n }\n arrayTdsPrevious = [];\n } else {\n arrayTdsPrevious.push( td );\n }\n }\n } \n }\n }\n }\n \n tableTdsFor( dataYIndex, 1 );\n }\n }\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n }\n }\n \n table.reconstraction = function() {\n let tds = table.getElementsByTagName( 'td' );\n table.mergingСellsHorizontally = false;\n table.mergingCellsVertically = false;\n table.dataset.reconstraction = 1;\n let forBreak = 0;\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].colSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingСellsHorizontally = true;\n forBreak++;\n }\n \n if( tds[i].rowSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingCellsVertically = true;\n forBreak++;\n }\n \n if( forBreak == 2 ) {\n break;\n }\n }\n }\n\n /*\n * As simple as it is: adds a column to the end of table.\n */\n table.addColumnEnd = function () {\n let td,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if (currentTable.length > 0) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if (currentTableTd) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n \n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n \n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\n }\n \n table.rows[i].appendChild(td.getDOMElement());\n array[i].push(0);\n }\n \n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * As simple as it looks: adds a column to the start of table.\n */\n\n table.addColumnStart = function () {\n let td,\n firstCell,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if ( currentTable.length > 0 ) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if ( currentTableTd ) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n \n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\n }\n firstCell = table.rows[i].getElementsByTagName('td')[0];\n if (firstCell) {\n table.rows[i].insertBefore(td.getDOMElement(), firstCell);\n } else {\n table.rows[i].appendChild(td.getDOMElement());\n }\n array[i].push(0);\n }\n\n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Well, not so simple as previous functions.\n * It adds a column after a certain column of reference.\n * @param integer the column number to be used as reference.\n *\tIf empty, then the first highlighted cell is used as reference.\n */\n\n table.addColumnAfter = function (c_pos) {\n let rows = table.rows,\n cell,\n cellStyle,\n pos;\n\n if(c_pos != undefined && typeof c_pos === 'number') {\n pos = c_pos;\n cell = document.querySelector('[data-x-index=\"' + pos + '\"]');\n } else {\n cell = document.querySelector('.wptb-highlighted');\n pos = getCoords(cell)[1];\n }\n\n if(cell) {\n cellStyle = cell.getAttribute('style');\n\n if( maxAmountOfCells - pos - cell.colSpan + 1 == 1 ) {\n table.addColumnEnd();\n } else {\n for(let i = 0; i < rows.length; i++) {\n let tds = rows[i].children;\n for(let j = 0; j < tds.length; j++) {\n if(parseInt(tds[j].dataset.xIndex) <= pos) {\n if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan == pos + cell.colSpan) {\n let td = newTd(cellStyle);\n let nextSib = tds[j].nextSibling;\n if (nextSib) {\n rows[i].insertBefore(td.getDOMElement(), nextSib);\n } else {\n rows[i].appendChild(td.getDOMElement());\n }\n\n break;\n } else if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan > pos + cell.colSpan) {\n tds[j].colSpan++;\n if(tds[j].rowSpan > 1) i += tds[j].rowSpan - 1;\n break;\n }\n } else if(parseInt(tds[j].dataset.xIndex) > pos) {\n let td = newTd(cellStyle);\n rows[i].insertBefore(td.getDOMElement(), tds[j]);\n break;\n }\n }\n }\n\n function newTd(cellStyle) {\n let td = new WPTB_Cell(mark);\n if (cellStyle) {\n td.getDOMElement().setAttribute('style', cellStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n }\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\n return td;\n }\n\n for (var i = 0; i < array.length; i++) {\n array[i].push(0);\n }\n maxAmountOfCells++;\n drawTable(array);\n table.recalculateIndexes();\n table.addColumnWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n };\n\n /*\n * For preventing us to take a lot of time,\n * This is just calling the function addColumnAfter, but\n * using the previous column to current one as reference.\n * @see addColumnAfter\n */\n\n table.addColumnBefore = function () {\n var cell = document.querySelector('.wptb-highlighted'),\n pos = getCoords(cell)[1];\n\n if (pos === 0) {\n table.addColumnStart();\n } else {\n table.addColumnAfter(pos - 1);\n }\n };\n\n /*\n * Luckily, thisfunction is simple, \n * it just add a row to the end of table.\n */\n\n table.addRowToTheEnd = function () {\n let r = table.insertRow(-1),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table');\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n \n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n \n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n \n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /*\n * Yet another simple function, \n * it just add a row to the start of table.\n */\n\n table.addRowToTheStart = function () {\n let r = table.insertRow(0),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n \n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n \n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n \n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /* \n * This function adds a row before the current one.\n * Since the biggest factor of problem is a not-started but ongoing rowspan,\n * the most of the troubles is not here.\n */\n\n table.addRowBefore = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellNew;\n for( let i = row - 1; i >= 0; i-- ) {\n let rowChildren = table.rows[i].children;\n let rowChildrenLength = rowChildren.length;\n if( rowChildrenLength > 0 ) {\n for( let j = 0; j < rowChildrenLength; j++ ) {\n if( rowChildren[j].rowSpan == 1 ) {\n row = i;\n cellNew = true;\n break;\n }\n }\n }\n if ( cellNew ) {\n break;\n }\n }\n\n if (row === 0) {\n table.addRowToTheStart();\n } else {\n table.addRowAfter( row, cellStyle );\n }\n };\n\n /*\n * Well... by the name convention of the previous 3 functions,\n * it's pretty obvious that this functions attaches a new\n * row after highlighted cell row. The greatest obstacle it was\n * the possibility of a TR not having the exact amount of columns\n * occuped by actual node but rowspanned upper cells. For that purpose\n * it was created the function realTimeArray.\n * @see realTimeArray\n */\n\n table.addRowAfter = function ( row, cellStyle ) {\n let cellRowSpan,\n rowAfter,\n aux;\n \n if ( ( row == undefined || typeof row !== 'number' ) && cellStyle == undefined ) {\n let cell = document.querySelector('.wptb-highlighted');\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellRowSpan = cell.rowSpan,\n rowAfter = row + cellRowSpan - 1;\n } else {\n rowAfter = row;\n }\n \n \n let cellsColSpan = 0;\n if ( rowAfter < table.rows.length -1 ) {\n for( let i = 0; i <= rowAfter ; i++ ) {\n let tableRowsIChildren = table.rows[i].children,\n tableRIChildrenLength = tableRowsIChildren.length;\n if( tableRIChildrenLength > 0 ) {\n for( let j = 0; j < tableRIChildrenLength; j++ ) {\n let rowIRowSpan = tableRowsIChildren[j].rowSpan;\n\n if ( rowIRowSpan - 1 + i > rowAfter ) {\n tableRowsIChildren[j].rowSpan++;\n }\n }\n }\n }\n \n let rNext = table.rows[rowAfter + 1],\n rNextChildren = rNext.children,\n rNextChildrenLength = rNextChildren.length;\n \n if( rNextChildrenLength > 0 ) {\n for ( let i = 0; i < rNextChildrenLength; i++ ) {\n cellsColSpan += rNextChildren[i].colSpan;\n }\n }\n } else {\n cellsColSpan = array[0].length;\n }\n \n let r = table.insertRow( rowAfter + 1 );\n r.classList.add( 'wptb-row' );\n \n for ( j = 0; j < cellsColSpan; j++ ) {\n let td = new WPTB_Cell( mark );\n let currentTableTd = table.querySelector('[data-x-index=\"' + j + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild( td.getDOMElement() );\n }\n\n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after');\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This function checks the current selected cells\n * make a rectangular shape.\n * @param Array the abstract table.\n * @return false, if not making a rectangle, or\n *\tArray an array containing number of rows and columns, if selection makes a rectangle.\n */\n\n table.isSquare = function (a) {\n var rowStart = -1,\n columnStart = -1,\n rowEnd = -1,\n columnEnd = -1,\n height,\n width,\n itemsEstimate = 0,\n items = 0;\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n if ( j < columnStart || columnStart == -1 ) {\n columnStart = j;\n }\n if ( i < rowStart || rowStart == -1 ) {\n rowStart = i;\n }\n }\n }\n \n }\n\n for (var i = a.length - 1; i > -1; i--) {\n for (var j = a[i].length - 1; j > -1; j--) {\n if (a[i][j] == 1) {\n if ( j > columnEnd ) {\n columnEnd = j;\n }\n if ( i > rowEnd ) {\n rowEnd = i;\n }\n }\n }\n }\n\n for (var i = rowStart; i < rowEnd; i++) {\n for (var j = columnStart; j < columnEnd; j++) {\n if (a[i][j] == 0 || a[i][j] == undefined) {\n return false;\n }\n }\n }\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n items++;\n }\n }\n }\n\n height = rowEnd - rowStart + 1;\n width = columnEnd - columnStart + 1;\n itemsEstimate = height * width;\n\n if (itemsEstimate !== items) {\n return false;\n }\n return [height, width];\n };\n\n /*\n * This function merges all selected cells.\n * Well, actually sets the colspan and rowspan of first \n * upper left cell in selection and deletes the another selected cells.\n */\n\n table.mergeCells = function () {\n var dimensions = table.isSquare(array),\n rowspan = dimensions[0],\n colspan = dimensions[1],\n first = document.querySelector('.wptb-highlighted'),\n tds = [].slice.call(document.getElementsByClassName('wptb-highlighted'), 1),\n tdsChildrenNew = [];\n\n for (let i = 0; i < tds.length; i++) {\n let tdsInternalElements = tds[i].getElementsByClassName('wptb-ph-element');\n if (tdsInternalElements.length > 0) {\n let tdsIntElemLength = tdsInternalElements.length;\n for (let j = 0; j < tdsIntElemLength; j++) {\n tdsChildrenNew.push(tdsInternalElements[j]);\n }\n }\n let p = tds[i].parentNode;\n p.removeChild(tds[i]);\n }\n if (tdsChildrenNew.length > 0) {\n for (let i = 0; i < tdsChildrenNew.length; i++) {\n first.appendChild(tdsChildrenNew[i]);\n }\n }\n\n first.colSpan = colspan;\n first.rowSpan = rowspan;\n table.recalculateIndexes();\n table.reconstraction();\n let firstWidth = first.style.width;\n let firstDataFixedWidth = first.dataset.wptbFixedWidth;\n if( firstWidth ) {\n table.addColumnWidth( parseFloat( firstWidth, 10 ) );\n } else if( firstDataFixedWidth ) {\n table.addColumnWidth();\n } else {\n table.addColumnWidth( false, true );\n }\n \n let firstHeight = first.style.height;\n let firstDataFixedHeight = first.dataset.wptbFixedHeight;\n if( firstHeight ) {\n table.addRowHeight( parseFloat( firstHeight, 10 ) );\n } else if( firstDataFixedHeight ) {\n table.addRowHeight();\n } else {\n table.addRowHeight( false, true );\n }\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This functions makes the exact inverse as above.\n * It resets colspan and rowspan and appends \n * the same amount in cells to the table.\n * @bug\n */\n\n table.splitCell = function () {\n var cell = document.getElementsByClassName('wptb-highlighted')[0],\n rowspan = cell.rowSpan,\n colspan = cell.colSpan,\n cellStyles = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n thisRow = table.rows[row],\n cellXIndex =cell.dataset.xIndex;\n \n cell.rowSpan = 1;\n cell.colSpan = 1;\n \n for (let i = 1; i < colspan; i++) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().classList.add( 'wptb-highlighted' );\n if ( cell.nextSibling ) {\n thisRow.insertBefore( td.getDOMElement(), cell.nextSibling );\n } else {\n thisRow.appendChild( td.getDOMElement() );\n }\n \n }\n\n if (rowspan > 1) {\n for (let i = 1; i < rowspan; i++) {\n let rowChildInsertBefore = undefined,\n rowNext = table.rows[row + i],\n rowChildren = rowNext.children,\n rowChildrenLength = rowChildren.length;\n \n if ( rowChildrenLength > 0 ) {\n for ( let k = 0; k < rowChildrenLength; k++ ) {\n if ( Number( rowChildren[k].dataset.xIndex ) > Number( cellXIndex ) ) {\n rowChildInsertBefore = rowChildren[k];\n break;\n } \n }\n }\n for ( let j = 0; j < colspan; j++ ) {\n let td = new WPTB_Cell( mark );\n td.getDOMElement().setAttribute( 'style', cellStyles );\n if ( rowChildInsertBefore != undefined ) {\n rowNext.insertBefore( td.getDOMElement(), rowChildInsertBefore );\n } else {\n rowNext.appendChild( td.getDOMElement() );\n }\n }\n }\n }\n\n table.recalculateIndexes();\n table.reconstraction();\n table.addColumnWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Searches for rowspanned cells up to row number meeting it.\n * @param number the number of row where the function\n * must search up to.\n */\n\n table.findRowspannedCells = function (row) {\n var array = [],\n difference;\n actualPoints = getActualPointsInRow(row);\n if (actualPoints === maxAmountOfCells) {\n return [];\n }\n difference = maxAmountOfCells - actualPoints;\n\n for (var i = row - 1; i >= 0 && difference; i--) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var i = 0; i < tds.length; i++) {\n if (tds[i].rowSpan > 1) {\n array.push(tds[i]);\n difference -= tds[i].colSpan;\n }\n }\n }\n return array;\n\n }\n\n /*\n * This function explores the table and adds \n * a cell for each lacking one for each row\n * to meet an even amount of cells.\n */\n\n table.addLackingCells = function () {\n var sumRows = [];\n for (var i = 0; i < table.rows.length; i++) {\n sumRows.push(0);\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var j = 0; j < tds.length; j++) {\n if (tds[j].rowSpan > 1) {\n for (var k = 1; k < tds[j].rowSpan; k++) {\n sumRows[i + k]++;\n }\n }\n }\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td'),\n totalColspan = 0;\n for (var j = 0; j < tds.length; j++) {\n totalColspan += tds[j].colSpan;\n }\n totalColspan += sumRows[i];\n difference = maxAmountOfCells - totalColspan;\n for (var j = 0; j < difference; j++) {\n var td = new WPTB_Cell(mark);\n table.rows[i].appendChild(td.getDOMElement());\n //table.rows[i].insertBefore( td.getDOMElement(), rows[i].nextSibling );\n }\n }\n };\n\n /*\n * This function deletes the row of currently\n * selected cell. \n */\n\n table.deleteRow = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyles = cell.getAttribute('style'),\n rowspan = cell.rowSpan,\n row = getCoords(cell)[0],\n thisRow,\n aux;\n \n if ( rowspan == undefined ) rowspan = 1;\n \n for ( let i = 0; i < rowspan; i++ ) {\n thisRow = table.rows[row];\n let thisRowChildren = thisRow.children,\n nextRow = table.rows[row + 1],\n nextRowChildren,\n nextRowChildrenLength,\n tdArr = [];\n\n if( nextRow != undefined ) {\n nextRowChildren = nextRow.children;\n nextRowChildrenLength = nextRowChildren.length;\n for (let j = 0; j < thisRowChildren.length; j++) {\n if ( thisRowChildren[j].rowSpan > 1 ) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().colSpan = thisRowChildren[j].colSpan;\n td.getDOMElement().rowSpan = thisRowChildren[j].rowSpan - 1;\n\n let nextRowChildrenK = undefined;\n for ( let k = 0; k < nextRowChildrenLength; k++ ) {\n if ( Number( nextRowChildren[k].dataset.xIndex ) > Number( thisRowChildren[j].dataset.xIndex ) ) {\n nextRowChildrenK = nextRowChildren[k];\n break;\n } \n }\n\n if ( nextRowChildrenK ) {\n tdArr.push( [td, nextRowChildrenK] );\n } else {\n tdArr.push( [td] );\n }\n }\n }\n\n if ( tdArr.length > 0 ) {\n for ( let k = 0; k < tdArr.length; k++ ) {\n if ( tdArr[k][1] != undefined ) {\n nextRow.insertBefore( tdArr[k][0].getDOMElement(), tdArr[k][1] );\n } else {\n nextRow.appendChild( tdArr[k][0].getDOMElement() );\n }\n }\n }\n }\n \n let tableRows = table.rows;\n if ( tableRows.length > 0 ) {\n for ( let j = 0; j < row; j++ ) {\n let jRowChildren = tableRows[j].children;\n if ( jRowChildren.length > 0 ) {\n for ( let x = 0; x < jRowChildren.length; x++ ) {\n if ( jRowChildren[x].rowSpan - 1 >= row - j ) {\n jRowChildren[x].rowSpan--;\n }\n }\n }\n }\n }\n aux = Array.from(array[0]);\n array.pop(aux);\n drawTable(array);\n table.getElementsByTagName('tbody')[0].removeChild(table.rows[row]);\n \n if( table.rows.length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n \n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n \n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n /*\n * This function deletes the column of currently\n * selected cell. Again, this is way more complicated than\n * delete row case.\n */\n\n table.deleteColumn = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellXIndex = cell.dataset.xIndex,\n colspan = cell.colSpan;\n \n for ( let i = 0; i < colspan; i++ ) {\n for ( let j = 0; j < table.rows.length; j++ ) {\n let rowChildren = table.rows[j].children;\n let rowChildrenLength = rowChildren.length;\n if( rowChildrenLength > 0 ) {\n for ( let k = rowChildrenLength - 1; k >= 0; k-- ) {\n if ( Number( rowChildren[k].dataset.xIndex ) == Number( cellXIndex ) ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n } else {\n table.rows[j].removeChild( rowChildren[k] );\n }\n break;\n } else if( Number( rowChildren[k].dataset.xIndex ) < Number( cellXIndex ) && \n Number( rowChildren[k].dataset.xIndex ) + \n Number( rowChildren[k].colSpan -1 ) >= cellXIndex ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n }\n break;\n }\n }\n }\n }\n \n for ( let j = 0; j < table.rows.length; j++ ) {\n if (array[j] != undefined)\n array[j].pop();\n }\n \n maxAmountOfCells--;\n \n if( table.querySelectorAll( 'td' ).length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n \n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n table.tdDefaultWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n \n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n\n array = fillTableArray();\n\n undoSelect();\n drawTable(array);\n\n wptbTableSetup.appendChild(table);\n //if (columns || rows) {\n table.recalculateIndexes( true );\n //}\n table.reconstraction();\n table.tdDefaultWidth();\n \n wptbTableSetup.onresize = function() {\n table.tdDefaultWidth();\n };\n\n WPTB_LeftPanel();\n\n // event hook to signal that table is generated and ready to be used\n WPTB_Helper.wptbDocumentEventGenerate('wptb:table:generated', document);\n\n WPTB_Helper.elementStartScript( table, 'table_setting' );\n WPTB_Helper.elementOptionsSet( 'table_setting', table );\n \n // this code gets the ID of the active element in the toolbar \n // and stores it in the data attribute of the common container element \"wpcd_fixed_toolbar\"\n// let wptbPhElement = document.getElementsByClassName( 'wptb-ph-element' );\n// let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\n// for ( let i = 0; i < wptbPhElement.length; i++ ) {\n// wptbPhElement[i].addEventListener( 'click', function( e ) {\n// let wptbToolbar = document.getElementById( 'wpcd_fixed_toolbar' ).children;\n// for ( let j = 0; j < wptbToolbar.length; j++ ) {\n// let elementStyles = window.getComputedStyle( wptbToolbar[j], 'null' );\n// if( elementStyles.getPropertyValue( 'display' ) == 'block' ) {\n// wpcdFixedToolbar.dataset.toolbarActiveId = wptbToolbar[j].getAttribute( 'id' );\n// }\n// }\n// }, false );\n// }\n \n// let wptbPanelLeft = document.getElementsByClassName( 'wptb-panel-left' );\n// if( wptbPanelLeft.length > 0 ) {\n// wptbPanelLeft[0].addEventListener( 'click', function( e ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }, false );\n// }\n \n// let body = document.getElementsByTagName( 'body' );\n// if( body.length > 0 ) {\n// body[0].addEventListener( 'click', function( e ) {\n// if ( e.target.classList.contains( 'wptb-panel-left' ) || WPTB_Helper.findAncestor( e.target, 'wptb-panel-left' ) ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }\n// }, false );\n// }\n};","const WPTB_TableSettingsData = {\n borderColor: '',\n /**\n *\n * @param {string} name\n * @param {string} value\n */\n setTableSetting: function(name, value){\n this[name] = value;\n },\n /**\n *\n * @param {string} name\n * @returns {*}\n */\n getTableSetting: function (name) {\n return this[name];\n }\n}\n\n","var WPTB_TableStateSaveManager = function() {\n this.tableStateSet = ( generate ) => {\n \n if( generate && window.wptbTableStateSaving && Array.isArray( window.wptbTableStateSaving ) ) {\n return;\n }\n \n // get table setup\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' );\n let wptbPreviewTable = '';\n if( wptbTableSetup.length > 0 ) {\n wptbTableSetup = wptbTableSetup[0];\n\n wptbPreviewTable = wptbTableSetup.querySelector( '.wptb-preview-table' );\n } else {\n wptbTableSetup = '';\n }\n\n\n \n // check if a global array doesn't exist with saved versions of the table \n // them create it\n if( ! window.wptbTableStateSaving && ! Array.isArray( window.wptbTableStateSaving ) ) {\n window.wptbTableStateSaving = [];\n } \n\n // remove the extra part of the array after changing the table \n // when it is showed in the not last modified version\n if( window.wptbTableStateSaving.length > window.wptbTableStateNumberShow ) {\n window.wptbTableStateSaving = window.wptbTableStateSaving.slice( 0, window.wptbTableStateNumberShow + 1 );\n }\n\n //add new state of table\n let wptbNewTableSetup = '';\n if( wptbTableSetup ) {\n wptbNewTableSetup = wptbTableSetup.cloneNode( true );\n let wptbHighlighted = wptbNewTableSetup.getElementsByClassName( 'wptb-highlighted' );\n for( let i = 0; i < wptbHighlighted.length; i++ ) {\n wptbHighlighted[i].classList.remove( 'wptb-highlighted' );\n }\n let wptbDirectlyhovered = wptbNewTableSetup.getElementsByClassName( 'wptb-directlyhovered' );\n for( let i = 0; i < wptbDirectlyhovered.length; i++ ) {\n wptbDirectlyhovered[i].classList.remove( 'wptb-directlyhovered' );\n }\n let mceContentBodys = wptbNewTableSetup.querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n let dataMceStyle = wptbNewTableSetup.querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n let mceIds = wptbNewTableSetup.querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n }\n\n let cssForTdsWidthAutoValue = '';\n let head = document.head;\n if( head ) {\n let cssForTdsWidthAuto = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAuto ) {\n cssForTdsWidthAutoValue = cssForTdsWidthAuto.innerHTML;\n }\n }\n\n let wptbTableTitle = '';\n let wptbSetupName = document.getElementById( 'wptb-setup-name' );\n if( wptbSetupName ) wptbTableTitle = wptbSetupName.value;\n\n window.wptbTableStateSaving.push( [wptbNewTableSetup, cssForTdsWidthAutoValue, wptbTableTitle] );\n\n // set new number of state which is showed now\n window.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;\n\n // make undo arrow active when the table was changed\n if( window.wptbTableStateSaving.length - 1 > 0 ) {\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n\n wptbUndo.classList.remove( 'wptb-undoredo-disabled' );\n }\n }\n\n // make redo arrow not active when the table was changed\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\n }\n\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n if( ( ! wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \n window.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave || ! wptbPreviewTable ) {\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n } else {\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\n wptbSaveBtn.classList.add('active');\n }\n }\n }\n \n this.tableStateGet = ( datawptbUndoredo ) => {\n if( datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length > 0 ) {\n \n // changes the number of the state which displays now\n if( datawptbUndoredo == 'undo' ) {\n if( window.wptbTableStateNumberShow > 0 ) {\n window.wptbTableStateNumberShow--;\n } else {\n return false;\n }\n } else if( datawptbUndoredo == 'redo' ) {\n if( window.wptbTableStateNumberShow < window.wptbTableStateSaving.length ) {\n window.wptbTableStateNumberShow++;\n } else {\n return false;\n }\n }\n \n // add or delete class \"wptb-undoredo-disabled\" for undo button\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n if( window.wptbTableStateNumberShow == 0 ) {\n if( wptbUndo ) {\n wptbUndo.classList.add( 'wptb-undoredo-disabled' );\n }\n } else if( window.wptbTableStateNumberShow > 0 ) {\n if( wptbUndo ) {\n wptbUndo.classList.remove( 'wptb-undoredo-disabled' );\n }\n }\n }\n \n // add or delete class \"wptb-undoredo-disabled\" for redo button\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n \n if( window.wptbTableStateNumberShow == window.wptbTableStateSaving.length - 1 ) {\n if( wptbRedo ) {\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\n }\n } else if( window.wptbTableStateNumberShow < window.wptbTableStateSaving.length - 1 ) {\n if( wptbRedo ) {\n wptbRedo.classList.remove( 'wptb-undoredo-disabled' );\n }\n }\n }\n \n // add or delete class \"wptb-save-disabled\" for save button\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n if( ( ! wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \n window.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave ) {\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n } else {\n wptbSaveBtn.classList.add('active');\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\n }\n }\n \n // load necessary saved table state\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' );\n if( wptbTableSetup.length > 0 ) {\n wptbTableSetup = wptbTableSetup[0];\n\n //wptbTableSetup.outerHTML = '';\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow] ) {\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] && \n typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] === 'object' ) {\n if( 'outerHTML' in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] ) {\n wptbTableSetup.outerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;\n }\n }\n\n let wptbTableSetupNew = document.querySelector( '.wptb-table-setup' );\n if( wptbTableSetupNew && wptbTableSetupNew.children.length == 0 ) {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n }\n\n // add or change or delete style element in the head for table cells who have auto width\n let head = document.head;\n if( head ) {\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAutoOld ) {\n head.removeChild( cssForTdsWidthAutoOld );\n }\n\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow][1] ) {\n let cssForTdsWidthAuto = document.createElement( 'style' );\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\n cssForTdsWidthAuto.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][1];\n head.appendChild( cssForTdsWidthAuto );\n }\n }\n\n // change value of table title field\n let wptbSetupName = document.getElementById( 'wptb-setup-name' );\n if( typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][2] != 'undefined' ) {\n if( wptbSetupName ) wptbSetupName.value = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];\n }\n }\n \n let body = document.getElementsByTagName( 'body' );\n if( body.length > 0 ) {\n body = body[0];\n }\n\n WPTB_Helper.elementOptionsPanelClear();\n WPTB_LeftPanel();\n\n let wptbLeftScrollPanelCellSetting = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ); \n if( wptbLeftScrollPanelCellSetting ) {\n wptbLeftScrollPanelCellSetting.classList.remove( 'visible' );\n }\n }\n }\n }\n \n this.tableStateClear = function() {\n delete window.wptbTableStateSaving;\n delete window.wptbTableStateNumberShow;\n \n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n \n wptbSaveBtn.removeAttribute( 'data-wptb-table-state-number-save' );\n }\n \n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n wptbUndo.classList.add( 'wptb-undoredo-disabled' );\n }\n \n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\n }\n }\n}","var WPTB_innerElementSet = function ( element ) {\n \n element.ondragenter = function (e) {\n var div;\n if ( e.dataTransfer.types.indexOf( 'wptbelement' ) == -1 && e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) == -1 ) {\n return;\n }\n WPTB_DropHandle(this, e);\n \n element.classList.add( 'wptb-ondragenter' );\n }\n element.ondragover = function (e) {\n e.preventDefault();\n WPTB_DropHandle(this, e);\n }\n element.ondragleave = function (e) {\n WPTB_DropHandle(this, e, true);\n\n }\n element.ondrop = function(e) {\n this.classList.remove( 'wptb-ondragenter' );\n let element, classId;\n e.preventDefault();\n e.stopPropagation();\n\n if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {\n return;\n }\n let wptbDropHandle,\n wptbDropBorderMarker;\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length > 0 ) {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n }\n if( document.getElementsByClassName( 'wptb-drop-border-marker' ).length > 0 ) {\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n\n if ( e.dataTransfer.getData( 'wptbElement' ) ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData( 'wptbElement' ) );\n element = element.getDOMElement();\n } else {\n classId = e.dataTransfer.getData( 'node' );\n element = document.getElementsByClassName( classId )[0];\n //element.classList.remove( 'wptb-moving-mode' );\n }\n\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\n WPTB_DropHandle(this, e, true);\n const parentCell = WPTB_Helper.getParentOfType('td', e.target);\n\n parentCell.appendChild(element);\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n\n }else if( wptbDropHandle.style.display == 'block' ) {\n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) { \n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n // start item javascript if item is new\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n let elemKind = infArr[1];\n if ( e.dataTransfer.getData( 'wptbElement' ) && ( elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list' ) ) {\n //WPTB_Helper.elementStartScript( element );\n }\n } else {\n return;\n }\n\n if(wptbDropHandle){\n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n }\n\n WPTB_innerElementSet( element );\n \n if( ! element.classList.contains( 'wptb-image-container' ) || element.classList.contains( 'wptb-moving-mode' ) ) {\n element.classList.remove( 'wptb-moving-mode' );\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } \n return true;\n }\n element.onmouseover = function(e) {\n element.classList.remove( 'wptb-ondragenter' );\n }\n}","var applyGenericItemSettings = function ( element, kindIndexProt, copy = false ) {\n var node = element.getDOMElement(),\n index,\n copy;\n if( node.classList.contains( 'wptb-ph-element' ) ) {\n if ( kindIndexProt == undefined || copy == true ) {\n //index = document.counter.nextIndex( element.kind );\n let wptbElements = document.getElementsByClassName( 'wptb-ph-element' );\n let elementIndexesArr = [];\n for( let i = 0; i < wptbElements.length; i++ ) {\n var regex = new RegExp( 'wptb-element-' + element.kind + '-(\\\\d+)', \"i\" );\n let infArr = wptbElements[i].className.match( regex );\n if( infArr ) {\n elementIndexesArr.push( infArr[1] );\n }\n }\n if( elementIndexesArr.length > 0 ) {\n let elementIndexMax = Math.max( ...elementIndexesArr );\n index = elementIndexMax + 1;\n } else { \n index = 1;\n }\n\n if( copy ) {\n // change all data-elements which save parameters for different controls\n let wptbNodeattributes = [...node.attributes];\n for( let i = 0; i < wptbNodeattributes.length; i++ ) {\n if( wptbNodeattributes[i] && typeof wptbNodeattributes[i] === 'object' && wptbNodeattributes[i].nodeName ) {\n let regularText = new RegExp( 'data-wptb-el-' + element.kind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n let attr = wptbNodeattributes[i].nodeName.match( regularText );\n if( attr && Array.isArray( attr ) ) {\n let newDataAttributeName = wptbNodeattributes[i].nodeName.replace( element.kind + '-' + attr[1], element.kind + '-' + index );\n let newDataAttributeValue = wptbNodeattributes[i].nodeValue;\n node.removeAttribute( wptbNodeattributes[i].nodeName );\n node.setAttribute( newDataAttributeName, newDataAttributeValue );\n }\n }\n }\n }\n } else if ( kindIndexProt && ! copy ) {\n let kindIndexProtArr = kindIndexProt.split('-');\n index = kindIndexProtArr[kindIndexProtArr.length - 1];\n // start element javascript if element is new\n \n }\n\n let node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\\d+)/i);\n if ( node_wptb_element_kind_num ) {\n node.classList.remove( node_wptb_element_kind_num[0] );\n }\n if ( ! node.classList.contains( 'wptb-ph-element' ) ) {\n node.classList.add( 'wptb-ph-element' );\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\n }\n } else {\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\n }\n }\n WPTB_Helper.elementStartScript( element.getDOMElement() );\n new WPTB_ElementOptions( element, index, kindInd