Version Description
ADD: Custom HTML Element. ADD: Shortcode Element. ADD: Double Click On Cell to Add Text Element. ADD: Option to Change/Replace Image in Image Element. ADD: Option to Change Button Text Size. ADD: Frontend Link to Edit Table When Logged in. FIX: Image Height Issue / Image getting stretched. FIX: Bug in Cell Width Change function.
Download this release
Release Info
Developer | imtiazrayhan |
Plugin | WP Table Builder – WordPress Table Plugin |
Version | 1.1.3 |
Comparing to | |
See all releases |
Code changes from version 1.1.2 to 1.1.3
- inc/admin/base/base-object.php +61 -0
- inc/admin/base/controls-stack.php +87 -0
- inc/admin/class-admin-menu.php +16 -4
- inc/admin/class-tables.php +55 -6
- inc/admin/class-wptb-listing.php +3 -0
- inc/admin/{element-classes/controls → controls}/base-control.php +1 -1
- inc/admin/{element-classes/controls → controls}/control-alignment.php +1 -1
- inc/admin/controls/control-button.php +94 -0
- inc/admin/{element-classes/controls → controls}/control-change-attribute.php +1 -1
- inc/admin/{element-classes/controls → controls}/control-checkbox.php +1 -1
- inc/admin/controls/control-color.php +234 -0
- inc/admin/controls/control-color2.php +312 -0
- inc/admin/{element-classes/controls → controls}/control-number.php +1 -1
- inc/admin/controls/control-section-header.php +95 -0
- inc/admin/{element-classes/controls → controls}/control-select.php +1 -1
- inc/admin/{element-classes/controls → controls}/control-size.php +24 -4
- inc/admin/{element-classes/controls → controls}/control-text.php +1 -1
- inc/admin/{element-classes/controls → controls}/control-textarea.php +7 -2
- inc/admin/{element-classes/controls → controls}/control-toggle.php +50 -11
- inc/admin/{element-classes/controls → controls}/control-url.php +1 -1
- inc/admin/css/admin.css +27 -7
- inc/admin/element-classes/base/element-base-object.php +3 -108
- inc/admin/element-classes/controls/control-color.php +0 -124
- inc/admin/element-classes/controls/control-section-header.php +0 -72
- inc/admin/element-classes/element-scripts/button-element.js +7 -6
- inc/admin/element-classes/element-scripts/custom-html-element.js +77 -0
- inc/admin/element-classes/element-scripts/image-element.js +81 -54
- inc/admin/element-classes/element-scripts/list-element.js +7 -7
- inc/admin/element-classes/element-scripts/shortcode-element.js +63 -0
- inc/admin/element-classes/element-scripts/star-rating-element.js +21 -6
- inc/admin/element-classes/element-scripts/text-element.js +22 -5
- inc/admin/element-classes/elements/button-element.php +26 -10
- inc/admin/element-classes/elements/custom-html-element.php +127 -0
- inc/admin/element-classes/elements/image-element.php +30 -2
- inc/admin/element-classes/elements/list-element.php +5 -4
- inc/admin/element-classes/elements/shortcode-element.php +125 -0
- inc/admin/element-classes/elements/star-rating-element.php +6 -9
- inc/admin/element-classes/elements/text-element.php +2 -1
- inc/admin/js/admin.js +962 -833
- inc/admin/js/admin.js.map +1 -1
- inc/admin/js/admin.min.js +1 -1
inc/admin/base/base-object.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Base;
|
3 |
+
use WP_Table_Builder\Inc\Core\Init as Init;
|
4 |
+
use WP_Table_Builder as NS;
|
5 |
+
|
6 |
+
// If this file is called directly, abort.
|
7 |
+
if ( ! defined( 'WPINC' ) ) {
|
8 |
+
die;
|
9 |
+
}
|
10 |
+
|
11 |
+
|
12 |
+
/**
|
13 |
+
* WP Table Builder Base Object.
|
14 |
+
*
|
15 |
+
* @since 1.1.2
|
16 |
+
* @abstract
|
17 |
+
*/
|
18 |
+
abstract class Base_Object {
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Get element name.
|
22 |
+
*
|
23 |
+
* Retrieve the element name.
|
24 |
+
*
|
25 |
+
* @since 1.1.2
|
26 |
+
* @access public
|
27 |
+
* @abstract
|
28 |
+
*
|
29 |
+
* @return string The name.
|
30 |
+
*/
|
31 |
+
abstract public function get_name();
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Get unique name.
|
35 |
+
*
|
36 |
+
* Some classes need to use unique names, this method allows you to create
|
37 |
+
* them. By default it returns the regular name.
|
38 |
+
*
|
39 |
+
* @since 1.1.2
|
40 |
+
* @access public
|
41 |
+
*
|
42 |
+
* @return string Unique name.
|
43 |
+
*/
|
44 |
+
public function get_unique_name() {
|
45 |
+
return $this->get_name();
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Get element title.
|
50 |
+
*
|
51 |
+
* Retrieve the element title.
|
52 |
+
*
|
53 |
+
* @since 1.1.2
|
54 |
+
* @access public
|
55 |
+
*
|
56 |
+
* @return string element title.
|
57 |
+
*/
|
58 |
+
public function get_title() {
|
59 |
+
return '';
|
60 |
+
}
|
61 |
+
}
|
inc/admin/base/controls-stack.php
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Base;
|
3 |
+
use WP_Table_Builder\Inc\Admin\Base\Base_Object;
|
4 |
+
use WP_Table_Builder\Inc\Core\Init as Init;
|
5 |
+
use WP_Table_Builder as NS;
|
6 |
+
|
7 |
+
// If this file is called directly, abort.
|
8 |
+
if ( ! defined( 'WPINC' ) ) {
|
9 |
+
die;
|
10 |
+
}
|
11 |
+
|
12 |
+
|
13 |
+
/**
|
14 |
+
* WP Table Builder control stack.
|
15 |
+
*
|
16 |
+
* An abstract class that provides the needed properties and methods to
|
17 |
+
* manage and handle controls.
|
18 |
+
*
|
19 |
+
* @since 1.1.2
|
20 |
+
* @abstract
|
21 |
+
*/
|
22 |
+
abstract class Controls_Stack extends Base_Object {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Get stack.
|
26 |
+
*
|
27 |
+
* Returns the stack of controls.
|
28 |
+
*
|
29 |
+
* @since 1.1.2
|
30 |
+
* @access public
|
31 |
+
*
|
32 |
+
* @return array Stack of controls.
|
33 |
+
*/
|
34 |
+
public function get_stack() {
|
35 |
+
$stack = NS::init()->controls_manager->get_item_stack( $this );
|
36 |
+
|
37 |
+
if ( null === $stack ) {
|
38 |
+
$this->init_controls();
|
39 |
+
|
40 |
+
return NS::init()->controls_manager->get_item_stack( $this );
|
41 |
+
}
|
42 |
+
|
43 |
+
return $stack;
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Register controls.
|
48 |
+
*
|
49 |
+
* Used to add new controls group to stack
|
50 |
+
*
|
51 |
+
* @since 1.1.2
|
52 |
+
* @access protected
|
53 |
+
*/
|
54 |
+
protected function _register_controls() {}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Initialize controls.
|
58 |
+
*
|
59 |
+
* Register the all controls added by `_register_controls()`.
|
60 |
+
*
|
61 |
+
* @since 1.1.2
|
62 |
+
* @access protected
|
63 |
+
*/
|
64 |
+
public function init_controls() {
|
65 |
+
$this->_register_controls();
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Add new control to stack.
|
70 |
+
*
|
71 |
+
* Register a single control to allow the user to set/update data.
|
72 |
+
*
|
73 |
+
* This method should be used inside `_register_controls()`.
|
74 |
+
*
|
75 |
+
* @since 1.1.2
|
76 |
+
* @access public
|
77 |
+
*
|
78 |
+
* @param string $id Control ID.
|
79 |
+
* @param array $args Control arguments.
|
80 |
+
*
|
81 |
+
* @return bool True if control added, False otherwise.
|
82 |
+
*/
|
83 |
+
|
84 |
+
public function add_control( $id, array $args ) {
|
85 |
+
return Init::instance()->controls_manager->add_control_to_stack( $this, $id, $args );
|
86 |
+
}
|
87 |
+
}
|
inc/admin/class-admin-menu.php
CHANGED
@@ -45,6 +45,7 @@ class Admin_Menu {
|
|
45 |
$params = json_decode( file_get_contents( 'php://input' ) );
|
46 |
|
47 |
if( wp_verify_nonce( $params->security_code, 'wptb-security-nonce' ) ) {
|
|
|
48 |
if( ! isset( $params->id ) || ! absint( $params->id ) || ! get_post_meta( absint( $params->id ) , '_wptb_content_', true ) ) {
|
49 |
$id = wp_insert_post([
|
50 |
'post_title' => sanitize_text_field( $params->title ),
|
@@ -52,9 +53,11 @@ class Admin_Menu {
|
|
52 |
'post_type' => 'wptb-tables',
|
53 |
'post_status' => 'draft'
|
54 |
]);
|
|
|
55 |
add_post_meta( $id, '_wptb_content_', $params->content );
|
56 |
add_post_meta( $id, '_wptb_table_elements_datas_', $params->elements_datas );
|
57 |
-
|
|
|
58 |
} else {
|
59 |
wp_update_post([
|
60 |
'ID' => absint( $params->id ),
|
@@ -63,9 +66,18 @@ class Admin_Menu {
|
|
63 |
'post_type' => 'wptb-tables',
|
64 |
'post_status' => 'draft'
|
65 |
]);
|
66 |
-
|
67 |
-
|
68 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
}
|
70 |
} else {
|
71 |
wp_die( json_encode( ['security_problem', ''] ) );
|
45 |
$params = json_decode( file_get_contents( 'php://input' ) );
|
46 |
|
47 |
if( wp_verify_nonce( $params->security_code, 'wptb-security-nonce' ) ) {
|
48 |
+
|
49 |
if( ! isset( $params->id ) || ! absint( $params->id ) || ! get_post_meta( absint( $params->id ) , '_wptb_content_', true ) ) {
|
50 |
$id = wp_insert_post([
|
51 |
'post_title' => sanitize_text_field( $params->title ),
|
53 |
'post_type' => 'wptb-tables',
|
54 |
'post_status' => 'draft'
|
55 |
]);
|
56 |
+
|
57 |
add_post_meta( $id, '_wptb_content_', $params->content );
|
58 |
add_post_meta( $id, '_wptb_table_elements_datas_', $params->elements_datas );
|
59 |
+
|
60 |
+
wp_die( json_encode( ['saved', $id] ) );
|
61 |
} else {
|
62 |
wp_update_post([
|
63 |
'ID' => absint( $params->id ),
|
66 |
'post_type' => 'wptb-tables',
|
67 |
'post_status' => 'draft'
|
68 |
]);
|
69 |
+
|
70 |
+
if( isset( $params->preview_saving ) && ! empty( (int)$params->preview_saving ) ) {
|
71 |
+
update_post_meta( absint( $params->id ), '_wptb_preview_id_', $params->preview_saving );
|
72 |
+
update_post_meta( absint( $params->id ), '_wptb_content_preview_', $params->content );
|
73 |
+
|
74 |
+
wp_die( json_encode( ['preview_edited'] ) );
|
75 |
+
} else {
|
76 |
+
update_post_meta( absint( $params->id ), '_wptb_content_', $params->content );
|
77 |
+
update_post_meta( absint( $params->id ), '_wptb_table_elements_datas_', $params->elements_datas );
|
78 |
+
|
79 |
+
wp_die( json_encode( ['edited', absint( $params->id )] ) );
|
80 |
+
}
|
81 |
}
|
82 |
} else {
|
83 |
wp_die( json_encode( ['security_problem', ''] ) );
|
inc/admin/class-tables.php
CHANGED
@@ -94,23 +94,72 @@ class Tables {
|
|
94 |
// Register the post type
|
95 |
register_post_type( 'wptb-tables', $args );
|
96 |
add_shortcode( 'wptb', array( $this, 'get_table' ) );
|
97 |
-
|
98 |
}
|
99 |
|
100 |
public function get_table( $args ) {
|
101 |
do_action( 'wptb_frontend_enqueue_style' );
|
102 |
do_action( 'wptb_frontend_enqueue_script' );
|
103 |
-
//$uniqueSequence = 't'.substr( md5(time()),0,8 );
|
104 |
$html = get_post_meta( $args['id'] , '_wptb_content_', true );
|
105 |
-
|
106 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
$html .= '<script>'
|
108 |
. 'var wptbContainer = document.getElementsByClassName( "wptb-table-' . $args['id'] . '" );'
|
109 |
. 'if( wptbContainer.length > 0 ) {'
|
110 |
. ' wptbContainer = wptbContainer[0];'
|
111 |
. ' var wptbPreviewTable = wptbContainer.getElementsByClassName( "wptb-preview-table" );'
|
112 |
-
. ' wptbPreviewTable
|
113 |
-
. '
|
|
|
|
|
114 |
. '}'
|
115 |
. '</script>';
|
116 |
return ( $html );
|
94 |
// Register the post type
|
95 |
register_post_type( 'wptb-tables', $args );
|
96 |
add_shortcode( 'wptb', array( $this, 'get_table' ) );
|
|
|
97 |
}
|
98 |
|
99 |
public function get_table( $args ) {
|
100 |
do_action( 'wptb_frontend_enqueue_style' );
|
101 |
do_action( 'wptb_frontend_enqueue_script' );
|
|
|
102 |
$html = get_post_meta( $args['id'] , '_wptb_content_', true );
|
103 |
+
|
104 |
+
// prepating html encoding for looking for shortcodes using DOMDocument
|
105 |
+
$html_encoding = mb_detect_encoding( $html );
|
106 |
+
if( $html_encoding != 'UTF-8' ) {
|
107 |
+
$html = mb_convert_encoding( $html, "UTF-8", $html_encoding );
|
108 |
+
}
|
109 |
+
|
110 |
+
$html = mb_convert_encoding( $html, 'HTML-ENTITIES', 'utf-8' );
|
111 |
+
|
112 |
+
$dom = new \DOMDocument( '1.0', 'UTF-8' );
|
113 |
+
$dom->validateOnParse = true;
|
114 |
+
$dom->encoding="UTF-8";
|
115 |
+
$dom->loadHTML( $html );
|
116 |
+
$divs = $dom->getElementsByTagName( 'div' );
|
117 |
+
$shortcodes = array();
|
118 |
+
foreach ( $divs as $div ) {
|
119 |
+
$classes = $div->getAttribute( 'class' );
|
120 |
+
if ( strpos( $classes, 'wptb-shortcode-container' ) !== false ) {
|
121 |
+
$div_outer_html = trim( $div->ownerDocument->saveHTML( $div ) );
|
122 |
+
|
123 |
+
if( ! isset( $args['internal_shortcodes_stop'] ) && $div_outer_html ) {
|
124 |
+
$pattern = get_shortcode_regex();
|
125 |
+
|
126 |
+
if ( preg_match_all( '/'. $pattern .'/s', $div_outer_html, $matches ) ) {
|
127 |
+
|
128 |
+
for( $i = 0; $i < count( $matches[0] ); $i++ ) {
|
129 |
+
$shortcode = $matches[0][$i];
|
130 |
+
if( $matches[2][$i] == 'wptb' ) {
|
131 |
+
|
132 |
+
$shortcode = str_replace( ']' , ' internal_shortcodes_stop="1"]' , $matches[0][$i] );
|
133 |
+
|
134 |
+
$div_outer_html_new = str_replace( $matches[0][$i] , $shortcode , $div_outer_html );
|
135 |
+
|
136 |
+
$html = str_replace( $div_outer_html, $div_outer_html_new, $html );
|
137 |
+
|
138 |
+
$html = str_replace( $div_outer_html_new, do_shortcode( $div_outer_html_new ), $html );
|
139 |
+
} else {
|
140 |
+
$html = str_replace( $div_outer_html, do_shortcode( $div_outer_html ), $html );
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
+
}
|
145 |
+
}
|
146 |
+
}
|
147 |
+
|
148 |
+
$post_edit_link;
|
149 |
+
if( current_user_can( 'manage_options' ) ){
|
150 |
+
$post_edit_link = '<div class="wptb-frontend-table-edit-link">'
|
151 |
+
. '<a href="' . admin_url( 'admin.php?page=wptb-builder&table=' . $args['id'] ) . '">' . __( "Edit Table", 'wp-table-builder' ) . '</a></div>';
|
152 |
+
}
|
153 |
+
$html = '<div class="wptb-table-container wptb-table-' . $args['id'] . '"><div class="wptb-table-container-matrix">' . $html . '</div></div>'. $post_edit_link;
|
154 |
$html .= '<script>'
|
155 |
. 'var wptbContainer = document.getElementsByClassName( "wptb-table-' . $args['id'] . '" );'
|
156 |
. 'if( wptbContainer.length > 0 ) {'
|
157 |
. ' wptbContainer = wptbContainer[0];'
|
158 |
. ' var wptbPreviewTable = wptbContainer.getElementsByClassName( "wptb-preview-table" );'
|
159 |
+
. ' if( wptbPreviewTable.length > 0 ) {'
|
160 |
+
. ' wptbPreviewTable[0].classList.remove( "wptb-table-preview-static-indic" );'
|
161 |
+
. ' wptbPreviewTable[0].style.display = "none";'
|
162 |
+
. ' }'
|
163 |
. '}'
|
164 |
. '</script>';
|
165 |
return ( $html );
|
inc/admin/class-wptb-listing.php
CHANGED
@@ -58,9 +58,11 @@ class WPTB_Listing extends \WP_List_Table{
|
|
58 |
]);
|
59 |
$table = get_post_meta( absint( $id ) , '_wptb_content_', true );
|
60 |
$elements_datas = get_post_meta( absint( $id ) , '_wptb_table_elements_datas_', true );
|
|
|
61 |
|
62 |
$table_new = add_post_meta( $id_new, '_wptb_content_', $table );
|
63 |
$elements_datas_new = add_post_meta( $id_new , '_wptb_table_elements_datas_', $elements_datas );
|
|
|
64 |
|
65 |
if( $id_new && $table_new ) {
|
66 |
wp_update_post([
|
@@ -147,6 +149,7 @@ class WPTB_Listing extends \WP_List_Table{
|
|
147 |
array(
|
148 |
'post_type' => 'wptb-tables',
|
149 |
'p' => absint( $item->ID ),
|
|
|
150 |
),
|
151 |
home_url()
|
152 |
);
|
58 |
]);
|
59 |
$table = get_post_meta( absint( $id ) , '_wptb_content_', true );
|
60 |
$elements_datas = get_post_meta( absint( $id ) , '_wptb_table_elements_datas_', true );
|
61 |
+
$elements_styles = get_post_meta( absint( $id ) , '_wptb_table_elements_styles_', true );
|
62 |
|
63 |
$table_new = add_post_meta( $id_new, '_wptb_content_', $table );
|
64 |
$elements_datas_new = add_post_meta( $id_new , '_wptb_table_elements_datas_', $elements_datas );
|
65 |
+
$elements_datas_new = add_post_meta( $id_new , '_wptb_table_elements_styles_', $elements_styles );
|
66 |
|
67 |
if( $id_new && $table_new ) {
|
68 |
wp_update_post([
|
149 |
array(
|
150 |
'post_type' => 'wptb-tables',
|
151 |
'p' => absint( $item->ID ),
|
152 |
+
'_wpnonce' => $nonce,
|
153 |
),
|
154 |
home_url()
|
155 |
);
|
inc/admin/{element-classes/controls → controls}/base-control.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
inc/admin/{element-classes/controls → controls}/control-alignment.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
use WP_Table_Builder as NS;
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
use WP_Table_Builder as NS;
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
inc/admin/controls/control-button.php
ADDED
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
+
|
4 |
+
// If this file is called directly, abort.
|
5 |
+
if ( ! defined( 'WPINC' ) ) {
|
6 |
+
die;
|
7 |
+
}
|
8 |
+
|
9 |
+
/**
|
10 |
+
* WP Table Builder "Button" control.
|
11 |
+
*
|
12 |
+
* A control class for creating "button" control object
|
13 |
+
*
|
14 |
+
* @since 1.1.2
|
15 |
+
*/
|
16 |
+
class Control_Button extends Base_Control {
|
17 |
+
/**
|
18 |
+
* Get "Button" control type.
|
19 |
+
*
|
20 |
+
* @since 1.1.2
|
21 |
+
* @access public
|
22 |
+
*
|
23 |
+
* @return string Control type.
|
24 |
+
*/
|
25 |
+
public function get_type() {
|
26 |
+
return 'button';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Enqueue "button" control scripts and styles.
|
31 |
+
*
|
32 |
+
* Used to register and enqueue custom scripts and styles used by the control.
|
33 |
+
*
|
34 |
+
* @since 1.1.2
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
+
public function enqueue() {
|
38 |
+
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Render "button" control output in the editor.
|
43 |
+
*
|
44 |
+
* Used to generate the control HTML in the editor wp js template
|
45 |
+
*
|
46 |
+
* @since 1.1.2
|
47 |
+
* @access public
|
48 |
+
*/
|
49 |
+
public function content_template() {
|
50 |
+
?>
|
51 |
+
<#
|
52 |
+
let label,
|
53 |
+
elemContainer;
|
54 |
+
|
55 |
+
if( data.label ) {
|
56 |
+
label = data.label;
|
57 |
+
}
|
58 |
+
|
59 |
+
if( data.elemContainer ) {
|
60 |
+
elemContainer = data.elemContainer;
|
61 |
+
}
|
62 |
+
|
63 |
+
targetInputAddClass = data.elementControlTargetUnicClass;
|
64 |
+
#>
|
65 |
+
|
66 |
+
<div class="wptb-settings-row wptb-settings-middle-xs">
|
67 |
+
<div class="wptb-settings-col-xs-12" style="margin: auto; text-align: center;">
|
68 |
+
<input type="button" class="wptb-button {{{targetInputAddClass}}}" data-element="{{{elemContainer}}}" value="{{{label}}}" title="{{{label}}}">
|
69 |
+
</div>
|
70 |
+
</div>
|
71 |
+
|
72 |
+
<wptb-template-script>
|
73 |
+
( function() {
|
74 |
+
let targetInputs = document.getElementsByClassName( '{{{targetInputAddClass}}}' );
|
75 |
+
if( targetInputs.length > 0 ) {
|
76 |
+
targetInput = targetInputs[0];
|
77 |
+
let dataSelectorElement = targetInput.dataset.element;
|
78 |
+
if( dataSelectorElement ) {
|
79 |
+
let selectorElement = document.querySelector( '.' + dataSelectorElement );
|
80 |
+
if( selectorElement ) {
|
81 |
+
targetInput.onclick = function( event ) {
|
82 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement );
|
83 |
+
};
|
84 |
+
|
85 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}' );
|
86 |
+
}
|
87 |
+
}
|
88 |
+
}
|
89 |
+
} )();
|
90 |
+
</wptb-template-script>
|
91 |
+
|
92 |
+
<?php
|
93 |
+
}
|
94 |
+
}
|
inc/admin/{element-classes/controls → controls}/control-change-attribute.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
inc/admin/{element-classes/controls → controls}/control-checkbox.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
inc/admin/controls/control-color.php
ADDED
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
+
|
4 |
+
// If this file is called directly, abort.
|
5 |
+
if ( ! defined( 'WPINC' ) ) {
|
6 |
+
die;
|
7 |
+
}
|
8 |
+
|
9 |
+
/**
|
10 |
+
* WP Table Builder color control.
|
11 |
+
*
|
12 |
+
* A Control class for creating color control. Displays a color picker field.
|
13 |
+
* When this control adds to element there is opportunity to point css type (color, backgroundColor ...)
|
14 |
+
*
|
15 |
+
* @since 1.1.2
|
16 |
+
*/
|
17 |
+
class Control_Color extends Base_Control {
|
18 |
+
/**
|
19 |
+
* Get control type.
|
20 |
+
*
|
21 |
+
* @since 1.1.2
|
22 |
+
* @access public
|
23 |
+
*
|
24 |
+
* @return string Control type.
|
25 |
+
*/
|
26 |
+
public function get_type() {
|
27 |
+
return 'color';
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Enqueue color control scripts and styles.
|
32 |
+
*
|
33 |
+
* Used to register and enqueue custom scripts and styles used by the color
|
34 |
+
* control.
|
35 |
+
*
|
36 |
+
* @since 1.1.2
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
public function enqueue() {
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Render color control output in the editor.
|
45 |
+
*
|
46 |
+
* Used to generate the control HTML in the editor wp js template
|
47 |
+
*
|
48 |
+
* @since 1.1.2
|
49 |
+
* @access public
|
50 |
+
*/
|
51 |
+
public function content_template() {
|
52 |
+
?>
|
53 |
+
<#
|
54 |
+
let label,
|
55 |
+
name,
|
56 |
+
selectors = [],
|
57 |
+
elemContainer,
|
58 |
+
targetInputAddClass;
|
59 |
+
|
60 |
+
if( data.label ) {
|
61 |
+
label = data.label;
|
62 |
+
}
|
63 |
+
|
64 |
+
if( data.name ) {
|
65 |
+
name = data.name;
|
66 |
+
}
|
67 |
+
|
68 |
+
let i = 0;
|
69 |
+
for ( let prop in data.selectors ) {
|
70 |
+
selectors[i] = [];
|
71 |
+
selectors[i][0] = prop;
|
72 |
+
selectors[i][1] = data.selectors[prop];
|
73 |
+
i++;
|
74 |
+
}
|
75 |
+
|
76 |
+
if( selectors && Array.isArray( selectors ) ) {
|
77 |
+
selectorsJson = JSON.stringify( selectors );
|
78 |
+
}
|
79 |
+
|
80 |
+
if( data.elemContainer ) {
|
81 |
+
elemContainer = data.elemContainer;
|
82 |
+
}
|
83 |
+
|
84 |
+
targetInputAddClass = data.elementControlTargetUnicClass;
|
85 |
+
let dataJson = JSON.stringify( data );
|
86 |
+
#>
|
87 |
+
<div class='wptb-settings-item-header' >
|
88 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
89 |
+
</div>
|
90 |
+
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-top: 25px; padding-bottom: 10px;">
|
91 |
+
<div class='wptb-settings-col-xs-8'>
|
92 |
+
<input type="text" class="wptb-element-property wptb-color-picker {{{targetInputAddClass}}}"
|
93 |
+
data-element="{{{elemContainer}}}" data-type="color" value=""/>
|
94 |
+
</div>
|
95 |
+
</div>
|
96 |
+
|
97 |
+
<wptb-template-script>
|
98 |
+
( function() {
|
99 |
+
let targetInput = document.querySelector( '.{{{targetInputAddClass}}}' );
|
100 |
+
let dataSelectorElement = targetInput.dataset.element;
|
101 |
+
let selectorElement = document.querySelector( '.' + dataSelectorElement );
|
102 |
+
|
103 |
+
function wpColorPickerCheckChangeForTableStateSaving( event ) {
|
104 |
+
if( event.originalEvent.type == 'external' ||
|
105 |
+
( event.originalEvent.type == 'click' && event.target.value == 'Clear' ) ) {
|
106 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
107 |
+
wptbTableStateSaveManager.tableStateSet();
|
108 |
+
} else {
|
109 |
+
let wpPickerContainer = WPTB_Helper.findAncestor( event.target, 'wp-picker-container' );
|
110 |
+
if( wpPickerContainer ) {
|
111 |
+
if( event.originalEvent.type == 'square' || event.originalEvent.type == 'strip' ) {
|
112 |
+
let body = document.getElementsByTagName( 'body' )[0];
|
113 |
+
body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );
|
114 |
+
body.addEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );
|
115 |
+
}
|
116 |
+
}
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
if( targetInput && selectorElement ) {
|
121 |
+
if( '{{{selectorsJson}}}' ) {
|
122 |
+
let selectors = JSON.parse( '{{{selectorsJson}}}' );
|
123 |
+
|
124 |
+
let thisColorCss;
|
125 |
+
for( let i = 0; i < selectors.length; i++ ) {
|
126 |
+
if( selectors[i] && Array.isArray( selectors[i] ) && selectors[i][0] && selectors[i][1] ) {
|
127 |
+
let selectorElements = document.querySelectorAll( selectors[i][0] );
|
128 |
+
if( selectorElements.length > 0 ) {
|
129 |
+
for( let j = 0; j < selectorElements.length; j++ ) {
|
130 |
+
if( selectors[i][1] ) {
|
131 |
+
if( Array.isArray( selectors[i][1] ) ) {
|
132 |
+
for( let k = 0; k < selectors[i][1].length; k++ ) {
|
133 |
+
if( selectorElements[j].style[selectors[i][1][k]] ) {
|
134 |
+
thisColorCss = selectorElements[j].style[selectors[i][1][k]];
|
135 |
+
thisColorCssHex = WPTB_Helper.rgbToHex( thisColorCss );
|
136 |
+
if( thisColorCssHex ) {
|
137 |
+
thisColorCss = thisColorCssHex;
|
138 |
+
}
|
139 |
+
if( ! WPTB_Helper.isHex( thisColorCss ) ) {
|
140 |
+
thisColorCss = '';
|
141 |
+
}
|
142 |
+
selectorElements[j].style[selectors[i][1][k]] = thisColorCss;
|
143 |
+
}
|
144 |
+
}
|
145 |
+
} else {
|
146 |
+
if( selectorElements[j].style[selectors[i][1]] ) {
|
147 |
+
thisColorCss = selectorElements[j].style[selectors[i][1]];
|
148 |
+
thisColorCssHex = WPTB_Helper.rgbToHex( thisColorCss );
|
149 |
+
if( thisColorCssHex ) {
|
150 |
+
thisColorCss = thisColorCssHex;
|
151 |
+
}
|
152 |
+
if( ! WPTB_Helper.isHex( thisColorCss ) ) {
|
153 |
+
thisColorCss = '';
|
154 |
+
}
|
155 |
+
selectorElements[j].style[selectors[i][1]] = thisColorCss;
|
156 |
+
}
|
157 |
+
}
|
158 |
+
|
159 |
+
if( thisColorCss ) {
|
160 |
+
targetInput.value = thisColorCss;
|
161 |
+
}
|
162 |
+
}
|
163 |
+
}
|
164 |
+
}
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
jQuery( '.{{{targetInputAddClass}}}' ).wpColorPicker({
|
169 |
+
change: function ( event, ui ) {
|
170 |
+
let uiColor;
|
171 |
+
if( ui ) {
|
172 |
+
uiColor = ui.color.toString();
|
173 |
+
} else {
|
174 |
+
uiColor = '';
|
175 |
+
}
|
176 |
+
|
177 |
+
for( let i = 0; i < selectors.length; i++ ) {
|
178 |
+
if( selectors[i] && Array.isArray( selectors[i] ) && selectors[i][0] && selectors[i][1] ) {
|
179 |
+
let selectorElements = document.querySelectorAll( selectors[i][0] );
|
180 |
+
if( selectorElements.length > 0 ) {
|
181 |
+
for( let j = 0; j < selectorElements.length; j++ ) {
|
182 |
+
if( selectors[i][1] ) {
|
183 |
+
if( Array.isArray( selectors[i][1] ) ) {
|
184 |
+
for( let k = 0; k < selectors[i][1].length; k++ ) {
|
185 |
+
selectorElements[j].style[selectors[i][1][k]] = uiColor;
|
186 |
+
}
|
187 |
+
} else {
|
188 |
+
selectorElements[j].style[selectors[i][1]] = uiColor;
|
189 |
+
}
|
190 |
+
}
|
191 |
+
}
|
192 |
+
}
|
193 |
+
}
|
194 |
+
}
|
195 |
+
|
196 |
+
let targetInput = document.getElementsByClassName( '{{{targetInputAddClass}}}' );
|
197 |
+
if( targetInput.length > 0 ) {
|
198 |
+
targetInput = targetInput[0];
|
199 |
+
targetInput.value = uiColor;
|
200 |
+
}
|
201 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement );
|
202 |
+
wpColorPickerCheckChangeForTableStateSaving( event );
|
203 |
+
},
|
204 |
+
clear: function( event ) {
|
205 |
+
for( let i = 0; i < selectors.length; i++ ) {
|
206 |
+
if( selectors[i] && Array.isArray( selectors[i] ) && selectors[i][0] && selectors[i][1] ) {
|
207 |
+
let selectorElements = document.querySelectorAll( selectors[i][0] );
|
208 |
+
if( selectorElements.length > 0 ) {
|
209 |
+
for( let j = 0; j < selectorElements.length; j++ ) {
|
210 |
+
if( selectors[i][1] ) {
|
211 |
+
if( Array.isArray( selectors[i][1] ) ) {
|
212 |
+
for( let k = 0; k < selectors[i][1].length; k++ ) {
|
213 |
+
selectorElements[j].style[selectors[i][1][k]] = '';
|
214 |
+
}
|
215 |
+
} else {
|
216 |
+
selectorElements[j].style[selectors[i][1]] = '';
|
217 |
+
}
|
218 |
+
}
|
219 |
+
}
|
220 |
+
}
|
221 |
+
}
|
222 |
+
}
|
223 |
+
|
224 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement );
|
225 |
+
wpColorPickerCheckChangeForTableStateSaving( event );
|
226 |
+
}
|
227 |
+
});
|
228 |
+
}
|
229 |
+
}
|
230 |
+
} )();
|
231 |
+
</wptb-template-script>
|
232 |
+
<?php
|
233 |
+
}
|
234 |
+
}
|
inc/admin/controls/control-color2.php
ADDED
@@ -0,0 +1,312 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
+
|
4 |
+
// If this file is called directly, abort.
|
5 |
+
if ( ! defined( 'WPINC' ) ) {
|
6 |
+
die;
|
7 |
+
}
|
8 |
+
|
9 |
+
/**
|
10 |
+
* WP Table Builder color control.
|
11 |
+
*
|
12 |
+
* A Control class for creating color control. Displays a color picker field.
|
13 |
+
* When this control adds to element there is opportunity to point css type (color, backgroundColor ...)
|
14 |
+
*
|
15 |
+
* @since 1.1.2
|
16 |
+
*/
|
17 |
+
class Control_Color extends Base_Control {
|
18 |
+
/**
|
19 |
+
* Get control type.
|
20 |
+
*
|
21 |
+
* @since 1.1.2
|
22 |
+
* @access public
|
23 |
+
*
|
24 |
+
* @return string Control type.
|
25 |
+
*/
|
26 |
+
public function get_type() {
|
27 |
+
return 'color';
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Enqueue color control scripts and styles.
|
32 |
+
*
|
33 |
+
* Used to register and enqueue custom scripts and styles used by the color
|
34 |
+
* control.
|
35 |
+
*
|
36 |
+
* @since 1.1.2
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
public function enqueue() {
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Render color control output in the editor.
|
45 |
+
*
|
46 |
+
* Used to generate the control HTML in the editor wp js template
|
47 |
+
*
|
48 |
+
* @since 1.1.2
|
49 |
+
* @access public
|
50 |
+
*/
|
51 |
+
public function content_template() {
|
52 |
+
?>
|
53 |
+
<#
|
54 |
+
let label,
|
55 |
+
name,
|
56 |
+
selectors = [],
|
57 |
+
elemContainer,
|
58 |
+
targetInputAddClass;
|
59 |
+
|
60 |
+
if( data.label ) {
|
61 |
+
label = data.label;
|
62 |
+
}
|
63 |
+
|
64 |
+
if( data.name ) {
|
65 |
+
name = data.name;
|
66 |
+
}
|
67 |
+
|
68 |
+
let i = 0;
|
69 |
+
for ( let prop in data.selectors ) {
|
70 |
+
selectors[i] = [];
|
71 |
+
selectors[i][0] = prop;
|
72 |
+
selectors[i][1] = data.selectors[prop];
|
73 |
+
i++;
|
74 |
+
}
|
75 |
+
|
76 |
+
if( selectors && Array.isArray( selectors ) ) {
|
77 |
+
selectorsJson = JSON.stringify( selectors );
|
78 |
+
}
|
79 |
+
|
80 |
+
if( data.elemContainer ) {
|
81 |
+
elemContainer = data.elemContainer;
|
82 |
+
}
|
83 |
+
|
84 |
+
targetInputAddClass = data.elementControlTargetUnicClass;
|
85 |
+
let dataJson = JSON.stringify( data );
|
86 |
+
#>
|
87 |
+
<div class='wptb-settings-item-header' >
|
88 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
89 |
+
</div>
|
90 |
+
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-top: 25px; padding-bottom: 10px;">
|
91 |
+
<div class='wptb-settings-col-xs-8'>
|
92 |
+
<input type="text" class="wptb-element-property wptb-color-picker {{{targetInputAddClass}}}"
|
93 |
+
data-element="{{{elemContainer}}}" data-type="color" value=""/>
|
94 |
+
</div>
|
95 |
+
</div>
|
96 |
+
|
97 |
+
<wptb-template-script>
|
98 |
+
( function() {
|
99 |
+
let targetInput = document.querySelector( '.{{{targetInputAddClass}}}' );
|
100 |
+
let dataSelectorElement = targetInput.dataset.element;
|
101 |
+
let selectorElement = document.querySelector( '.' + dataSelectorElement );
|
102 |
+
|
103 |
+
function wpColorPickerCheckChangeForTableStateSaving( event ) {
|
104 |
+
if( event.originalEvent.type == 'external' ||
|
105 |
+
( event.originalEvent.type == 'click' && event.target.value == 'Clear' ) ) {
|
106 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
107 |
+
wptbTableStateSaveManager.tableStateSet();
|
108 |
+
} else {
|
109 |
+
let wpPickerContainer = WPTB_Helper.findAncestor( event.target, 'wp-picker-container' );
|
110 |
+
if( wpPickerContainer ) {
|
111 |
+
if( event.originalEvent.type == 'square' || event.originalEvent.type == 'strip' ) {
|
112 |
+
let body = document.getElementsByTagName( 'body' )[0];
|
113 |
+
body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );
|
114 |
+
body.addEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );
|
115 |
+
}
|
116 |
+
}
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
if( targetInput && selectorElement ) {
|
121 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}' );
|
122 |
+
if( '{{{selectorsJson}}}' ) {
|
123 |
+
let selectors = JSON.parse( '{{{selectorsJson}}}' );
|
124 |
+
|
125 |
+
let thisColorCss;
|
126 |
+
let targetInputSetColorIndic = false;
|
127 |
+
for( let i = 0; i < selectors.length; i++ ) {
|
128 |
+
if( selectors[i] && Array.isArray( selectors[i] ) && selectors[i][0] && selectors[i][1] ) {
|
129 |
+
let selectorElements = document.querySelectorAll( selectors[i][0] );
|
130 |
+
if( selectorElements.length > 0 ) {
|
131 |
+
for( let j = 0; j < selectorElements.length; j++ ) {
|
132 |
+
if( selectors[i][1] ) {
|
133 |
+
if( Array.isArray( selectors[i][1] ) ) {
|
134 |
+
for( let k = 0; k < selectors[i][1].length; k++ ) {
|
135 |
+
if( selectorElements[j].style[selectors[i][1][k]] ) {
|
136 |
+
thisColorCss = selectorElements[j].style[selectors[i][1][k]];
|
137 |
+
console.log(thisColorCss);
|
138 |
+
thisColorCssHex = WPTB_Helper.rgbToHex( thisColorCss );
|
139 |
+
if( thisColorCssHex ) {
|
140 |
+
thisColorCss = thisColorCssHex;
|
141 |
+
|
142 |
+
}
|
143 |
+
if( ! WPTB_Helper.isHex( thisColorCss ) ) {
|
144 |
+
thisColorCss = '';
|
145 |
+
}
|
146 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1][k], thisColorCss );
|
147 |
+
selectorElements[j].style[selectors[i][1][k]] = '';
|
148 |
+
}
|
149 |
+
}
|
150 |
+
} else {
|
151 |
+
if( selectorElements[j].style[selectors[i][1]] ) {
|
152 |
+
thisColorCss = selectorElements[j].style[selectors[i][1]];
|
153 |
+
thisColorCssHex = WPTB_Helper.rgbToHex( thisColorCss );
|
154 |
+
if( thisColorCssHex ) {
|
155 |
+
thisColorCss = thisColorCssHex;
|
156 |
+
}
|
157 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1], thisColorCss );
|
158 |
+
selectorElements[j].style[selectors[i][1]] = '';
|
159 |
+
}
|
160 |
+
}
|
161 |
+
|
162 |
+
if( thisColorCss && ! targetInputSetColorIndic ) {
|
163 |
+
targetInput.value = thisColorCss;
|
164 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}', true );
|
165 |
+
console.log("Hello");
|
166 |
+
targetInputSetColorIndic = true;
|
167 |
+
}
|
168 |
+
}
|
169 |
+
}
|
170 |
+
}
|
171 |
+
}
|
172 |
+
}
|
173 |
+
|
174 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}' );
|
175 |
+
if( targetInputSetColorIndic ) {
|
176 |
+
let wptbDlementDatas = document.getElementsByClassName( 'wptb-element-datas' );
|
177 |
+
if( wptbDlementDatas.length > 0 ) {
|
178 |
+
wptbDlementDatas = wptbDlementDatas.innerHTML;
|
179 |
+
} else {
|
180 |
+
wptbDlementDatas = '';
|
181 |
+
}
|
182 |
+
if( window.wptbTableStateSaving && Array.isArray( window.wptbTableStateSaving ) ) {
|
183 |
+
let lastElem = window.wptbTableStateSaving[window.wptbTableStateSaving.length - 1];
|
184 |
+
let wptbPreviewTable = document.getElementsByClassName( 'wptb-preview-table' );
|
185 |
+
if( wptbPreviewTable.length > 0 ) {
|
186 |
+
wptbPreviewTable = wptbPreviewTable[0];
|
187 |
+
|
188 |
+
let wptbNewPreviewTable = wptbPreviewTable.cloneNode( true );
|
189 |
+
let mceContentBodys = wptbNewPreviewTable.querySelectorAll( '.mce-content-body' );
|
190 |
+
if( mceContentBodys.length > 0 ) {
|
191 |
+
for ( let k = 0; k < mceContentBodys.length; k++ ) {
|
192 |
+
mceContentBodys[k].classList.remove( 'mce-content-body' );
|
193 |
+
}
|
194 |
+
}
|
195 |
+
|
196 |
+
let dataMceStyle = wptbNewPreviewTable.querySelectorAll( '[data-mce-style]' );
|
197 |
+
if ( dataMceStyle.length > 0 ) {
|
198 |
+
for ( let k = 0; k < dataMceStyle.length; k++ ) {
|
199 |
+
dataMceStyle[k].removeAttribute( 'data-mce-style' );
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
let mceIds = wptbNewPreviewTable.querySelectorAll( '[id^=mce_]' );
|
204 |
+
if ( mceIds.length > 0 ) {
|
205 |
+
for ( let k = 0; k < mceIds.length; k++ ) {
|
206 |
+
mceIds[k].removeAttribute( 'id' );
|
207 |
+
}
|
208 |
+
}
|
209 |
+
|
210 |
+
lastElem[0] = wptbNewPreviewTable;
|
211 |
+
}
|
212 |
+
|
213 |
+
lastElem[2] = wptbDlementDatas;
|
214 |
+
let styleObjJson = WPTB_Helper.elementsStylesConvertToObject();
|
215 |
+
lastElem[3] = styleObjJson;
|
216 |
+
window.wptbTableStateSaving[window.wptbTableStateSaving.length - 1] = lastElem;
|
217 |
+
}
|
218 |
+
}
|
219 |
+
|
220 |
+
jQuery( '.{{{targetInputAddClass}}}' ).wpColorPicker({
|
221 |
+
change: function ( event, ui ) {
|
222 |
+
let uiColor;
|
223 |
+
if( ui ) {
|
224 |
+
uiColor = ui.color.toString();
|
225 |
+
} else {
|
226 |
+
uiColor = '';
|
227 |
+
}
|
228 |
+
|
229 |
+
for( let i = 0; i < selectors.length; i++ ) {
|
230 |
+
if( selectors[i] && Array.isArray( selectors[i] ) && selectors[i][0] && selectors[i][1] ) {
|
231 |
+
let selectorElements = document.querySelectorAll( selectors[i][0] );
|
232 |
+
if( selectorElements.length > 0 ) {
|
233 |
+
for( let j = 0; j < selectorElements.length; j++ ) {
|
234 |
+
if( selectors[i][1] ) {
|
235 |
+
if( Array.isArray( selectors[i][1] ) ) {
|
236 |
+
for( let k = 0; k < selectors[i][1].length; k++ ) {
|
237 |
+
selectorElements[j].style[selectors[i][1][k]] = '';
|
238 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1][k], uiColor );
|
239 |
+
}
|
240 |
+
} else {
|
241 |
+
selectorElements[j].style[selectors[i][1]] = '';
|
242 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1], uiColor );
|
243 |
+
}
|
244 |
+
}
|
245 |
+
}
|
246 |
+
} else {
|
247 |
+
if( selectors[i][0] && selectors[i][1] ) {
|
248 |
+
if( Array.isArray( selectors[i][1] ) ) {
|
249 |
+
for( let k = 0; k < selectors[i][1].length; k++ ) {
|
250 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1][k], uiColor );
|
251 |
+
}
|
252 |
+
} else {
|
253 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1], uiColor );
|
254 |
+
}
|
255 |
+
}
|
256 |
+
}
|
257 |
+
}
|
258 |
+
}
|
259 |
+
|
260 |
+
let targetInput = document.getElementsByClassName( '{{{targetInputAddClass}}}' );
|
261 |
+
if( targetInput.length > 0 ) {
|
262 |
+
targetInput = targetInput[0];
|
263 |
+
targetInput.value = uiColor;
|
264 |
+
}
|
265 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement );
|
266 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}', true );
|
267 |
+
wpColorPickerCheckChangeForTableStateSaving( event );
|
268 |
+
},
|
269 |
+
clear: function( event ) {
|
270 |
+
for( let i = 0; i < selectors.length; i++ ) {
|
271 |
+
if( selectors[i] && Array.isArray( selectors[i] ) && selectors[i][0] && selectors[i][1] ) {
|
272 |
+
let selectorElements = document.querySelectorAll( selectors[i][0] );
|
273 |
+
if( selectorElements.length > 0 ) {
|
274 |
+
for( let j = 0; j < selectorElements.length; j++ ) {
|
275 |
+
if( selectors[i][1] ) {
|
276 |
+
if( Array.isArray( selectors[i][1] ) ) {
|
277 |
+
for( let k = 0; k < selectors[i][1].length; k++ ) {
|
278 |
+
selectorElements[j].style[selectors[i][1][k]] = '';
|
279 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1][k], '' );
|
280 |
+
}
|
281 |
+
} else {
|
282 |
+
selectorElements[j].style[selectors[i][1]] = '';
|
283 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1], '' );
|
284 |
+
}
|
285 |
+
}
|
286 |
+
}
|
287 |
+
} else {
|
288 |
+
if( selectors[i][0] && selectors[i][1] ) {
|
289 |
+
if( Array.isArray( selectors[i][1] ) ) {
|
290 |
+
for( let k = 0; k < selectors[i][1].length; k++ ) {
|
291 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1][k], '' );
|
292 |
+
}
|
293 |
+
} else {
|
294 |
+
WPTB_Helper.managerExternalCssStyles( dataSelectorElement, selectors[i][0], selectors[i][1], '' );
|
295 |
+
}
|
296 |
+
}
|
297 |
+
}
|
298 |
+
}
|
299 |
+
}
|
300 |
+
|
301 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement );
|
302 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}', true );
|
303 |
+
wpColorPickerCheckChangeForTableStateSaving( event );
|
304 |
+
}
|
305 |
+
});
|
306 |
+
}
|
307 |
+
}
|
308 |
+
} )();
|
309 |
+
</wptb-template-script>
|
310 |
+
<?php
|
311 |
+
}
|
312 |
+
}
|
inc/admin/{element-classes/controls → controls}/control-number.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
inc/admin/controls/control-section-header.php
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
+
|
4 |
+
// If this file is called directly, abort.
|
5 |
+
if ( ! defined( 'WPINC' ) ) {
|
6 |
+
die;
|
7 |
+
}
|
8 |
+
|
9 |
+
/**
|
10 |
+
* WP Table Builder section header control.
|
11 |
+
*
|
12 |
+
* A control class for creating a Section Header control object to show the header of the control panel of the element.
|
13 |
+
*
|
14 |
+
* @since 1.1.2
|
15 |
+
*/
|
16 |
+
class Control_Section_Header extends Base_Control {
|
17 |
+
/**
|
18 |
+
* Get control type.
|
19 |
+
*
|
20 |
+
* @since 1.1.2
|
21 |
+
* @access public
|
22 |
+
*
|
23 |
+
* @return string Control type.
|
24 |
+
*/
|
25 |
+
public function get_type() {
|
26 |
+
return 'section_header';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Enqueue control scripts and styles.
|
31 |
+
*
|
32 |
+
* Used to register and enqueue custom scripts and styles used by the section header control.
|
33 |
+
*
|
34 |
+
* @since 1.1.2
|
35 |
+
* @access public
|
36 |
+
*/
|
37 |
+
public function enqueue() {
|
38 |
+
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Render section header control output in the editor.
|
43 |
+
*
|
44 |
+
* Used to generate the control HTML in the editor wp js template
|
45 |
+
*
|
46 |
+
* @since 1.1.2
|
47 |
+
* @access public
|
48 |
+
*/
|
49 |
+
public function content_template() {
|
50 |
+
?>
|
51 |
+
<#
|
52 |
+
let label,
|
53 |
+
buttonBack;
|
54 |
+
if( data.label ) {
|
55 |
+
label = data.label;
|
56 |
+
}
|
57 |
+
|
58 |
+
if( data.buttonBack ) {
|
59 |
+
buttonBack = data.buttonBack;
|
60 |
+
}
|
61 |
+
#>
|
62 |
+
<div class="wptb-settings-dropdown">
|
63 |
+
<#
|
64 |
+
if( buttonBack ) {
|
65 |
+
#>
|
66 |
+
<div class="wptb-back-button">
|
67 |
+
<a href="javascript:void(0)" title="Back" class="wptb-exit-options" >
|
68 |
+
<svg pointer-events="none" width="12px" height="12px" x="0px" y="0px" viewBox="0 0 477.175 477.175"
|
69 |
+
style="enable-background:new 0 0 477.175 477.175;" xml:space="preserve">
|
70 |
+
<g>
|
71 |
+
<path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225
|
72 |
+
c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/>
|
73 |
+
</g>
|
74 |
+
</svg>
|
75 |
+
</a>
|
76 |
+
</div>
|
77 |
+
<#
|
78 |
+
}
|
79 |
+
#>
|
80 |
+
<div class="wptb-option-text">{{{label}}}</div>
|
81 |
+
</div>
|
82 |
+
|
83 |
+
<wptb-template-script>
|
84 |
+
( function() {
|
85 |
+
if( '{{{buttonBack}}}' && '{{{buttonBack}}}' == 'true' ) {
|
86 |
+
document.querySelector('.wptb-back-button').addEventListener('click', function (event) {
|
87 |
+
WPTB_Helper.clickOnFreeSpace();
|
88 |
+
});
|
89 |
+
}
|
90 |
+
} )();
|
91 |
+
</wptb-template-script>
|
92 |
+
|
93 |
+
<?php
|
94 |
+
}
|
95 |
+
}
|
inc/admin/{element-classes/controls → controls}/control-select.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
inc/admin/{element-classes/controls → controls}/control-size.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
@@ -59,7 +59,9 @@ class Control_Size extends Base_Control {
|
|
59 |
max,
|
60 |
min,
|
61 |
defaultValue,
|
62 |
-
dimension
|
|
|
|
|
63 |
|
64 |
if( data.selectors && typeof data.selectors === 'object' ) {
|
65 |
for ( let prop in data.selectors ) {
|
@@ -92,6 +94,14 @@ class Control_Size extends Base_Control {
|
|
92 |
dimension = 'px';
|
93 |
}
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
targetInputAddClass = data.elementControlTargetUnicClass;
|
96 |
#>
|
97 |
|
@@ -135,7 +145,12 @@ class Control_Size extends Base_Control {
|
|
135 |
if( selectorElements.length > 0 ) {
|
136 |
for( let i = 0; i < selectorElements.length; i++ ) {
|
137 |
for( let j = 0; j < cssSettingArr.length; j++ ) {
|
138 |
-
|
|
|
|
|
|
|
|
|
|
|
139 |
}
|
140 |
}
|
141 |
};
|
@@ -146,8 +161,13 @@ class Control_Size extends Base_Control {
|
|
146 |
}
|
147 |
};
|
148 |
} else if( targetInputs[i].classList.contains( 'wptb-number-input' ) ) {
|
149 |
-
WPTB_Helper.numberImputSize( targetInputs[i], '{{{max}}}'.length - 1, '{{{max}}}' );
|
150 |
targetInputs[i].oninput = function( event ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
this.parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0].value = this.value;
|
152 |
this.parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0].oninput( event );
|
153 |
}
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
59 |
max,
|
60 |
min,
|
61 |
defaultValue,
|
62 |
+
dimension,
|
63 |
+
addText,
|
64 |
+
whenZero;
|
65 |
|
66 |
if( data.selectors && typeof data.selectors === 'object' ) {
|
67 |
for ( let prop in data.selectors ) {
|
94 |
dimension = 'px';
|
95 |
}
|
96 |
|
97 |
+
if( data.addText ) {
|
98 |
+
addText = data.addText;
|
99 |
+
}
|
100 |
+
|
101 |
+
if( data.whenZero ) {
|
102 |
+
whenZero = data.whenZero;
|
103 |
+
}
|
104 |
+
|
105 |
targetInputAddClass = data.elementControlTargetUnicClass;
|
106 |
#>
|
107 |
|
145 |
if( selectorElements.length > 0 ) {
|
146 |
for( let i = 0; i < selectorElements.length; i++ ) {
|
147 |
for( let j = 0; j < cssSettingArr.length; j++ ) {
|
148 |
+
if( this.value == 0 && '{{{whenZero}}}' ) {
|
149 |
+
selectorElements[i].style[cssSettingArr[j]] = '{{{whenZero}}}';
|
150 |
+
continue;
|
151 |
+
}
|
152 |
+
|
153 |
+
selectorElements[i].style[cssSettingArr[j]] = this.value + '{{{dimension}}}' + '{{{addText}}}';
|
154 |
}
|
155 |
}
|
156 |
};
|
161 |
}
|
162 |
};
|
163 |
} else if( targetInputs[i].classList.contains( 'wptb-number-input' ) ) {
|
|
|
164 |
targetInputs[i].oninput = function( event ) {
|
165 |
+
if( parseInt( this.value ) < parseInt( '{{{min}}}' ) ) {
|
166 |
+
this.value = parseInt( '{{{min}}}' );
|
167 |
+
} else if( parseInt( this.value ) > parseInt( '{{{max}}}' ) ) {
|
168 |
+
this.value = parseInt ( '{{{max}}}' );
|
169 |
+
}
|
170 |
+
|
171 |
this.parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0].value = this.value;
|
172 |
this.parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0].oninput( event );
|
173 |
}
|
inc/admin/{element-classes/controls → controls}/control-text.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
inc/admin/{element-classes/controls → controls}/control-textarea.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
@@ -54,6 +54,7 @@ class Control_Textarea extends Base_Control {
|
|
54 |
placeholder,
|
55 |
rows,
|
56 |
cols,
|
|
|
57 |
elemContainer,
|
58 |
targetTextareaAddClass = '';
|
59 |
|
@@ -69,6 +70,10 @@ class Control_Textarea extends Base_Control {
|
|
69 |
cols = data.cols;
|
70 |
}
|
71 |
|
|
|
|
|
|
|
|
|
72 |
if( data.placeholder ) {
|
73 |
placeholder = data.placeholder;
|
74 |
}
|
@@ -86,7 +91,7 @@ class Control_Textarea extends Base_Control {
|
|
86 |
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 12px; padding-top: 23px;">
|
87 |
<div class="wptb-settings-col-xs-12">
|
88 |
<textarea class="wptb-number wptb-element-property {{{targetTextareaAddClass}}}"
|
89 |
-
rows="{{{rows}}}" cols="{{{cols}}}" placeholder="{{{placeholder}}}" data-element="{{{elemContainer}}}" style="width: 100%"
|
90 |
</div>
|
91 |
</div>
|
92 |
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
54 |
placeholder,
|
55 |
rows,
|
56 |
cols,
|
57 |
+
defaultValue,
|
58 |
elemContainer,
|
59 |
targetTextareaAddClass = '';
|
60 |
|
70 |
cols = data.cols;
|
71 |
}
|
72 |
|
73 |
+
if( data.defaultValue ) {
|
74 |
+
defaultValue = data.defaultValue;
|
75 |
+
}
|
76 |
+
|
77 |
if( data.placeholder ) {
|
78 |
placeholder = data.placeholder;
|
79 |
}
|
91 |
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 12px; padding-top: 23px;">
|
92 |
<div class="wptb-settings-col-xs-12">
|
93 |
<textarea class="wptb-number wptb-element-property {{{targetTextareaAddClass}}}"
|
94 |
+
rows="{{{rows}}}" cols="{{{cols}}}" placeholder="{{{placeholder}}}" data-element="{{{elemContainer}}}" style="width: 100%">{{{defaultValue}}}</textarea>
|
95 |
</div>
|
96 |
</div>
|
97 |
|
inc/admin/{element-classes/controls → controls}/control-toggle.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
@@ -49,16 +49,10 @@ class Control_Toggle extends Base_Control {
|
|
49 |
public function content_template() {
|
50 |
?>
|
51 |
<#
|
52 |
-
let
|
53 |
-
|
54 |
-
elemContainer,
|
55 |
-
label,
|
56 |
selectors = [],
|
57 |
-
|
58 |
-
|
59 |
-
if( data.elemContainer ) {
|
60 |
-
elemContainer = data.elemContainer;
|
61 |
-
}
|
62 |
|
63 |
if( data.label ) {
|
64 |
label = data.label;
|
@@ -76,6 +70,10 @@ class Control_Toggle extends Base_Control {
|
|
76 |
selectorsJson = JSON.stringify( selectors );
|
77 |
}
|
78 |
|
|
|
|
|
|
|
|
|
79 |
targetInputAddClass = data.elementControlTargetUnicClass;
|
80 |
#>
|
81 |
|
@@ -106,7 +104,48 @@ class Control_Toggle extends Base_Control {
|
|
106 |
}
|
107 |
|
108 |
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement, details );
|
109 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}', true );
|
111 |
|
112 |
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
49 |
public function content_template() {
|
50 |
?>
|
51 |
<#
|
52 |
+
let label,
|
53 |
+
selector,
|
|
|
|
|
54 |
selectors = [],
|
55 |
+
elemContainer;
|
|
|
|
|
|
|
|
|
56 |
|
57 |
if( data.label ) {
|
58 |
label = data.label;
|
70 |
selectorsJson = JSON.stringify( selectors );
|
71 |
}
|
72 |
|
73 |
+
if( data.elemContainer ) {
|
74 |
+
elemContainer = data.elemContainer;
|
75 |
+
}
|
76 |
+
|
77 |
targetInputAddClass = data.elementControlTargetUnicClass;
|
78 |
#>
|
79 |
|
104 |
}
|
105 |
|
106 |
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement, details );
|
107 |
+
|
108 |
+
if( '{{{selectorsJson}}}' ) {
|
109 |
+
let selectors = JSON.parse( '{{{selectorsJson}}}' );
|
110 |
+
|
111 |
+
if( selectors && Array.isArray( selectors ) ) {
|
112 |
+
for( let i = 0; i < selectors.length; i++ ) {
|
113 |
+
if( selectors[i] && Array.isArray( selectors[i] ) && selectors[i][0] && selectors[i][1] ) {
|
114 |
+
let selectorElements = document.querySelectorAll( selectors[i][0] );
|
115 |
+
if( selectorElements.length > 0 ) {
|
116 |
+
for( let j = 0; j < selectorElements.length; j++ ) {
|
117 |
+
if( selectors[i][1] && Array.isArray( selectors[i][1] ) ) {
|
118 |
+
if( selectors[i][1][0] && Array.isArray( selectors[i][1][0] ) ) {
|
119 |
+
for( let k = 0; k < selectors[i][1].length; k++ ) {
|
120 |
+
if( selectors[i][1][k][0] && selectors[i][1][k][1] && selectors[i][1][k][2] ) {
|
121 |
+
let styleValue;
|
122 |
+
if( details.value == 'checked' ) {
|
123 |
+
styleValue = selectors[i][1][k][1];
|
124 |
+
} else {
|
125 |
+
styleValue = selectors[i][1][k][2];
|
126 |
+
}
|
127 |
+
selectorElements[j].style[selectors[i][1][k][0]] = styleValue;
|
128 |
+
}
|
129 |
+
}
|
130 |
+
} else {
|
131 |
+
if( selectors[i][1][0] && selectors[i][1][1] && selectors[i][1][2] ) {
|
132 |
+
let styleValue;
|
133 |
+
if( details.value == 'checked' ) {
|
134 |
+
styleValue = selectors[i][1][1];
|
135 |
+
} else {
|
136 |
+
styleValue = selectors[i][1][2];
|
137 |
+
}
|
138 |
+
selectorElements[j].style[selectors[i][1][0]] = styleValue;
|
139 |
+
}
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
+
}
|
145 |
+
}
|
146 |
+
}
|
147 |
+
}
|
148 |
+
|
149 |
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}', true );
|
150 |
|
151 |
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
inc/admin/{element-classes/controls → controls}/control-url.php
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
1 |
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Controls;
|
3 |
|
4 |
// If this file is called directly, abort.
|
5 |
if ( ! defined( 'WPINC' ) ) {
|
inc/admin/css/admin.css
CHANGED
@@ -16,7 +16,7 @@ body>img {
|
|
16 |
.wptb-admin-container {
|
17 |
background: #fff;
|
18 |
color: #444;
|
19 |
-
z-index:
|
20 |
position: fixed;
|
21 |
top: 0;
|
22 |
bottom: 0;
|
@@ -1229,6 +1229,7 @@ table.wptb-table {
|
|
1229 |
right: 0;
|
1230 |
left: 0;
|
1231 |
bottom: 0;
|
|
|
1232 |
}
|
1233 |
|
1234 |
.wptb-preview-table-manage-cells td:hover::after {
|
@@ -1350,7 +1351,7 @@ table.wptb-table {
|
|
1350 |
left: 2px;
|
1351 |
}
|
1352 |
|
1353 |
-
.wptb-table-head td:empty::before {
|
1354 |
content: 'Header';
|
1355 |
}
|
1356 |
|
@@ -1359,6 +1360,7 @@ table.wptb-table {
|
|
1359 |
border: 1px solid #fff0;
|
1360 |
margin-top: 15px;
|
1361 |
margin-bottom: 15px;
|
|
|
1362 |
}
|
1363 |
|
1364 |
|
@@ -1379,6 +1381,16 @@ table.wptb-table {
|
|
1379 |
max-width: 100%;
|
1380 |
position: relative;
|
1381 |
margin: auto;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1382 |
}
|
1383 |
|
1384 |
.wptb-image-wrapper::after {
|
@@ -1547,6 +1559,10 @@ table.wptb-table {
|
|
1547 |
|
1548 |
/* customize tinymce Editor */
|
1549 |
|
|
|
|
|
|
|
|
|
1550 |
.mce-tinymce.mce-tinymce-inline.mce-container.mce-panel {
|
1551 |
left: 50% !important;
|
1552 |
transform: translate(-50%, 0) !important;
|
@@ -1577,6 +1593,10 @@ table.wptb-table {
|
|
1577 |
background: transparent !important;
|
1578 |
}
|
1579 |
|
|
|
|
|
|
|
|
|
1580 |
.wptb-droppable.wptb-cell ul,
|
1581 |
.wptb-droppable.wptb-cell ol {
|
1582 |
border: 1px solid transparent;
|
@@ -1695,7 +1715,7 @@ table.wptb-table {
|
|
1695 |
font-size: 9pt;
|
1696 |
display: none;
|
1697 |
max-width: 70px;
|
1698 |
-
z-index:
|
1699 |
box-sizing: border-box;
|
1700 |
}
|
1701 |
|
@@ -1764,7 +1784,7 @@ table.wptb-table {
|
|
1764 |
.wptb-drop-handle {
|
1765 |
height: 11px;
|
1766 |
position: absolute;
|
1767 |
-
z-index:
|
1768 |
display: none;
|
1769 |
}
|
1770 |
|
@@ -1788,7 +1808,7 @@ table.wptb-table {
|
|
1788 |
position: absolute;
|
1789 |
width: 1px;
|
1790 |
height: 1px;
|
1791 |
-
z-index:
|
1792 |
}
|
1793 |
|
1794 |
.wptb-drop-handle.wptb-moving-into-same-elem,
|
@@ -1864,7 +1884,7 @@ table.wptb-table {
|
|
1864 |
transition: all 0.2s ease;
|
1865 |
transition-property: left, top;
|
1866 |
width: auto;
|
1867 |
-
z-index:
|
1868 |
}
|
1869 |
|
1870 |
.wptb-range-input {
|
@@ -1895,7 +1915,7 @@ table.wptb-table {
|
|
1895 |
z-index: 1;
|
1896 |
}
|
1897 |
|
1898 |
-
.wptb-table-head td.wptb-drop-here-empty:empty::before,
|
1899 |
.wptb-row td.wptb-drop-here-empty:empty::before {
|
1900 |
background-color: dodgerblue;
|
1901 |
border: 1px solid dodgerblue;
|
16 |
.wptb-admin-container {
|
17 |
background: #fff;
|
18 |
color: #444;
|
19 |
+
z-index: 10099;
|
20 |
position: fixed;
|
21 |
top: 0;
|
22 |
bottom: 0;
|
1229 |
right: 0;
|
1230 |
left: 0;
|
1231 |
bottom: 0;
|
1232 |
+
z-index: 100;
|
1233 |
}
|
1234 |
|
1235 |
.wptb-preview-table-manage-cells td:hover::after {
|
1351 |
left: 2px;
|
1352 |
}
|
1353 |
|
1354 |
+
.wptb-preview-table.wptb-table-preview-head .wptb-row:first-child td:empty::before {
|
1355 |
content: 'Header';
|
1356 |
}
|
1357 |
|
1360 |
border: 1px solid #fff0;
|
1361 |
margin-top: 15px;
|
1362 |
margin-bottom: 15px;
|
1363 |
+
min-height: 15px;
|
1364 |
}
|
1365 |
|
1366 |
|
1381 |
max-width: 100%;
|
1382 |
position: relative;
|
1383 |
margin: auto;
|
1384 |
+
text-decoration: none;
|
1385 |
+
}
|
1386 |
+
|
1387 |
+
.wptb-icon-image-button {
|
1388 |
+
display: block;
|
1389 |
+
padding: 5px;
|
1390 |
+
background: #747d84;
|
1391 |
+
border-radius: 5px;
|
1392 |
+
color: black;
|
1393 |
+
cursor: pointer;
|
1394 |
}
|
1395 |
|
1396 |
.wptb-image-wrapper::after {
|
1559 |
|
1560 |
/* customize tinymce Editor */
|
1561 |
|
1562 |
+
.mce-content-body {
|
1563 |
+
min-height: 19px;
|
1564 |
+
}
|
1565 |
+
|
1566 |
.mce-tinymce.mce-tinymce-inline.mce-container.mce-panel {
|
1567 |
left: 50% !important;
|
1568 |
transform: translate(-50%, 0) !important;
|
1593 |
background: transparent !important;
|
1594 |
}
|
1595 |
|
1596 |
+
br[data-mce-bogus="1"] {
|
1597 |
+
display:none;
|
1598 |
+
}
|
1599 |
+
|
1600 |
.wptb-droppable.wptb-cell ul,
|
1601 |
.wptb-droppable.wptb-cell ol {
|
1602 |
border: 1px solid transparent;
|
1715 |
font-size: 9pt;
|
1716 |
display: none;
|
1717 |
max-width: 70px;
|
1718 |
+
z-index: 10101;
|
1719 |
box-sizing: border-box;
|
1720 |
}
|
1721 |
|
1784 |
.wptb-drop-handle {
|
1785 |
height: 11px;
|
1786 |
position: absolute;
|
1787 |
+
z-index: 10100;
|
1788 |
display: none;
|
1789 |
}
|
1790 |
|
1808 |
position: absolute;
|
1809 |
width: 1px;
|
1810 |
height: 1px;
|
1811 |
+
z-index: 10100;
|
1812 |
}
|
1813 |
|
1814 |
.wptb-drop-handle.wptb-moving-into-same-elem,
|
1884 |
transition: all 0.2s ease;
|
1885 |
transition-property: left, top;
|
1886 |
width: auto;
|
1887 |
+
z-index: 11000;
|
1888 |
}
|
1889 |
|
1890 |
.wptb-range-input {
|
1915 |
z-index: 1;
|
1916 |
}
|
1917 |
|
1918 |
+
.wptb-preview-table.wptb-table-preview-head .wptb-row:first-child td.wptb-drop-here-empty:empty::before,
|
1919 |
.wptb-row td.wptb-drop-here-empty:empty::before {
|
1920 |
background-color: dodgerblue;
|
1921 |
border: 1px solid dodgerblue;
|
inc/admin/element-classes/base/element-base-object.php
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
<?php
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Base;
|
|
|
3 |
use WP_Table_Builder\Inc\Core\Init as Init;
|
4 |
use WP_Table_Builder as NS;
|
5 |
|
@@ -19,49 +20,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
19 |
* @since 1.1.2
|
20 |
* @abstract
|
21 |
*/
|
22 |
-
abstract class Element_Base_Object {
|
23 |
-
|
24 |
-
/**
|
25 |
-
* Get element name.
|
26 |
-
*
|
27 |
-
* Retrieve the element name.
|
28 |
-
*
|
29 |
-
* @since 1.1.2
|
30 |
-
* @access public
|
31 |
-
* @abstract
|
32 |
-
*
|
33 |
-
* @return string The name.
|
34 |
-
*/
|
35 |
-
abstract public function get_name();
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Get unique name.
|
39 |
-
*
|
40 |
-
* Some classes need to use unique names, this method allows you to create
|
41 |
-
* them. By default it returns the regular name.
|
42 |
-
*
|
43 |
-
* @since 1.1.2
|
44 |
-
* @access public
|
45 |
-
*
|
46 |
-
* @return string Unique name.
|
47 |
-
*/
|
48 |
-
public function get_unique_name() {
|
49 |
-
return $this->get_name();
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* Get element title.
|
54 |
-
*
|
55 |
-
* Retrieve the item title.
|
56 |
-
*
|
57 |
-
* @since 1.1.2
|
58 |
-
* @access public
|
59 |
-
*
|
60 |
-
* @return string Element title.
|
61 |
-
*/
|
62 |
-
public function get_title() {
|
63 |
-
return '';
|
64 |
-
}
|
65 |
|
66 |
/**
|
67 |
* Get directory icon.
|
@@ -96,71 +55,7 @@ abstract class Element_Base_Object {
|
|
96 |
public function element_script() {}
|
97 |
|
98 |
/**
|
99 |
-
*
|
100 |
-
*
|
101 |
-
* Returns the stack of controls.
|
102 |
-
*
|
103 |
-
* @since 1.1.2
|
104 |
-
* @access public
|
105 |
-
*
|
106 |
-
* @return array Stack of controls.
|
107 |
-
*/
|
108 |
-
public function get_stack() {
|
109 |
-
$stack = NS::init()->controls_manager->get_item_stack( $this );
|
110 |
-
|
111 |
-
if ( null === $stack ) {
|
112 |
-
$this->init_controls();
|
113 |
-
|
114 |
-
return NS::init()->controls_manager->get_item_stack( $this );
|
115 |
-
}
|
116 |
-
|
117 |
-
return $stack;
|
118 |
-
}
|
119 |
-
|
120 |
-
/**
|
121 |
-
* Register controls.
|
122 |
-
*
|
123 |
-
* Used to add new controls group to stack
|
124 |
-
*
|
125 |
-
* @since 1.1.2
|
126 |
-
* @access protected
|
127 |
-
*/
|
128 |
-
protected function _register_controls() {}
|
129 |
-
|
130 |
-
/**
|
131 |
-
* Initialize controls.
|
132 |
-
*
|
133 |
-
* Register the all controls added by `_register_controls()`.
|
134 |
-
*
|
135 |
-
* @since 1.1.2
|
136 |
-
* @access protected
|
137 |
-
*/
|
138 |
-
public function init_controls() {
|
139 |
-
$this->_register_controls();
|
140 |
-
}
|
141 |
-
|
142 |
-
/**
|
143 |
-
* Add new control to stack.
|
144 |
-
*
|
145 |
-
* Register a single control to allow the user to set/update data.
|
146 |
-
*
|
147 |
-
* This method should be used inside `_register_controls()`.
|
148 |
-
*
|
149 |
-
* @since 1.1.2
|
150 |
-
* @access public
|
151 |
-
*
|
152 |
-
* @param string $id Control ID.
|
153 |
-
* @param array $args Control arguments.
|
154 |
-
*
|
155 |
-
* @return bool True if control added, False otherwise.
|
156 |
-
*/
|
157 |
-
|
158 |
-
public function add_control( $id, array $args ) {
|
159 |
-
return Init::instance()->controls_manager->add_control_to_stack( $this, $id, $args );
|
160 |
-
}
|
161 |
-
|
162 |
-
/**
|
163 |
-
* Render item output in the editor.
|
164 |
*
|
165 |
* Used to generate the live preview, using a wp js template
|
166 |
*
|
1 |
<?php
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Base;
|
3 |
+
use WP_Table_Builder\Inc\Admin\Base\Controls_Stack;
|
4 |
use WP_Table_Builder\Inc\Core\Init as Init;
|
5 |
use WP_Table_Builder as NS;
|
6 |
|
20 |
* @since 1.1.2
|
21 |
* @abstract
|
22 |
*/
|
23 |
+
abstract class Element_Base_Object extends Controls_Stack {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
|
25 |
/**
|
26 |
* Get directory icon.
|
55 |
public function element_script() {}
|
56 |
|
57 |
/**
|
58 |
+
* Render element output in the editor.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
*
|
60 |
* Used to generate the live preview, using a wp js template
|
61 |
*
|
inc/admin/element-classes/controls/control-color.php
DELETED
@@ -1,124 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Controls;
|
3 |
-
|
4 |
-
// If this file is called directly, abort.
|
5 |
-
if ( ! defined( 'WPINC' ) ) {
|
6 |
-
die;
|
7 |
-
}
|
8 |
-
|
9 |
-
/**
|
10 |
-
* WP Table Builder color control.
|
11 |
-
*
|
12 |
-
* A Control class for creating color control. Displays a color picker field.
|
13 |
-
* When this control adds to element there is opportunity to point css type (color, backgroundColor ...)
|
14 |
-
*
|
15 |
-
* @since 1.1.2
|
16 |
-
*/
|
17 |
-
class Control_Color extends Base_Control {
|
18 |
-
/**
|
19 |
-
* Get control type.
|
20 |
-
*
|
21 |
-
* @since 1.1.2
|
22 |
-
* @access public
|
23 |
-
*
|
24 |
-
* @return string Control type.
|
25 |
-
*/
|
26 |
-
public function get_type() {
|
27 |
-
return 'color';
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
* Enqueue color control scripts and styles.
|
32 |
-
*
|
33 |
-
* Used to register and enqueue custom scripts and styles used by the color
|
34 |
-
* control.
|
35 |
-
*
|
36 |
-
* @since 1.1.2
|
37 |
-
* @access public
|
38 |
-
*/
|
39 |
-
public function enqueue() {
|
40 |
-
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* Render color control output in the editor.
|
45 |
-
*
|
46 |
-
* Used to generate the control HTML in the editor wp js template
|
47 |
-
*
|
48 |
-
* @since 1.1.2
|
49 |
-
* @access public
|
50 |
-
*/
|
51 |
-
public function content_template() {
|
52 |
-
?>
|
53 |
-
<#
|
54 |
-
let label,
|
55 |
-
selector,
|
56 |
-
cssSetting,
|
57 |
-
targetInputAddClass;
|
58 |
-
|
59 |
-
if( data.label ) {
|
60 |
-
label = data.label;
|
61 |
-
}
|
62 |
-
|
63 |
-
for ( let prop in data.selectors ) {
|
64 |
-
selector = prop;
|
65 |
-
cssSetting = data.selectors[prop];
|
66 |
-
}
|
67 |
-
|
68 |
-
targetInputAddClass = data.elementControlTargetUnicClass;
|
69 |
-
#>
|
70 |
-
<div class='wptb-settings-item-header' >
|
71 |
-
<p class="wptb-settings-item-title">{{{label}}}</p>
|
72 |
-
</div>
|
73 |
-
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-top: 25px; padding-bottom: 10px;">
|
74 |
-
<div class='wptb-settings-col-xs-8'>
|
75 |
-
<input type="text" class="wptb-element-property wptb-color-picker {{{targetInputAddClass}}}" data-type="color" value=""/>
|
76 |
-
</div>
|
77 |
-
</div>
|
78 |
-
|
79 |
-
<wptb-template-script>
|
80 |
-
( function() {
|
81 |
-
let selectorElement = document.querySelector( '{{{selector}}}' );
|
82 |
-
let targetInput = document.querySelector( '.{{{targetInputAddClass}}}' );
|
83 |
-
|
84 |
-
if( selectorElement && targetInput ) {
|
85 |
-
let selectorElementCss = selectorElement.style['{{{cssSetting}}}'];
|
86 |
-
if( selectorElementCss ) {
|
87 |
-
targetInput.value = WPTB_Helper.rgbToHex( selectorElementCss );
|
88 |
-
}
|
89 |
-
}
|
90 |
-
|
91 |
-
jQuery( '.{{{targetInputAddClass}}}' ).wpColorPicker({
|
92 |
-
change: function ( event, ui ) {
|
93 |
-
let uiColor;
|
94 |
-
if( ui ) {
|
95 |
-
uiColor = ui.color.toString();
|
96 |
-
} else {
|
97 |
-
uiColor = '';
|
98 |
-
}
|
99 |
-
|
100 |
-
let selectorElements = document.querySelectorAll( '{{{selector}}}' );
|
101 |
-
if( selectorElements.length > 0 ) {
|
102 |
-
for( let i = 0; i < selectorElements.length; i++ ) {
|
103 |
-
selectorElements[i].style['{{{cssSetting}}}'] = uiColor;
|
104 |
-
}
|
105 |
-
}
|
106 |
-
|
107 |
-
WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving( event );
|
108 |
-
},
|
109 |
-
clear: function( event ) {
|
110 |
-
let selectorElements = document.querySelectorAll( '{{{selector}}}' );
|
111 |
-
if( selectorElements.length > 0 ) {
|
112 |
-
for( let i = 0; i < selectorElements.length; i++ ) {
|
113 |
-
selectorElements[i].style['{{{cssSetting}}}'] = '';
|
114 |
-
}
|
115 |
-
}
|
116 |
-
|
117 |
-
WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving( event );
|
118 |
-
}
|
119 |
-
});
|
120 |
-
} )();
|
121 |
-
</wptb-template-script>
|
122 |
-
<?php
|
123 |
-
}
|
124 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/admin/element-classes/controls/control-section-header.php
DELETED
@@ -1,72 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Controls;
|
3 |
-
|
4 |
-
// If this file is called directly, abort.
|
5 |
-
if ( ! defined( 'WPINC' ) ) {
|
6 |
-
die;
|
7 |
-
}
|
8 |
-
|
9 |
-
/**
|
10 |
-
* WP Table Builder section header control.
|
11 |
-
*
|
12 |
-
* A control class for creating a Section Header control object to show the header of the control panel of the element.
|
13 |
-
*
|
14 |
-
* @since 1.1.2
|
15 |
-
*/
|
16 |
-
class Control_Section_Header extends Base_Control {
|
17 |
-
/**
|
18 |
-
* Get control type.
|
19 |
-
*
|
20 |
-
* @since 1.1.2
|
21 |
-
* @access public
|
22 |
-
*
|
23 |
-
* @return string Control type.
|
24 |
-
*/
|
25 |
-
public function get_type() {
|
26 |
-
return 'section_header';
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Enqueue control scripts and styles.
|
31 |
-
*
|
32 |
-
* Used to register and enqueue custom scripts and styles used by the section header control.
|
33 |
-
*
|
34 |
-
* @since 1.1.2
|
35 |
-
* @access public
|
36 |
-
*/
|
37 |
-
public function enqueue() {
|
38 |
-
|
39 |
-
}
|
40 |
-
|
41 |
-
/**
|
42 |
-
* Render section header control output in the editor.
|
43 |
-
*
|
44 |
-
* Used to generate the control HTML in the editor wp js template
|
45 |
-
*
|
46 |
-
* @since 1.1.2
|
47 |
-
* @access public
|
48 |
-
*/
|
49 |
-
public function content_template() {
|
50 |
-
?>
|
51 |
-
<#
|
52 |
-
let label;
|
53 |
-
if( data.label ) {
|
54 |
-
label = data.label;
|
55 |
-
}
|
56 |
-
#>
|
57 |
-
<div class="wptb-settings-dropdown">
|
58 |
-
<div class="wptb-back-button">
|
59 |
-
<a href="javascript:void(0)" title="Back" class="wptb-exit-options" >
|
60 |
-
<svg pointer-events="none" width="12px" height="12px" x="0px" y="0px" viewBox="0 0 477.175 477.175"
|
61 |
-
style="enable-background:new 0 0 477.175 477.175;" xml:space="preserve">
|
62 |
-
<g>
|
63 |
-
<path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225
|
64 |
-
c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/>
|
65 |
-
</g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>
|
66 |
-
</a>
|
67 |
-
</div>
|
68 |
-
<div class="wptb-option-text">{{{label}}}</div>
|
69 |
-
</div>
|
70 |
-
<?php
|
71 |
-
}
|
72 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/admin/element-classes/element-scripts/button-element.js
CHANGED
@@ -47,7 +47,7 @@ if( target ) {
|
|
47 |
},
|
48 |
init_instance_callback: function (editor) {
|
49 |
window.currentEditor = editor;
|
50 |
-
editor.on('focus', function (e) {
|
51 |
var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;
|
52 |
if (window.currentEditor &&
|
53 |
document.getElementById('wptb_builder').scrollTop >= 55 &&
|
@@ -60,6 +60,7 @@ if( target ) {
|
|
60 |
delete document.getElementById('wpcd_fixed_toolbar').style.right;
|
61 |
delete document.getElementById('wpcd_fixed_toolbar').style.top;
|
62 |
}
|
|
|
63 |
});
|
64 |
}
|
65 |
});
|
@@ -114,8 +115,8 @@ if( elementsSettingsTemplateJs.length > 0 ) {
|
|
114 |
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
115 |
if( elementsSettings ) {
|
116 |
elementsSettings = JSON.parse( elementsSettings );
|
117 |
-
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-
|
118 |
-
elementSettings = elementsSettings['tmpl-wptb-
|
119 |
}
|
120 |
}
|
121 |
} else {
|
@@ -133,7 +134,7 @@ if( ! elementSettings ) {
|
|
133 |
elementsSettings = {};
|
134 |
}
|
135 |
|
136 |
-
elementsSettings['tmpl-wptb-
|
137 |
let buttonId;
|
138 |
let a = element.getElementsByTagName( 'a' );
|
139 |
if( a.length > 0 ) {
|
@@ -141,9 +142,9 @@ if( ! elementSettings ) {
|
|
141 |
|
142 |
if( a.hasAttribute( 'id' ) ) {
|
143 |
buttonId = a.getAttribute( 'id' );
|
144 |
-
elementsSettings['tmpl-wptb-
|
145 |
} else {
|
146 |
-
elementsSettings['tmpl-wptb-
|
147 |
}
|
148 |
|
149 |
if( elementsSettings ) {
|
47 |
},
|
48 |
init_instance_callback: function (editor) {
|
49 |
window.currentEditor = editor;
|
50 |
+
editor.on( 'focus', function (e) {
|
51 |
var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;
|
52 |
if (window.currentEditor &&
|
53 |
document.getElementById('wptb_builder').scrollTop >= 55 &&
|
60 |
delete document.getElementById('wpcd_fixed_toolbar').style.right;
|
61 |
delete document.getElementById('wpcd_fixed_toolbar').style.top;
|
62 |
}
|
63 |
+
console.log('Hello555');
|
64 |
});
|
65 |
}
|
66 |
});
|
115 |
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
116 |
if( elementsSettings ) {
|
117 |
elementsSettings = JSON.parse( elementsSettings );
|
118 |
+
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-el-datas-' + infArrEl[1] ) in elementsSettings ) {
|
119 |
+
elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArrEl[1]];
|
120 |
}
|
121 |
}
|
122 |
} else {
|
134 |
elementsSettings = {};
|
135 |
}
|
136 |
|
137 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArrEl[1]] = {};
|
138 |
let buttonId;
|
139 |
let a = element.getElementsByTagName( 'a' );
|
140 |
if( a.length > 0 ) {
|
142 |
|
143 |
if( a.hasAttribute( 'id' ) ) {
|
144 |
buttonId = a.getAttribute( 'id' );
|
145 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArrEl[1]]['data-wptb-el-' + infArrEl[1] + '-button-id'] = buttonId;
|
146 |
} else {
|
147 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArrEl[1]]['data-wptb-el-' + infArrEl[1] + '-button-id'] = '';
|
148 |
}
|
149 |
|
150 |
if( elementsSettings ) {
|
inc/admin/element-classes/element-scripts/custom-html-element.js
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
let infArr = element.className.match( /wptb-element-((.+-)\d+)/i );
|
2 |
+
let controlKey = 'textarea';
|
3 |
+
let elementControlTargetUnicClass = 'wptb-el-' + infArr[1] + '-' + controlKey;
|
4 |
+
|
5 |
+
tinyMCE.init({
|
6 |
+
target: element.childNodes[0],
|
7 |
+
inline: true,
|
8 |
+
plugins: "code",
|
9 |
+
//dialog_type: "modal",
|
10 |
+
//theme: 'modern',
|
11 |
+
menubar: false,
|
12 |
+
force_br_newlines : false,
|
13 |
+
force_p_newlines : false,
|
14 |
+
forced_root_block : '',
|
15 |
+
paste_as_text: false,
|
16 |
+
toolbar: false,
|
17 |
+
extended_valid_elements: "svg[*],defs[*],pattern[*],desc[*],metadata[*],g[*],\n\
|
18 |
+
mask[*],path[*],line[*],marker[*],rect[*],circle[*],\n\
|
19 |
+
ellipse[*],polygon[*],polyline[*],linearGradient[*],\n\
|
20 |
+
radialGradient[*],stop[*],image[*],view[*],text[*],\n\
|
21 |
+
textPath[*],title[*],tspan[*],glyph[*],symbol[*],switch[*],use[*]",
|
22 |
+
setup: function ( ed ) {
|
23 |
+
|
24 |
+
ed.on( 'input', function( e ) {
|
25 |
+
let elementControlTextarea = document.getElementsByClassName( elementControlTargetUnicClass );
|
26 |
+
if( elementControlTextarea.length > 0 ) {
|
27 |
+
elementControlTextarea = elementControlTextarea[0];
|
28 |
+
elementControlTextarea.value = ed.targetElm.textContent;
|
29 |
+
}
|
30 |
+
WPTB_Helper.controlsStateManager( elementControlTargetUnicClass, true );
|
31 |
+
});
|
32 |
+
|
33 |
+
ed.on( 'focus', function( ) {
|
34 |
+
ed.targetElm.innerText = ed.targetElm.innerHTML;
|
35 |
+
});
|
36 |
+
|
37 |
+
ed.on( 'blur', function( ) {
|
38 |
+
ed.targetElm.innerHTML = ed.targetElm.innerText;
|
39 |
+
});
|
40 |
+
|
41 |
+
ed.on( 'keydown', function( e ) {
|
42 |
+
let div = e.target;
|
43 |
+
let divText = div.innerHTML.replace( /\s+/g, ' ' ).trim();
|
44 |
+
divText = divText.replace( / /g, '').trim();
|
45 |
+
|
46 |
+
if( ! window.htmlElemKeyDown ) {
|
47 |
+
window.htmlElemKeyDown = divText;
|
48 |
+
}
|
49 |
+
});
|
50 |
+
|
51 |
+
ed.on( 'keyup', function(e) {
|
52 |
+
console.log('keyup');
|
53 |
+
let div = e.target;
|
54 |
+
let divText = div.innerHTML.replace( /\s+/g, ' ' ).trim();
|
55 |
+
divText = divText.replace( / /g, '').trim();
|
56 |
+
if( divText !== window.htmlElemKeyDown ) {
|
57 |
+
e.target.onblur = function() {
|
58 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
59 |
+
wptbTableStateSaveManager.tableStateSet();
|
60 |
+
|
61 |
+
window.htmlElemKeyDown = '';
|
62 |
+
e.target.onblur = '';
|
63 |
+
}
|
64 |
+
} else {
|
65 |
+
e.target.onblur = '';
|
66 |
+
}
|
67 |
+
});
|
68 |
+
}
|
69 |
+
});
|
70 |
+
|
71 |
+
element.addEventListener( 'wptb-control:' + elementControlTargetUnicClass, function( event ) {
|
72 |
+
let targetElm = element.getElementsByClassName( 'mce-content-body' );
|
73 |
+
if( targetElm.length > 0 ) {
|
74 |
+
targetElm = targetElm[0];
|
75 |
+
targetElm.innerHTML = event.detail.value;
|
76 |
+
}
|
77 |
+
}, false );
|
inc/admin/element-classes/element-scripts/image-element.js
CHANGED
@@ -6,59 +6,84 @@ a.onclick = function( e ) {
|
|
6 |
e.preventDefault();
|
7 |
};
|
8 |
|
9 |
-
let
|
10 |
-
|
11 |
-
img = img[0];
|
12 |
-
}
|
13 |
-
|
14 |
-
let src;
|
15 |
-
if( img.src ) {
|
16 |
-
src = img.src;
|
17 |
-
}
|
18 |
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
text: 'Use this image'
|
23 |
-
},
|
24 |
-
multiple: false,
|
25 |
-
frame: 'post'
|
26 |
-
});
|
27 |
-
|
28 |
-
let imageSetting = function( img, attachment ) {
|
29 |
-
let imgSrc = attachment.url;
|
30 |
-
let linkArr = imgSrc.split( ':' ),
|
31 |
-
linkClean;
|
32 |
-
if ( Array.isArray( linkArr ) && linkArr.length > 0 ) {
|
33 |
-
linkClean = linkArr[linkArr.length - 1];
|
34 |
}
|
35 |
-
img.src = linkClean;
|
36 |
-
img.height = attachment.height;
|
37 |
-
img.width = attachment.width;
|
38 |
-
img.style.width = '100%';
|
39 |
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
|
64 |
function controlsChange( inputs, element ) {
|
@@ -70,6 +95,8 @@ function controlsChange( inputs, element ) {
|
|
70 |
img = img[0];
|
71 |
img.setAttribute( 'alt', imageAltValue );
|
72 |
}
|
|
|
|
|
73 |
}
|
74 |
}
|
75 |
}
|
@@ -86,8 +113,8 @@ if( elementsSettingsTemplateJs.length > 0 ) {
|
|
86 |
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
87 |
if( elementsSettings ) {
|
88 |
elementsSettings = JSON.parse( elementsSettings );
|
89 |
-
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-
|
90 |
-
elementSettings = elementsSettings['tmpl-wptb-
|
91 |
}
|
92 |
}
|
93 |
} else {
|
@@ -103,7 +130,7 @@ if( ! elementSettings ) {
|
|
103 |
elementsSettings = {};
|
104 |
}
|
105 |
|
106 |
-
elementsSettings['tmpl-wptb-
|
107 |
let imageAltText;
|
108 |
let img = element.getElementsByTagName( 'img' );
|
109 |
if( img.length > 0 ) {
|
@@ -111,9 +138,9 @@ if( ! elementSettings ) {
|
|
111 |
|
112 |
if( img.hasAttribute( 'alt' ) ) {
|
113 |
imageAltText = img.getAttribute( 'alt' );
|
114 |
-
elementsSettings['tmpl-wptb-
|
115 |
} else {
|
116 |
-
elementsSettings['tmpl-wptb-
|
117 |
}
|
118 |
}
|
119 |
|
6 |
e.preventDefault();
|
7 |
};
|
8 |
|
9 |
+
let addMedia = function( element, imageChange = false ) {
|
10 |
+
let img = element.querySelector( 'img' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
+
let src;
|
13 |
+
if( img && img.src ) {
|
14 |
+
src = img.src;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
|
|
|
|
|
|
|
|
16 |
|
17 |
+
file_frame = wp.media.frames.file_frame = wp.media({
|
18 |
+
title: 'Select a image to upload',
|
19 |
+
button: {
|
20 |
+
text: 'Use this image'
|
21 |
+
},
|
22 |
+
multiple: false,
|
23 |
+
frame: 'post'
|
24 |
+
});
|
25 |
|
26 |
+
let imageSetting = function( img, attachment ) {
|
27 |
+
if( ! img ) {
|
28 |
+
img = document.createElement( 'img' );
|
29 |
+
|
30 |
+
let a = element.getElementsByTagName( 'a' );
|
31 |
+
if( a.length > 0 ) {
|
32 |
+
a = a[0];
|
33 |
+
a.innerHTML = '';
|
34 |
+
|
35 |
+
a.appendChild( img );
|
36 |
+
}
|
37 |
+
}
|
38 |
+
let imgSrc = attachment.url;
|
39 |
+
let linkArr = imgSrc.split( ':' ),
|
40 |
+
linkClean;
|
41 |
+
if ( Array.isArray( linkArr ) && linkArr.length > 0 ) {
|
42 |
+
linkClean = linkArr[linkArr.length - 1];
|
43 |
+
}
|
44 |
+
img.src = linkClean;
|
45 |
+
img.height = attachment.height;
|
46 |
+
img.width = attachment.width;
|
47 |
+
img.style.width = '100%';
|
48 |
+
|
49 |
+
element.classList.remove( 'wptb-elem-placeholder' );
|
50 |
+
|
51 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
52 |
+
wptbTableStateSaveManager.tableStateSet();
|
53 |
+
};
|
54 |
+
|
55 |
+
file_frame.on( 'select', function() {
|
56 |
+
attachment = file_frame.state().props.toJSON();
|
57 |
+
imageSetting( img, attachment );
|
58 |
+
});
|
59 |
+
|
60 |
+
file_frame.on( 'insert', function () {
|
61 |
+
attachment = file_frame.state().get( 'selection' ).first().toJSON();
|
62 |
+
imageSetting( img, attachment );
|
63 |
+
});
|
64 |
+
|
65 |
+
if ( src == undefined || imageChange == true ) {
|
66 |
+
file_frame.open();
|
67 |
+
console.log(file_frame);
|
68 |
+
file_frame.menuItemVisibility( 'gallery', 'hide' );
|
69 |
+
file_frame.menuItemVisibility( 'playlist', 'hide' ),
|
70 |
+
file_frame.menuItemVisibility( 'video-playlist', 'hide' ),
|
71 |
+
file_frame.menuItemVisibility( 'audio-playlist', 'hide' )
|
72 |
+
} else {
|
73 |
+
img.src = src;
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
let iconImageButton = element.querySelector( '.wptb-icon-image-button' );
|
78 |
+
if( iconImageButton ) {
|
79 |
+
iconImageButton.onclick = function() {
|
80 |
+
addMedia( element, true );
|
81 |
+
}
|
82 |
+
}
|
83 |
+
|
84 |
+
if( iconImageButton && ! element.classList.contains( 'wptb-elem-placeholder' ) ) {
|
85 |
+
element.classList.add( 'wptb-elem-placeholder' );
|
86 |
+
addMedia( element );
|
87 |
}
|
88 |
|
89 |
function controlsChange( inputs, element ) {
|
95 |
img = img[0];
|
96 |
img.setAttribute( 'alt', imageAltValue );
|
97 |
}
|
98 |
+
} else if( inputs.hasOwnProperty( 'imageReplaceButton' ) ) {
|
99 |
+
addMedia( element, true );
|
100 |
}
|
101 |
}
|
102 |
}
|
113 |
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
114 |
if( elementsSettings ) {
|
115 |
elementsSettings = JSON.parse( elementsSettings );
|
116 |
+
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-el-datas-' + infArrEl[1] ) in elementsSettings ) {
|
117 |
+
elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArrEl[1]];
|
118 |
}
|
119 |
}
|
120 |
} else {
|
130 |
elementsSettings = {};
|
131 |
}
|
132 |
|
133 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArrEl[1]] = {};
|
134 |
let imageAltText;
|
135 |
let img = element.getElementsByTagName( 'img' );
|
136 |
if( img.length > 0 ) {
|
138 |
|
139 |
if( img.hasAttribute( 'alt' ) ) {
|
140 |
imageAltText = img.getAttribute( 'alt' );
|
141 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArrEl[1]]['data-wptb-el-' + infArrEl[1] + '-imageAlternativeText'] = imageAltText;
|
142 |
} else {
|
143 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArrEl[1]]['data-wptb-el-' + infArrEl[1] + '-imageAlternativeText'] = '';
|
144 |
}
|
145 |
}
|
146 |
|
inc/admin/element-classes/element-scripts/list-element.js
CHANGED
@@ -196,8 +196,8 @@ if( elementsSettingsTemplateJs.length > 0 ) {
|
|
196 |
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
197 |
if( elementsSettings ) {
|
198 |
elementsSettings = JSON.parse( elementsSettings );
|
199 |
-
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-
|
200 |
-
elementSettings = elementsSettings['tmpl-wptb-
|
201 |
}
|
202 |
}
|
203 |
} else {
|
@@ -220,16 +220,16 @@ if( ! elementSettings ) {
|
|
220 |
elementsSettings = {};
|
221 |
}
|
222 |
|
223 |
-
elementsSettings['tmpl-wptb-
|
224 |
|
225 |
let classAttr = p.className.match( /wptb-list-style-type-(.+)/i );
|
226 |
if( classAttr && Array.isArray( classAttr ) ) {
|
227 |
let listType = classAttr[0].replace( 'wptb-list-style-type-', '' );
|
228 |
-
elementsSettings['tmpl-wptb-
|
229 |
-
elementsSettings['tmpl-wptb-
|
230 |
} else {
|
231 |
-
elementsSettings['tmpl-wptb-
|
232 |
-
elementsSettings['tmpl-wptb-
|
233 |
}
|
234 |
|
235 |
if( elementsSettings ) {
|
196 |
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
197 |
if( elementsSettings ) {
|
198 |
elementsSettings = JSON.parse( elementsSettings );
|
199 |
+
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) {
|
200 |
+
elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]];
|
201 |
}
|
202 |
}
|
203 |
} else {
|
220 |
elementsSettings = {};
|
221 |
}
|
222 |
|
223 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};
|
224 |
|
225 |
let classAttr = p.className.match( /wptb-list-style-type-(.+)/i );
|
226 |
if( classAttr && Array.isArray( classAttr ) ) {
|
227 |
let listType = classAttr[0].replace( 'wptb-list-style-type-', '' );
|
228 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-select1'] = 'unordered';
|
229 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-select2'] = listType;
|
230 |
} else {
|
231 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-select1'] = 'numbered';
|
232 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-select2'] = 'disc';
|
233 |
}
|
234 |
|
235 |
if( elementsSettings ) {
|
inc/admin/element-classes/element-scripts/shortcode-element.js
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
let infArr = element.className.match( /wptb-element-((.+-)\d+)/i );
|
2 |
+
let controlKey = 'textarea';
|
3 |
+
let elementControlTargetUnicClass = 'wptb-el-' + infArr[1] + '-' + controlKey;
|
4 |
+
|
5 |
+
tinyMCE.init({
|
6 |
+
target: element.childNodes[0],
|
7 |
+
inline: true,
|
8 |
+
plugins: "link, paste",
|
9 |
+
dialog_type: "modal",
|
10 |
+
theme: 'modern',
|
11 |
+
menubar: false,
|
12 |
+
force_br_newlines : false,
|
13 |
+
force_p_newlines : false,
|
14 |
+
forced_root_block : '',
|
15 |
+
paste_as_text: true,
|
16 |
+
toolbar: false,
|
17 |
+
setup : function( ed ) {
|
18 |
+
|
19 |
+
ed.on( 'input', function( e ) {
|
20 |
+
let elementControlTextarea = document.getElementsByClassName( elementControlTargetUnicClass );
|
21 |
+
if( elementControlTextarea.length > 0 ) {
|
22 |
+
elementControlTextarea = elementControlTextarea[0];
|
23 |
+
elementControlTextarea.value = ed.targetElm.textContent;
|
24 |
+
}
|
25 |
+
WPTB_Helper.controlsStateManager( elementControlTargetUnicClass, true );
|
26 |
+
});
|
27 |
+
|
28 |
+
ed.on( 'keydown', function( e ) {
|
29 |
+
let div = e.target;
|
30 |
+
let divText = div.innerHTML.replace( /\s+/g, ' ' ).trim();
|
31 |
+
divText = divText.replace( / /g, '').trim();
|
32 |
+
|
33 |
+
if( ! window.shortcodeElemKeyDown ) {
|
34 |
+
window.shortcodeElemKeyDown = divText;
|
35 |
+
}
|
36 |
+
});
|
37 |
+
|
38 |
+
ed.on( 'keyup', function(e) {
|
39 |
+
let div = e.target;
|
40 |
+
let divText = div.innerHTML.replace( /\s+/g, ' ' ).trim();
|
41 |
+
divText = divText.replace( / /g, '').trim();
|
42 |
+
if( divText !== window.shortcodeElemKeyDown ) {
|
43 |
+
e.target.onblur = function() {
|
44 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
45 |
+
wptbTableStateSaveManager.tableStateSet();
|
46 |
+
|
47 |
+
window.shortcodeElemKeyDown = '';
|
48 |
+
e.target.onblur = '';
|
49 |
+
}
|
50 |
+
} else {
|
51 |
+
e.target.onblur = '';
|
52 |
+
}
|
53 |
+
});
|
54 |
+
}
|
55 |
+
});
|
56 |
+
|
57 |
+
element.addEventListener( 'wptb-control:' + elementControlTargetUnicClass, function( event ) {
|
58 |
+
let targetElm = element.getElementsByClassName( 'mce-content-body' );
|
59 |
+
if( targetElm.length > 0 ) {
|
60 |
+
targetElm = targetElm[0];
|
61 |
+
targetElm.innerText = event.detail.value;
|
62 |
+
}
|
63 |
+
}, false );
|
inc/admin/element-classes/element-scripts/star-rating-element.js
CHANGED
@@ -153,6 +153,8 @@ function starRatingEventHandlersAdd( ratingStar ) {
|
|
153 |
starRatingSelectHoverSet( event );
|
154 |
|
155 |
let wptbStarRatingContainer = WPTB_Helper.findAncestor( event.target, 'wptb-star_rating-container' );
|
|
|
|
|
156 |
|
157 |
starRatingNumberRatingChenge( wptbStarRatingContainer );
|
158 |
|
@@ -183,6 +185,19 @@ function starRatingNumberRatingChenge( starRatingContainer ) {
|
|
183 |
};
|
184 |
|
185 |
// for old elements which were before the change of structure of the plugin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
let infArr = element.className.match( /wptb-element-((.+-)\d+)/i );
|
187 |
let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );
|
188 |
let elementsSettings;
|
@@ -192,8 +207,8 @@ if( elementsSettingsTemplateJs.length > 0 ) {
|
|
192 |
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
193 |
if( elementsSettings ) {
|
194 |
elementsSettings = JSON.parse( elementsSettings );
|
195 |
-
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-
|
196 |
-
elementSettings = elementsSettings['tmpl-wptb-
|
197 |
}
|
198 |
}
|
199 |
} else {
|
@@ -211,12 +226,12 @@ if( ! elementSettings ) {
|
|
211 |
elementsSettings = {};
|
212 |
}
|
213 |
|
214 |
-
elementsSettings['tmpl-wptb-
|
215 |
|
216 |
let listItems = element.querySelectorAll( 'li' );
|
217 |
let listItemsNumber = listItems.length;
|
218 |
if( listItemsNumber > 0 ) {
|
219 |
-
elementsSettings['tmpl-wptb-
|
220 |
}
|
221 |
|
222 |
let wptbSuccessBox = element.querySelector( '.wptb-success-box' );
|
@@ -229,9 +244,9 @@ if( ! elementSettings ) {
|
|
229 |
}
|
230 |
|
231 |
if( wptbSuccessBox.style.display == 'block' ) {
|
232 |
-
elementsSettings['tmpl-wptb-
|
233 |
} else if( wptbSuccessBox.style.display == 'none' ) {
|
234 |
-
elementsSettings['tmpl-wptb-
|
235 |
}
|
236 |
}
|
237 |
|
153 |
starRatingSelectHoverSet( event );
|
154 |
|
155 |
let wptbStarRatingContainer = WPTB_Helper.findAncestor( event.target, 'wptb-star_rating-container' );
|
156 |
+
|
157 |
+
|
158 |
|
159 |
starRatingNumberRatingChenge( wptbStarRatingContainer );
|
160 |
|
185 |
};
|
186 |
|
187 |
// for old elements which were before the change of structure of the plugin
|
188 |
+
|
189 |
+
let spans = element.querySelectorAll( 'li span' );
|
190 |
+
for( let i = 0; i < spans.length; i++ ) {
|
191 |
+
if( spans[i].style.fill ) {
|
192 |
+
let svgElem = spans[i].querySelector( 'svg' );
|
193 |
+
if( svgElem && ! svgElem.style.fill ) {
|
194 |
+
svgElem.style.fill = spans[i].style.fill;
|
195 |
+
}
|
196 |
+
|
197 |
+
spans[i].style.fill = '';
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
let infArr = element.className.match( /wptb-element-((.+-)\d+)/i );
|
202 |
let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );
|
203 |
let elementsSettings;
|
207 |
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
208 |
if( elementsSettings ) {
|
209 |
elementsSettings = JSON.parse( elementsSettings );
|
210 |
+
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) {
|
211 |
+
elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]];
|
212 |
}
|
213 |
}
|
214 |
} else {
|
226 |
elementsSettings = {};
|
227 |
}
|
228 |
|
229 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};
|
230 |
|
231 |
let listItems = element.querySelectorAll( 'li' );
|
232 |
let listItemsNumber = listItems.length;
|
233 |
if( listItemsNumber > 0 ) {
|
234 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-starCount'] = listItemsNumber;
|
235 |
}
|
236 |
|
237 |
let wptbSuccessBox = element.querySelector( '.wptb-success-box' );
|
244 |
}
|
245 |
|
246 |
if( wptbSuccessBox.style.display == 'block' ) {
|
247 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-numberRatingShowHide'] = 'checked';
|
248 |
} else if( wptbSuccessBox.style.display == 'none' ) {
|
249 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-numberRatingShowHide'] = 'unchecked';
|
250 |
}
|
251 |
}
|
252 |
|
inc/admin/element-classes/element-scripts/text-element.js
CHANGED
@@ -14,12 +14,15 @@ tinyMCE.init({
|
|
14 |
setup : function( ed ) {
|
15 |
ed.on( 'change', function(e) {
|
16 |
let row = WPTB_Helper.findAncestor( element, 'wptb-row' );
|
17 |
-
if(
|
18 |
let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );
|
19 |
-
|
|
|
|
|
|
|
20 |
}
|
21 |
});
|
22 |
-
|
23 |
ed.on( 'keydown', function( e ) {
|
24 |
let p = e.target.querySelector( 'p' );
|
25 |
let pText = p.innerHTML.replace( /\s+/g, ' ' ).trim();
|
@@ -29,6 +32,7 @@ tinyMCE.init({
|
|
29 |
window.textElemPTextKeyDown = pText;
|
30 |
}
|
31 |
});
|
|
|
32 |
ed.on( 'keyup', function(e) {
|
33 |
let p = e.target.querySelector( 'p' );
|
34 |
let pText = p.innerHTML.replace( /\s+/g, ' ' ).trim();
|
@@ -45,7 +49,6 @@ tinyMCE.init({
|
|
45 |
e.target.onblur = '';
|
46 |
}
|
47 |
});
|
48 |
-
|
49 |
},
|
50 |
init_instance_callback: function (editor) {
|
51 |
window.currentEditor = editor;
|
@@ -74,4 +77,18 @@ var observer = new MutationObserver( function( mutations ) {
|
|
74 |
}
|
75 |
});
|
76 |
var config = { attributes: true, attributeFilter: ['style'] };
|
77 |
-
observer.observe( element, config );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
setup : function( ed ) {
|
15 |
ed.on( 'change', function(e) {
|
16 |
let row = WPTB_Helper.findAncestor( element, 'wptb-row' );
|
17 |
+
if( WPTB_Helper.rowIsTop( row ) ) {
|
18 |
let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );
|
19 |
+
|
20 |
+
if( table.classList.contains( 'wptb-table-preview-head' ) ) {
|
21 |
+
WPTB_Helper.dataTitleColumnSet( table );
|
22 |
+
}
|
23 |
}
|
24 |
});
|
25 |
+
|
26 |
ed.on( 'keydown', function( e ) {
|
27 |
let p = e.target.querySelector( 'p' );
|
28 |
let pText = p.innerHTML.replace( /\s+/g, ' ' ).trim();
|
32 |
window.textElemPTextKeyDown = pText;
|
33 |
}
|
34 |
});
|
35 |
+
|
36 |
ed.on( 'keyup', function(e) {
|
37 |
let p = e.target.querySelector( 'p' );
|
38 |
let pText = p.innerHTML.replace( /\s+/g, ' ' ).trim();
|
49 |
e.target.onblur = '';
|
50 |
}
|
51 |
});
|
|
|
52 |
},
|
53 |
init_instance_callback: function (editor) {
|
54 |
window.currentEditor = editor;
|
77 |
}
|
78 |
});
|
79 |
var config = { attributes: true, attributeFilter: ['style'] };
|
80 |
+
observer.observe( element, config );
|
81 |
+
|
82 |
+
function controlsChange( inputs, element ) {
|
83 |
+
if( inputs && typeof inputs === 'object' ) {
|
84 |
+
if( inputs.hasOwnProperty( 'color' ) ) {
|
85 |
+
let row = WPTB_Helper.findAncestor( element, 'wptb-row' );
|
86 |
+
let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );
|
87 |
+
if( WPTB_Helper.rowIsTop( row ) && table.classList.contains( 'wptb-table-preview-head' ) ) {
|
88 |
+
WPTB_Helper.dataTitleColumnSet( table );
|
89 |
+
}
|
90 |
+
}
|
91 |
+
}
|
92 |
+
}
|
93 |
+
|
94 |
+
WPTB_Helper.controlsInclude( element, controlsChange );
|
inc/admin/element-classes/elements/button-element.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
-
use WP_Table_Builder\Inc\Admin\
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
@@ -93,6 +93,7 @@ class Button_Element extends Element_Base_Object {
|
|
93 |
[
|
94 |
'label' => __( 'Button Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
|
|
96 |
]
|
97 |
);
|
98 |
|
@@ -109,25 +110,40 @@ class Button_Element extends Element_Base_Object {
|
|
109 |
'buttonViews' => ['S', 'M', 'L', 'XL']
|
110 |
]
|
111 |
);
|
112 |
-
|
113 |
-
|
114 |
-
'
|
115 |
[
|
116 |
-
'label' => __( 'Button
|
117 |
'type' => Controls_Manager::COLOR,
|
118 |
'selectors' => [
|
119 |
-
'{{{data.container}}} .wptb-button-wrapper a div' => 'color',
|
120 |
]
|
121 |
]
|
122 |
);
|
123 |
|
124 |
-
|
125 |
-
'
|
126 |
[
|
127 |
-
'label' => __( 'Button
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
'type' => Controls_Manager::COLOR,
|
129 |
'selectors' => [
|
130 |
-
'{{{data.container}}} .wptb-button-wrapper a div' => '
|
131 |
]
|
132 |
]
|
133 |
);
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
+
use WP_Table_Builder\Inc\Admin\Managers\Controls_Manager as Controls_Manager;
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
93 |
[
|
94 |
'label' => __( 'Button Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
'buttonBack' => true
|
97 |
]
|
98 |
);
|
99 |
|
110 |
'buttonViews' => ['S', 'M', 'L', 'XL']
|
111 |
]
|
112 |
);
|
113 |
+
|
114 |
+
$this->add_control(
|
115 |
+
'buttonColor',
|
116 |
[
|
117 |
+
'label' => __( 'Button Color', 'wp_table_builder' ),
|
118 |
'type' => Controls_Manager::COLOR,
|
119 |
'selectors' => [
|
120 |
+
'{{{data.container}}} .wptb-button-wrapper a div' => 'background-color',
|
121 |
]
|
122 |
]
|
123 |
);
|
124 |
|
125 |
+
$this->add_control(
|
126 |
+
'buttonTextSize',
|
127 |
[
|
128 |
+
'label' => __( 'Button Text Size', 'wp_table_builder' ),
|
129 |
+
'type' => Controls_Manager::SIZE,
|
130 |
+
'selectors' => [
|
131 |
+
'{{{data.container}}} .wptb-button-wrapper p' => 'fontSize',
|
132 |
+
],
|
133 |
+
'min' => 10,
|
134 |
+
'max' => 50,
|
135 |
+
'defaultValue' => 15,
|
136 |
+
'dimension' => 'px'
|
137 |
+
]
|
138 |
+
);
|
139 |
+
|
140 |
+
$this->add_control(
|
141 |
+
'textColor',
|
142 |
+
[
|
143 |
+
'label' => __( 'Button Text Color', 'wp_table_builder' ),
|
144 |
'type' => Controls_Manager::COLOR,
|
145 |
'selectors' => [
|
146 |
+
'{{{data.container}}} .wptb-button-wrapper a div' => 'color',
|
147 |
]
|
148 |
]
|
149 |
);
|
inc/admin/element-classes/elements/custom-html-element.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
+
|
4 |
+
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
+
use WP_Table_Builder\Inc\Admin\Managers\Controls_Manager as Controls_Manager;
|
6 |
+
use WP_Table_Builder as NS;
|
7 |
+
|
8 |
+
// If this file is called directly, abort.
|
9 |
+
if ( ! defined( 'WPINC' ) ) {
|
10 |
+
die;
|
11 |
+
}
|
12 |
+
|
13 |
+
class Custom_Html_Element extends Element_Base_Object {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Get element name.
|
17 |
+
*
|
18 |
+
* Retrieve custom html editor element name.
|
19 |
+
*
|
20 |
+
* @since 1.1.2
|
21 |
+
* @access public
|
22 |
+
*
|
23 |
+
* @return string element name.
|
24 |
+
*/
|
25 |
+
public function get_name() {
|
26 |
+
return 'custom_html';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get element title.
|
31 |
+
*
|
32 |
+
* Retrieve custom html editor element title.
|
33 |
+
*
|
34 |
+
* @since 1.1.2
|
35 |
+
* @access public
|
36 |
+
*
|
37 |
+
* @return string Element title.
|
38 |
+
*/
|
39 |
+
public function get_title() {
|
40 |
+
return esc_html_e( 'Custom HTML', 'wp-table-builder' );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get directory icon.
|
45 |
+
*
|
46 |
+
* Return directory custom html editor element icon.
|
47 |
+
*
|
48 |
+
* @since 1.1.2
|
49 |
+
* @access public
|
50 |
+
*
|
51 |
+
* @return string directory Element icon.
|
52 |
+
*/
|
53 |
+
public function get_directory_icon() {
|
54 |
+
return NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/custom-html.svg'; ;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Get url icon.
|
59 |
+
*
|
60 |
+
* Return url custom html icon
|
61 |
+
*
|
62 |
+
* @since 1.1.2
|
63 |
+
* @access public
|
64 |
+
*
|
65 |
+
* @return string Url Element icon.
|
66 |
+
*/
|
67 |
+
public function get_url_icon() {
|
68 |
+
return wp_normalize_path ( NS\WP_TABLE_BUILDER_URL . 'inc/admin/views/builder/icons/custom-html.svg' );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Include file with js script for element custom html
|
73 |
+
*
|
74 |
+
* @since 1.1.2
|
75 |
+
* @access protected
|
76 |
+
*/
|
77 |
+
public function element_script() {
|
78 |
+
return wp_normalize_path ( NS\WP_TABLE_BUILDER_DIR . 'inc/admin/element-classes/element-scripts/custom-html-element.js' );
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Register the element controls.
|
83 |
+
*
|
84 |
+
* Adds different fields to allow the user to change and customize the element settings.
|
85 |
+
*
|
86 |
+
* @since 1.1.2
|
87 |
+
*
|
88 |
+
* @access protected
|
89 |
+
*/
|
90 |
+
protected function _register_controls() {
|
91 |
+
$this->add_control(
|
92 |
+
'section_header',
|
93 |
+
[
|
94 |
+
'label' => __( 'Custom HTML Options', 'wp_table_builder' ),
|
95 |
+
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
'buttonBack' => true
|
97 |
+
]
|
98 |
+
);
|
99 |
+
|
100 |
+
$this->add_control(
|
101 |
+
'textarea',
|
102 |
+
[
|
103 |
+
'label' => __( 'Insert HTML', 'wp_table_builder' ),
|
104 |
+
'type' => Controls_Manager::TEXTAREA,
|
105 |
+
'placeholder' => __( 'Insert HTML Code Here', 'wp_table_builder' ),
|
106 |
+
'rows' => 5,
|
107 |
+
'defaultValue' => 'Insert Custom HTML'
|
108 |
+
]
|
109 |
+
);
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Render custom html editor element output in the editor.
|
114 |
+
*
|
115 |
+
* Written as a wp js template and used to generate the live preview.
|
116 |
+
*
|
117 |
+
* @since 1.1.2
|
118 |
+
* @access protected
|
119 |
+
*/
|
120 |
+
protected function _content_template() {
|
121 |
+
?>
|
122 |
+
<div class="wptb-custom-html-wrapper" data-wptb-new-element="1">
|
123 |
+
<span>Insert Custom HTML</span>
|
124 |
+
</div>
|
125 |
+
<?php
|
126 |
+
}
|
127 |
+
}
|
inc/admin/element-classes/elements/image-element.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
-
use WP_Table_Builder\Inc\Admin\
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
@@ -93,6 +93,15 @@ class Image_Element extends Element_Base_Object {
|
|
93 |
[
|
94 |
'label' => __( 'Image Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
]
|
97 |
);
|
98 |
|
@@ -153,7 +162,26 @@ class Image_Element extends Element_Base_Object {
|
|
153 |
protected function _content_template() {
|
154 |
?>
|
155 |
<div class="wptb-image-wrapper">
|
156 |
-
<a style="display: block;"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
</div>
|
158 |
<?php
|
159 |
}
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
+
use WP_Table_Builder\Inc\Admin\Managers\Controls_Manager as Controls_Manager;
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
93 |
[
|
94 |
'label' => __( 'Image Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
'buttonBack' => true
|
97 |
+
]
|
98 |
+
);
|
99 |
+
|
100 |
+
$this->add_control(
|
101 |
+
'imageReplaceButton',
|
102 |
+
[
|
103 |
+
'label' => __( 'Replace Image', 'wp_table_builder' ),
|
104 |
+
'type' => Controls_Manager::BUTTON,
|
105 |
]
|
106 |
);
|
107 |
|
162 |
protected function _content_template() {
|
163 |
?>
|
164 |
<div class="wptb-image-wrapper">
|
165 |
+
<a style="display: block;">
|
166 |
+
<span class="wptb-icon-image-button">
|
167 |
+
<svg class="wptb-draggable-prototype" xmlns="http://www.w3.org/2000/svg"
|
168 |
+
viewBox="0 0 489.4 489.4" width="40px" height="50px">
|
169 |
+
<path d="M0 437.8c0 28.5 23.2 51.6 51.6 51.6h386.2c28.5 0 51.6-23.2
|
170 |
+
51.6-51.6V51.6c0-28.5-23.2-51.6-51.6-51.6H51.6C23.1 0 0 23.2 0
|
171 |
+
51.6 0 51.6 0 437.8 0 437.8zM437.8 464.9H51.6c-14.9
|
172 |
+
0-27.1-12.2-27.1-27.1v-64.5l92.8-92.8 79.3 79.3c4.8 4.8
|
173 |
+
12.5 4.8 17.3 0l143.2-143.2 107.8 107.8v113.4C464.9 452.7 452.7
|
174 |
+
464.9 437.8 464.9zM51.6 24.5h386.2c14.9 0 27.1 12.2 27.1
|
175 |
+
27.1v238.1l-99.2-99.1c-4.8-4.8-12.5-4.8-17.3 0L205.2
|
176 |
+
333.8l-79.3-79.3c-4.8-4.8-12.5-4.8-17.3 0l-84.1 84.1v-287C24.5
|
177 |
+
36.7 36.7 24.5 51.6 24.5z"/>
|
178 |
+
<path d="M151.7 196.1c34.4 0 62.3-28 62.3-62.3s-28-62.3-62.3-62.3 -62.3
|
179 |
+
28-62.3 62.3S117.3 196.1 151.7 196.1zM151.7 96c20.9 0 37.8 17 37.8
|
180 |
+
37.8s-17 37.8-37.8 37.8 -37.8-17-37.8-37.8S130.8 96 151.7 96z"/>
|
181 |
+
</svg>
|
182 |
+
<span>Insert Image</span>
|
183 |
+
</span>
|
184 |
+
</a>
|
185 |
</div>
|
186 |
<?php
|
187 |
}
|
inc/admin/element-classes/elements/list-element.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
-
use WP_Table_Builder\Inc\Admin\
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
@@ -93,6 +93,7 @@ class List_Element extends Element_Base_Object {
|
|
93 |
[
|
94 |
'label' => __( 'List Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
|
|
96 |
]
|
97 |
);
|
98 |
|
@@ -121,7 +122,7 @@ class List_Element extends Element_Base_Object {
|
|
121 |
['None', 'none']
|
122 |
],
|
123 |
'selectedDefault' => 2,
|
124 |
-
'
|
125 |
]
|
126 |
);
|
127 |
|
@@ -135,7 +136,7 @@ class List_Element extends Element_Base_Object {
|
|
135 |
// ['Name 2', 'value 2', 'off'],
|
136 |
// ['Name 3', 'value 3', 'on']
|
137 |
// ],
|
138 |
-
// '
|
139 |
// ]
|
140 |
// );
|
141 |
//
|
@@ -146,7 +147,7 @@ class List_Element extends Element_Base_Object {
|
|
146 |
// 'type' => Controls_Manager::TEXTAREA,
|
147 |
// 'placeholder' => __( 'Insert Button ID Here', 'wp_table_builder' ),
|
148 |
// 'rows' => 5,
|
149 |
-
// '
|
150 |
// ]
|
151 |
// );
|
152 |
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
+
use WP_Table_Builder\Inc\Admin\Managers\Controls_Manager as Controls_Manager;
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
93 |
[
|
94 |
'label' => __( 'List Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
'buttonBack' => true
|
97 |
]
|
98 |
);
|
99 |
|
122 |
['None', 'none']
|
123 |
],
|
124 |
'selectedDefault' => 2,
|
125 |
+
'appearDependOnControl' => ['select1', ['unordered'], ['numbered']]
|
126 |
]
|
127 |
);
|
128 |
|
136 |
// ['Name 2', 'value 2', 'off'],
|
137 |
// ['Name 3', 'value 3', 'on']
|
138 |
// ],
|
139 |
+
// 'appearDependOnControl' => ['select1', ['unordered'], ['numbered']]
|
140 |
// ]
|
141 |
// );
|
142 |
//
|
147 |
// 'type' => Controls_Manager::TEXTAREA,
|
148 |
// 'placeholder' => __( 'Insert Button ID Here', 'wp_table_builder' ),
|
149 |
// 'rows' => 5,
|
150 |
+
// 'appearDependOnControl' => ['select1', ['unordered'], ['numbered']]
|
151 |
// ]
|
152 |
// );
|
153 |
|
inc/admin/element-classes/elements/shortcode-element.php
ADDED
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
+
|
4 |
+
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
+
use WP_Table_Builder\Inc\Admin\Managers\Controls_Manager as Controls_Manager;
|
6 |
+
use WP_Table_Builder as NS;
|
7 |
+
|
8 |
+
// If this file is called directly, abort.
|
9 |
+
if ( ! defined( 'WPINC' ) ) {
|
10 |
+
die;
|
11 |
+
}
|
12 |
+
|
13 |
+
class Shortcode_Element extends Element_Base_Object {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Get element name.
|
17 |
+
*
|
18 |
+
* Retrieve shortcode editor element name.
|
19 |
+
*
|
20 |
+
* @since 1.1.2
|
21 |
+
* @access public
|
22 |
+
*
|
23 |
+
* @return string element name.
|
24 |
+
*/
|
25 |
+
public function get_name() {
|
26 |
+
return 'shortcode';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get element title.
|
31 |
+
*
|
32 |
+
* Retrieve shortcode editor element title.
|
33 |
+
*
|
34 |
+
* @since 1.1.2
|
35 |
+
* @access public
|
36 |
+
*
|
37 |
+
* @return string Element title.
|
38 |
+
*/
|
39 |
+
public function get_title() {
|
40 |
+
return esc_html_e( 'Shortcode', 'wp-table-builder' );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get directory icon.
|
45 |
+
*
|
46 |
+
* Return directory shortcode editor element icon.
|
47 |
+
*
|
48 |
+
* @since 1.1.2
|
49 |
+
* @access public
|
50 |
+
*
|
51 |
+
* @return string directory Element icon.
|
52 |
+
*/
|
53 |
+
public function get_directory_icon() {
|
54 |
+
return NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/shortcode.svg'; ;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Get url icon.
|
59 |
+
*
|
60 |
+
* Return url shortcode icon
|
61 |
+
*
|
62 |
+
* @since 1.1.2
|
63 |
+
* @access public
|
64 |
+
*
|
65 |
+
* @return string Url Element icon.
|
66 |
+
*/
|
67 |
+
public function get_url_icon() {
|
68 |
+
return wp_normalize_path ( NS\WP_TABLE_BUILDER_URL . 'inc/admin/views/builder/icons/shortcode.svg' );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Include file with js script for element shortcode
|
73 |
+
*
|
74 |
+
* @since 1.1.2
|
75 |
+
* @access protected
|
76 |
+
*/
|
77 |
+
public function element_script() {
|
78 |
+
return wp_normalize_path ( NS\WP_TABLE_BUILDER_DIR . 'inc/admin/element-classes/element-scripts/shortcode-element.js' );
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Register the element controls.
|
83 |
+
*
|
84 |
+
* Adds different fields to allow the user to change and customize the element settings.
|
85 |
+
*
|
86 |
+
* @since 1.1.2
|
87 |
+
*
|
88 |
+
* @access protected
|
89 |
+
*/
|
90 |
+
protected function _register_controls() {
|
91 |
+
$this->add_control(
|
92 |
+
'section_header',
|
93 |
+
[
|
94 |
+
'label' => __( 'Element Shortcode Options', 'wp_table_builder' ),
|
95 |
+
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
'buttonBack' => true
|
97 |
+
]
|
98 |
+
);
|
99 |
+
|
100 |
+
$this->add_control(
|
101 |
+
'textarea',
|
102 |
+
[
|
103 |
+
'label' => __( 'Insert Shortcode', 'wp_table_builder' ),
|
104 |
+
'type' => Controls_Manager::TEXTAREA,
|
105 |
+
'placeholder' => __( 'Insert Shortcode Here', 'wp_table_builder' ),
|
106 |
+
'rows' => 5,
|
107 |
+
'defaultValue' => '[Shortcode]'
|
108 |
+
]
|
109 |
+
);
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Render shortcode editor element output in the editor.
|
114 |
+
*
|
115 |
+
* Written as a wp js template and used to generate the live preview.
|
116 |
+
*
|
117 |
+
* @since 1.1.2
|
118 |
+
* @access protected
|
119 |
+
*/
|
120 |
+
protected function _content_template() {
|
121 |
+
?>
|
122 |
+
<div>[Shortcode]</div>
|
123 |
+
<?php
|
124 |
+
}
|
125 |
+
}
|
inc/admin/element-classes/elements/star-rating-element.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
-
use WP_Table_Builder\Inc\Admin\
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
@@ -93,6 +93,7 @@ class Star_Rating_Element extends Element_Base_Object {
|
|
93 |
[
|
94 |
'label' => __( 'Star Rating Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
|
|
96 |
]
|
97 |
);
|
98 |
|
@@ -149,11 +150,7 @@ class Star_Rating_Element extends Element_Base_Object {
|
|
149 |
'numberRatingShowHide',
|
150 |
[
|
151 |
'label' => __( 'Show Number Rating', 'wp_table_builder' ),
|
152 |
-
'type' => Controls_Manager::TOGGLE
|
153 |
-
'selectors' => [
|
154 |
-
'{{{data.container}}} .wptb-number-rating-box' => 'display',
|
155 |
-
'.wptb-numeral-star-rating-option' => 'display'
|
156 |
-
]
|
157 |
]
|
158 |
);
|
159 |
|
@@ -163,7 +160,7 @@ class Star_Rating_Element extends Element_Base_Object {
|
|
163 |
'label' => __( 'Number Rating Size', 'wp_table_builder' ),
|
164 |
'type' => Controls_Manager::SIZE,
|
165 |
'selectors' => [
|
166 |
-
'{{{data.container}}} .wptb-number-rating' => ['fontSize', 'lineHeight']
|
167 |
],
|
168 |
'min' => 10,
|
169 |
'max' => 50,
|
@@ -171,7 +168,7 @@ class Star_Rating_Element extends Element_Base_Object {
|
|
171 |
'dimension' => 'px',
|
172 |
'customClassForContainer' => 'wptb-numeral-star-rating-option',
|
173 |
'containerAdditionalStyles' => 'display:none;',
|
174 |
-
'
|
175 |
]
|
176 |
);
|
177 |
|
@@ -185,7 +182,7 @@ class Star_Rating_Element extends Element_Base_Object {
|
|
185 |
],
|
186 |
'customClassForContainer' => 'wptb-numeral-star-rating-option',
|
187 |
'containerAdditionalStyles' => 'display:none;',
|
188 |
-
'
|
189 |
]
|
190 |
);
|
191 |
}
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
+
use WP_Table_Builder\Inc\Admin\Managers\Controls_Manager as Controls_Manager;
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
93 |
[
|
94 |
'label' => __( 'Star Rating Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
'buttonBack' => true
|
97 |
]
|
98 |
);
|
99 |
|
150 |
'numberRatingShowHide',
|
151 |
[
|
152 |
'label' => __( 'Show Number Rating', 'wp_table_builder' ),
|
153 |
+
'type' => Controls_Manager::TOGGLE
|
|
|
|
|
|
|
|
|
154 |
]
|
155 |
);
|
156 |
|
160 |
'label' => __( 'Number Rating Size', 'wp_table_builder' ),
|
161 |
'type' => Controls_Manager::SIZE,
|
162 |
'selectors' => [
|
163 |
+
'{{{data.container}}} .wptb-number-rating' => ['fontSize', 'lineHeight', 'height']
|
164 |
],
|
165 |
'min' => 10,
|
166 |
'max' => 50,
|
168 |
'dimension' => 'px',
|
169 |
'customClassForContainer' => 'wptb-numeral-star-rating-option',
|
170 |
'containerAdditionalStyles' => 'display:none;',
|
171 |
+
'appearDependOnControl' => ['numberRatingShowHide', ['checked'], ['unchecked']]
|
172 |
]
|
173 |
);
|
174 |
|
182 |
],
|
183 |
'customClassForContainer' => 'wptb-numeral-star-rating-option',
|
184 |
'containerAdditionalStyles' => 'display:none;',
|
185 |
+
'appearDependOnControl' => ['numberRatingShowHide', ['checked'], ['unchecked']]
|
186 |
]
|
187 |
);
|
188 |
}
|
inc/admin/element-classes/elements/text-element.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
-
use WP_Table_Builder\Inc\Admin\
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
@@ -93,6 +93,7 @@ class Text_Element extends Element_Base_Object {
|
|
93 |
[
|
94 |
'label' => __( 'Text Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
|
|
96 |
]
|
97 |
);
|
98 |
|
2 |
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Elements;
|
3 |
|
4 |
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
+
use WP_Table_Builder\Inc\Admin\Managers\Controls_Manager as Controls_Manager;
|
6 |
use WP_Table_Builder as NS;
|
7 |
|
8 |
// If this file is called directly, abort.
|
93 |
[
|
94 |
'label' => __( 'Text Options', 'wp_table_builder' ),
|
95 |
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
'buttonBack' => true
|
97 |
]
|
98 |
);
|
99 |
|
inc/admin/js/admin.js
CHANGED
@@ -47,9 +47,10 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
47 |
btnDelete.onclick = function (event) {
|
48 |
var act = event.target.parentNode.activeElem,
|
49 |
el = act.parentNode;
|
50 |
-
|
51 |
-
if (act &&
|
52 |
WPTB_Helper.elementControlsStateDelete(act);
|
|
|
53 |
}
|
54 |
|
55 |
if (act) {
|
@@ -58,9 +59,13 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
58 |
|
59 |
if (act && (typeof act === 'undefined' ? 'undefined' : _typeof(act)) === 'object' && act.hasOwnProperty('kind') && act.kind == 'text') {
|
60 |
var thisRow = el.parentNode;
|
61 |
-
|
|
|
62 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
63 |
-
|
|
|
|
|
|
|
64 |
}
|
65 |
}
|
66 |
|
@@ -76,7 +81,7 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
76 |
infArr = void 0,
|
77 |
type = void 0;
|
78 |
var activeElement = event.target.parentNode.activeElem;
|
79 |
-
var
|
80 |
infArr = activeElement.className.match(/wptb-element-(.+)-(\d+)/i);
|
81 |
if (infArr && Array.isArray(infArr)) {
|
82 |
type = infArr[1];
|
@@ -86,9 +91,10 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
86 |
data.tinyMceClear = true;
|
87 |
copy = new WPTB_ElementObject(data);
|
88 |
WPTB_Helper.elementControlsStateCopy(activeElement, copy.getDOMElement());
|
|
|
89 |
//WPTB_Helper.elementStartScript( copy.getDOMElement() );
|
90 |
|
91 |
-
|
92 |
} else {
|
93 |
copy = {};
|
94 |
var elementCopy = activeElement.cloneNode(true);
|
@@ -100,7 +106,7 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
100 |
|
101 |
applyGenericItemSettings(copy);
|
102 |
|
103 |
-
|
104 |
|
105 |
WPTB_Helper.wptbDocumentEventGenerate('wptb-inner-element:copy', activeElement, copy.getDOMElement());
|
106 |
}
|
@@ -150,9 +156,13 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
150 |
var act = event.target.parentNode.activeElem;
|
151 |
if (act.kind == 'text') {
|
152 |
var thisRow = act.parentNode.parentNode;
|
153 |
-
|
|
|
154 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
155 |
-
|
|
|
|
|
|
|
156 |
}
|
157 |
}
|
158 |
} else {
|
@@ -321,11 +331,21 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
321 |
}
|
322 |
|
323 |
WPTB_Table();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
324 |
WPTB_LeftPanel();
|
325 |
WPTB_Settings();
|
326 |
|
327 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
328 |
wptbTableStateSaveManager.tableStateSet();
|
|
|
|
|
329 |
} else {
|
330 |
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
|
331 |
}
|
@@ -398,6 +418,7 @@ var WPTB_Cell = function WPTB_Cell(callback, DOMElement) {
|
|
398 |
}
|
399 |
|
400 |
DOMElement.classList.add('wptb-droppable', 'wptb-cell');
|
|
|
401 |
}
|
402 |
|
403 |
DOMElement.draggable = false;
|
@@ -405,6 +426,22 @@ var WPTB_Cell = function WPTB_Cell(callback, DOMElement) {
|
|
405 |
DOMElement.onclick = callback;
|
406 |
}
|
407 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
408 |
WPTB_innerElementSet(DOMElement);
|
409 |
|
410 |
var wptbPhElement = DOMElement.getElementsByClassName('wptb-ph-element');
|
@@ -470,6 +507,7 @@ var WPTB_Cell = function WPTB_Cell(callback, DOMElement) {
|
|
470 |
};
|
471 |
|
472 |
DOMElement.getCellDimensions = function () {
|
|
|
473 |
var tdStyleObj = window.getComputedStyle(this, null);
|
474 |
|
475 |
var tdPaddingLeft = tdStyleObj.getPropertyValue('padding-left');
|
@@ -484,13 +522,52 @@ var WPTB_Cell = function WPTB_Cell(callback, DOMElement) {
|
|
484 |
var tdBorderTopWidth = tdStyleObj.getPropertyValue('border-top-width');
|
485 |
var tdBorderBottomWidth = tdStyleObj.getPropertyValue('border-bottom-width');
|
486 |
|
487 |
-
var width =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
488 |
|
489 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
490 |
|
491 |
return {
|
492 |
-
width: width,
|
493 |
-
height: height
|
494 |
};
|
495 |
};
|
496 |
|
@@ -569,9 +646,12 @@ var WPTB_DropHandle = function WPTB_DropHandle(thisElem, e) {
|
|
569 |
}
|
570 |
|
571 |
var thisRow = td.parentNode;
|
572 |
-
if (
|
573 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
574 |
-
|
|
|
|
|
|
|
575 |
}
|
576 |
|
577 |
// start item javascript if item is new
|
@@ -610,18 +690,23 @@ var WPTB_DropHandle = function WPTB_DropHandle(thisElem, e) {
|
|
610 |
} else if (thisElem.localName == 'div' && thisElem.classList.contains('wptb-ph-element')) {
|
611 |
thisRow = thisElem.parentNode.parentNode;
|
612 |
}
|
613 |
-
|
614 |
-
|
615 |
-
var
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
}
|
622 |
-
}
|
623 |
-
if (notDragEnter) {
|
624 |
-
return;
|
625 |
}
|
626 |
}
|
627 |
|
@@ -763,127 +848,16 @@ var WPTB_ElementObject = function WPTB_ElementObject(data) {
|
|
763 |
};
|
764 |
var WPTB_ElementOptions = function WPTB_ElementOptions(element, index, kindIndexProt) {
|
765 |
|
766 |
-
var node = element.getDOMElement()
|
767 |
-
elemIdClass;
|
768 |
|
769 |
node.onclick = function () {
|
770 |
-
|
771 |
-
for (var _i = 0; _i < children.length; _i++) {
|
772 |
-
if (children[_i].style) children[_i].style.display = 'none';
|
773 |
-
}
|
774 |
-
|
775 |
-
var infArr = this.className.match(/wptb-element-((.+-)\d+)/i);
|
776 |
-
// get controls config for this item
|
777 |
-
var wptbContrlStacksConfigId = 'wptb-' + element.kind + '-control-stack';
|
778 |
-
var tmplControlsConfig = wp.template(wptbContrlStacksConfigId);
|
779 |
-
var data = {
|
780 |
-
container: '.' + infArr[0]
|
781 |
-
};
|
782 |
-
var jsonControlsConfigJson = tmplControlsConfig(data);
|
783 |
-
var jsonControlsConfig = JSON.parse(jsonControlsConfigJson);
|
784 |
-
|
785 |
-
// create a container for inserting controls of this item
|
786 |
-
var wptbElementOptionsContainer = document.createElement('div');
|
787 |
-
wptbElementOptionsContainer.classList.add('wptb-element-options', 'wptb-options-' + infArr[1]);
|
788 |
-
|
789 |
-
// clear elements from options group
|
790 |
-
//document.getElementById( 'element-options-group' ).innerHTML = '';
|
791 |
-
var elementOptionsGroup = document.getElementById('element-options-group');
|
792 |
-
var elementOptionsGroupChildren = elementOptionsGroup.children;
|
793 |
-
for (var _i2 = 0; _i2 < elementOptionsGroupChildren.length; _i2++) {
|
794 |
-
var regularText = new RegExp('wptb-options-' + element.kind + '-(\\d+)', "i");
|
795 |
-
var elem = elementOptionsGroupChildren[_i2].className.match(regularText);
|
796 |
-
if (elem) {
|
797 |
-
elementOptionsGroup.removeChild(elementOptionsGroupChildren[_i2]);
|
798 |
-
}
|
799 |
-
}
|
800 |
-
|
801 |
-
// hide wptb-elements-container and wptb-settings-section
|
802 |
-
document.getElementsByClassName('wptb-elements-container')[0].style.display = 'none';
|
803 |
-
document.getElementsByClassName('wptb-settings-section')[0].style.display = 'none';
|
804 |
-
|
805 |
-
// show element-options-group
|
806 |
-
document.getElementById("element-options-group").style.display = 'block';
|
807 |
-
|
808 |
-
// insert created container into element-option-group tag
|
809 |
-
document.getElementById('element-options-group').appendChild(wptbElementOptionsContainer);
|
810 |
-
|
811 |
-
// show created container
|
812 |
-
wptbElementOptionsContainer.style.display = 'block';
|
813 |
-
|
814 |
-
// array for save all scrips for each controls
|
815 |
-
var controlScriptsArr = [];
|
816 |
-
|
817 |
-
// array for keep "appear depend on" parametrs
|
818 |
-
var controlAppearDependOn = [];
|
819 |
-
|
820 |
-
// create controls
|
821 |
-
var i = 0;
|
822 |
-
Object.keys(jsonControlsConfig).forEach(function (key) {
|
823 |
-
var data = jsonControlsConfig[key];
|
824 |
-
data.controlKey = key;
|
825 |
-
|
826 |
-
// get necessary wp js template
|
827 |
-
var tmplControlTemplate = wp.template('wptb-' + data.type + '-control');
|
828 |
-
|
829 |
-
data.elemContainer = infArr[0];
|
830 |
-
data.elementControlTargetUnicClass = 'wptb-el-' + infArr[1] + '-' + data.controlKey;
|
831 |
-
var controlTemplate = tmplControlTemplate(data);
|
832 |
-
|
833 |
-
if ('appearDependOn' in data) {
|
834 |
-
if (Array.isArray(data.appearDependOn)) {
|
835 |
-
controlAppearDependOn.push([data.appearDependOn, data.elementControlTargetUnicClass]);
|
836 |
-
}
|
837 |
-
}
|
838 |
-
|
839 |
-
//console.log( controlTemplate );
|
840 |
-
|
841 |
-
var wptbElementOptionContainer = document.createElement('div');
|
842 |
-
wptbElementOptionContainer.classList.add('wptb-element-option', 'wptb-settings-items');
|
843 |
-
|
844 |
-
if (data.customClassForContainer) {
|
845 |
-
wptbElementOptionContainer.classList.add(data.customClassForContainer);
|
846 |
-
}
|
847 |
-
|
848 |
-
if (data.containerAdditionalStyles) {
|
849 |
-
wptbElementOptionContainer.setAttribute('style', data.containerAdditionalStyles);
|
850 |
-
}
|
851 |
-
|
852 |
-
wptbElementOptionContainer.innerHTML = controlTemplate;
|
853 |
-
|
854 |
-
wptbElementOptionsContainer.appendChild(wptbElementOptionContainer);
|
855 |
-
|
856 |
-
var helperJavascriptElem = wptbElementOptionContainer.getElementsByTagName('wptb-template-script');
|
857 |
-
if (helperJavascriptElem.length > 0) {
|
858 |
-
helperJavascriptElem = helperJavascriptElem[0];
|
859 |
-
var helperJavascriptCode = helperJavascriptElem.innerText;
|
860 |
-
wptbElementOptionContainer.removeChild(helperJavascriptElem);
|
861 |
-
var script = document.createElement('script');
|
862 |
-
script.setAttribute('type', 'text/javascript');
|
863 |
-
script.innerHTML = helperJavascriptCode.replace(/\r|\n|\t/g, '').trim();
|
864 |
-
controlScriptsArr.push(script);
|
865 |
-
}
|
866 |
-
|
867 |
-
i++;
|
868 |
-
});
|
869 |
-
|
870 |
-
// run the scripts of controls
|
871 |
-
if (controlScriptsArr.length > 0) {
|
872 |
-
for (var _i3 = 0; _i3 < controlScriptsArr.length; _i3++) {
|
873 |
-
wptbElementOptionsContainer.appendChild(controlScriptsArr[_i3]);
|
874 |
-
}
|
875 |
-
}
|
876 |
-
|
877 |
-
// run appearDependOn function
|
878 |
-
for (var _i4 = 0; _i4 < controlAppearDependOn.length; _i4++) {
|
879 |
-
WPTB_Helper.appearDependOn(controlAppearDependOn[_i4][0], controlAppearDependOn[_i4][1]);
|
880 |
-
}
|
881 |
-
|
882 |
-
WPTB_Helper.wptbDocumentEventGenerate('controlPanel:added:leftPanel');
|
883 |
};
|
884 |
};
|
885 |
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; };
|
886 |
|
|
|
|
|
887 |
var WPTB_Helper = {
|
888 |
hexToRgb: function hexToRgb(hex) {
|
889 |
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
@@ -894,6 +868,10 @@ var WPTB_Helper = {
|
|
894 |
|
895 |
return rgb && rgb.length === 4 ? "#" + ("0" + parseInt(rgb[1], 10).toString(16)).slice(-2) + ("0" + parseInt(rgb[2], 10).toString(16)).slice(-2) + ("0" + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';
|
896 |
},
|
|
|
|
|
|
|
|
|
897 |
getElementIcon: function getElementIcon(icon_directory) {
|
898 |
var hostName = location.protocol + '//' + location.hostname;
|
899 |
var img = document.createElement('img');
|
@@ -947,6 +925,7 @@ var WPTB_Helper = {
|
|
947 |
var contentsForHeader = {};
|
948 |
for (var i = 0; i < rowHeadChildren.length; i++) {
|
949 |
var tdElements = rowHeadChildren[i].children;
|
|
|
950 |
for (var j = 0; j < tdElements.length; j++) {
|
951 |
var element = tdElements[j];
|
952 |
if (element.classList.contains('wptb-ph-element')) {
|
@@ -988,6 +967,14 @@ var WPTB_Helper = {
|
|
988 |
while ((el = el.parentElement) && !el.classList.contains(cls)) {}
|
989 |
return el;
|
990 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
991 |
getSelectionText: function getSelectionText() {
|
992 |
var txt = '';
|
993 |
if (txt = window.getSelection) {
|
@@ -997,27 +984,6 @@ var WPTB_Helper = {
|
|
997 |
}
|
998 |
return txt;
|
999 |
},
|
1000 |
-
settingsPanelClear: function settingsPanelClear() {
|
1001 |
-
document.getElementById('wptb-adaptive-table-checkbox').checked = false;
|
1002 |
-
document.getElementById('wptb-top-row-as-header').checked = false;
|
1003 |
-
document.getElementById('wptb-table-border-slider').value = 0;
|
1004 |
-
document.getElementById('wptb-table-border-number').value = 0;
|
1005 |
-
document.getElementById('wptb-inner-border-check').checked = false;
|
1006 |
-
document.getElementById('wptb-apply-inner-border').classList.remove('visible');
|
1007 |
-
document.getElementById('wptb-table-inner-border-slider').value = 1;
|
1008 |
-
document.getElementById('wptb-table-inner-border-number').value = 1;
|
1009 |
-
|
1010 |
-
WPTB_Helper.wpColorPickerClear('wptb-table-border-color', true);
|
1011 |
-
|
1012 |
-
WPTB_Helper.wpColorPickerClear('wptb-table-header-bg', true);
|
1013 |
-
|
1014 |
-
WPTB_Helper.wpColorPickerClear('wptb-even-row-bg', true);
|
1015 |
-
|
1016 |
-
WPTB_Helper.wpColorPickerClear('wptb-odd-row-bg', true);
|
1017 |
-
|
1018 |
-
document.getElementById('wptb-table-cell-slider').value = 15;
|
1019 |
-
document.getElementById('wptb-table-cell-number').value = 15;
|
1020 |
-
},
|
1021 |
elementOptionsPanelClear: function elementOptionsPanelClear() {
|
1022 |
var elementOptionsGroup = document.getElementById('element-options-group');
|
1023 |
if (elementOptionsGroup) {
|
@@ -1315,7 +1281,7 @@ var WPTB_Helper = {
|
|
1315 |
// function which set handler for event of changes of control
|
1316 |
controlsInclude: function controlsInclude(element, functionHandler) {
|
1317 |
if (element && (typeof element === 'undefined' ? 'undefined' : _typeof(element)) === 'object' && typeof functionHandler === 'function') {
|
1318 |
-
element.addEventListener('
|
1319 |
var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i),
|
1320 |
elementKind = void 0;
|
1321 |
|
@@ -1334,8 +1300,8 @@ var WPTB_Helper = {
|
|
1334 |
if (elementsSettings) {
|
1335 |
elementsSettings = JSON.parse(elementsSettings);
|
1336 |
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object') {
|
1337 |
-
if ('tmpl-wptb-
|
1338 |
-
var elementSettings = elementsSettings['tmpl-wptb-
|
1339 |
if (elementSettings && (typeof elementSettings === 'undefined' ? 'undefined' : _typeof(elementSettings)) === 'object') {
|
1340 |
Object.keys(elementSettings).forEach(function (key) {
|
1341 |
var regularText = new RegExp('data-wptb-el-' + elementKind + '-(\\d+)-(.+)', "i");
|
@@ -1422,7 +1388,7 @@ var WPTB_Helper = {
|
|
1422 |
}
|
1423 |
},
|
1424 |
//
|
1425 |
-
|
1426 |
if (Array.isArray(dependOn)) {
|
1427 |
var dependOnControlName = dependOn[0];
|
1428 |
var infArr = targetControlElementClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
|
@@ -1451,8 +1417,8 @@ var WPTB_Helper = {
|
|
1451 |
var elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
1452 |
if (elementsSettings) {
|
1453 |
elementsSettings = JSON.parse(elementsSettings);
|
1454 |
-
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object' && 'tmpl-wptb-
|
1455 |
-
var elementSettings = elementsSettings['tmpl-wptb-
|
1456 |
if (elementSettings && (typeof elementSettings === 'undefined' ? 'undefined' : _typeof(elementSettings)) === 'object' && 'data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName in elementSettings) {
|
1457 |
var elementSettingValue = elementSettings['data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName];
|
1458 |
|
@@ -1489,7 +1455,9 @@ var WPTB_Helper = {
|
|
1489 |
var infArr = targetControlClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
|
1490 |
|
1491 |
if (infArr && Array.isArray(infArr)) {
|
1492 |
-
var selectorElement =
|
|
|
|
|
1493 |
if (selectorElement) {
|
1494 |
var elementsSettingsTemplatesJs = void 0;
|
1495 |
var elementSettings = {};
|
@@ -1500,7 +1468,7 @@ var WPTB_Helper = {
|
|
1500 |
elementSettings['data-' + targetControlClass] = targetControlValue;
|
1501 |
|
1502 |
elementsSettings = {};
|
1503 |
-
elementsSettings['tmpl-wptb-
|
1504 |
elementsSettings = JSON.stringify(elementsSettings);
|
1505 |
|
1506 |
if (elementsSettingsTemplatesJs.length == 0) {
|
@@ -1525,26 +1493,26 @@ var WPTB_Helper = {
|
|
1525 |
|
1526 |
if (controlChangeIndic) {
|
1527 |
var _targetControlValue = WPTB_Helper.targetControlValueGet(targetControls);
|
1528 |
-
if (!('tmpl-wptb-
|
1529 |
-
elementsSettings['tmpl-wptb-
|
1530 |
}
|
1531 |
-
elementsSettings['tmpl-wptb-
|
1532 |
elementsSettingsTemplatesJs.innerHTML = JSON.stringify(elementsSettings);
|
1533 |
-
} else if (!('tmpl-wptb-
|
1534 |
var _targetControlValue2 = WPTB_Helper.targetControlValueGet(targetControls);
|
1535 |
-
if (!('tmpl-wptb-
|
1536 |
-
elementsSettings['tmpl-wptb-
|
1537 |
}
|
1538 |
-
elementsSettings['tmpl-wptb-
|
1539 |
elementsSettingsTemplatesJs.innerHTML = JSON.stringify(elementsSettings);
|
1540 |
-
} else if ('tmpl-wptb-
|
1541 |
for (var i = 0; i < targetControls.length; i++) {
|
1542 |
if (targetControls[i].type == 'checkbox') {
|
1543 |
var _targetControlValue3 = void 0;
|
1544 |
if (targetControls[i].name) {
|
1545 |
-
_targetControlValue3 = elementsSettings['tmpl-wptb-
|
1546 |
} else {
|
1547 |
-
_targetControlValue3 = elementsSettings['tmpl-wptb-
|
1548 |
}
|
1549 |
|
1550 |
if (_targetControlValue3 == 'checked') {
|
@@ -1553,7 +1521,7 @@ var WPTB_Helper = {
|
|
1553 |
targetControls[i].checked = false;
|
1554 |
}
|
1555 |
} else {
|
1556 |
-
targetControls[i].value = elementsSettings['tmpl-wptb-
|
1557 |
}
|
1558 |
}
|
1559 |
}
|
@@ -1604,7 +1572,7 @@ var WPTB_Helper = {
|
|
1604 |
elementsSettings = JSON.parse(elementsSettings);
|
1605 |
|
1606 |
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object') {
|
1607 |
-
var elementSettingsProt = elementsSettings['tmpl-wptb-
|
1608 |
if (elementSettingsProt && (typeof elementSettingsProt === 'undefined' ? 'undefined' : _typeof(elementSettingsProt)) === 'object') {
|
1609 |
var elementSettingsCopy = {};
|
1610 |
|
@@ -1615,7 +1583,7 @@ var WPTB_Helper = {
|
|
1615 |
});
|
1616 |
|
1617 |
if (Object.keys(elementSettingsCopy).length > 0) {
|
1618 |
-
elementsSettings['tmpl-wptb-
|
1619 |
|
1620 |
elementsSettings = JSON.stringify(elementsSettings);
|
1621 |
elementsSettingsTemplateJs.innerHTML = elementsSettings;
|
@@ -1628,7 +1596,7 @@ var WPTB_Helper = {
|
|
1628 |
}
|
1629 |
},
|
1630 |
//
|
1631 |
-
elementControlsStateDelete: function elementControlsStateDelete(element) {
|
1632 |
var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
|
1633 |
var body = document.getElementsByTagName('body')[0];
|
1634 |
var wptbElementDatas = body.getElementsByClassName('wptb-element-datas');
|
@@ -1637,8 +1605,14 @@ var WPTB_Helper = {
|
|
1637 |
var elementsSettings = wptbElementDatas.innerHTML;
|
1638 |
if (elementsSettings) {
|
1639 |
elementsSettings = JSON.parse(elementsSettings);
|
1640 |
-
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object' && 'tmpl-wptb-
|
1641 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1642 |
|
1643 |
if (Object.keys(elementsSettings).length == 0) {
|
1644 |
body.removeChild(wptbElementDatas);
|
@@ -1649,420 +1623,583 @@ var WPTB_Helper = {
|
|
1649 |
}
|
1650 |
}
|
1651 |
}
|
1652 |
-
}
|
1653 |
-
|
1654 |
-
|
1655 |
-
|
1656 |
-
var
|
1657 |
-
|
1658 |
-
|
1659 |
-
|
1660 |
-
|
1661 |
-
var
|
1662 |
-
|
1663 |
-
|
1664 |
-
columnsDecrementButton.onclick = function () {
|
1665 |
-
if (columnsInput.value > MIN_COLUMNS) {
|
1666 |
-
columnsInput.value--;
|
1667 |
-
}
|
1668 |
-
};
|
1669 |
|
1670 |
-
|
1671 |
-
|
1672 |
-
columnsInput.value++;
|
1673 |
-
}
|
1674 |
-
};
|
1675 |
|
1676 |
-
|
1677 |
-
|
1678 |
-
|
1679 |
-
|
|
|
|
|
|
|
|
|
1680 |
};
|
1681 |
|
1682 |
-
|
1683 |
-
|
1684 |
-
rowsInput.value++;
|
1685 |
-
}
|
1686 |
-
};
|
1687 |
|
1688 |
-
|
1689 |
-
|
1690 |
-
|
|
|
|
|
1691 |
|
1692 |
-
|
1693 |
|
1694 |
-
|
1695 |
-
|
1696 |
-
|
1697 |
-
};
|
1698 |
-
var WPTB_LeftPanel = function WPTB_LeftPanel() {
|
1699 |
|
1700 |
-
|
1701 |
-
|
1702 |
|
1703 |
-
|
1704 |
-
|
1705 |
-
|
1706 |
-
|
1707 |
-
|
1708 |
-
var trBackgroundColor = tableRows[trNumber].style.backgroundColor;
|
1709 |
-
var wptbEvenRowBg = document.getElementById(inputId);
|
1710 |
-
if (wptbEvenRowBg && trBackgroundColor) {
|
1711 |
-
wptbEvenRowBg.value = WPTB_Helper.rgbToHex(trBackgroundColor);
|
1712 |
-
}
|
1713 |
-
}
|
1714 |
}
|
1715 |
-
}
|
1716 |
|
1717 |
-
|
1718 |
-
|
1719 |
-
change: function change(event, ui) {
|
1720 |
-
var tableRows = table.getElementsByTagName('tr');
|
1721 |
-
for (var _i = 1; _i < tableRows.length; _i += 2) {
|
1722 |
-
tableRows[_i].style.backgroundColor = ui.color.toString();
|
1723 |
-
}
|
1724 |
-
WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving(event);
|
1725 |
-
},
|
1726 |
-
clear: function clear() {
|
1727 |
-
var tableRows = table.getElementsByTagName('tr');
|
1728 |
-
for (var _i2 = 1; _i2 < tableRows.length; _i2 += 2) {
|
1729 |
-
tableRows[_i2].style.backgroundColor = '';
|
1730 |
-
var tds = tableRows[_i2].getElementsByTagName('td');
|
1731 |
-
for (var j = 0; j < tds.length; j++) {
|
1732 |
-
tds[j].style.backgroundColor = '';
|
1733 |
-
}
|
1734 |
-
}
|
1735 |
|
1736 |
-
|
1737 |
-
|
|
|
|
|
|
|
|
|
1738 |
}
|
1739 |
|
1740 |
-
|
1741 |
-
|
1742 |
-
wptbTdBgColorSavedSet('wptb-odd-row-bg', 2);
|
1743 |
-
jQuery('#wptb-odd-row-bg').wpColorPicker({
|
1744 |
-
change: function change(event, ui) {
|
1745 |
-
var tableRows = table.getElementsByTagName('tr');
|
1746 |
-
for (var _i3 = 2; _i3 < tableRows.length; _i3 += 2) {
|
1747 |
-
tableRows[_i3].style.backgroundColor = ui.color.toString();
|
1748 |
-
}
|
1749 |
-
|
1750 |
-
WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving(event);
|
1751 |
-
},
|
1752 |
-
clear: function clear() {
|
1753 |
-
var tableRows = table.getElementsByTagName('tr');
|
1754 |
-
for (var _i4 = 2; _i4 < tableRows.length; _i4 += 2) {
|
1755 |
-
tableRows[_i4].style.backgroundColor = '';
|
1756 |
-
var tds = tableRows[_i4].getElementsByTagName('td');
|
1757 |
-
for (var j = 0; j < tds.length; j++) {
|
1758 |
-
tds[j].style.backgroundColor = '';
|
1759 |
-
}
|
1760 |
-
}
|
1761 |
|
1762 |
-
|
1763 |
-
|
1764 |
-
}
|
1765 |
-
});
|
1766 |
|
1767 |
-
|
1768 |
-
|
1769 |
-
change: function change(event, ui) {
|
1770 |
-
var tableHeader = table.getElementsByTagName('tr')[0];
|
1771 |
-
tableHeader.style.backgroundColor = ui.color.toString();
|
1772 |
|
1773 |
-
|
1774 |
-
|
1775 |
-
},
|
1776 |
-
clear: function clear() {
|
1777 |
-
var tableHeader = table.getElementsByTagName('tr')[0];
|
1778 |
-
tableHeader.style.backgroundColor = '';
|
1779 |
-
var tds = tableHeader.getElementsByTagName('td');
|
1780 |
-
for (var j = 0; j < tds.length; j++) {
|
1781 |
-
tds[j].style.backgroundColor = '';
|
1782 |
-
}
|
1783 |
|
1784 |
-
|
1785 |
-
|
1786 |
-
|
|
|
|
|
1787 |
|
1788 |
-
|
1789 |
-
|
1790 |
-
if (table && table.dataset.wptbAdaptiveTable && table.dataset.wptbAdaptiveTable == "1") {
|
1791 |
-
wptbAdaptiveTableCheckbox.checked = true;
|
1792 |
-
} else {
|
1793 |
-
wptbAdaptiveTableCheckbox.checked = false;
|
1794 |
-
}
|
1795 |
-
}
|
1796 |
-
tableAdaptiveForMobile(table);
|
1797 |
|
1798 |
-
|
1799 |
-
|
|
|
1800 |
|
1801 |
-
|
1802 |
-
|
1803 |
-
|
1804 |
-
wptbTopRowAsHeader.checked = false;
|
1805 |
-
}
|
1806 |
-
}
|
1807 |
-
tableTopRowAsHeadSavedSet(table);
|
1808 |
-
|
1809 |
-
function tableBorderColorWidthSavedSet() {
|
1810 |
-
var table = document.getElementsByClassName('wptb-preview-table');
|
1811 |
-
if (table.length > 0) {
|
1812 |
-
var tableBorderColor = table[0].style.borderColor;
|
1813 |
-
if (tableBorderColor) {
|
1814 |
-
var tableBorderColorInput = document.getElementById('wptb-table-border-color');
|
1815 |
-
if (tableBorderColorInput) {
|
1816 |
-
tableBorderColorInput.value = WPTB_Helper.rgbToHex(tableBorderColor);
|
1817 |
}
|
1818 |
}
|
1819 |
|
1820 |
-
|
1821 |
-
if (tableBorderWidth) {
|
1822 |
-
var wptbTableBorderWidthSlider = document.getElementById('wptb-table-border-slider'),
|
1823 |
-
wptbTableBorderWidthNumber = document.getElementById('wptb-table-border-number');
|
1824 |
|
1825 |
-
|
1826 |
-
|
1827 |
-
}
|
1828 |
-
if (wptbTableBorderWidthNumber) {
|
1829 |
-
wptbTableBorderWidthNumber.value = parseInt(tableBorderWidth);
|
1830 |
-
}
|
1831 |
-
}
|
1832 |
|
1833 |
-
|
1834 |
-
|
1835 |
-
if (applyInnerBorder) {
|
1836 |
-
var innerBorderCheckInput = document.getElementById('wptb-inner-border-check');
|
1837 |
-
var wptbApplyInnerBorder = document.getElementById('wptb-apply-inner-border');
|
1838 |
-
if (applyInnerBorder && parseInt(applyInnerBorder) > 0) {
|
1839 |
-
if (innerBorderCheckInput) {
|
1840 |
-
innerBorderCheckInput.checked = true;
|
1841 |
-
|
1842 |
-
if (wptbApplyInnerBorder) {
|
1843 |
-
wptbApplyInnerBorder.classList.add('visible');
|
1844 |
-
var wptbTableInnerBorderSlider = document.getElementById('wptb-table-inner-border-slider');
|
1845 |
-
var _wptbTableInnerBorderNumber = document.getElementById('wptb-table-inner-border-number');
|
1846 |
-
wptbTableInnerBorderSlider.value = parseInt(applyInnerBorder);
|
1847 |
-
_wptbTableInnerBorderNumber.value = parseInt(applyInnerBorder);
|
1848 |
-
}
|
1849 |
-
}
|
1850 |
-
} else {
|
1851 |
-
innerBorderCheckInput.checked = false;
|
1852 |
-
}
|
1853 |
}
|
1854 |
|
1855 |
-
if (
|
1856 |
-
|
1857 |
}
|
1858 |
-
}
|
1859 |
-
}
|
1860 |
|
1861 |
-
|
1862 |
|
1863 |
-
|
1864 |
-
change: function change(event, ui) {
|
1865 |
-
var tableCells = table.getElementsByTagName('td');
|
1866 |
-
table.style.border = document.querySelector('#wptb-table-border-number').value + 'px solid ' + ui.color.toString();
|
1867 |
|
1868 |
-
|
1869 |
-
|
1870 |
-
|
1871 |
-
|
1872 |
-
|
|
|
|
|
|
|
|
|
1873 |
}
|
1874 |
-
WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving(event);
|
1875 |
-
},
|
1876 |
-
clear: function clear() {
|
1877 |
-
var tableCells = table.getElementsByTagName('td');
|
1878 |
-
table.style.borderColor = '';
|
1879 |
|
1880 |
-
|
1881 |
-
|
1882 |
-
}
|
1883 |
|
1884 |
-
|
1885 |
-
|
|
|
|
|
|
|
1886 |
}
|
1887 |
-
});
|
1888 |
|
1889 |
-
|
1890 |
-
var
|
1891 |
-
|
1892 |
-
tableCells[i].style.borderWidth = document.querySelector('#wptb-table-inner-border-number').value + 'px';
|
1893 |
-
tableCells[i].style.borderStyle = 'solid';
|
1894 |
}
|
1895 |
-
}
|
1896 |
|
1897 |
-
|
1898 |
-
|
1899 |
-
|
1900 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1901 |
}
|
1902 |
-
}
|
1903 |
|
1904 |
-
|
1905 |
-
|
1906 |
-
|
1907 |
-
|
1908 |
-
|
1909 |
-
|
1910 |
-
|
1911 |
-
|
1912 |
-
|
1913 |
-
|
1914 |
-
|
1915 |
-
|
1916 |
-
|
1917 |
-
|
1918 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1919 |
}
|
1920 |
-
document.getElementById('wptb-apply-inner-border').classList.add('visible');
|
1921 |
} else {
|
1922 |
-
|
1923 |
-
|
1924 |
-
|
1925 |
-
|
1926 |
-
|
|
|
1927 |
}
|
1928 |
}
|
1929 |
}
|
1930 |
-
}
|
1931 |
-
|
1932 |
-
function
|
1933 |
-
|
1934 |
-
|
1935 |
-
|
1936 |
|
1937 |
-
|
1938 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1939 |
|
1940 |
-
|
1941 |
-
|
|
|
1942 |
|
1943 |
-
|
1944 |
-
|
1945 |
|
1946 |
-
|
1947 |
-
var wptbTableCellSlider = document.getElementById('wptb-table-cell-slider'),
|
1948 |
-
_wptbTableCellNumber = document.getElementById('wptb-table-cell-number');
|
1949 |
|
1950 |
-
|
1951 |
-
|
1952 |
-
|
1953 |
-
|
1954 |
-
|
|
|
|
|
|
|
1955 |
}
|
1956 |
}
|
1957 |
}
|
1958 |
}
|
1959 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1960 |
|
1961 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1962 |
|
1963 |
-
|
1964 |
-
|
|
|
|
|
|
|
|
|
|
|
1965 |
|
1966 |
-
|
1967 |
-
|
|
|
|
|
|
|
|
|
1968 |
|
1969 |
-
|
1970 |
-
WPTB_Helper.numberImputSize(wptbTableCellNumber, 1, 50);
|
1971 |
|
1972 |
-
|
1973 |
-
|
1974 |
-
|
1975 |
-
|
1976 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1977 |
|
1978 |
-
|
1979 |
-
|
|
|
1980 |
|
1981 |
-
|
1982 |
-
|
|
|
1983 |
|
1984 |
-
|
1985 |
-
|
1986 |
-
addCellPadding(this.value);
|
1987 |
-
table.tdDefaultWidth();
|
1988 |
-
};
|
1989 |
|
1990 |
-
|
1991 |
-
|
1992 |
-
|
1993 |
-
|
|
|
1994 |
|
1995 |
-
|
1996 |
-
|
1997 |
-
|
1998 |
-
|
1999 |
|
2000 |
-
|
2001 |
-
|
2002 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2003 |
|
2004 |
-
|
2005 |
-
|
2006 |
-
|
2007 |
-
|
|
|
|
|
|
|
2008 |
|
2009 |
-
|
2010 |
-
|
2011 |
-
if (this.value == 0 && wptbInnerBorderCheck == false) {
|
2012 |
-
tableBorderColorSetArea.style.display = 'none';
|
2013 |
-
} else {
|
2014 |
-
tableBorderColorSetArea.style.display = '';
|
2015 |
}
|
2016 |
-
};
|
2017 |
|
2018 |
-
|
2019 |
-
|
2020 |
-
|
2021 |
-
|
2022 |
|
2023 |
-
|
2024 |
-
|
2025 |
-
addBorderSize(this.value);
|
2026 |
-
table.tdDefaultWidth();
|
2027 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
2028 |
-
wptbTableStateSaveManager.tableStateSet();
|
2029 |
-
};
|
2030 |
|
2031 |
-
|
2032 |
-
|
2033 |
-
|
2034 |
-
|
2035 |
-
};
|
2036 |
|
2037 |
-
|
2038 |
-
|
2039 |
-
|
2040 |
-
};
|
2041 |
|
2042 |
-
|
2043 |
-
|
2044 |
-
|
2045 |
-
|
2046 |
-
|
2047 |
-
|
2048 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2049 |
|
2050 |
-
|
2051 |
-
|
2052 |
-
|
2053 |
-
|
2054 |
-
|
2055 |
-
|
2056 |
-
|
2057 |
-
|
2058 |
-
|
2059 |
-
tableBorderColorSetArea.style.display = '';
|
2060 |
-
}
|
2061 |
|
2062 |
-
|
2063 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2064 |
}
|
2065 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2066 |
|
2067 |
document.getElementById('wptb-table-column-width-slider').oninput = function () {
|
2068 |
document.getElementById('wptb-table-column-width-number').value = this.value;
|
@@ -2132,59 +2269,52 @@ var WPTB_LeftPanel = function WPTB_LeftPanel() {
|
|
2132 |
|
2133 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
2134 |
wptbTableStateSaveManager.tableStateSet();
|
2135 |
-
};
|
2136 |
-
|
2137 |
-
document.getElementById('wptb-adaptive-table-checkbox').onchange = function () {
|
2138 |
-
if (this.checked) {
|
2139 |
-
table.dataset.wptbAdaptiveTable = 1;
|
2140 |
-
} else {
|
2141 |
-
table.dataset.wptbAdaptiveTable = 0;
|
2142 |
-
}
|
2143 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
2144 |
-
wptbTableStateSaveManager.tableStateSet();
|
2145 |
-
};
|
2146 |
-
|
2147 |
-
function createMobileHeadForTable(table, thisEvent) {
|
2148 |
-
|
2149 |
-
if (thisEvent.checked) {
|
2150 |
-
WPTB_Helper.dataTitleColumnSet(table);
|
2151 |
|
2152 |
-
|
2153 |
-
|
2154 |
-
|
2155 |
-
|
2156 |
-
|
2157 |
-
|
2158 |
-
|
2159 |
-
|
2160 |
-
|
2161 |
-
|
2162 |
-
|
2163 |
-
|
2164 |
-
|
2165 |
-
|
2166 |
-
|
2167 |
-
|
|
|
|
|
|
|
|
|
|
|
2168 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2169 |
}
|
2170 |
}
|
2171 |
}
|
2172 |
|
2173 |
-
|
2174 |
-
createMobileHeadForTable(table, this);
|
2175 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
2176 |
-
wptbTableStateSaveManager.tableStateSet();
|
2177 |
-
};
|
2178 |
|
2179 |
for (var i = 0; i < wptbElementButtons.length; i++) {
|
2180 |
wptbElementButtons[i].ondragstart = function (e) {
|
2181 |
e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);
|
2182 |
e.dataTransfer.setData('wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement);
|
2183 |
};
|
2184 |
-
}
|
2185 |
|
2186 |
if (table) {
|
2187 |
-
document.getElementById('wptb-activate-cell-management-mode').onclick = table.toggleTableEditMode;
|
2188 |
document.getElementById('wptb-table-edit-mode-close').onclick = table.toggleTableEditMode;
|
2189 |
document.getElementById('wptb-left-scroll-panel-curtain-close').onclick = table.toggleTableEditMode;
|
2190 |
document.getElementById('wptb-add-end-row').onclick = table.addRowToTheEnd;
|
@@ -2199,7 +2329,7 @@ var WPTB_LeftPanel = function WPTB_LeftPanel() {
|
|
2199 |
document.getElementById('wptb-delete-row').onclick = table.deleteRow;
|
2200 |
document.getElementById('wptb-merge-cells').onclick = table.mergeCells;
|
2201 |
document.getElementById('wptb-split-cell').onclick = table.splitCell;
|
2202 |
-
}
|
2203 |
|
2204 |
document.querySelector('.wptb-left-panel-extend').onclick = function () {
|
2205 |
var wptbContainer = document.querySelector('.wptb-container');
|
@@ -2217,30 +2347,15 @@ var WPTB_LeftPanel = function WPTB_LeftPanel() {
|
|
2217 |
var wptbBuilderPanel = document.getElementsByClassName('wptb-builder-panel')[0];
|
2218 |
wptbBuilderPanel.onclick = function (e) {
|
2219 |
if (!e.target.classList.contains('wptb-ph-element') && !WPTB_Helper.findAncestor(e.target, 'wptb-ph-element') && !e.target.classList.contains('wptb-fixed-toolbar') && !WPTB_Helper.findAncestor(e.target, 'wptb-fixed-toolbar')) {
|
2220 |
-
clickOnFreeSpace();
|
2221 |
}
|
2222 |
};
|
2223 |
|
2224 |
var wptbHeader = document.getElementsByClassName('wptb-header');
|
2225 |
if (wptbHeader.length > 0) wptbHeader = wptbHeader[0];
|
2226 |
wptbHeader.onclick = function () {
|
2227 |
-
clickOnFreeSpace();
|
2228 |
};
|
2229 |
-
|
2230 |
-
function clickOnFreeSpace() {
|
2231 |
-
document.getElementsByClassName('wptb-elements-container')[0].style.display = 'table';
|
2232 |
-
document.getElementsByClassName('wptb-settings-section')[0].style.display = 'block';
|
2233 |
-
document.getElementById('element-options-group').style.display = 'none';
|
2234 |
-
var wpcdFixedToolbar = document.getElementById('wpcd_fixed_toolbar');
|
2235 |
-
if (wpcdFixedToolbar.hasAttribute('data-toolbar-active-id')) {
|
2236 |
-
document.getElementById(wpcdFixedToolbar.getAttribute('data-toolbar-active-id')).classList.remove('toolbar-active');
|
2237 |
-
}
|
2238 |
-
}
|
2239 |
-
document.querySelector('.wptb-panel-left').addEventListener('click', function (event) {
|
2240 |
-
if (event.target.classList.contains('wptb-exit-options')) {
|
2241 |
-
clickOnFreeSpace();
|
2242 |
-
}
|
2243 |
-
});
|
2244 |
};
|
2245 |
var MultipleSelect = function MultipleSelect() {
|
2246 |
|
@@ -2390,7 +2505,7 @@ var WPTB_Settings = function WPTB_Settings() {
|
|
2390 |
WPTB_Helper.elementDragEndClear();
|
2391 |
};
|
2392 |
};
|
2393 |
-
|
2394 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
2395 |
var wptbUndo = document.getElementsByClassName('wptb-undo');
|
2396 |
if (wptbUndo.length > 0) {
|
@@ -2400,7 +2515,7 @@ var WPTB_Settings = function WPTB_Settings() {
|
|
2400 |
if (!this.classList.contains('wptb-undoredo-disabled')) {
|
2401 |
wptbTableStateSaveManager.tableStateGet(this.dataset.wptbUndoredo);
|
2402 |
var wptbUndoRedoContainer = document.getElementsByClassName('wptb-undo-redo-container');
|
2403 |
-
if (wptbUndoRedoContainer.length > 0) {
|
2404 |
wptbUndoRedoContainer = wptbUndoRedoContainer[0];
|
2405 |
wptbUndoRedoContainer.onmouseleave = function (event) {
|
2406 |
event.target.onmouseleave = '';
|
@@ -2419,7 +2534,7 @@ var WPTB_Settings = function WPTB_Settings() {
|
|
2419 |
if (!this.classList.contains('wptb-undoredo-disabled')) {
|
2420 |
wptbTableStateSaveManager.tableStateGet(this.dataset.wptbUndoredo);
|
2421 |
var wptbUndoRedoContainer = document.getElementsByClassName('wptb-undo-redo-container');
|
2422 |
-
if (wptbUndoRedoContainer.length > 0) {
|
2423 |
wptbUndoRedoContainer = wptbUndoRedoContainer[0];
|
2424 |
wptbUndoRedoContainer.onmouseleave = function (event) {
|
2425 |
event.target.onmouseleave = '';
|
@@ -2454,111 +2569,27 @@ var WPTB_Settings = function WPTB_Settings() {
|
|
2454 |
shortcodePopupWindow.classList.remove('wptb-popup-show');
|
2455 |
};
|
2456 |
|
2457 |
-
document.getElementsByClassName('wptb-preview-btn')[0].onclick = function (
|
2458 |
if (this.classList.contains('wptb-button-disable')) {
|
2459 |
-
e.preventDefault();
|
2460 |
-
}
|
2461 |
-
};
|
2462 |
-
|
2463 |
-
document.getElementsByClassName('wptb-save-btn')[0].onclick = function (event) {
|
2464 |
-
if (!event.target.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 || window.wptbTableStateNumberShow == event.target.dataset.wptbTableStateNumberSave) {
|
2465 |
return;
|
2466 |
}
|
2467 |
-
var bar = document.querySelector('.wptb-edit-bar');
|
2468 |
-
if (bar && bar.classList.contains('visible')) {
|
2469 |
-
var table = document.getElementsByClassName('wptb-preview-table')[0];
|
2470 |
-
table.toggleTableEditMode();
|
2471 |
-
}
|
2472 |
-
|
2473 |
-
var http = new XMLHttpRequest(),
|
2474 |
-
url = (wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl) + "?action=save_table",
|
2475 |
-
t = document.getElementById('wptb-setup-name').value.trim(),
|
2476 |
-
messagingArea = void 0,
|
2477 |
-
code = void 0,
|
2478 |
-
datas = void 0;
|
2479 |
-
code = document.getElementsByClassName('wptb-preview-table');
|
2480 |
-
if (code.length > 0) {
|
2481 |
-
code = WPTB_Stringifier(code[0]);
|
2482 |
-
code = code.outerHTML;
|
2483 |
-
} else {
|
2484 |
-
code = '';
|
2485 |
-
}
|
2486 |
-
|
2487 |
-
datas = '';
|
2488 |
-
var datas_containers = document.getElementsByClassName('wptb-element-datas');
|
2489 |
|
2490 |
-
|
2491 |
-
if (datas_containers[0].innerHTML) {
|
2492 |
-
datas = datas_containers[0].innerHTML;
|
2493 |
-
}
|
2494 |
-
}
|
2495 |
|
2496 |
-
|
2497 |
-
|
2498 |
-
|
2499 |
-
|
2500 |
-
|
2501 |
-
messagingArea.innerHTML = '<div class="wptb-error wptb-message">Error: ' + messagingAreaText + '</div>';
|
2502 |
-
messagingArea.classList.add('wptb-warning');
|
2503 |
-
setTimeout(function () {
|
2504 |
-
messagingArea.removeChild(messagingArea.firstChild);
|
2505 |
-
}, 4000);
|
2506 |
-
return;
|
2507 |
-
}
|
2508 |
|
2509 |
-
|
2510 |
-
|
2511 |
-
|
2512 |
-
elements_datas: datas,
|
2513 |
-
security_code: wptb_admin_object.security_code
|
2514 |
-
};
|
2515 |
-
if ((rs = WPTB_Helper.detectMode()) || (rs = document.wptbId)) {
|
2516 |
-
params.id = rs;
|
2517 |
}
|
2518 |
-
params = JSON.stringify(params);
|
2519 |
-
|
2520 |
-
http.open('POST', url, true);
|
2521 |
-
http.setRequestHeader('Content-type', 'application/json; charset=utf-8');
|
2522 |
-
|
2523 |
-
http.onreadystatechange = function (action) {
|
2524 |
-
if (this.readyState == 4 && this.status == 200) {
|
2525 |
-
var data = JSON.parse(http.responseText);
|
2526 |
-
messagingArea = document.getElementById('wptb-messaging-area');
|
2527 |
-
|
2528 |
-
if (data[0] == 'saved') {
|
2529 |
-
document.wptbId = data[1];
|
2530 |
-
messagingArea.innerHTML = '<div class="wptb-success wptb-message">Table "' + t + '" was successfully saved.</div>';
|
2531 |
-
document.getElementsByClassName('wptb-embed-btn')[0].classList.remove('wptb-button-disable');
|
2532 |
-
document.getElementById('wptb-embed-shortcode').value = '[wptb id=' + data[1] + ']';
|
2533 |
-
var wptbPreviewBtn = document.getElementsByClassName('wptb-preview-btn');
|
2534 |
-
if (wptbPreviewBtn.length > 0) {
|
2535 |
-
wptbPreviewBtn = wptbPreviewBtn[0];
|
2536 |
-
wptbPreviewBtn.classList.remove('wptb-button-disable');
|
2537 |
-
var wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;
|
2538 |
-
wptbPreviewBtnHref = wptbPreviewBtnHref.replace('empty', data[1]);
|
2539 |
-
wptbPreviewBtn.setAttribute('href', wptbPreviewBtnHref);
|
2540 |
-
}
|
2541 |
-
} else if (data[0] == 'edited') {
|
2542 |
-
messagingArea.innerHTML = '<div class="wptb-success wptb-message">Table "' + t + '" was successfully updated.</div>';
|
2543 |
-
event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;
|
2544 |
-
|
2545 |
-
var wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');
|
2546 |
-
if (wptbSaveBtn.length > 0) {
|
2547 |
-
wptbSaveBtn = wptbSaveBtn[0];
|
2548 |
-
wptbSaveBtn.classList.add('wptb-save-disabled');
|
2549 |
-
}
|
2550 |
-
} else {
|
2551 |
-
messagingArea.innerHTML = '<div class="wptb-error wptb-message">Safety problems</div>';
|
2552 |
-
}
|
2553 |
-
messagingArea.classList.add('wptb-success');
|
2554 |
-
setTimeout(function () {
|
2555 |
-
messagingArea.removeChild(messagingArea.firstChild);
|
2556 |
-
}, 4000);
|
2557 |
-
}
|
2558 |
-
};
|
2559 |
-
http.send(params);
|
2560 |
};
|
2561 |
};
|
|
|
|
|
2562 |
var WPTB_Stringifier = function WPTB_Stringifier(codeMain) {
|
2563 |
if (codeMain) {
|
2564 |
var code = codeMain.cloneNode(true);
|
@@ -2628,6 +2659,16 @@ var WPTB_Stringifier = function WPTB_Stringifier(codeMain) {
|
|
2628 |
break;
|
2629 |
}
|
2630 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2631 |
}
|
2632 |
}
|
2633 |
|
@@ -3034,12 +3075,7 @@ var array = [],
|
|
3034 |
}
|
3035 |
};
|
3036 |
|
3037 |
-
jQuery('#wptb-table-header-bg').val('');
|
3038 |
-
jQuery('#wptb-even-row-bg').val('');
|
3039 |
-
jQuery('#wptb-odd-row-bg').val('');
|
3040 |
jQuery('#wptb-table-border-color').val('');
|
3041 |
-
jQuery('#wptb-table-inner-border-number,#wptb-table-inner-border-slider').val('0');
|
3042 |
-
jQuery('#wptb-table-border-number,#wptb-table-border-slider').val('0');
|
3043 |
jQuery('#wptb-table-padding-number,#wptb-table-padding-slider').val('15');
|
3044 |
|
3045 |
if (columns || rows) {
|
@@ -3052,7 +3088,8 @@ var array = [],
|
|
3052 |
|
3053 |
//Create a HTML Table element.
|
3054 |
table = document.createElement('table');
|
3055 |
-
table.classList.add('wptb-preview-table');
|
|
|
3056 |
table.dataset.reconstraction = 1;
|
3057 |
table.dataset.wptbAdaptiveTable = 1;
|
3058 |
//Add the data rows.
|
@@ -3064,6 +3101,7 @@ var array = [],
|
|
3064 |
for (var j = 0; j < columns; j++) {
|
3065 |
cell = new WPTB_Cell(mark);
|
3066 |
cell.setCoords(i, j);
|
|
|
3067 |
row.appendChild(cell.getDOMElement());
|
3068 |
}
|
3069 |
}
|
@@ -3080,6 +3118,8 @@ var array = [],
|
|
3080 |
WPTB_Cell(mark, cells[_i]);
|
3081 |
}
|
3082 |
}
|
|
|
|
|
3083 |
}
|
3084 |
}
|
3085 |
|
@@ -3135,37 +3175,28 @@ var array = [],
|
|
3135 |
maxCols = 0,
|
3136 |
maxColsFull = 0,
|
3137 |
tdsArr = [];
|
3138 |
-
|
3139 |
|
3140 |
for (var i = 0; i < trs.length; i++) {
|
3141 |
if (i == 0) {
|
3142 |
-
if
|
3143 |
-
|
3144 |
-
|
3145 |
-
|
3146 |
-
|
3147 |
-
|
3148 |
-
|
3149 |
-
|
3150 |
-
|
3151 |
-
|
3152 |
-
|
3153 |
-
trs[i].classList.remove('wptb-table-head');
|
3154 |
-
}
|
3155 |
-
}
|
3156 |
} else {
|
3157 |
-
if (i % 2 == 0) {
|
3158 |
-
|
3159 |
-
|
3160 |
-
|
3161 |
-
|
3162 |
-
} else {
|
3163 |
-
if (start == undefined) {
|
3164 |
-
trs[i].style.backgroundColor = jQuery('#wptb-even-row-bg').val();
|
3165 |
-
}
|
3166 |
-
trs[i].classList.remove('wptb-table-head');
|
3167 |
}
|
3168 |
-
}
|
3169 |
|
3170 |
tdsArr[i];
|
3171 |
tds = trs[i].getElementsByTagName('td');
|
@@ -3304,18 +3335,23 @@ var array = [],
|
|
3304 |
var tableTdBorderCommonWidth = 0;
|
3305 |
var cssForTdsWidthAuto = '';
|
3306 |
|
|
|
|
|
|
|
|
|
|
|
3307 |
for (var _i5 = 0; _i5 < rows.length; _i5++) {
|
3308 |
var tds = rows[_i5].children;
|
3309 |
for (var _j2 = 0; _j2 < tds.length; _j2++) {
|
3310 |
var td = tds[_j2];
|
3311 |
|
3312 |
-
if (!arrayCellsWidthFixedHelper[
|
3313 |
if (td.style.width) {
|
3314 |
-
arrayCellsWidthFixedHelper[
|
3315 |
td.removeAttribute('data-wptb-css-td-auto-width');
|
3316 |
} else {
|
3317 |
if (!td.dataset.wptbFixedWidth) {
|
3318 |
-
arrayCellsWidthAutoHelper[
|
3319 |
td.dataset.wptbCssTdAutoWidth = true;
|
3320 |
}
|
3321 |
}
|
@@ -3329,19 +3365,45 @@ var array = [],
|
|
3329 |
var tableTdBorderLeftWidth = tdStyleObj.getPropertyValue('border-left-width');
|
3330 |
var tableTdBorderRightWidth = tdStyleObj.getPropertyValue('border-right-width');
|
3331 |
tableTdBorderCommonWidth = parseFloat(tableTdBorderLeftWidth, 10) + parseFloat(tableTdBorderRightWidth, 10);
|
3332 |
-
|
3333 |
-
|
3334 |
-
|
3335 |
-
|
3336 |
-
|
3337 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3338 |
}
|
3339 |
}
|
3340 |
-
} else if (arrayCellsWidthAutoHelper[
|
3341 |
if (!td.dataset.wptbFixedWidth) {
|
3342 |
td.dataset.wptbCssTdAutoWidth = true;
|
3343 |
}
|
3344 |
-
} else if (arrayCellsWidthFixedHelper[
|
3345 |
td.removeAttribute('data-wptb-css-td-auto-width');
|
3346 |
}
|
3347 |
}
|
@@ -3361,17 +3423,13 @@ var array = [],
|
|
3361 |
}
|
3362 |
}
|
3363 |
|
3364 |
-
|
3365 |
-
var borderLeftWidth = tableFullStyleObj.getPropertyValue('border-left-width');
|
3366 |
-
var borderRightWidth = tableFullStyleObj.getPropertyValue('border-right-width');
|
3367 |
-
var tableBorderCommon = parseFloat(borderLeftWidth, 10) + parseFloat(borderRightWidth, 10);
|
3368 |
-
tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto + tableBorderCommon;
|
3369 |
|
3370 |
table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;
|
3371 |
if (CellsWidthAutoCount) {
|
3372 |
table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;
|
3373 |
if (table.mergingСellsHorizontally) {
|
3374 |
-
table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed
|
3375 |
} else {
|
3376 |
table.removeAttribute('data-wptb-fixed-width-size');
|
3377 |
}
|
@@ -3387,7 +3445,7 @@ var array = [],
|
|
3387 |
table.style.minWidth = '100%';
|
3388 |
if (table.mergingСellsHorizontally) {
|
3389 |
table.style.width = null;
|
3390 |
-
var tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed
|
3391 |
tableTdWidthAuto = tableTdsWidthAutoCommon / CellsWidthAutoCount;
|
3392 |
tableTdWidthAuto = tableTdWidthAuto - tdPaddingCommon - tableTdBorderCommonWidth;
|
3393 |
styleElementCreate = true;
|
@@ -3397,7 +3455,7 @@ var array = [],
|
|
3397 |
} else {
|
3398 |
table.style.width = null;
|
3399 |
table.style.minWidth = null;
|
3400 |
-
table.style.maxWidth =
|
3401 |
}
|
3402 |
} else {
|
3403 |
table.style.maxWidth = null;
|
@@ -3491,26 +3549,19 @@ var array = [],
|
|
3491 |
|
3492 |
table.reconstraction = function () {
|
3493 |
var tds = table.getElementsByTagName('td');
|
3494 |
-
var wptbAdaptiveTableChoseBlock = document.getElementsByClassName('wptb-adaptive-table-chose-block');
|
3495 |
-
if (wptbAdaptiveTableChoseBlock.length > 0) {
|
3496 |
-
wptbAdaptiveTableChoseBlock = wptbAdaptiveTableChoseBlock[0];
|
3497 |
-
}
|
3498 |
table.mergingСellsHorizontally = false;
|
3499 |
table.mergingCellsVertically = false;
|
3500 |
table.dataset.reconstraction = 1;
|
3501 |
-
wptbAdaptiveTableChoseBlock.style.display = 'block';
|
3502 |
var forBreak = 0;
|
3503 |
for (var _i9 = 0; _i9 < tds.length; _i9++) {
|
3504 |
if (tds[_i9].colSpan > 1) {
|
3505 |
table.dataset.reconstraction = 0;
|
3506 |
-
wptbAdaptiveTableChoseBlock.style.display = 'none';
|
3507 |
table.mergingСellsHorizontally = true;
|
3508 |
forBreak++;
|
3509 |
}
|
3510 |
|
3511 |
if (tds[_i9].rowSpan > 1) {
|
3512 |
table.dataset.reconstraction = 0;
|
3513 |
-
wptbAdaptiveTableChoseBlock.style.display = 'none';
|
3514 |
table.mergingCellsVertically = true;
|
3515 |
forBreak++;
|
3516 |
}
|
@@ -4254,12 +4305,17 @@ var array = [],
|
|
4254 |
if (table.rows.length == 0) {
|
4255 |
table.toggleTableEditMode();
|
4256 |
wptbTableSetup.innerHTML = '';
|
4257 |
-
WPTB_Helper.settingsPanelClear();
|
4258 |
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
|
4259 |
-
|
|
|
|
|
4260 |
|
4261 |
-
|
4262 |
-
|
|
|
|
|
|
|
|
|
4263 |
}
|
4264 |
|
4265 |
undoSelect();
|
@@ -4310,13 +4366,18 @@ var array = [],
|
|
4310 |
if (table.querySelectorAll('td').length == 0) {
|
4311 |
table.toggleTableEditMode();
|
4312 |
wptbTableSetup.innerHTML = '';
|
4313 |
-
WPTB_Helper.settingsPanelClear();
|
4314 |
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
|
4315 |
-
|
|
|
|
|
4316 |
|
4317 |
-
|
4318 |
-
|
4319 |
-
|
|
|
|
|
|
|
|
|
4320 |
}
|
4321 |
|
4322 |
undoSelect();
|
@@ -4378,27 +4439,39 @@ var array = [],
|
|
4378 |
// }, false );
|
4379 |
// }
|
4380 |
};
|
|
|
|
|
4381 |
var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
4382 |
-
this.tableStateSet = function () {
|
|
|
|
|
|
|
|
|
|
|
4383 |
// get preview table
|
4384 |
var wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');
|
4385 |
if (wptbPreviewTable.length > 0) {
|
4386 |
wptbPreviewTable = wptbPreviewTable[0];
|
|
|
|
|
|
|
4387 |
|
4388 |
-
|
4389 |
-
|
4390 |
-
|
4391 |
-
|
4392 |
-
|
4393 |
|
4394 |
-
|
4395 |
-
|
4396 |
-
|
4397 |
-
|
4398 |
-
|
4399 |
|
4400 |
-
|
4401 |
-
|
|
|
|
|
4402 |
var wptbHighlighted = wptbNewPreviewTable.getElementsByClassName('wptb-highlighted');
|
4403 |
for (var i = 0; i < wptbHighlighted.length; i++) {
|
4404 |
wptbHighlighted[i].classList.remove('wptb-highlighted');
|
@@ -4407,81 +4480,81 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
4407 |
for (var _i = 0; _i < wptbDirectlyhovered.length; _i++) {
|
4408 |
wptbDirectlyhovered[_i].classList.remove('wptb-directlyhovered');
|
4409 |
}
|
4410 |
-
|
4411 |
-
var cssForTdsWidthAutoValue = '';
|
4412 |
-
var head = document.head;
|
4413 |
-
if (head) {
|
4414 |
-
var cssForTdsWidthAuto = head.querySelector('style[data-wptb-td-auto-width="true"]');
|
4415 |
-
if (cssForTdsWidthAuto) {
|
4416 |
-
cssForTdsWidthAutoValue = cssForTdsWidthAuto.innerHTML;
|
4417 |
-
}
|
4418 |
-
}
|
4419 |
-
|
4420 |
-
var wptbDlementDatas = document.getElementsByClassName('wptb-element-datas');
|
4421 |
-
if (wptbDlementDatas.length > 0) {
|
4422 |
-
wptbDlementDatas = wptbDlementDatas.innerHTML;
|
4423 |
-
} else {
|
4424 |
-
wptbDlementDatas = '';
|
4425 |
-
}
|
4426 |
-
|
4427 |
var mceContentBodys = wptbNewPreviewTable.querySelectorAll('.mce-content-body');
|
4428 |
if (mceContentBodys.length > 0) {
|
4429 |
for (var k = 0; k < mceContentBodys.length; k++) {
|
4430 |
mceContentBodys[k].classList.remove('mce-content-body');
|
4431 |
}
|
4432 |
}
|
4433 |
-
|
4434 |
var dataMceStyle = wptbNewPreviewTable.querySelectorAll('[data-mce-style]');
|
4435 |
if (dataMceStyle.length > 0) {
|
4436 |
for (var _k = 0; _k < dataMceStyle.length; _k++) {
|
4437 |
dataMceStyle[_k].removeAttribute('data-mce-style');
|
4438 |
}
|
4439 |
}
|
4440 |
-
|
4441 |
var mceIds = wptbNewPreviewTable.querySelectorAll('[id^=mce_]');
|
4442 |
if (mceIds.length > 0) {
|
4443 |
for (var _k2 = 0; _k2 < mceIds.length; _k2++) {
|
4444 |
mceIds[_k2].removeAttribute('id');
|
4445 |
}
|
4446 |
}
|
|
|
4447 |
|
4448 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4449 |
|
4450 |
-
|
4451 |
-
|
|
|
|
|
|
|
|
|
|
|
4452 |
|
4453 |
-
|
4454 |
-
if (window.wptbTableStateSaving.length > 1) {
|
4455 |
-
var wptbUndo = document.getElementsByClassName('wptb-undo');
|
4456 |
-
if (wptbUndo.length > 0) {
|
4457 |
-
wptbUndo = wptbUndo[0];
|
4458 |
|
4459 |
-
|
4460 |
-
}
|
4461 |
-
}
|
4462 |
|
4463 |
-
|
4464 |
-
|
4465 |
-
|
4466 |
-
|
|
|
|
|
|
|
|
|
4467 |
|
4468 |
-
|
4469 |
}
|
|
|
4470 |
|
4471 |
-
|
4472 |
-
|
4473 |
-
|
4474 |
-
|
4475 |
-
|
4476 |
-
|
4477 |
-
|
4478 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4479 |
}
|
4480 |
}
|
4481 |
};
|
4482 |
|
4483 |
this.tableStateGet = function (datawptbUndoredo) {
|
4484 |
-
if (datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length >
|
4485 |
|
4486 |
// changes the number of the state which displays now
|
4487 |
if (datawptbUndoredo == 'undo') {
|
@@ -4491,7 +4564,7 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
4491 |
return false;
|
4492 |
}
|
4493 |
} else if (datawptbUndoredo == 'redo') {
|
4494 |
-
if (window.wptbTableStateNumberShow < window.wptbTableStateSaving.length
|
4495 |
window.wptbTableStateNumberShow++;
|
4496 |
} else {
|
4497 |
return false;
|
@@ -4502,14 +4575,15 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
4502 |
var wptbUndo = document.getElementsByClassName('wptb-undo');
|
4503 |
if (wptbUndo.length > 0) {
|
4504 |
wptbUndo = wptbUndo[0];
|
4505 |
-
|
4506 |
-
|
4507 |
-
|
4508 |
-
|
4509 |
-
|
4510 |
-
|
4511 |
-
|
4512 |
-
|
|
|
4513 |
}
|
4514 |
}
|
4515 |
|
@@ -4517,17 +4591,19 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
4517 |
var wptbRedo = document.getElementsByClassName('wptb-redo');
|
4518 |
if (wptbRedo.length > 0) {
|
4519 |
wptbRedo = wptbRedo[0];
|
4520 |
-
|
4521 |
-
|
4522 |
-
|
4523 |
-
|
4524 |
-
|
4525 |
-
|
4526 |
-
|
4527 |
-
|
|
|
4528 |
}
|
4529 |
}
|
4530 |
|
|
|
4531 |
var wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');
|
4532 |
if (wptbSaveBtn.length > 0) {
|
4533 |
wptbSaveBtn = wptbSaveBtn[0];
|
@@ -4544,37 +4620,56 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
4544 |
wptbTableSetup = wptbTableSetup[0];
|
4545 |
|
4546 |
wptbTableSetup.innerHTML = '';
|
4547 |
-
|
|
|
|
|
|
|
|
|
|
|
4548 |
|
4549 |
-
|
4550 |
-
|
4551 |
-
|
4552 |
-
|
|
|
|
|
|
|
|
|
|
|
4553 |
var head = document.head;
|
4554 |
if (head) {
|
4555 |
var cssForTdsWidthAutoOld = head.querySelector('style[data-wptb-td-auto-width="true"]');
|
4556 |
if (cssForTdsWidthAutoOld) {
|
4557 |
head.removeChild(cssForTdsWidthAutoOld);
|
4558 |
}
|
4559 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
4560 |
}
|
4561 |
}
|
4562 |
|
4563 |
-
var wptbElementDatas = document.getElementsByClassName('wptb-element-datas');
|
4564 |
var body = document.getElementsByTagName('body');
|
4565 |
if (body.length > 0) {
|
4566 |
body = body[0];
|
4567 |
}
|
4568 |
-
|
4569 |
-
|
|
|
|
|
4570 |
|
4571 |
if (wptbElementDatas.length > 0) {
|
4572 |
wptbElementDatas = wptbElementDatas[0];
|
4573 |
} else {
|
4574 |
-
wptbElementDatas = document.createElement('
|
4575 |
wptbElementDatas.classList.add('wptb-element-datas');
|
4576 |
body.appendChild(wptbElementDatas);
|
4577 |
}
|
|
|
|
|
4578 |
} else {
|
4579 |
if (wptbElementDatas.length > 0) {
|
4580 |
wptbElementDatas = wptbElementDatas[0];
|
@@ -4582,7 +4677,11 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
4582 |
}
|
4583 |
}
|
4584 |
|
4585 |
-
|
|
|
|
|
|
|
|
|
4586 |
WPTB_Helper.elementOptionsPanelClear();
|
4587 |
WPTB_LeftPanel();
|
4588 |
|
@@ -4593,6 +4692,32 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
4593 |
}
|
4594 |
}
|
4595 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4596 |
};
|
4597 |
var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
|
4598 |
|
@@ -4654,10 +4779,14 @@ var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
|
|
4654 |
td.insertBefore(element, innerElementNext);
|
4655 |
}
|
4656 |
}
|
|
|
4657 |
var thisRow = td.parentNode;
|
4658 |
-
if (
|
4659 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
4660 |
-
|
|
|
|
|
|
|
4661 |
}
|
4662 |
|
4663 |
// start item javascript if item is new
|
47 |
btnDelete.onclick = function (event) {
|
48 |
var act = event.target.parentNode.activeElem,
|
49 |
el = act.parentNode;
|
50 |
+
var infArr = act.className.match(/wptb-element-(.+)-(\d+)/i);
|
51 |
+
if (act && infArr && Array.isArray(infArr)) {
|
52 |
WPTB_Helper.elementControlsStateDelete(act);
|
53 |
+
WPTB_Helper.externalCssStylesDelete(infArr[0]);
|
54 |
}
|
55 |
|
56 |
if (act) {
|
59 |
|
60 |
if (act && (typeof act === 'undefined' ? 'undefined' : _typeof(act)) === 'object' && act.hasOwnProperty('kind') && act.kind == 'text') {
|
61 |
var thisRow = el.parentNode;
|
62 |
+
|
63 |
+
if (WPTB_Helper.rowIsTop(thisRow)) {
|
64 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
65 |
+
|
66 |
+
if (table.classList.contains('wptb-table-preview-head')) {
|
67 |
+
WPTB_Helper.dataTitleColumnSet(table);
|
68 |
+
}
|
69 |
}
|
70 |
}
|
71 |
|
81 |
infArr = void 0,
|
82 |
type = void 0;
|
83 |
var activeElement = event.target.parentNode.activeElem;
|
84 |
+
var activeElemParent = activeElement.parentNode;
|
85 |
infArr = activeElement.className.match(/wptb-element-(.+)-(\d+)/i);
|
86 |
if (infArr && Array.isArray(infArr)) {
|
87 |
type = infArr[1];
|
91 |
data.tinyMceClear = true;
|
92 |
copy = new WPTB_ElementObject(data);
|
93 |
WPTB_Helper.elementControlsStateCopy(activeElement, copy.getDOMElement());
|
94 |
+
WPTB_Helper.externalCssStylesCopy(activeElement, copy.getDOMElement());
|
95 |
//WPTB_Helper.elementStartScript( copy.getDOMElement() );
|
96 |
|
97 |
+
activeElemParent.insertBefore(copy.getDOMElement(), activeElement.nextSibling);
|
98 |
} else {
|
99 |
copy = {};
|
100 |
var elementCopy = activeElement.cloneNode(true);
|
106 |
|
107 |
applyGenericItemSettings(copy);
|
108 |
|
109 |
+
activeElemParent.insertBefore(copy.getDOMElement(), activeElement.nextSibling);
|
110 |
|
111 |
WPTB_Helper.wptbDocumentEventGenerate('wptb-inner-element:copy', activeElement, copy.getDOMElement());
|
112 |
}
|
156 |
var act = event.target.parentNode.activeElem;
|
157 |
if (act.kind == 'text') {
|
158 |
var thisRow = act.parentNode.parentNode;
|
159 |
+
|
160 |
+
if (WPTB_Helper.rowIsTop(thisRow)) {
|
161 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
162 |
+
|
163 |
+
if (table.classList.contains('wptb-table-preview-head')) {
|
164 |
+
WPTB_Helper.dataTitleColumnSet(table);
|
165 |
+
}
|
166 |
}
|
167 |
}
|
168 |
} else {
|
331 |
}
|
332 |
|
333 |
WPTB_Table();
|
334 |
+
var element = document.querySelector('.wptb-preview-table');
|
335 |
+
if (element) {
|
336 |
+
var infArr = element.className.match(/wptb-element-((.+-)\d+)/i);
|
337 |
+
if (!infArr) {
|
338 |
+
element.classList.add('wptb-element-main-table_setting-' + table_id);
|
339 |
+
}
|
340 |
+
}
|
341 |
+
|
342 |
WPTB_LeftPanel();
|
343 |
WPTB_Settings();
|
344 |
|
345 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
346 |
wptbTableStateSaveManager.tableStateSet();
|
347 |
+
|
348 |
+
WPTB_Helper.elementOptionsSet('table_setting', element);
|
349 |
} else {
|
350 |
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
|
351 |
}
|
418 |
}
|
419 |
|
420 |
DOMElement.classList.add('wptb-droppable', 'wptb-cell');
|
421 |
+
console.log('wptb_cell_test');
|
422 |
}
|
423 |
|
424 |
DOMElement.draggable = false;
|
426 |
DOMElement.onclick = callback;
|
427 |
}
|
428 |
|
429 |
+
// Cell double click handler
|
430 |
+
DOMElement.ondblclick = function (event) {
|
431 |
+
event.stopPropagation();
|
432 |
+
if (!WPTB_Helper.findAncestor(DOMElement, 'wptb-preview-table-manage-cells') && event.target == event.currentTarget) {
|
433 |
+
|
434 |
+
WPTB_Helper.wptbDocumentEventGenerate('table:cell:dblclick', event.target);
|
435 |
+
|
436 |
+
var element = WPTB_Helper.newElementProxy('text');
|
437 |
+
element = element.getDOMElement();
|
438 |
+
|
439 |
+
DOMElement.appendChild(element);
|
440 |
+
|
441 |
+
WPTB_innerElementSet(element);
|
442 |
+
}
|
443 |
+
};
|
444 |
+
|
445 |
WPTB_innerElementSet(DOMElement);
|
446 |
|
447 |
var wptbPhElement = DOMElement.getElementsByClassName('wptb-ph-element');
|
507 |
};
|
508 |
|
509 |
DOMElement.getCellDimensions = function () {
|
510 |
+
|
511 |
var tdStyleObj = window.getComputedStyle(this, null);
|
512 |
|
513 |
var tdPaddingLeft = tdStyleObj.getPropertyValue('padding-left');
|
522 |
var tdBorderTopWidth = tdStyleObj.getPropertyValue('border-top-width');
|
523 |
var tdBorderBottomWidth = tdStyleObj.getPropertyValue('border-bottom-width');
|
524 |
|
525 |
+
var width = parseInt(this.offsetWidth, 10) - parseInt(tdPaddingLeft, 10) - parseInt(tdPaddingRight, 10) - parseInt(tdBorderLeftWidth, 10) / 2 - parseInt(tdBorderRightWidth, 10) / 2;
|
526 |
+
|
527 |
+
var height = parseInt(this.offsetHeight, 10) - parseInt(tdPaddingTop, 10) - parseInt(tdPaddingBottom, 10) - parseInt(tdBorderTopWidth, 10) / 2 - parseInt(tdBorderBottomWidth, 10) / 2;
|
528 |
+
|
529 |
+
var table = WPTB_Helper.findAncestor(this, 'wptb-preview-table');
|
530 |
+
if (table) {
|
531 |
+
var tableFullStyleObj = window.getComputedStyle(table, null);
|
532 |
+
var tableBorderLeft = tableFullStyleObj.getPropertyValue('border-left-width');
|
533 |
+
var tableBorderRight = tableFullStyleObj.getPropertyValue('border-right-width');
|
534 |
+
var tableBorderTop = tableFullStyleObj.getPropertyValue('border-top-width');
|
535 |
+
var tableBorderBottom = tableFullStyleObj.getPropertyValue('border-bottom-width');
|
536 |
+
|
537 |
+
var tr = this.parentNode;
|
538 |
+
if (tr && tr.nodeName.toLowerCase() === 'tr') {
|
539 |
+
if (tr.firstChild && tr.firstChild.dataset.xIndex === this.dataset.xIndex) {
|
540 |
+
if (parseInt(tableBorderLeft, 10) > parseInt(tdBorderLeftWidth, 10)) {
|
541 |
+
width += -(parseInt(tableBorderLeft, 10) - parseInt(tdBorderLeftWidth, 10)) / 2;
|
542 |
+
}
|
543 |
+
}
|
544 |
+
|
545 |
+
if (tr.lastChild && tr.lastChild.dataset.xIndex === this.dataset.xIndex) {
|
546 |
+
if (parseInt(tableBorderRight, 10) > parseInt(tdBorderRightWidth, 10)) {
|
547 |
+
width += -(parseInt(tableBorderRight, 10) - parseInt(tdBorderRightWidth, 10)) / 2;
|
548 |
+
}
|
549 |
+
}
|
550 |
+
|
551 |
+
var body = tr.parentNode;
|
552 |
+
if (body && body.nodeName.toLowerCase() === 'body') {
|
553 |
+
if (body.firstChild && body.firstChild.firstChild.dataset.yIndex === this.dataset.yIndex) {
|
554 |
+
if (parseInt(tableBorderTop, 10) > parseInt(tdBorderTopWidth, 10)) {
|
555 |
+
height += (parseInt(tableBorderTop, 10) - parseInt(tdBorderTopWidth, 10)) / 2;
|
556 |
+
}
|
557 |
+
}
|
558 |
|
559 |
+
if (body.lastChild && body.lastChild.firstChild.dataset.yIndex === this.dataset.yIndex) {
|
560 |
+
if (parseInt(tableBorderBottom, 10) > parseInt(tdBorderBottomWidth, 10)) {
|
561 |
+
height += (parseInt(tableBorderBottom, 10) - parseInt(tdBorderBottomWidth, 10)) / 2;
|
562 |
+
}
|
563 |
+
}
|
564 |
+
}
|
565 |
+
}
|
566 |
+
}
|
567 |
|
568 |
return {
|
569 |
+
width: parseInt(width),
|
570 |
+
height: parseInt(height)
|
571 |
};
|
572 |
};
|
573 |
|
646 |
}
|
647 |
|
648 |
var thisRow = td.parentNode;
|
649 |
+
if (WPTB_Helper.rowIsTop(thisRow)) {
|
650 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
651 |
+
|
652 |
+
if (table.classList.contains('wptb-table-preview-head')) {
|
653 |
+
WPTB_Helper.dataTitleColumnSet(table);
|
654 |
+
}
|
655 |
}
|
656 |
|
657 |
// start item javascript if item is new
|
690 |
} else if (thisElem.localName == 'div' && thisElem.classList.contains('wptb-ph-element')) {
|
691 |
thisRow = thisElem.parentNode.parentNode;
|
692 |
}
|
693 |
+
|
694 |
+
if (WPTB_Helper.rowIsTop(thisRow)) {
|
695 |
+
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
696 |
+
|
697 |
+
if (table.classList.contains('wptb-table-preview-head')) {
|
698 |
+
var indics = e.dataTransfer.types;
|
699 |
+
var notDragEnter = false;
|
700 |
+
for (var i = 0; i < indics.length; i++) {
|
701 |
+
var infArr = indics[i].match(/wptbelindic-([a-z]+)/i);
|
702 |
+
if (infArr && infArr[1] != 'text') {
|
703 |
+
notDragEnter = true;
|
704 |
+
break;
|
705 |
+
}
|
706 |
+
}
|
707 |
+
if (notDragEnter) {
|
708 |
+
return;
|
709 |
}
|
|
|
|
|
|
|
710 |
}
|
711 |
}
|
712 |
|
848 |
};
|
849 |
var WPTB_ElementOptions = function WPTB_ElementOptions(element, index, kindIndexProt) {
|
850 |
|
851 |
+
var node = element.getDOMElement();
|
|
|
852 |
|
853 |
node.onclick = function () {
|
854 |
+
WPTB_Helper.elementOptionsSet(element.kind, this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
855 |
};
|
856 |
};
|
857 |
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; };
|
858 |
|
859 |
+
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); } }
|
860 |
+
|
861 |
var WPTB_Helper = {
|
862 |
hexToRgb: function hexToRgb(hex) {
|
863 |
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
868 |
|
869 |
return rgb && rgb.length === 4 ? "#" + ("0" + parseInt(rgb[1], 10).toString(16)).slice(-2) + ("0" + parseInt(rgb[2], 10).toString(16)).slice(-2) + ("0" + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';
|
870 |
},
|
871 |
+
isHex: function isHex(hex) {
|
872 |
+
var regex = new RegExp('^#(?:[A-Fa-f0-9]{3}){1,2}$');
|
873 |
+
return regex.test(hex);
|
874 |
+
},
|
875 |
getElementIcon: function getElementIcon(icon_directory) {
|
876 |
var hostName = location.protocol + '//' + location.hostname;
|
877 |
var img = document.createElement('img');
|
925 |
var contentsForHeader = {};
|
926 |
for (var i = 0; i < rowHeadChildren.length; i++) {
|
927 |
var tdElements = rowHeadChildren[i].children;
|
928 |
+
|
929 |
for (var j = 0; j < tdElements.length; j++) {
|
930 |
var element = tdElements[j];
|
931 |
if (element.classList.contains('wptb-ph-element')) {
|
967 |
while ((el = el.parentElement) && !el.classList.contains(cls)) {}
|
968 |
return el;
|
969 |
},
|
970 |
+
rowIsTop: function rowIsTop(row) {
|
971 |
+
var parent = row.parentNode;
|
972 |
+
if (parent.children[0] == row) {
|
973 |
+
return true;
|
974 |
+
} else {
|
975 |
+
return false;
|
976 |
+
}
|
977 |
+
},
|
978 |
getSelectionText: function getSelectionText() {
|
979 |
var txt = '';
|
980 |
if (txt = window.getSelection) {
|
984 |
}
|
985 |
return txt;
|
986 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
987 |
elementOptionsPanelClear: function elementOptionsPanelClear() {
|
988 |
var elementOptionsGroup = document.getElementById('element-options-group');
|
989 |
if (elementOptionsGroup) {
|
1281 |
// function which set handler for event of changes of control
|
1282 |
controlsInclude: function controlsInclude(element, functionHandler) {
|
1283 |
if (element && (typeof element === 'undefined' ? 'undefined' : _typeof(element)) === 'object' && typeof functionHandler === 'function') {
|
1284 |
+
element.addEventListener('element:control:active', function () {
|
1285 |
var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i),
|
1286 |
elementKind = void 0;
|
1287 |
|
1300 |
if (elementsSettings) {
|
1301 |
elementsSettings = JSON.parse(elementsSettings);
|
1302 |
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object') {
|
1303 |
+
if ('tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings) {
|
1304 |
+
var elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];
|
1305 |
if (elementSettings && (typeof elementSettings === 'undefined' ? 'undefined' : _typeof(elementSettings)) === 'object') {
|
1306 |
Object.keys(elementSettings).forEach(function (key) {
|
1307 |
var regularText = new RegExp('data-wptb-el-' + elementKind + '-(\\d+)-(.+)', "i");
|
1388 |
}
|
1389 |
},
|
1390 |
//
|
1391 |
+
appearDependOnControl: function appearDependOnControl(dependOn, targetControlElementClass) {
|
1392 |
if (Array.isArray(dependOn)) {
|
1393 |
var dependOnControlName = dependOn[0];
|
1394 |
var infArr = targetControlElementClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
|
1417 |
var elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
1418 |
if (elementsSettings) {
|
1419 |
elementsSettings = JSON.parse(elementsSettings);
|
1420 |
+
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object' && 'tmpl-wptb-el-datas-' + dependOnControlElementKind in elementsSettings) {
|
1421 |
+
var elementSettings = elementsSettings['tmpl-wptb-el-datas-' + dependOnControlElementKind];
|
1422 |
if (elementSettings && (typeof elementSettings === 'undefined' ? 'undefined' : _typeof(elementSettings)) === 'object' && 'data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName in elementSettings) {
|
1423 |
var elementSettingValue = elementSettings['data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName];
|
1424 |
|
1455 |
var infArr = targetControlClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
|
1456 |
|
1457 |
if (infArr && Array.isArray(infArr)) {
|
1458 |
+
var selectorElement = void 0;
|
1459 |
+
selectorElement = document.querySelector('.wptb-element-' + infArr[1]);
|
1460 |
+
|
1461 |
if (selectorElement) {
|
1462 |
var elementsSettingsTemplatesJs = void 0;
|
1463 |
var elementSettings = {};
|
1468 |
elementSettings['data-' + targetControlClass] = targetControlValue;
|
1469 |
|
1470 |
elementsSettings = {};
|
1471 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = elementSettings;
|
1472 |
elementsSettings = JSON.stringify(elementsSettings);
|
1473 |
|
1474 |
if (elementsSettingsTemplatesJs.length == 0) {
|
1493 |
|
1494 |
if (controlChangeIndic) {
|
1495 |
var _targetControlValue = WPTB_Helper.targetControlValueGet(targetControls);
|
1496 |
+
if (!('tmpl-wptb-el-datas-' + infArr[1] in elementsSettings) || _typeof(elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]) !== 'object') {
|
1497 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};
|
1498 |
}
|
1499 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = _targetControlValue;
|
1500 |
elementsSettingsTemplatesJs.innerHTML = JSON.stringify(elementsSettings);
|
1501 |
+
} else if (!('tmpl-wptb-el-datas-' + infArr[1] in elementsSettings && _typeof(elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]) === 'object' && 'data-' + targetControlClass in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]])) {
|
1502 |
var _targetControlValue2 = WPTB_Helper.targetControlValueGet(targetControls);
|
1503 |
+
if (!('tmpl-wptb-el-datas-' + infArr[1] in elementsSettings) || _typeof(elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]) !== 'object') {
|
1504 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};
|
1505 |
}
|
1506 |
+
elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = _targetControlValue2;
|
1507 |
elementsSettingsTemplatesJs.innerHTML = JSON.stringify(elementsSettings);
|
1508 |
+
} else if ('tmpl-wptb-el-datas-' + infArr[1] in elementsSettings && _typeof(elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]) === 'object' && 'data-' + targetControlClass in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]) {
|
1509 |
for (var i = 0; i < targetControls.length; i++) {
|
1510 |
if (targetControls[i].type == 'checkbox') {
|
1511 |
var _targetControlValue3 = void 0;
|
1512 |
if (targetControls[i].name) {
|
1513 |
+
_targetControlValue3 = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass][targetControls[i].name];
|
1514 |
} else {
|
1515 |
+
_targetControlValue3 = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];
|
1516 |
}
|
1517 |
|
1518 |
if (_targetControlValue3 == 'checked') {
|
1521 |
targetControls[i].checked = false;
|
1522 |
}
|
1523 |
} else {
|
1524 |
+
targetControls[i].value = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];
|
1525 |
}
|
1526 |
}
|
1527 |
}
|
1572 |
elementsSettings = JSON.parse(elementsSettings);
|
1573 |
|
1574 |
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object') {
|
1575 |
+
var elementSettingsProt = elementsSettings['tmpl-wptb-el-datas-' + elemProtKind];
|
1576 |
if (elementSettingsProt && (typeof elementSettingsProt === 'undefined' ? 'undefined' : _typeof(elementSettingsProt)) === 'object') {
|
1577 |
var elementSettingsCopy = {};
|
1578 |
|
1583 |
});
|
1584 |
|
1585 |
if (Object.keys(elementSettingsCopy).length > 0) {
|
1586 |
+
elementsSettings['tmpl-wptb-el-datas-' + elemCopyKind] = elementSettingsCopy;
|
1587 |
|
1588 |
elementsSettings = JSON.stringify(elementsSettings);
|
1589 |
elementsSettingsTemplateJs.innerHTML = elementsSettings;
|
1596 |
}
|
1597 |
},
|
1598 |
//
|
1599 |
+
elementControlsStateDelete: function elementControlsStateDelete(element, nameControl) {
|
1600 |
var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
|
1601 |
var body = document.getElementsByTagName('body')[0];
|
1602 |
var wptbElementDatas = body.getElementsByClassName('wptb-element-datas');
|
1605 |
var elementsSettings = wptbElementDatas.innerHTML;
|
1606 |
if (elementsSettings) {
|
1607 |
elementsSettings = JSON.parse(elementsSettings);
|
1608 |
+
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object' && 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings) {
|
1609 |
+
if (!nameControl) {
|
1610 |
+
delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];
|
1611 |
+
} else {
|
1612 |
+
if (elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] && _typeof(elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]]) === 'object' && 'data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl in elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]]) {
|
1613 |
+
delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]]['data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl];
|
1614 |
+
}
|
1615 |
+
}
|
1616 |
|
1617 |
if (Object.keys(elementsSettings).length == 0) {
|
1618 |
body.removeChild(wptbElementDatas);
|
1623 |
}
|
1624 |
}
|
1625 |
}
|
1626 |
+
},
|
1627 |
+
//
|
1628 |
+
elementOptionsSet: function elementOptionsSet(kind, element) {
|
1629 |
+
// get controls config for this element
|
1630 |
+
var wptbContrlStacksConfigId = 'wptb-' + kind + '-control-stack';
|
1631 |
+
var tmplControlsConfig = wp.template(wptbContrlStacksConfigId);
|
1632 |
+
var data = void 0;
|
1633 |
+
var elementContainerClass = void 0;
|
1634 |
+
var elementOptionClassIndic = void 0;
|
1635 |
+
var elementOptionsGroup = void 0;
|
1636 |
+
var elementOptionsGroupId = void 0;
|
1637 |
+
var wptbelementOptionClass = void 0;
|
|
|
|
|
|
|
|
|
|
|
1638 |
|
1639 |
+
// create a container for inserting controls of this item
|
1640 |
+
var wptbelementOptionsContainer = document.createElement('div');
|
|
|
|
|
|
|
1641 |
|
1642 |
+
var infArr = element.className.match(/wptb-element-((.+-)\d+)/i);
|
1643 |
+
if (!infArr && element.classList.contains('wptb-preview-table')) {
|
1644 |
+
var table_id = WPTB_Helper.detectMode();
|
1645 |
+
element.classList.add('wptb-element-main-table_setting-' + table_id);
|
1646 |
+
infArr = element.className.match(/wptb-element-((.+-)\d+)/i);
|
1647 |
+
}
|
1648 |
+
data = {
|
1649 |
+
container: '.' + infArr[0]
|
1650 |
};
|
1651 |
|
1652 |
+
elementContainerClass = infArr[0];
|
1653 |
+
elementOptionClassIndic = infArr[1];
|
|
|
|
|
|
|
1654 |
|
1655 |
+
if (!element.classList.contains('wptb-preview-table')) {
|
1656 |
+
var children = document.getElementById('element-options-group').childNodes;
|
1657 |
+
for (var _i5 = 0; _i5 < children.length; _i5++) {
|
1658 |
+
if (children[_i5].style) children[_i5].style.display = 'none';
|
1659 |
+
}
|
1660 |
|
1661 |
+
wptbelementOptionsContainer.classList.add('wptb-element-options', 'wptb-options-' + infArr[1]);
|
1662 |
|
1663 |
+
// hide wptb-elements-container and wptb-settings-section
|
1664 |
+
document.getElementsByClassName('wptb-elements-container')[0].style.display = 'none';
|
1665 |
+
document.getElementsByClassName('wptb-settings-section')[0].style.display = 'none';
|
|
|
|
|
1666 |
|
1667 |
+
// show element-options-group
|
1668 |
+
document.getElementById('element-options-group').style.display = 'block';
|
1669 |
|
1670 |
+
elementOptionsGroupId = 'element-options-group';
|
1671 |
+
wptbelementOptionClass = 'wptb-element-option';
|
1672 |
+
} else {
|
1673 |
+
elementOptionsGroupId = 'table-settings-group';
|
1674 |
+
wptbelementOptionClass = 'wptb-element-option';
|
|
|
|
|
|
|
|
|
|
|
|
|
1675 |
}
|
|
|
1676 |
|
1677 |
+
var jsonControlsConfigJson = tmplControlsConfig(data);
|
1678 |
+
var jsonControlsConfig = JSON.parse(jsonControlsConfigJson);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1679 |
|
1680 |
+
// clear elements from options group
|
1681 |
+
//document.getElementById( 'element-options-group' ).innerHTML = '';
|
1682 |
+
elementOptionsGroup = document.getElementById(elementOptionsGroupId);
|
1683 |
+
var elementOptionsGroupChildren = elementOptionsGroup.children;
|
1684 |
+
for (var _i6 = 0; _i6 < elementOptionsGroupChildren.length; _i6++) {
|
1685 |
+
elementOptionsGroup.removeChild(elementOptionsGroupChildren[_i6]);
|
1686 |
}
|
1687 |
|
1688 |
+
// insert created container into element-option-group tag
|
1689 |
+
document.getElementById(elementOptionsGroupId).appendChild(wptbelementOptionsContainer);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1690 |
|
1691 |
+
// show created container
|
1692 |
+
wptbelementOptionsContainer.style.display = 'block';
|
|
|
|
|
1693 |
|
1694 |
+
// array for save all scrips for each controls
|
1695 |
+
var controlScriptsArr = [];
|
|
|
|
|
|
|
1696 |
|
1697 |
+
// array for keep "appear depend on" parametrs
|
1698 |
+
var controlappearDependOnControl = [];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1699 |
|
1700 |
+
// create controls
|
1701 |
+
var i = 0;
|
1702 |
+
Object.keys(jsonControlsConfig).forEach(function (key) {
|
1703 |
+
var data = jsonControlsConfig[key];
|
1704 |
+
data.controlKey = key;
|
1705 |
|
1706 |
+
// get necessary wp js template
|
1707 |
+
var tmplControlTemplate = wp.template('wptb-' + data.type + '-control');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1708 |
|
1709 |
+
data.elemContainer = elementContainerClass;
|
1710 |
+
data.elementControlTargetUnicClass = 'wptb-el-' + elementOptionClassIndic + '-' + data.controlKey;
|
1711 |
+
var controlTemplate = tmplControlTemplate(data);
|
1712 |
|
1713 |
+
if ('appearDependOnControl' in data) {
|
1714 |
+
if (Array.isArray(data.appearDependOnControl)) {
|
1715 |
+
controlappearDependOnControl.push([data.appearDependOnControl, data.elementControlTargetUnicClass]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1716 |
}
|
1717 |
}
|
1718 |
|
1719 |
+
//console.log( controlTemplate );
|
|
|
|
|
|
|
1720 |
|
1721 |
+
var wptbElementOptionContainer = document.createElement('div');
|
1722 |
+
wptbElementOptionContainer.classList.add(wptbelementOptionClass, 'wptb-settings-items');
|
|
|
|
|
|
|
|
|
|
|
1723 |
|
1724 |
+
if (data.customClassForContainer) {
|
1725 |
+
wptbElementOptionContainer.classList.add(data.customClassForContainer);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1726 |
}
|
1727 |
|
1728 |
+
if (data.containerAdditionalStyles) {
|
1729 |
+
wptbElementOptionContainer.setAttribute('style', data.containerAdditionalStyles);
|
1730 |
}
|
|
|
|
|
1731 |
|
1732 |
+
wptbElementOptionContainer.innerHTML = controlTemplate;
|
1733 |
|
1734 |
+
wptbelementOptionsContainer.appendChild(wptbElementOptionContainer);
|
|
|
|
|
|
|
1735 |
|
1736 |
+
var helperJavascriptElem = wptbElementOptionContainer.getElementsByTagName('wptb-template-script');
|
1737 |
+
if (helperJavascriptElem.length > 0) {
|
1738 |
+
helperJavascriptElem = helperJavascriptElem[0];
|
1739 |
+
var helperJavascriptCode = helperJavascriptElem.innerText;
|
1740 |
+
wptbElementOptionContainer.removeChild(helperJavascriptElem);
|
1741 |
+
var script = document.createElement('script');
|
1742 |
+
script.setAttribute('type', 'text/javascript');
|
1743 |
+
script.innerHTML = helperJavascriptCode.replace(/\r|\n|\t/g, '').trim();
|
1744 |
+
controlScriptsArr.push(script);
|
1745 |
}
|
|
|
|
|
|
|
|
|
|
|
1746 |
|
1747 |
+
i++;
|
1748 |
+
});
|
|
|
1749 |
|
1750 |
+
// run the scripts of controls
|
1751 |
+
if (controlScriptsArr.length > 0) {
|
1752 |
+
for (var _i7 = 0; _i7 < controlScriptsArr.length; _i7++) {
|
1753 |
+
wptbelementOptionsContainer.appendChild(controlScriptsArr[_i7]);
|
1754 |
+
}
|
1755 |
}
|
|
|
1756 |
|
1757 |
+
// run appearDependOnControl function
|
1758 |
+
for (var _i8 = 0; _i8 < controlappearDependOnControl.length; _i8++) {
|
1759 |
+
WPTB_Helper.appearDependOnControl(controlappearDependOnControl[_i8][0], controlappearDependOnControl[_i8][1]);
|
|
|
|
|
1760 |
}
|
|
|
1761 |
|
1762 |
+
WPTB_Helper.wptbDocumentEventGenerate('element:control:active', element);
|
1763 |
+
},
|
1764 |
+
// function for create, update css for element
|
1765 |
+
managerExternalCssStyles: function managerExternalCssStyles(elementContainer, selector, cssName, cssValue) {
|
1766 |
+
var infArr = elementContainer.match(/wptb-element-main(.+)-(\d+)/i);
|
1767 |
+
if (!infArr || !Array.isArray(infArr)) {
|
1768 |
+
var table = document.getElementsByClassName('wptb-preview-table');
|
1769 |
+
|
1770 |
+
if (table.length > 0) {
|
1771 |
+
table = table[0];
|
1772 |
+
|
1773 |
+
var _infArr = table.className.match(/wptb-element-main(.+)-(\d+)/i);
|
1774 |
+
if (_infArr && Array.isArray(_infArr)) {
|
1775 |
+
selector = '.' + _infArr[0] + ' ' + selector;
|
1776 |
+
}
|
1777 |
+
}
|
1778 |
}
|
|
|
1779 |
|
1780 |
+
var head = document.head;
|
1781 |
+
if (head) {
|
1782 |
+
var cssForThisElement = head.querySelector('#styles-' + elementContainer);
|
1783 |
+
if (cssForThisElement) {
|
1784 |
+
var cssText = cssForThisElement.innerHTML;
|
1785 |
+
if (cssText) {
|
1786 |
+
var cssTextArrFirst = cssText.split('}');
|
1787 |
+
cssTextArrFirst.pop();
|
1788 |
+
var selectorExists = false;
|
1789 |
+
for (var i = 0; i < cssTextArrFirst.length; i++) {
|
1790 |
+
var cssTextArrSecond = cssTextArrFirst[i].split('{');
|
1791 |
+
if (cssTextArrSecond[0] === selector) {
|
1792 |
+
var cssTextArrThird = cssTextArrSecond[1].split(';');
|
1793 |
+
cssTextArrThird.pop();
|
1794 |
+
var cssNameExists = false;
|
1795 |
+
for (var j = 0; j < cssTextArrThird.length; j++) {
|
1796 |
+
var cssTextArrFourth = cssTextArrThird[j].split(':');
|
1797 |
+
if (cssTextArrFourth[0] === cssName) {
|
1798 |
+
if (cssValue) {
|
1799 |
+
cssTextArrThird[j] = cssName + ':' + cssValue;
|
1800 |
+
} else {
|
1801 |
+
cssTextArrThird.splice(j, 1);
|
1802 |
+
}
|
1803 |
+
|
1804 |
+
cssTextArrSecond[1] = cssTextArrThird.join(';') ? cssTextArrThird.join(';') + ';' : '';
|
1805 |
+
cssNameExists = true;
|
1806 |
+
break;
|
1807 |
+
}
|
1808 |
+
}
|
1809 |
+
if (!cssNameExists) {
|
1810 |
+
if (cssValue) {
|
1811 |
+
cssTextArrSecond[1] += cssName + ':' + cssValue + ';';
|
1812 |
+
}
|
1813 |
+
}
|
1814 |
+
if (cssTextArrSecond[1]) {
|
1815 |
+
cssTextArrFirst[i] = cssTextArrSecond[0] + '{' + cssTextArrSecond[1];
|
1816 |
+
} else {
|
1817 |
+
cssTextArrFirst.splice(i, 1);
|
1818 |
+
}
|
1819 |
+
if (cssTextArrFirst.join('}')) {
|
1820 |
+
cssForThisElement.innerHTML = cssTextArrFirst.join('}') + '}';
|
1821 |
+
} else {
|
1822 |
+
head.removeChild(cssForThisElement);
|
1823 |
+
}
|
1824 |
+
|
1825 |
+
selectorExists = true;
|
1826 |
+
break;
|
1827 |
+
}
|
1828 |
+
}
|
1829 |
+
|
1830 |
+
if (!selectorExists) {
|
1831 |
+
if (cssValue) {
|
1832 |
+
cssForThisElement.innerHTML = cssText + selector + '{' + cssName + ':' + cssValue + ';}';
|
1833 |
+
} else {
|
1834 |
+
cssForThisElement.innerHTML = cssText;
|
1835 |
+
}
|
1836 |
+
}
|
1837 |
+
} else {
|
1838 |
+
if (cssValue) {
|
1839 |
+
cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';
|
1840 |
+
} else {
|
1841 |
+
head.removeChild(cssForThisElement);
|
1842 |
+
}
|
1843 |
}
|
|
|
1844 |
} else {
|
1845 |
+
if (cssValue) {
|
1846 |
+
var _cssForThisElement = document.createElement('style');
|
1847 |
+
_cssForThisElement.setAttribute('id', 'styles-' + elementContainer);
|
1848 |
+
_cssForThisElement.classList.add('styles-wptb-elements');
|
1849 |
+
_cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';
|
1850 |
+
head.appendChild(_cssForThisElement);
|
1851 |
}
|
1852 |
}
|
1853 |
}
|
1854 |
+
},
|
1855 |
+
// function for deleting all external CSS for the element
|
1856 |
+
externalCssStylesDelete: function externalCssStylesDelete(elementContainerClass) {
|
1857 |
+
var head = document.head;
|
1858 |
+
if (head) {
|
1859 |
+
var cssForThisElement = head.querySelector('#styles-' + elementContainerClass);
|
1860 |
|
1861 |
+
if (cssForThisElement) {
|
1862 |
+
head.removeChild(cssForThisElement);
|
1863 |
+
}
|
1864 |
+
}
|
1865 |
+
},
|
1866 |
+
// function for copy all external CSS for the element
|
1867 |
+
externalCssStylesCopy: function externalCssStylesCopy(activeElement, copyElement) {
|
1868 |
+
if (activeElement) {
|
1869 |
+
var infArr = activeElement.className.match(/wptb-element-(.+)-(\d+)/i);
|
1870 |
+
if (infArr && Array.isArray(infArr)) {
|
1871 |
+
var activeElemClass = infArr[0];
|
1872 |
|
1873 |
+
var head = document.head;
|
1874 |
+
if (head) {
|
1875 |
+
var cssForActiveElement = head.querySelector('#styles-' + activeElemClass);
|
1876 |
|
1877 |
+
if (cssForActiveElement) {
|
1878 |
+
var cssForNewElement = cssForActiveElement.cloneNode(true);
|
1879 |
|
1880 |
+
cssForNewElement.removeAttribute('id', 'styles-' + activeElemClass);
|
|
|
|
|
1881 |
|
1882 |
+
var infArrCopyEl = copyElement.className.match(/wptb-element-(.+)-(\d+)/i);
|
1883 |
+
if (infArrCopyEl && Array.isArray(infArrCopyEl)) {
|
1884 |
+
cssForNewElement.setAttribute('id', 'styles-' + infArrCopyEl[0]);
|
1885 |
+
var cssForActiveElementInnerHTML = cssForActiveElement.innerHTML;
|
1886 |
+
var cssForNewElementInnerHTML = WPTB_Helper.replaceAll(cssForActiveElementInnerHTML, activeElemClass, infArrCopyEl[0]);
|
1887 |
+
cssForNewElement.innerHTML = cssForNewElementInnerHTML;
|
1888 |
+
head.appendChild(cssForNewElement);
|
1889 |
+
}
|
1890 |
}
|
1891 |
}
|
1892 |
}
|
1893 |
}
|
1894 |
+
},
|
1895 |
+
// function for convertation elements stiles in json
|
1896 |
+
elementsStylesConvertToObject: function elementsStylesConvertToObject() {
|
1897 |
+
var head = document.head;
|
1898 |
+
var stylesElements = head.querySelectorAll('.styles-wptb-elements');
|
1899 |
+
var stylesObj = {};
|
1900 |
+
for (var i = 0; i < stylesElements.length; i++) {
|
1901 |
+
var styleElemId = stylesElements[i].getAttribute('id');
|
1902 |
+
if (styleElemId && stylesElements[i].innerHTML) {
|
1903 |
+
stylesObj[styleElemId] = stylesElements[i].innerHTML;
|
1904 |
+
}
|
1905 |
+
}
|
1906 |
|
1907 |
+
if (Object.keys(stylesObj).length != 0) {
|
1908 |
+
return JSON.stringify(stylesObj);
|
1909 |
+
}
|
1910 |
+
return '';
|
1911 |
+
},
|
1912 |
+
// function for set scc styles tags to head
|
1913 |
+
elementsStylesSetFromObject: function elementsStylesSetFromObject(jsonObject) {
|
1914 |
+
var head = document.head;
|
1915 |
+
if (head) {
|
1916 |
+
var stylesElements = head.querySelectorAll('.styles-wptb-elements');
|
1917 |
+
if (stylesElements.length > 0) {
|
1918 |
+
stylesElements = [].concat(_toConsumableArray(stylesElements));
|
1919 |
+
for (var i = 0; i < stylesElements.length; i++) {
|
1920 |
+
head.removeChild(stylesElements[i]);
|
1921 |
+
}
|
1922 |
+
}
|
1923 |
+
if (jsonObject) {
|
1924 |
+
var stylesObj = JSON.parse(jsonObject);
|
1925 |
+
if (Object.keys(stylesObj).length != 0) {
|
1926 |
+
Object.keys(stylesObj).forEach(function (key) {
|
1927 |
+
var cssText = stylesObj[key];
|
1928 |
+
var styleCss = document.createElement('style');
|
1929 |
+
styleCss.setAttribute('id', key);
|
1930 |
+
styleCss.classList.add('styles-wptb-elements');
|
1931 |
+
styleCss.innerHTML = cssText;
|
1932 |
+
head.appendChild(styleCss);
|
1933 |
+
});
|
1934 |
+
}
|
1935 |
+
}
|
1936 |
+
}
|
1937 |
+
},
|
1938 |
+
// function for table saving
|
1939 |
+
saveTable: function saveTable(event, startSaving, previewSaving) {
|
1940 |
+
if (!previewSaving && !startSaving) {
|
1941 |
+
if (!event.target.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 || window.wptbTableStateNumberShow == event.target.dataset.wptbTableStateNumberSave) {
|
1942 |
+
//return;
|
1943 |
+
}
|
1944 |
+
}
|
1945 |
|
1946 |
+
if (!previewSaving) {
|
1947 |
+
var bar = document.querySelector('.wptb-edit-bar');
|
1948 |
+
if (bar && bar.classList.contains('visible')) {
|
1949 |
+
var table = document.getElementsByClassName('wptb-preview-table')[0];
|
1950 |
+
table.toggleTableEditMode();
|
1951 |
+
}
|
1952 |
+
}
|
1953 |
|
1954 |
+
var http = new XMLHttpRequest(),
|
1955 |
+
url = (wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl) + "?action=save_table",
|
1956 |
+
t = document.getElementById('wptb-setup-name').value.trim(),
|
1957 |
+
messagingArea = void 0,
|
1958 |
+
code = void 0,
|
1959 |
+
datas = void 0;
|
1960 |
|
1961 |
+
code = document.getElementsByClassName('wptb-preview-table');
|
|
|
1962 |
|
1963 |
+
var postId = void 0;
|
1964 |
+
if ((rs = WPTB_Helper.detectMode()) || (rs = document.wptbId)) {
|
1965 |
+
postId = rs;
|
1966 |
+
}
|
1967 |
+
var paramIdsNecessaryChange = false;
|
1968 |
+
if (code.length > 0) {
|
1969 |
+
code = code[0];
|
1970 |
+
var codeClone = code.cloneNode(true);
|
1971 |
+
if (postId) {
|
1972 |
+
if (codeClone.classList.contains('wptb-element-main-table_setting-startedid-0')) {
|
1973 |
+
codeClone.classList.remove('wptb-element-main-table_setting-startedid-0');
|
1974 |
+
codeClone.classList.add('wptb-element-main-table_setting-' + postId);
|
1975 |
+
paramIdsNecessaryChange = true;
|
1976 |
+
}
|
1977 |
+
}
|
1978 |
+
codeClone.columns = code.columns;
|
1979 |
+
code = WPTB_Stringifier(codeClone);
|
1980 |
+
code = code.outerHTML;
|
1981 |
+
} else {
|
1982 |
+
code = '';
|
1983 |
+
}
|
1984 |
|
1985 |
+
if (!previewSaving) {
|
1986 |
+
datas = '';
|
1987 |
+
var datas_containers = document.getElementsByClassName('wptb-element-datas');
|
1988 |
|
1989 |
+
if (datas_containers.length > 0) {
|
1990 |
+
if (datas_containers[0].innerHTML) {
|
1991 |
+
datas = datas_containers[0].innerHTML;
|
1992 |
|
1993 |
+
if (paramIdsNecessaryChange) {
|
1994 |
+
datas = WPTB_Helper.replaceAll(datas, 'tmpl-wptb-el-datas-main-table_setting-startedid-0', 'tmpl-wptb-el-datas-main-table_setting-' + postId);
|
|
|
|
|
|
|
1995 |
|
1996 |
+
datas = WPTB_Helper.replaceAll(datas, 'data-wptb-el-main-table_setting-startedid-0', 'data-wptb-el-main-table_setting-' + postId);
|
1997 |
+
}
|
1998 |
+
}
|
1999 |
+
}
|
2000 |
+
}
|
2001 |
|
2002 |
+
var styleObjJson = WPTB_Helper.elementsStylesConvertToObject();
|
2003 |
+
if (paramIdsNecessaryChange) {
|
2004 |
+
styleObjJson = WPTB_Helper.replaceAll(styleObjJson, '.wptb-element-main-table_setting-startedid-0', '.wptb-element-main-table_setting-' + postId);
|
2005 |
+
}
|
2006 |
|
2007 |
+
if (t === '' && code === '') {
|
2008 |
+
var messagingAreaText = '';
|
2009 |
+
if (t === '') messagingAreaText += 'You must assign a name to the table before saving it.</br>';
|
2010 |
+
if (code === '') messagingAreaText += 'Table wasn\'t created';
|
2011 |
+
messagingArea = document.getElementById('wptb-messaging-area');
|
2012 |
+
messagingArea.innerHTML = '<div class="wptb-error wptb-message">Error: ' + messagingAreaText + '</div>';
|
2013 |
+
messagingArea.classList.add('wptb-warning');
|
2014 |
+
setTimeout(function () {
|
2015 |
+
messagingArea.removeChild(messagingArea.firstChild);
|
2016 |
+
}, 4000);
|
2017 |
+
return;
|
2018 |
+
}
|
2019 |
|
2020 |
+
var params = {
|
2021 |
+
title: t,
|
2022 |
+
content: code,
|
2023 |
+
elements_datas: datas,
|
2024 |
+
elements_styles: styleObjJson,
|
2025 |
+
security_code: wptb_admin_object.security_code
|
2026 |
+
};
|
2027 |
|
2028 |
+
if (previewSaving) {
|
2029 |
+
params.preview_saving = previewSaving;
|
|
|
|
|
|
|
|
|
2030 |
}
|
|
|
2031 |
|
2032 |
+
if (postId) {
|
2033 |
+
params.id = postId;
|
2034 |
+
}
|
2035 |
+
params = JSON.stringify(params);
|
2036 |
|
2037 |
+
http.open('POST', url, true);
|
2038 |
+
http.setRequestHeader('Content-type', 'application/json; charset=utf-8');
|
|
|
|
|
|
|
|
|
|
|
2039 |
|
2040 |
+
http.onreadystatechange = function (action) {
|
2041 |
+
if (this.readyState == 4 && this.status == 200) {
|
2042 |
+
var data = JSON.parse(http.responseText);
|
2043 |
+
messagingArea = document.getElementById('wptb-messaging-area');
|
|
|
2044 |
|
2045 |
+
if (data[0] == 'saved') {
|
2046 |
+
console.log(window.wptbTableStateSaving);
|
2047 |
+
window.history.pushState(null, null, document.location.href.replace('#', '') + '&table=' + data[1]);
|
|
|
2048 |
|
2049 |
+
WPTB_Helper.saveTable(event, true);
|
2050 |
+
return;
|
2051 |
+
} else if (data[0] == 'edited' && startSaving) {
|
2052 |
+
document.wptbId = data[1];
|
2053 |
+
messagingArea.innerHTML = '<div class="wptb-success wptb-message">Table "' + t + '" was successfully saved.</div>';
|
2054 |
+
document.getElementsByClassName('wptb-embed-btn')[0].classList.remove('wptb-button-disable');
|
2055 |
+
document.getElementById('wptb-embed-shortcode').value = '[wptb id=' + data[1] + ']';
|
2056 |
+
var wptbPreviewTable = document.querySelector('.wptb-preview-table');
|
2057 |
+
var wptbPreviewBtn = document.getElementsByClassName('wptb-preview-btn');
|
2058 |
+
if (wptbPreviewBtn.length > 0) {
|
2059 |
+
wptbPreviewBtn = wptbPreviewBtn[0];
|
2060 |
+
wptbPreviewBtn.classList.remove('wptb-button-disable');
|
2061 |
+
var wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;
|
2062 |
+
wptbPreviewBtnHref = wptbPreviewBtnHref.replace('empty', data[1]);
|
2063 |
+
wptbPreviewBtn.setAttribute('href', wptbPreviewBtnHref);
|
2064 |
+
}
|
2065 |
|
2066 |
+
event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;
|
2067 |
+
var wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');
|
2068 |
+
if (wptbSaveBtn.length > 0) {
|
2069 |
+
wptbSaveBtn = wptbSaveBtn[0];
|
2070 |
+
wptbSaveBtn.classList.add('wptb-save-disabled');
|
2071 |
+
}
|
2072 |
+
} else if (data[0] == 'edited') {
|
2073 |
+
messagingArea.innerHTML = '<div class="wptb-success wptb-message">Table "' + t + '" was successfully updated.</div>';
|
2074 |
+
event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;
|
|
|
|
|
2075 |
|
2076 |
+
var _wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');
|
2077 |
+
if (_wptbSaveBtn.length > 0) {
|
2078 |
+
_wptbSaveBtn = _wptbSaveBtn[0];
|
2079 |
+
_wptbSaveBtn.classList.add('wptb-save-disabled');
|
2080 |
+
}
|
2081 |
+
} else if (data[0] == 'preview_edited') {
|
2082 |
+
return;
|
2083 |
+
} else {
|
2084 |
+
messagingArea.innerHTML = '<div class="wptb-error wptb-message">Safety problems</div>';
|
2085 |
+
}
|
2086 |
+
messagingArea.classList.add('wptb-success');
|
2087 |
+
setTimeout(function () {
|
2088 |
+
messagingArea.removeChild(messagingArea.firstChild);
|
2089 |
+
}, 4000);
|
2090 |
+
}
|
2091 |
+
};
|
2092 |
+
http.send(params);
|
2093 |
+
},
|
2094 |
+
//
|
2095 |
+
clickOnFreeSpace: function clickOnFreeSpace() {
|
2096 |
+
document.getElementsByClassName('wptb-elements-container')[0].style.display = 'table';
|
2097 |
+
document.getElementsByClassName('wptb-settings-section')[0].style.display = 'block';
|
2098 |
+
document.getElementById('element-options-group').style.display = 'none';
|
2099 |
+
var wpcdFixedToolbar = document.getElementById('wpcd_fixed_toolbar');
|
2100 |
+
if (wpcdFixedToolbar.hasAttribute('data-toolbar-active-id')) {
|
2101 |
+
document.getElementById(wpcdFixedToolbar.getAttribute('data-toolbar-active-id')).classList.remove('toolbar-active');
|
2102 |
+
}
|
2103 |
+
var element = document.querySelector('.wptb-preview-table');
|
2104 |
+
if (element) {
|
2105 |
+
WPTB_Helper.elementOptionsSet('table_setting', element);
|
2106 |
+
}
|
2107 |
+
},
|
2108 |
+
// function for sending of element ajax request
|
2109 |
+
elementAjax: function elementAjax(dataAjaxData, element) {
|
2110 |
+
var http = new XMLHttpRequest(),
|
2111 |
+
url = (wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl) + "?action=wptb_element_ajax";
|
2112 |
+
var element_name = void 0;
|
2113 |
+
var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
|
2114 |
+
if (infArr && Array.isArray(infArr)) {
|
2115 |
+
element_name = infArr[1];
|
2116 |
}
|
2117 |
+
|
2118 |
+
var params = {
|
2119 |
+
element_ajax_data: dataAjaxData,
|
2120 |
+
element_name: element_name,
|
2121 |
+
security_code: wptb_admin_object.security_code
|
2122 |
+
};
|
2123 |
+
params = JSON.stringify(params);
|
2124 |
+
|
2125 |
+
http.open('POST', url, true);
|
2126 |
+
http.setRequestHeader('Content-type', 'application/json; charset=utf-8');
|
2127 |
+
|
2128 |
+
http.onreadystatechange = function (action) {
|
2129 |
+
if (this.readyState == 4 && this.status == 200) {
|
2130 |
+
var data = JSON.parse(http.responseText);
|
2131 |
+
var detail = void 0;
|
2132 |
+
if (data && Array.isArray(data) && data[0] == 'element_ajax_responce') {
|
2133 |
+
detail = { value: data[1] };
|
2134 |
+
} else {
|
2135 |
+
detail = '';
|
2136 |
+
}
|
2137 |
+
WPTB_Helper.wptbDocumentEventGenerate('wptb-element:ajax-response', element, detail);
|
2138 |
+
}
|
2139 |
+
};
|
2140 |
+
http.send(params);
|
2141 |
+
}
|
2142 |
+
};
|
2143 |
+
var WPTB_Initializer = function WPTB_Initializer() {
|
2144 |
+
|
2145 |
+
var MIN_COLUMNS = 1,
|
2146 |
+
MIN_ROWS = 1,
|
2147 |
+
MAX_COLUMNS = 30,
|
2148 |
+
MAX_ROWS = 30;
|
2149 |
+
|
2150 |
+
var tableGenerator = document.body;
|
2151 |
+
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');
|
2152 |
+
|
2153 |
+
columnsDecrementButton.onclick = function () {
|
2154 |
+
if (columnsInput.value > MIN_COLUMNS) {
|
2155 |
+
columnsInput.value--;
|
2156 |
+
}
|
2157 |
+
};
|
2158 |
+
|
2159 |
+
columnsIncrementButton.onclick = function () {
|
2160 |
+
if (columnsInput.value < MAX_COLUMNS) {
|
2161 |
+
columnsInput.value++;
|
2162 |
+
}
|
2163 |
+
};
|
2164 |
+
|
2165 |
+
rowsDecrementButton.onclick = function () {
|
2166 |
+
if (rowsInput.value > MIN_ROWS) {
|
2167 |
+
rowsInput.value--;
|
2168 |
+
}
|
2169 |
+
};
|
2170 |
+
|
2171 |
+
rowsIncrementButton.onclick = function () {
|
2172 |
+
if (rowsInput.value < MAX_ROWS) {
|
2173 |
+
rowsInput.value++;
|
2174 |
+
}
|
2175 |
+
};
|
2176 |
+
|
2177 |
+
document.getElementById('wptb-generate-table').onclick = function () {
|
2178 |
+
var columns = document.getElementById('wptb-columns-number').value,
|
2179 |
+
rows = document.getElementById('wptb-rows-number').value;
|
2180 |
+
|
2181 |
+
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
2182 |
+
//wptbTableStateSaveManager.tableStateClear();
|
2183 |
+
|
2184 |
+
wptbTableStateSaveManager.tableStateSet(true);
|
2185 |
+
|
2186 |
+
WPTB_Table(columns, rows);
|
2187 |
+
|
2188 |
+
wptbTableStateSaveManager.tableStateSet();
|
2189 |
+
};
|
2190 |
+
};
|
2191 |
+
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; };
|
2192 |
+
|
2193 |
+
var WPTB_LeftPanel = function WPTB_LeftPanel() {
|
2194 |
+
|
2195 |
+
var table = document.getElementsByClassName('wptb-preview-table')[0],
|
2196 |
+
wptbElementButtons = document.getElementsByClassName('wptb-element');
|
2197 |
+
|
2198 |
+
var wptbTableColumnWidthNumber = document.getElementById('wptb-table-column-width-number');
|
2199 |
+
WPTB_Helper.numberImputSize(wptbTableColumnWidthNumber, 2, 500);
|
2200 |
+
|
2201 |
+
var wptbTableRowHeightNumber = document.getElementById('wptb-table-row-height-number');
|
2202 |
+
WPTB_Helper.numberImputSize(wptbTableRowHeightNumber, 2, 200);
|
2203 |
|
2204 |
document.getElementById('wptb-table-column-width-slider').oninput = function () {
|
2205 |
document.getElementById('wptb-table-column-width-number').value = this.value;
|
2269 |
|
2270 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
2271 |
wptbTableStateSaveManager.tableStateSet();
|
2272 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2273 |
|
2274 |
+
function controlsChange(inputs, table) {
|
2275 |
+
if (inputs && (typeof inputs === 'undefined' ? 'undefined' : _typeof(inputs)) === 'object') {
|
2276 |
+
if (inputs.hasOwnProperty('tableTopRowsAsHeader')) {
|
2277 |
+
if (inputs.tableTopRowsAsHeader == 'checked') {
|
2278 |
+
var rows = table.rows;
|
2279 |
+
table.classList.add('wptb-table-preview-head');
|
2280 |
+
} else if (inputs.tableTopRowsAsHeader == 'unchecked') {
|
2281 |
+
var _rows = table.rows;
|
2282 |
+
table.classList.remove('wptb-table-preview-head');
|
2283 |
+
|
2284 |
+
for (var _i = 1; _i < _rows.length; _i++) {
|
2285 |
+
var thisRow = _rows[_i],
|
2286 |
+
thisRowChildren = thisRow.children;
|
2287 |
+
for (var j = 0; j < thisRowChildren.length; j++) {
|
2288 |
+
thisRowChildren[j].removeAttribute('data-wptb-title-column');
|
2289 |
+
thisRowChildren[j].removeAttribute('data-wptb-title-column-font-size');
|
2290 |
+
thisRowChildren[j].removeAttribute('data-wptb-title-column-color');
|
2291 |
+
thisRowChildren[j].removeAttribute('data-wptb-title-background-color');
|
2292 |
+
thisRowChildren[j].removeAttribute('data-wptb-title-align');
|
2293 |
+
}
|
2294 |
+
}
|
2295 |
}
|
2296 |
+
} else if (inputs.hasOwnProperty('makeTableResponsive')) {
|
2297 |
+
if (inputs.makeTableResponsive == 'checked') {
|
2298 |
+
table.dataset.wptbAdaptiveTable = 1;
|
2299 |
+
} else if (inputs.makeTableResponsive == 'unchecked') {
|
2300 |
+
table.dataset.wptbAdaptiveTable = 0;
|
2301 |
+
}
|
2302 |
+
} else if (inputs.hasOwnProperty('tableManageCells')) {
|
2303 |
+
table.toggleTableEditMode();
|
2304 |
}
|
2305 |
}
|
2306 |
}
|
2307 |
|
2308 |
+
WPTB_Helper.controlsInclude(table, controlsChange);
|
|
|
|
|
|
|
|
|
2309 |
|
2310 |
for (var i = 0; i < wptbElementButtons.length; i++) {
|
2311 |
wptbElementButtons[i].ondragstart = function (e) {
|
2312 |
e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);
|
2313 |
e.dataTransfer.setData('wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement);
|
2314 |
};
|
2315 |
+
};
|
2316 |
|
2317 |
if (table) {
|
|
|
2318 |
document.getElementById('wptb-table-edit-mode-close').onclick = table.toggleTableEditMode;
|
2319 |
document.getElementById('wptb-left-scroll-panel-curtain-close').onclick = table.toggleTableEditMode;
|
2320 |
document.getElementById('wptb-add-end-row').onclick = table.addRowToTheEnd;
|
2329 |
document.getElementById('wptb-delete-row').onclick = table.deleteRow;
|
2330 |
document.getElementById('wptb-merge-cells').onclick = table.mergeCells;
|
2331 |
document.getElementById('wptb-split-cell').onclick = table.splitCell;
|
2332 |
+
};
|
2333 |
|
2334 |
document.querySelector('.wptb-left-panel-extend').onclick = function () {
|
2335 |
var wptbContainer = document.querySelector('.wptb-container');
|
2347 |
var wptbBuilderPanel = document.getElementsByClassName('wptb-builder-panel')[0];
|
2348 |
wptbBuilderPanel.onclick = function (e) {
|
2349 |
if (!e.target.classList.contains('wptb-ph-element') && !WPTB_Helper.findAncestor(e.target, 'wptb-ph-element') && !e.target.classList.contains('wptb-fixed-toolbar') && !WPTB_Helper.findAncestor(e.target, 'wptb-fixed-toolbar')) {
|
2350 |
+
WPTB_Helper.clickOnFreeSpace();
|
2351 |
}
|
2352 |
};
|
2353 |
|
2354 |
var wptbHeader = document.getElementsByClassName('wptb-header');
|
2355 |
if (wptbHeader.length > 0) wptbHeader = wptbHeader[0];
|
2356 |
wptbHeader.onclick = function () {
|
2357 |
+
WPTB_Helper.clickOnFreeSpace();
|
2358 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2359 |
};
|
2360 |
var MultipleSelect = function MultipleSelect() {
|
2361 |
|
2505 |
WPTB_Helper.elementDragEndClear();
|
2506 |
};
|
2507 |
};
|
2508 |
+
var table = document.getElementsByClassName('wptb-preview-table');
|
2509 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
2510 |
var wptbUndo = document.getElementsByClassName('wptb-undo');
|
2511 |
if (wptbUndo.length > 0) {
|
2515 |
if (!this.classList.contains('wptb-undoredo-disabled')) {
|
2516 |
wptbTableStateSaveManager.tableStateGet(this.dataset.wptbUndoredo);
|
2517 |
var wptbUndoRedoContainer = document.getElementsByClassName('wptb-undo-redo-container');
|
2518 |
+
if (wptbUndoRedoContainer.length > 0 && table.length > 0) {
|
2519 |
wptbUndoRedoContainer = wptbUndoRedoContainer[0];
|
2520 |
wptbUndoRedoContainer.onmouseleave = function (event) {
|
2521 |
event.target.onmouseleave = '';
|
2534 |
if (!this.classList.contains('wptb-undoredo-disabled')) {
|
2535 |
wptbTableStateSaveManager.tableStateGet(this.dataset.wptbUndoredo);
|
2536 |
var wptbUndoRedoContainer = document.getElementsByClassName('wptb-undo-redo-container');
|
2537 |
+
if (wptbUndoRedoContainer.length > 0 && table.length > 0) {
|
2538 |
wptbUndoRedoContainer = wptbUndoRedoContainer[0];
|
2539 |
wptbUndoRedoContainer.onmouseleave = function (event) {
|
2540 |
event.target.onmouseleave = '';
|
2569 |
shortcodePopupWindow.classList.remove('wptb-popup-show');
|
2570 |
};
|
2571 |
|
2572 |
+
document.getElementsByClassName('wptb-preview-btn')[0].onclick = function (event) {
|
2573 |
if (this.classList.contains('wptb-button-disable')) {
|
|
|
|
|
|
|
|
|
|
|
|
|
2574 |
return;
|
2575 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2576 |
|
2577 |
+
var previewId = Math.floor(Math.random() * 10000);
|
|
|
|
|
|
|
|
|
2578 |
|
2579 |
+
var newHref = new URL(event.target.href);
|
2580 |
+
newHref.searchParams.set('preview_id', previewId);
|
2581 |
+
event.target.href = newHref.toString();
|
2582 |
+
WPTB_Helper.saveTable(event, false, previewId);
|
2583 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2584 |
|
2585 |
+
document.getElementsByClassName('wptb-save-btn')[0].onclick = function (event) {
|
2586 |
+
if (!this.classList.contains('wptb-save-disabled')) {
|
2587 |
+
WPTB_Helper.saveTable(event);
|
|
|
|
|
|
|
|
|
|
|
2588 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2589 |
};
|
2590 |
};
|
2591 |
+
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); } }
|
2592 |
+
|
2593 |
var WPTB_Stringifier = function WPTB_Stringifier(codeMain) {
|
2594 |
if (codeMain) {
|
2595 |
var code = codeMain.cloneNode(true);
|
2659 |
break;
|
2660 |
}
|
2661 |
}
|
2662 |
+
|
2663 |
+
var dataMceBogus = innerElements[j].querySelectorAll('[data-mce-bogus]');
|
2664 |
+
if (dataMceBogus.length > 0) {
|
2665 |
+
dataMceBogus = [].concat(_toConsumableArray(dataMceBogus));
|
2666 |
+
for (var _k5 = 0; _k5 < dataMceBogus.length; _k5++) {
|
2667 |
+
if (dataMceBogus[_k5] && dataMceBogus[_k5].parentNode) {
|
2668 |
+
dataMceBogus[_k5].parentNode.removeChild(dataMceBogus[_k5]);
|
2669 |
+
}
|
2670 |
+
}
|
2671 |
+
}
|
2672 |
}
|
2673 |
}
|
2674 |
|
3075 |
}
|
3076 |
};
|
3077 |
|
|
|
|
|
|
|
3078 |
jQuery('#wptb-table-border-color').val('');
|
|
|
|
|
3079 |
jQuery('#wptb-table-padding-number,#wptb-table-padding-slider').val('15');
|
3080 |
|
3081 |
if (columns || rows) {
|
3088 |
|
3089 |
//Create a HTML Table element.
|
3090 |
table = document.createElement('table');
|
3091 |
+
table.classList.add('wptb-preview-table', 'wptb-element-main-table_setting-startedid-0');
|
3092 |
+
table.style.border = '0px solid';
|
3093 |
table.dataset.reconstraction = 1;
|
3094 |
table.dataset.wptbAdaptiveTable = 1;
|
3095 |
//Add the data rows.
|
3101 |
for (var j = 0; j < columns; j++) {
|
3102 |
cell = new WPTB_Cell(mark);
|
3103 |
cell.setCoords(i, j);
|
3104 |
+
cell.getDOMElement().style.borderWidth = '1px';
|
3105 |
row.appendChild(cell.getDOMElement());
|
3106 |
}
|
3107 |
}
|
3118 |
WPTB_Cell(mark, cells[_i]);
|
3119 |
}
|
3120 |
}
|
3121 |
+
} else {
|
3122 |
+
return;
|
3123 |
}
|
3124 |
}
|
3125 |
|
3175 |
maxCols = 0,
|
3176 |
maxColsFull = 0,
|
3177 |
tdsArr = [];
|
3178 |
+
//let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );
|
3179 |
|
3180 |
for (var i = 0; i < trs.length; i++) {
|
3181 |
if (i == 0) {
|
3182 |
+
// if( wptbTopRowAsHeader.checked ) {
|
3183 |
+
// if( start == undefined ) {
|
3184 |
+
// this.classList.add( 'wptb-table-preview-head' );
|
3185 |
+
// trs[i].classList.add( 'wptb-table-head' )
|
3186 |
+
// } ;
|
3187 |
+
// } else {
|
3188 |
+
// if( start == undefined ) {
|
3189 |
+
// this.classList.remove( 'wptb-table-preview-head' );
|
3190 |
+
// trs[i].classList.remove( 'wptb-table-head' );
|
3191 |
+
// }
|
3192 |
+
// }
|
|
|
|
|
|
|
3193 |
} else {
|
3194 |
+
// if (i % 2 == 0) {
|
3195 |
+
// trs[i].classList.remove( 'wptb-table-head' );
|
3196 |
+
// } else {
|
3197 |
+
// trs[i].classList.remove( 'wptb-table-head' );
|
3198 |
+
// }
|
|
|
|
|
|
|
|
|
|
|
3199 |
}
|
|
|
3200 |
|
3201 |
tdsArr[i];
|
3202 |
tds = trs[i].getElementsByTagName('td');
|
3335 |
var tableTdBorderCommonWidth = 0;
|
3336 |
var cssForTdsWidthAuto = '';
|
3337 |
|
3338 |
+
var tableFullStyleObj = window.getComputedStyle(table, null);
|
3339 |
+
var borderLeftWidth = tableFullStyleObj.getPropertyValue('border-left-width');
|
3340 |
+
var borderRightWidth = tableFullStyleObj.getPropertyValue('border-right-width');
|
3341 |
+
var tableBorderCommon = parseFloat(borderLeftWidth, 10) + parseFloat(borderRightWidth, 10);
|
3342 |
+
|
3343 |
for (var _i5 = 0; _i5 < rows.length; _i5++) {
|
3344 |
var tds = rows[_i5].children;
|
3345 |
for (var _j2 = 0; _j2 < tds.length; _j2++) {
|
3346 |
var td = tds[_j2];
|
3347 |
|
3348 |
+
if (!arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)] && !arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)]) {
|
3349 |
if (td.style.width) {
|
3350 |
+
arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)] = parseFloat(td.style.width);
|
3351 |
td.removeAttribute('data-wptb-css-td-auto-width');
|
3352 |
} else {
|
3353 |
if (!td.dataset.wptbFixedWidth) {
|
3354 |
+
arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)] = 100;
|
3355 |
td.dataset.wptbCssTdAutoWidth = true;
|
3356 |
}
|
3357 |
}
|
3365 |
var tableTdBorderLeftWidth = tdStyleObj.getPropertyValue('border-left-width');
|
3366 |
var tableTdBorderRightWidth = tdStyleObj.getPropertyValue('border-right-width');
|
3367 |
tableTdBorderCommonWidth = parseFloat(tableTdBorderLeftWidth, 10) + parseFloat(tableTdBorderRightWidth, 10);
|
3368 |
+
tableTdBorderCommonWidth = tableTdBorderCommonWidth / 2;
|
3369 |
+
|
3370 |
+
if (arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)]) {
|
3371 |
+
arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)] += tdPaddingCommon;
|
3372 |
+
arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)] += tableTdBorderCommonWidth;
|
3373 |
+
|
3374 |
+
if (_j2 == 0 && tableBorderCommon / 2 <= parseFloat(tableTdBorderLeftWidth, 10)) {
|
3375 |
+
arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)] += parseFloat(tableTdBorderLeftWidth, 10) / 2;
|
3376 |
+
} else if (_j2 == 0 && tableBorderCommon / 2 > parseFloat(tableTdBorderLeftWidth, 10)) {
|
3377 |
+
arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)] += tableBorderCommon / 2 - parseFloat(tableTdBorderRightWidth, 10) / 2;
|
3378 |
+
}
|
3379 |
+
|
3380 |
+
if (_j2 == tds.length - 1 && tableBorderCommon / 2 <= parseFloat(tableTdBorderRightWidth, 10)) {
|
3381 |
+
arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)] += parseFloat(tableTdBorderRightWidth, 10) / 2;
|
3382 |
+
} else if (_j2 == tds.length - 1 && tableBorderCommon / 2 > parseFloat(tableTdBorderRightWidth, 10)) {
|
3383 |
+
arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)] += tableBorderCommon / 2 - parseFloat(tableTdBorderRightWidth, 10) / 2;
|
3384 |
+
}
|
3385 |
+
} else if (arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)]) {
|
3386 |
+
arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)] += tdPaddingCommon;
|
3387 |
+
arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)] += tableTdBorderCommonWidth;
|
3388 |
+
|
3389 |
+
if (_j2 == 0 && tableBorderCommon / 2 <= parseFloat(tableTdBorderLeftWidth, 10)) {
|
3390 |
+
arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)] += parseFloat(tableTdBorderLeftWidth, 10) / 2;
|
3391 |
+
} else if (_j2 == 0 && tableBorderCommon / 2 > parseFloat(tableTdBorderLeftWidth, 10)) {
|
3392 |
+
arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)] += tableBorderCommon / 2 - parseFloat(tableTdBorderLeftWidth, 10) / 2;
|
3393 |
+
}
|
3394 |
+
|
3395 |
+
if (_j2 == tds.length - 1 && tableBorderCommon / 2 <= parseFloat(tableTdBorderRightWidth, 10)) {
|
3396 |
+
arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)] += parseFloat(tableTdBorderRightWidth, 10) / 2;
|
3397 |
+
} else if (_j2 == tds.length - 1 && tableBorderCommon / 2 > parseFloat(tableTdBorderRightWidth, 10)) {
|
3398 |
+
arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)] += tableBorderCommon / 2 - parseFloat(tableTdBorderLeftWidth, 10) / 2;
|
3399 |
+
}
|
3400 |
}
|
3401 |
}
|
3402 |
+
} else if (arrayCellsWidthAutoHelper[parseFloat(td.dataset.xIndex)]) {
|
3403 |
if (!td.dataset.wptbFixedWidth) {
|
3404 |
td.dataset.wptbCssTdAutoWidth = true;
|
3405 |
}
|
3406 |
+
} else if (arrayCellsWidthFixedHelper[parseFloat(td.dataset.xIndex)]) {
|
3407 |
td.removeAttribute('data-wptb-css-td-auto-width');
|
3408 |
}
|
3409 |
}
|
3423 |
}
|
3424 |
}
|
3425 |
|
3426 |
+
tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto;
|
|
|
|
|
|
|
|
|
3427 |
|
3428 |
table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;
|
3429 |
if (CellsWidthAutoCount) {
|
3430 |
table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;
|
3431 |
if (table.mergingСellsHorizontally) {
|
3432 |
+
table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed;
|
3433 |
} else {
|
3434 |
table.removeAttribute('data-wptb-fixed-width-size');
|
3435 |
}
|
3445 |
table.style.minWidth = '100%';
|
3446 |
if (table.mergingСellsHorizontally) {
|
3447 |
table.style.width = null;
|
3448 |
+
var tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed;
|
3449 |
tableTdWidthAuto = tableTdsWidthAutoCommon / CellsWidthAutoCount;
|
3450 |
tableTdWidthAuto = tableTdWidthAuto - tdPaddingCommon - tableTdBorderCommonWidth;
|
3451 |
styleElementCreate = true;
|
3455 |
} else {
|
3456 |
table.style.width = null;
|
3457 |
table.style.minWidth = null;
|
3458 |
+
table.style.maxWidth = null;
|
3459 |
}
|
3460 |
} else {
|
3461 |
table.style.maxWidth = null;
|
3549 |
|
3550 |
table.reconstraction = function () {
|
3551 |
var tds = table.getElementsByTagName('td');
|
|
|
|
|
|
|
|
|
3552 |
table.mergingСellsHorizontally = false;
|
3553 |
table.mergingCellsVertically = false;
|
3554 |
table.dataset.reconstraction = 1;
|
|
|
3555 |
var forBreak = 0;
|
3556 |
for (var _i9 = 0; _i9 < tds.length; _i9++) {
|
3557 |
if (tds[_i9].colSpan > 1) {
|
3558 |
table.dataset.reconstraction = 0;
|
|
|
3559 |
table.mergingСellsHorizontally = true;
|
3560 |
forBreak++;
|
3561 |
}
|
3562 |
|
3563 |
if (tds[_i9].rowSpan > 1) {
|
3564 |
table.dataset.reconstraction = 0;
|
|
|
3565 |
table.mergingCellsVertically = true;
|
3566 |
forBreak++;
|
3567 |
}
|
4305 |
if (table.rows.length == 0) {
|
4306 |
table.toggleTableEditMode();
|
4307 |
wptbTableSetup.innerHTML = '';
|
|
|
4308 |
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
|
4309 |
+
var wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');
|
4310 |
+
if (wptbSaveBtn.length > 0) {
|
4311 |
+
wptbSaveBtn = wptbSaveBtn[0];
|
4312 |
|
4313 |
+
wptbSaveBtn.classList.add('wptb-save-disabled');
|
4314 |
+
}
|
4315 |
+
} else {
|
4316 |
+
table.recalculateIndexes();
|
4317 |
+
WPTB_Helper.dataTitleColumnSet(table);
|
4318 |
+
}
|
4319 |
}
|
4320 |
|
4321 |
undoSelect();
|
4366 |
if (table.querySelectorAll('td').length == 0) {
|
4367 |
table.toggleTableEditMode();
|
4368 |
wptbTableSetup.innerHTML = '';
|
|
|
4369 |
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
|
4370 |
+
var wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');
|
4371 |
+
if (wptbSaveBtn.length > 0) {
|
4372 |
+
wptbSaveBtn = wptbSaveBtn[0];
|
4373 |
|
4374 |
+
wptbSaveBtn.classList.add('wptb-save-disabled');
|
4375 |
+
}
|
4376 |
+
} else {
|
4377 |
+
table.recalculateIndexes();
|
4378 |
+
table.tdDefaultWidth();
|
4379 |
+
WPTB_Helper.dataTitleColumnSet(table);
|
4380 |
+
}
|
4381 |
}
|
4382 |
|
4383 |
undoSelect();
|
4439 |
// }, false );
|
4440 |
// }
|
4441 |
};
|
4442 |
+
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; };
|
4443 |
+
|
4444 |
var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
4445 |
+
this.tableStateSet = function (generate) {
|
4446 |
+
|
4447 |
+
if (generate && window.wptbTableStateSaving && Array.isArray(window.wptbTableStateSaving)) {
|
4448 |
+
return;
|
4449 |
+
}
|
4450 |
+
|
4451 |
// get preview table
|
4452 |
var wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');
|
4453 |
if (wptbPreviewTable.length > 0) {
|
4454 |
wptbPreviewTable = wptbPreviewTable[0];
|
4455 |
+
} else {
|
4456 |
+
wptbPreviewTable = '';
|
4457 |
+
}
|
4458 |
|
4459 |
+
// check if a global array doesn't exist with saved versions of the table
|
4460 |
+
// them create it
|
4461 |
+
if (!window.wptbTableStateSaving && !Array.isArray(window.wptbTableStateSaving)) {
|
4462 |
+
window.wptbTableStateSaving = [];
|
4463 |
+
}
|
4464 |
|
4465 |
+
// remove the extra part of the array after changing the table
|
4466 |
+
// when it is showed in the not last modified version
|
4467 |
+
if (window.wptbTableStateSaving.length > window.wptbTableStateNumberShow) {
|
4468 |
+
window.wptbTableStateSaving = window.wptbTableStateSaving.slice(0, window.wptbTableStateNumberShow + 1);
|
4469 |
+
}
|
4470 |
|
4471 |
+
//add new state of table
|
4472 |
+
var wptbNewPreviewTable = '';
|
4473 |
+
if (wptbPreviewTable) {
|
4474 |
+
wptbNewPreviewTable = wptbPreviewTable.cloneNode(true);
|
4475 |
var wptbHighlighted = wptbNewPreviewTable.getElementsByClassName('wptb-highlighted');
|
4476 |
for (var i = 0; i < wptbHighlighted.length; i++) {
|
4477 |
wptbHighlighted[i].classList.remove('wptb-highlighted');
|
4480 |
for (var _i = 0; _i < wptbDirectlyhovered.length; _i++) {
|
4481 |
wptbDirectlyhovered[_i].classList.remove('wptb-directlyhovered');
|
4482 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4483 |
var mceContentBodys = wptbNewPreviewTable.querySelectorAll('.mce-content-body');
|
4484 |
if (mceContentBodys.length > 0) {
|
4485 |
for (var k = 0; k < mceContentBodys.length; k++) {
|
4486 |
mceContentBodys[k].classList.remove('mce-content-body');
|
4487 |
}
|
4488 |
}
|
|
|
4489 |
var dataMceStyle = wptbNewPreviewTable.querySelectorAll('[data-mce-style]');
|
4490 |
if (dataMceStyle.length > 0) {
|
4491 |
for (var _k = 0; _k < dataMceStyle.length; _k++) {
|
4492 |
dataMceStyle[_k].removeAttribute('data-mce-style');
|
4493 |
}
|
4494 |
}
|
|
|
4495 |
var mceIds = wptbNewPreviewTable.querySelectorAll('[id^=mce_]');
|
4496 |
if (mceIds.length > 0) {
|
4497 |
for (var _k2 = 0; _k2 < mceIds.length; _k2++) {
|
4498 |
mceIds[_k2].removeAttribute('id');
|
4499 |
}
|
4500 |
}
|
4501 |
+
}
|
4502 |
|
4503 |
+
var cssForTdsWidthAutoValue = '';
|
4504 |
+
var head = document.head;
|
4505 |
+
if (head) {
|
4506 |
+
var cssForTdsWidthAuto = head.querySelector('style[data-wptb-td-auto-width="true"]');
|
4507 |
+
if (cssForTdsWidthAuto) {
|
4508 |
+
cssForTdsWidthAutoValue = cssForTdsWidthAuto.innerHTML;
|
4509 |
+
}
|
4510 |
+
}
|
4511 |
|
4512 |
+
var wptbElementDatas = document.getElementsByClassName('wptb-element-datas');
|
4513 |
+
if (wptbElementDatas.length > 0) {
|
4514 |
+
wptbElementDatas = wptbElementDatas[0];
|
4515 |
+
wptbElementDatas = wptbElementDatas.innerHTML;
|
4516 |
+
} else {
|
4517 |
+
wptbElementDatas = '';
|
4518 |
+
}
|
4519 |
|
4520 |
+
var styleObjJson = WPTB_Helper.elementsStylesConvertToObject();
|
|
|
|
|
|
|
|
|
4521 |
|
4522 |
+
window.wptbTableStateSaving.push([wptbNewPreviewTable, cssForTdsWidthAutoValue, wptbElementDatas, styleObjJson]);
|
|
|
|
|
4523 |
|
4524 |
+
// set new number of state which is showed now
|
4525 |
+
window.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;
|
4526 |
+
|
4527 |
+
// make undo arrow active when the table was changed
|
4528 |
+
if (window.wptbTableStateSaving.length - 1 > 0) {
|
4529 |
+
var wptbUndo = document.getElementsByClassName('wptb-undo');
|
4530 |
+
if (wptbUndo.length > 0) {
|
4531 |
+
wptbUndo = wptbUndo[0];
|
4532 |
|
4533 |
+
wptbUndo.classList.remove('wptb-undoredo-disabled');
|
4534 |
}
|
4535 |
+
}
|
4536 |
|
4537 |
+
// make redo arrow not active when the table was changed
|
4538 |
+
var wptbRedo = document.getElementsByClassName('wptb-redo');
|
4539 |
+
if (wptbRedo.length > 0) {
|
4540 |
+
wptbRedo = wptbRedo[0];
|
4541 |
+
|
4542 |
+
wptbRedo.classList.add('wptb-undoredo-disabled');
|
4543 |
+
}
|
4544 |
+
|
4545 |
+
var wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');
|
4546 |
+
if (wptbSaveBtn.length > 0) {
|
4547 |
+
wptbSaveBtn = wptbSaveBtn[0];
|
4548 |
+
if (!wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 || window.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave || !wptbPreviewTable) {
|
4549 |
+
wptbSaveBtn.classList.add('wptb-save-disabled');
|
4550 |
+
} else {
|
4551 |
+
wptbSaveBtn.classList.remove('wptb-save-disabled');
|
4552 |
}
|
4553 |
}
|
4554 |
};
|
4555 |
|
4556 |
this.tableStateGet = function (datawptbUndoredo) {
|
4557 |
+
if (datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length > 0) {
|
4558 |
|
4559 |
// changes the number of the state which displays now
|
4560 |
if (datawptbUndoredo == 'undo') {
|
4564 |
return false;
|
4565 |
}
|
4566 |
} else if (datawptbUndoredo == 'redo') {
|
4567 |
+
if (window.wptbTableStateNumberShow < window.wptbTableStateSaving.length) {
|
4568 |
window.wptbTableStateNumberShow++;
|
4569 |
} else {
|
4570 |
return false;
|
4575 |
var wptbUndo = document.getElementsByClassName('wptb-undo');
|
4576 |
if (wptbUndo.length > 0) {
|
4577 |
wptbUndo = wptbUndo[0];
|
4578 |
+
|
4579 |
+
if (window.wptbTableStateNumberShow == 0) {
|
4580 |
+
if (wptbUndo) {
|
4581 |
+
wptbUndo.classList.add('wptb-undoredo-disabled');
|
4582 |
+
}
|
4583 |
+
} else if (window.wptbTableStateNumberShow > 0) {
|
4584 |
+
if (wptbUndo) {
|
4585 |
+
wptbUndo.classList.remove('wptb-undoredo-disabled');
|
4586 |
+
}
|
4587 |
}
|
4588 |
}
|
4589 |
|
4591 |
var wptbRedo = document.getElementsByClassName('wptb-redo');
|
4592 |
if (wptbRedo.length > 0) {
|
4593 |
wptbRedo = wptbRedo[0];
|
4594 |
+
|
4595 |
+
if (window.wptbTableStateNumberShow == window.wptbTableStateSaving.length - 1) {
|
4596 |
+
if (wptbRedo) {
|
4597 |
+
wptbRedo.classList.add('wptb-undoredo-disabled');
|
4598 |
+
}
|
4599 |
+
} else if (window.wptbTableStateNumberShow < window.wptbTableStateSaving.length - 1) {
|
4600 |
+
if (wptbRedo) {
|
4601 |
+
wptbRedo.classList.remove('wptb-undoredo-disabled');
|
4602 |
+
}
|
4603 |
}
|
4604 |
}
|
4605 |
|
4606 |
+
// add or delete class "wptb-save-disabled" for save button
|
4607 |
var wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');
|
4608 |
if (wptbSaveBtn.length > 0) {
|
4609 |
wptbSaveBtn = wptbSaveBtn[0];
|
4620 |
wptbTableSetup = wptbTableSetup[0];
|
4621 |
|
4622 |
wptbTableSetup.innerHTML = '';
|
4623 |
+
if (window.wptbTableStateSaving[window.wptbTableStateNumberShow]) {
|
4624 |
+
if (window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] && _typeof(window.wptbTableStateSaving[window.wptbTableStateNumberShow][0]) === 'object') {
|
4625 |
+
if ('outerHTML' in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0]) {
|
4626 |
+
wptbTableSetup.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;
|
4627 |
+
}
|
4628 |
+
}
|
4629 |
|
4630 |
+
if (!wptbTableSetup.innerHTML) {
|
4631 |
+
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
|
4632 |
+
wptbSaveBtn.classList.add('wptb-save-disabled');
|
4633 |
+
} else {
|
4634 |
+
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';
|
4635 |
+
}
|
4636 |
+
}
|
4637 |
+
// add or change or delete style element in the head for table cells who have auto width
|
4638 |
+
if (window.wptbTableStateSaving[window.wptbTableStateNumberShow]) {
|
4639 |
var head = document.head;
|
4640 |
if (head) {
|
4641 |
var cssForTdsWidthAutoOld = head.querySelector('style[data-wptb-td-auto-width="true"]');
|
4642 |
if (cssForTdsWidthAutoOld) {
|
4643 |
head.removeChild(cssForTdsWidthAutoOld);
|
4644 |
}
|
4645 |
+
|
4646 |
+
if (window.wptbTableStateSaving[window.wptbTableStateNumberShow][1]) {
|
4647 |
+
var cssForTdsWidthAuto = document.createElement('style');
|
4648 |
+
cssForTdsWidthAuto.setAttribute('data-wptb-td-auto-width', true);
|
4649 |
+
cssForTdsWidthAuto.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][1];
|
4650 |
+
head.appendChild(cssForTdsWidthAuto);
|
4651 |
+
}
|
4652 |
}
|
4653 |
}
|
4654 |
|
|
|
4655 |
var body = document.getElementsByTagName('body');
|
4656 |
if (body.length > 0) {
|
4657 |
body = body[0];
|
4658 |
}
|
4659 |
+
|
4660 |
+
// add or change or delete script element from the bottom page which have data for several control types
|
4661 |
+
var wptbElementDatas = document.getElementsByClassName('wptb-element-datas');
|
4662 |
+
if (window.wptbTableStateSaving[window.wptbTableStateNumberShow] && window.wptbTableStateSaving[window.wptbTableStateNumberShow][2]) {
|
4663 |
|
4664 |
if (wptbElementDatas.length > 0) {
|
4665 |
wptbElementDatas = wptbElementDatas[0];
|
4666 |
} else {
|
4667 |
+
wptbElementDatas = document.createElement('sctipt');
|
4668 |
wptbElementDatas.classList.add('wptb-element-datas');
|
4669 |
body.appendChild(wptbElementDatas);
|
4670 |
}
|
4671 |
+
|
4672 |
+
wptbElementDatas.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];
|
4673 |
} else {
|
4674 |
if (wptbElementDatas.length > 0) {
|
4675 |
wptbElementDatas = wptbElementDatas[0];
|
4677 |
}
|
4678 |
}
|
4679 |
|
4680 |
+
// runs function which adds or create or delete CSS in the head for several element settings
|
4681 |
+
if (window.wptbTableStateSaving[window.wptbTableStateNumberShow]) {
|
4682 |
+
WPTB_Helper.elementsStylesSetFromObject(window.wptbTableStateSaving[window.wptbTableStateNumberShow][3]);
|
4683 |
+
}
|
4684 |
+
|
4685 |
WPTB_Helper.elementOptionsPanelClear();
|
4686 |
WPTB_LeftPanel();
|
4687 |
|
4692 |
}
|
4693 |
}
|
4694 |
};
|
4695 |
+
|
4696 |
+
this.tableStateClear = function () {
|
4697 |
+
delete window.wptbTableStateSaving;
|
4698 |
+
delete window.wptbTableStateNumberShow;
|
4699 |
+
|
4700 |
+
var wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');
|
4701 |
+
if (wptbSaveBtn.length > 0) {
|
4702 |
+
wptbSaveBtn = wptbSaveBtn[0];
|
4703 |
+
|
4704 |
+
wptbSaveBtn.removeAttribute('data-wptb-table-state-number-save');
|
4705 |
+
}
|
4706 |
+
|
4707 |
+
var wptbUndo = document.getElementsByClassName('wptb-undo');
|
4708 |
+
if (wptbUndo.length > 0) {
|
4709 |
+
wptbUndo = wptbUndo[0];
|
4710 |
+
|
4711 |
+
wptbUndo.classList.add('wptb-undoredo-disabled');
|
4712 |
+
}
|
4713 |
+
|
4714 |
+
var wptbRedo = document.getElementsByClassName('wptb-redo');
|
4715 |
+
if (wptbRedo.length > 0) {
|
4716 |
+
wptbRedo = wptbRedo[0];
|
4717 |
+
|
4718 |
+
wptbRedo.classList.add('wptb-undoredo-disabled');
|
4719 |
+
}
|
4720 |
+
};
|
4721 |
};
|
4722 |
var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
|
4723 |
|
4779 |
td.insertBefore(element, innerElementNext);
|
4780 |
}
|
4781 |
}
|
4782 |
+
|
4783 |
var thisRow = td.parentNode;
|
4784 |
+
if (WPTB_Helper.rowIsTop(thisRow)) {
|
4785 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
4786 |
+
|
4787 |
+
if (table.classList.contains('wptb-table-preview-head')) {
|
4788 |
+
WPTB_Helper.dataTitleColumnSet(table);
|
4789 |
+
}
|
4790 |
}
|
4791 |
|
4792 |
// start item javascript if item is new
|
inc/admin/js/admin.js.map
CHANGED
@@ -1 +1 @@
|
|
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_Settings.js","WPTB_Stringifier.js","WPTB_Table.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","className","match","WPTB_Helper","elementControlsStateDelete","hasOwnProperty","kind","thisRow","contains","table","findAncestor","dataTitleColumnSet","wptbActionsField","actionsRemove","wptbTableStateSaveManager","WPTB_TableStateSaveManager","tableStateSet","copy","infArr","activeElement","td","Array","isArray","data","elemProt","tinyMceClear","WPTB_ElementObject","elementControlsStateCopy","getDOMElement","insertBefore","nextSibling","elementCopy","cloneNode","applyGenericItemSettings","wptbDocumentEventGenerate","WPTB_innerElementSet","setParameters","btnMove","draggable","ondragstart","wptbElementIconsDirectories","tmplIconsDirectories","wp","template","jsonIconsDirectories","IconsDirectories","JSON","parse","dragImages","getElementIcon","dataTransfer","effectAllowed","setDragImage","setData","style","display","console","log","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","elementsSettingTemplateJs","setAttribute","innerHTML","WPTB_Table","WPTB_LeftPanel","WPTB_Settings","send","counter","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","WPTB_Cell","callback","DOMElement","highlightRow","parentRow","columnCount","parseInt","tds","i","classToAdd","ttd","highlightColumn","index","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","wptbPhElement","wptbElementTypeClass","wptbTypeElementArr","split","wptbInternalActiveElement","j","wptbInternalActiveElementObj","setCoords","y","x","dataset","yIndex","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","window","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","width","offsetWidth","height","offsetHeight","WPTB_DropHandle","thisElem","e","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","ondragenter","ondragover","preventDefault","ondragleave","ondrop","element","getData","newElementProxy","wptbMovingMode","text","getDOMParentElement","nodeName","toLowerCase","innerElement","innerElementNext","elemKind","undefined","querySelector","onscroll","localName","indics","types","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","increment","key","nextIndex","kindIndexProt","wpTemplateId","itemHtml","replace","trim","wptbElementMutch","elementClearFromTinyMce","inElems","querySelectorAll","inElemObj","WPTB_ElementOptions","elemIdClass","children","childNodes","wptbContrlStacksConfigId","tmplControlsConfig","container","jsonControlsConfigJson","jsonControlsConfig","wptbElementOptionsContainer","elementOptionsGroup","elementOptionsGroupChildren","regularText","RegExp","elem","controlScriptsArr","controlAppearDependOn","Object","keys","forEach","controlKey","tmplControlTemplate","elemContainer","elementControlTargetUnicClass","controlTemplate","appearDependOn","push","wptbElementOptionContainer","customClassForContainer","containerAdditionalStyles","helperJavascriptElem","helperJavascriptCode","innerText","script","hexToRgb","hex","result","exec","rgbToHex","rgb","toString","slice","icon_directory","hostName","location","protocol","hostname","img","src","wptbDropHandles","wptbDropBorderMarkers","linkHttpCheckChange","link","linkArr","linkClean","rows","rowHead","computedStyleRowHead","rowHeadChildren","contentsForHeader","tdElements","p","textContent","textAlign","fontSize","color","backgroundColor","thisRowChildren","wptbTitleColumn","wptbTitleColumnFontSize","wptbTitleColumnColor","wptbTitleBackgroundColor","wptbTitleAlign","cls","parentElement","getSelectionText","txt","getSelection","selection","createRange","settingsPanelClear","checked","wpColorPickerClear","elementOptionsPanelClear","wpColorPickerCheckChangeForTableStateSaving","originalEvent","wpPickerContainer","irisStripMouseUpStateSaveManager","attribute","isId","input","parent","newInput","url","href","regex","results","decodeURIComponent","getColumnWidth","cell","xIndexes","cellWidth","getRowHeight","yIndexes","cellHeight","wpColorPickerChange","ui","uiColor","classe","ps","number","affectedEl","ratingStar","span","fill","wptbTextMessageSize","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","ucfirst","str","charAt","toUpperCase","eventName","details","CustomEvent","detail","bubbles","dispatchEvent","elementStartScript","WPTB_ElementsScriptsLauncher","deleteEventHandlers","off","elementChildren","replaceAll","string","search","join","mceContentBodys","k","dataMceStyle","removeAttribute","mceEditFocus","contentEditable","spellCheck","mceIds","elementOptionContainerCustomClassSet","targetInput","containerElement","elementOptionContainerAdditionalStyles","containerStylesArrOne","containerStylesSet","containerStyleStr","containerStyleStrArr","controlsInclude","functionHandler","elementKind","сontrolsConnectIndic","elementsSettingsTemplateJs","elementsSettings","controlClassesNames","elementSettings","keyInfArr","controlClass","controls","controlName","control","targetControlValue","targetControlValueGet","oneControlInclude","controlClassName","innerElementCopyIncludeHandler","dependOn","targetControlElementClass","dependOnControlName","dependOnControlElementClass","dependOnControlElement","targetControlElement","controlContainerElem","showHideDependOnControlElement","dependOnControlElementKind","elementSettingValue","controlsStateManager","targetControlClass","controlChangeIndic","targetControls","selectorElement","elementsSettingsTemplatesJs","stringify","name","elementProt","copyElem","infArrProt","infArrCopy","elemProtKind","elemCopyKind","elementSettingsProt","elementSettingsCopy","elementSettingKeyCopy","wptbElementDatas","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","columns","wptbElementButtons","wptbTdBgColorSavedSet","inputId","trNumber","tableRows","trBackgroundColor","wptbEvenRowBg","wpColorPicker","change","clear","tableHeader","tableAdaptiveForMobile","wptbAdaptiveTableCheckbox","wptbAdaptiveTable","tableTopRowAsHeadSavedSet","wptbTopRowAsHeader","tableBorderColorWidthSavedSet","tableBorderColor","borderColor","tableBorderColorInput","tableBorderWidth","borderWidth","wptbTableBorderWidthSlider","wptbTableBorderWidthNumber","tableTd","applyInnerBorder","innerBorderCheckInput","wptbApplyInnerBorder","wptbTableInnerBorderSlider","wptbTableInnerBorderNumber","tableCells","tableInnerborderNumber","addInnerBorderSize","borderStyle","addCellPadding","addInnerBorder","styles","wptbPreviewTable","marginBottom","addBorderSize","cellPaddingSavedSet","wptbTableCellSlider","wptbTableCellNumber","wptbTableBorderNumber","wptbTableColumnWidthNumber","wptbTableRowHeightNumber","oninput","tdDefaultWidth","onchange","wptbInnerBorderCheck","tableBorderColorSetArea","addColumnWidth","highlighted","addRowHeight","createMobileHeadForTable","thisEvent","wptbElement","toggleTableEditMode","addRowToTheEnd","addRowToTheStart","addRowBefore","addRowAfter","addColumnEnd","addColumnStart","addColumnBefore","addColumnAfter","deleteColumn","deleteRow","mergeCells","splitCell","wptbBuilderPanel","clickOnFreeSpace","wptbHeader","wpcdFixedToolbar","hasAttribute","getAttribute","selectedCells","multipleCellMode","activateMultipleSelectMode","deactivateMultipleSelectMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","first","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","code","div","columnTitleMobile","prototype","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","obj","TypeError","prop","call","elems","wptbUndo","tableStateGet","wptbUndoredo","wptbUndoRedoContainer","wptbRedo","shortcodePopupWindow","onbeforeunload","wptbSaveDisabled","wptbTableStateNumberSave","wptbTableStateNumberShow","bar","wptb_admin_object","t","messagingArea","datas","WPTB_Stringifier","outerHTML","datas_containers","messagingAreaText","setTimeout","firstChild","params","title","content","elements_datas","security_code","rs","wptbId","id","action","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","codeMain","tableColumns","minWidth","maxWidth","innerElements","wptbActionsLength","columnNameDivContainer","columnNameDiv","array","wptbTableSetup","row","maxAmountOfCells","maxAmountOfRows","mark","rowSpan","cs","colSpan","markedCells","noCells","singleCells","multipleCells","cellSettings","position","column","cellHighlighted","wptbTableColumnWidthSlider","tableColumnWidthAutoFixedCheckbox","wptbFixedWidth","wptbTableRowHeightSlider","tableRowHeightAutoFixedCheckbox","wptbFixedHeight","isSquare","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","a","undoSelect","fillTableArray","colspansSums","cells","colspanSumInRow","Math","max","apply","getActualPointsInRow","points","skipInCols","reconstraction","insertRow","wptb_preview_table","cellModeBackground","leftScrollPanelCurtain","leftScrollPanelCellSettings","wptbPreviewTableTds","recalculateIndexes","start","trs","maxCols","maxColsFull","tdsArr","jMainIter","z","cleaner","dataXIndex","tableTdsFor","colspan","widthIsSet","arrayTdsFromPreviousRow","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","tableFullStyleObj","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","head","cssForTdsWidthAutoOld","dataYIndex","rowspan","heightIsSet","arrayTdsPrevious","tableColumnHeightAutoFixedCheckbox","wptbAdaptiveTableChoseBlock","mergingCellsVertically","forBreak","currentTable","currentTableTd","currentTdStyle","firstCell","c_pos","cellStyle","pos","pendingInsertion","bro","currentCell","l","r","aux","from","cellNew","rowChildren","rowChildrenLength","cellRowSpan","rowAfter","cellsColSpan","tableRowsIChildren","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","dimensions","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","Number","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","nextRow","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","pop","onresize","wptbTableStateSaving","wptbNewPreviewTable","wptbHighlighted","wptbDirectlyhovered","cssForTdsWidthAutoValue","wptbDlementDatas","datawptbUndoredo","wptbLeftScrollPanelCellSetting","classId","stopPropagation","onmouseover","wptbElements","elementIndexesArr","elementIndexMax","wptbNodeattributes","attributes","attr","newDataAttributeName","newDataAttributeValue","nodeValue","kindIndexProtArr","node_wptb_element_kind_num","onmouseenter"],"mappings":";;AAAA,IAAIA,oBAAoB,SAApBA,iBAAoB,GAAW;AAAA;;AAC/B;AACA,SAAKC,WAAL;AACA,QAAIC,SAASC,sBAAT,CAAiC,cAAjC,EAAkDC,MAAlD,IAA4D,CAAhE,EAAoE;AAChE,aAAKH,WAAL,GAAmBC,SAASC,sBAAT,CAAiC,cAAjC,EAAkD,CAAlD,CAAnB;AACH;;AAED,SAAKE,cAAL,GAAsB,UAAEC,UAAF,EAAcC,QAAd,EAA4B;AAC9C,YAAIC,OAAON,SAASO,oBAAT,CAA+B,MAA/B,EAAwC,CAAxC,CAAX;;AAEA,YAAIC,UAAUR,SAASC,sBAAT,CAAiC,cAAjC,CAAd;AACA,YAAIO,QAAQN,MAAR,IAAkB,CAAtB,EAA0B;AACtB,gBAAIO,eAAeD,QAAQ,CAAR,EAAWE,UAA9B;AACA,gBAAID,YAAJ,EAAmB;AACfA,6BAAaE,SAAb,CAAuBC,MAAvB,CAA+B,sBAA/B;AACH;;AAED,mBAAOJ,QAAQN,MAAR,IAAkB,CAAzB,EAA6B;AACzBM,wBAAQ,CAAR,EAAWK,UAAX,CAAsBC,WAAtB,CAAmCN,QAAQ,CAAR,CAAnC;AACH;AACJ;;AAED,YAAIJ,cAAc,CAAlB,EAAsB;;AAElB,gBAAIW,kBAAJ;AAAA,gBAAeC,gBAAf;;AAEAD,wBAAYf,SAASiB,aAAT,CAAwB,MAAxB,CAAZ,EACAD,UAAUhB,SAASiB,aAAT,CAAwB,MAAxB,CADV,EAEAT,UAAUR,SAASiB,aAAT,CAAwB,KAAxB,CAFV;;AAIAT,oBAAQG,SAAR,CAAkBO,GAAlB,CAAuB,cAAvB;AACAH,sBAAUJ,SAAV,CAAoBO,GAApB,CAAyB,WAAzB,EAAsC,iBAAtC,EAAyD,oBAAzD;AACAF,oBAAQL,SAAR,CAAkBO,GAAlB,CAAuB,WAAvB,EAAoC,sBAApC,EAA4D,uBAA5D;;AAEAV,oBAAQW,WAAR,CAAqBH,OAArB;AACAR,oBAAQW,WAAR,CAAqBJ,SAArB;;AAEAT,iBAAKa,WAAL,CAAkBX,OAAlB;;AAEAA,oBAAQE,UAAR,GAAqBL,QAArB;;AAEAG,oBAAQY,IAAR,GAAe,CAAf;;AAEAL,sBAAUM,OAAV,GAAoB,UAAUC,KAAV,EAAkB;AAClC,oBAAIC,MAAMD,MAAME,MAAN,CAAaX,UAAb,CAAwBH,UAAlC;AAAA,oBACIe,KAAKF,IAAIV,UADb;;AAGA,oBAAIU,OAAOA,IAAIG,SAAJ,CAAcC,KAAd,CAAqB,0BAArB,CAAX,EAA+D;AAC3DC,gCAAYC,0BAAZ,CAAwCN,GAAxC;AACH;;AAED,oBAAIA,GAAJ,EAAU;AACNE,uBAAGX,WAAH,CAAgBS,GAAhB;AACH;;AAED,oBAAIA,OAAO,QAAOA,GAAP,yCAAOA,GAAP,OAAe,QAAtB,IAAkCA,IAAIO,cAAJ,CAAoB,MAApB,CAAlC,IAAkEP,IAAIQ,IAAJ,IAAY,MAAlF,EAA2F;AACvF,wBAAIC,UAAUP,GAAGZ,UAAjB;AACA,wBAAImB,QAAQrB,SAAR,CAAkBsB,QAAlB,CAA4B,iBAA5B,CAAJ,EAAsD;AAClD,4BAAIC,QAAQN,YAAYO,YAAZ,CAA0BH,OAA1B,EAAmC,oBAAnC,CAAZ;AACAJ,oCAAYQ,kBAAZ,CAAgCF,KAAhC;AACH;AACJ;;AAED,oBAAIG,mBAAmB,IAAIvC,iBAAJ,EAAvB;AACAuC,iCAAiBC,aAAjB;;AAEA,oBAAIC,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,0CAA0BE,aAA1B;AACH,aAzBD;;AA2BAzB,oBAAQK,OAAR,GAAkB,UAAEC,KAAF,EAAa;AAC3B,oBAAIoB,aAAJ;AAAA,oBACIC,eADJ;AAAA,oBAEIvB,aAFJ;AAGA,oBAAIwB,gBAAgBtB,MAAME,MAAN,CAAaX,UAAb,CAAwBH,UAA5C;AACA,oBAAImC,KAAKD,cAAc/B,UAAvB;AACA8B,yBAASC,cAAclB,SAAd,CAAwBC,KAAxB,CAA+B,0BAA/B,CAAT;AACA,oBAAIgB,UAAUG,MAAMC,OAAN,CAAeJ,MAAf,CAAd,EAAwC;AACpCvB,2BAAOuB,OAAO,CAAP,CAAP;AACA,wBAAIK,OAAO,EAAX;AACAA,yBAAKjB,IAAL,GAAYX,IAAZ;AACA4B,yBAAKC,QAAL,GAAgBL,aAAhB;AACAI,yBAAKE,YAAL,GAAoB,IAApB;AACAR,2BAAO,IAAIS,kBAAJ,CAAwBH,IAAxB,CAAP;AACApB,gCAAYwB,wBAAZ,CAAsCR,aAAtC,EAAqDF,KAAKW,aAAL,EAArD;AACA;;AAEAR,uBAAGS,YAAH,CAAiBZ,KAAKW,aAAL,EAAjB,EAAuCT,cAAcW,WAArD;AACH,iBAXD,MAWO;AACHb,2BAAO,EAAP;AACA,wBAAIc,cAAcZ,cAAca,SAAd,CAAyB,IAAzB,CAAlB;AACAD,gCAAY7C,SAAZ,CAAsBC,MAAtB,CAA8B,sBAA9B;;AAEA8B,yBAAKW,aAAL,GAAqB,YAAW;AAC5B,+BAAOG,WAAP;AACH,qBAFD;;AAIAE,6CAA0BhB,IAA1B;;AAEAG,uBAAGS,YAAH,CAAiBZ,KAAKW,aAAL,EAAjB,EAAuCT,cAAcW,WAArD;;AAEA3B,gCAAY+B,yBAAZ,CAAuC,yBAAvC,EAAkEf,aAAlE,EAAiFF,KAAKW,aAAL,EAAjF;AACH;;AAEDO,qCAAsBlB,KAAKW,aAAL,EAAtB;;AAEA,oBAAIhB,mBAAmB,IAAIvC,iBAAJ,CAAuB,CAAvB,EAA0B8C,aAA1B,CAAvB;AACAP,iCAAiBwB,aAAjB,CAAgCjB,aAAhC;;AAEA,oBAAIL,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,0CAA0BE,aAA1B;AACH,aAzCD;;AA4CA,gBAAIpC,SAASM,SAAT,CAAmBsB,QAAnB,CAA6B,iBAA7B,CAAJ,EAAuD;AACnD,oBAAI6B,gBAAJ;AACAA,0BAAU9D,SAASiB,aAAT,CAAwB,MAAxB,CAAV;AACA6C,wBAAQnD,SAAR,CAAkBO,GAAlB,CAAuB,WAAvB,EAAoC,gBAApC,EAAsD,kBAAtD;AACA4C,wBAAQC,SAAR,GAAoB,IAApB;AACAvD,wBAAQW,WAAR,CAAqB2C,OAArB;;AAEAA,wBAAQE,WAAR,GAAsB,UAAE1C,KAAF,EAAa;AAC/B,wBAAI2C,8BAA8B,gCAAlC;AACA,wBAAIC,uBAAuBC,GAAGC,QAAH,CAAaH,2BAAb,CAA3B;AACA,wBAAIjB,OAAO,EAAX;AACA,wBAAIqB,uBAAuBH,qBAAsBlB,IAAtB,CAA3B;AACA,wBAAIsB,mBAAmBC,KAAKC,KAAL,CAAYH,oBAAZ,CAAvB;;AAEA,wBAAII,mBAAJ;AAAA,wBACIjE,UAAUc,MAAME,MAAN,CAAaX,UAD3B;AAAA,wBAEIH,aAAaF,QAAQE,UAFzB;AAAA,wBAGIiC,eAHJ;AAAA,wBAIIvB,aAJJ;AAKAuB,6BAASjC,WAAWgB,SAAX,CAAqBC,KAArB,CAA4B,0BAA5B,CAAT;AACA,wBAAIgB,UAAUG,MAAMC,OAAN,CAAeJ,MAAf,CAAd,EAAwC;AACpCvB,+BAAOuB,OAAO,CAAP,CAAP;AACAjC,mCAAWC,SAAX,CAAqBO,GAArB,CAA0B,kBAA1B;;AAEA,4BAAIoD,oBAAoB,QAAOA,gBAAP,yCAAOA,gBAAP,OAA4B,QAAhD,IAA4DA,iBAAiBlD,IAAjB,CAAhE,EAAyF;AACrFqD,yCAAc7C,YAAY8C,cAAZ,CAA4BJ,iBAAiBlD,IAAjB,CAA5B,CAAd;AACH;;AAEDE,8BAAMqD,YAAN,CAAmBC,aAAnB,GAAmC,MAAnC;AACAtD,8BAAMqD,YAAN,CAAmBE,YAAnB,CAAiCJ,UAAjC,EAA6C,CAA7C,EAAgD,CAAhD;AACAnD,8BAAMqD,YAAN,CAAmBG,OAAnB,CAA4B,MAA5B,EAAoC,kBAAkBnC,OAAO,CAAP,CAAlB,GAA8B,GAA9B,GAAoCA,OAAO,CAAP,CAAxE;AACArB,8BAAMqD,YAAN,CAAmBG,OAAnB,CAA4B,kBAA5B,EAAgD,kBAAkBnC,OAAO,CAAP,CAAlB,GAA8B,GAA9B,GAAoCA,OAAO,CAAP,CAApF;AACArB,8BAAMqD,YAAN,CAAmBG,OAAnB,CAA4B,iBAAiBnC,OAAO,CAAP,CAA7C,EAAwD,iBAAiBA,OAAO,CAAP,CAAzE;AACA,4BAAIpB,MAAMD,MAAME,MAAN,CAAaX,UAAb,CAAwBH,UAAlC;AACA,4BAAIa,IAAIQ,IAAJ,IAAY,MAAhB,EAAyB;AACrB,gCAAIC,UAAUT,IAAIV,UAAJ,CAAeA,UAA7B;AACA,gCAAImB,QAAQrB,SAAR,CAAkBsB,QAAlB,CAA4B,iBAA5B,CAAJ,EAAsD;AAClD,oCAAIC,QAAQN,YAAYO,YAAZ,CAA0BH,OAA1B,EAAmC,oBAAnC,CAAZ;AACAJ,4CAAYQ,kBAAZ,CAAgCF,KAAhC;AACH;AACJ;AACJ,qBArBD,MAqBO;AACH,8BAAK6C,KAAL,CAAWC,OAAX,GAAqB,MAArB;AACAC,gCAAQC,GAAR,CAAY,KAAZ;AACH;;AAED,0BAAKC,WAAL;AACH,iBAxCD;;AA0CArB,wBAAQsB,SAAR,GAAoB,UAAE9D,KAAF,EAAa;AAC7BM,gCAAYyD,mBAAZ;AACH,iBAFD;AAGH;;AAED7E,oBAAQuE,KAAR,CAAcC,OAAd,GAAwB,OAAxB;;AAEA,kBAAKjF,WAAL,GAAmBS,OAAnB;AACH;AACJ,KArKD;;AAuKA,SAAKqD,aAAL,GAAqB,UAAExD,QAAF,EAAgB;;AAEjC,YAAI,CAAE,MAAKN,WAAX,EAAyB;AACrB,gBAAIS,UAAUR,SAASC,sBAAT,CAAiC,cAAjC,CAAd;AACA,gBAAIO,QAAQN,MAAR,GAAiB,CAArB,EAAyB;AACrB,sBAAKH,WAAL,GAAmBS,QAAQ,CAAR,CAAnB;AACH,aAFD,MAEO;AACH,sBAAKT,WAAL,GAAmB,KAAnB;AACH;AACJ;;AAED,YAAI,MAAKA,WAAL,IAAoB,MAAKA,WAAL,CAAiBY,SAAjB,CAA2BsB,QAA3B,CAAqC,cAArC,CAAxB,EAAgF;AAC5E,kBAAKlC,WAAL,CAAiBgF,KAAjB,CAAuBC,OAAvB,GAAiC,OAAjC;AACH,SAFD,MAEO;AACH;AACH;;AAED,YAAIM,qBAAqBjF,SAASkF,qBAAT,EAAzB;;AAEA,YAAIC,gBAAgBxF,SAASC,sBAAT,CAAiC,gBAAjC,EAAoD,CAApD,CAApB;AACA,YAAIwF,aAAa,SAAbA,UAAa,GAAM;AACnB,gBAAIH,qBAAqBjF,SAASkF,qBAAT,EAAzB;AACA,kBAAKxF,WAAL,CAAiBgF,KAAjB,CAAuBW,GAAvB,GAA6BC,WAAYL,mBAAmBI,GAA/B,IAAuC,EAAvC,GAA4C,IAAzE;AACH,SAHD;AAIAF,sBAAcI,mBAAd,CAAmC,QAAnC,EAA6CH,UAA7C,EAAyD,KAAzD;;AAEA,cAAK1F,WAAL,CAAiBgF,KAAjB,CAAuBW,GAAvB,GAA6BC,WAAYL,mBAAmBI,GAA/B,IAAuC,EAAvC,GAA4C,IAAzE;AACA,cAAK3F,WAAL,CAAiBgF,KAAjB,CAAuBc,IAAvB,GAAgCF,WAAYL,mBAAmBQ,KAA/B,IAAyCH,WAAY,MAAK5F,WAAL,CAAiBgG,WAA7B,CAA3C,GAA0F,CAA1F,GAA8F,IAA5H;;AAEA,cAAKhG,WAAL,CAAiBgF,KAAjB,CAAuBC,OAAvB,GAAiC,OAAjC;AACA3E,iBAASM,SAAT,CAAmBO,GAAnB,CAAwB,sBAAxB;;AAEAsE,sBAAcQ,gBAAd,CAAgC,QAAhC,EAA0CP,UAA1C,EAAsD,KAAtD;AACH,KAjCD;;AAmCA,SAAKQ,cAAL,GAAsB,UAAE3E,KAAF,EAAS4E,IAAT,EAAe9F,UAAf,EAA+B;AACjD,YAAI,CAAE,MAAKL,WAAX,EAAyB;AACrB,gBAAIS,UAAUR,SAASC,sBAAT,CAAiC,cAAjC,CAAd;AACA,gBAAIO,QAAQN,MAAR,GAAiB,CAArB,EAAyB;AACrB,sBAAKH,WAAL,GAAmBS,QAAQ,CAAR,CAAnB;AACH,aAFD,MAEO;AACH,sBAAKT,WAAL,GAAmB,KAAnB;AACH;AACJ;;AAED,YAAI,CAAE,MAAKA,WAAX,EAAyB;AACrB;AACH;;AAED,YAAIuB,MAAM6E,aAAV,EAA0B;AACtB,gBAAK7E,MAAM6E,aAAN,CAAoBxF,SAApB,CAA8BsB,QAA9B,CAAwC,cAAxC,KACDX,MAAM6E,aAAN,CAAoBxF,SAApB,CAA8BsB,QAA9B,CAAwC,kBAAxC,CADC,IAEDX,MAAM6E,aAAN,CAAoBxF,SAApB,CAA8BsB,QAA9B,CAAwC,uBAAxC,CAFC,IAGDX,MAAM6E,aAAN,CAAoBxF,SAApB,CAA8BsB,QAA9B,CAAwC,oBAAxC,CAHJ,EAGqE;AACjE,oBAAI,CAAE,MAAKlC,WAAX,EAAyB;AACrB,0BAAKA,WAAL,GAAmBC,SAASC,sBAAT,CAAiC,cAAjC,EAAkD,CAAlD,CAAnB;AACH;AACD,sBAAKF,WAAL,CAAiBqG,YAAjB,GAAgC,UAAE9E,KAAF,EAAa;AACzC,wBAAIA,MAAM6E,aAAN,IAAuB,IAAvB,KAAiC7E,MAAM6E,aAAN,CAAoBxF,SAApB,CAA8BsB,QAA9B,CAAwC,iBAAxC,KAC7BL,YAAYO,YAAZ,CAA0Bb,MAAM6E,aAAhC,EAA+C,iBAA/C,CADJ,KAC2E7E,MAAM6E,aAAN,IAAuB,MAAKpG,WAAL,CAAiBW,UADnH,IAEAkB,YAAYO,YAAZ,CAA0Bb,MAAM6E,aAAhC,EAA+C,sBAA/C,KAA2E,MAAKpG,WAAL,CAAiBW,UAFhG,EAE6G;;AAEjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACqB,qBAZD,MAYO,CAEN;;AAED,wBAAI2B,mBAAmB,IAAIvC,iBAAJ,EAAvB;;AAEAuC,qCAAiB4D,cAAjB,CAAiC3E,KAAjC,EAAwCA,MAAM6E,aAAN,CAAoBtF,UAApB,CAA+BA,UAAvE;;AAEAS,0BAAME,MAAN,CAAad,UAAb,CAAwBC,SAAxB,CAAkCC,MAAlC,CAA0C,sBAA1C;AACH,iBAtBD;;AAwBA;AACH;AACJ;;AAEDsF,aAAKvF,SAAL,CAAeC,MAAf,CAAuB,sBAAvB;AACA,cAAKb,WAAL,CAAiBgF,KAAjB,CAAuBC,OAAvB,GAAiC,MAAjC;;AAEA,YAAI1D,MAAM6E,aAAV,EAA0B;AACtB,gBAAI7E,MAAM6E,aAAN,CAAoBxF,SAApB,CAA8BsB,QAA9B,CAAwC,iBAAxC,KAA+DL,YAAYO,YAAZ,CAA0Bb,MAAM6E,aAAhC,EAA+C,iBAA/C,CAAnE,EAAwI;AACpI,sBAAKhG,cAAL,CAAqB,CAArB,EAAwBmB,MAAM6E,aAAN,CAAoBtF,UAA5C;;AAEA,sBAAKgD,aAAL,CAAoBvC,MAAM6E,aAAN,CAAoBtF,UAAxC;AACH;AACJ;AACJ,KA5DD;;AA8DA,SAAKyB,aAAL,GAAqB,YAAM;AACvB,YAAI,CAAE,MAAKvC,WAAX,EAAyB;AACrB,gBAAIS,UAAUR,SAASC,sBAAT,CAAiC,cAAjC,CAAd;AACA,gBAAIO,QAAQN,MAAR,GAAiB,CAArB,EAAyB;AACrB,sBAAKH,WAAL,GAAmBS,QAAQ,CAAR,CAAnB;AACH;AACJ;;AAED,YAAI,MAAKT,WAAT,EAAuB;AACnB,kBAAKA,WAAL,CAAiBc,UAAjB,CAA4BC,WAA5B,CAAyC,MAAKf,WAA9C;AACH;AACJ,KAXD;;AAaA,SAAKoF,WAAL,GAAmB,YAAM;AACrB,YAAI,CAAE,MAAKpF,WAAX,EAAyB;AACrB,gBAAIS,UAAUR,SAASC,sBAAT,CAAiC,cAAjC,CAAd;AACA,gBAAIO,QAAQN,MAAR,GAAiB,CAArB,EAAyB;AACrB,sBAAKH,WAAL,GAAmBS,QAAQ,CAAR,CAAnB;AACH;AACJ;;AAED,YAAI,MAAKT,WAAT,EAAuB;AACnB,kBAAKA,WAAL,CAAiBgF,KAAjB,CAAuBsB,OAAvB,GAAiC,CAAjC;AACH;AACJ,KAXD;AAYH,CAxSD;ACAA,CAAC,YAAY;AACT,QAAIC,eAAe,SAAfA,YAAe,GAAY;AAC3B,YAAIC,WAAW3E,YAAY4E,UAAZ,EAAf;AACA,YAAKD,QAAL,EAAgB;AACZ,gBAAIE,OAAO,IAAIC,cAAJ,EAAX;AAAA,gBACIC,SAASC,UAAU,mBAAV,GAAgC,MAAhC,GAAyCL,QADtD;AAEAE,iBAAKI,IAAL,CAAU,KAAV,EAAiBF,MAAjB,EAAyB,IAAzB;AACAF,iBAAKK,gBAAL,CAAsB,cAAtB,EAAsC,mCAAtC;AACAL,iBAAKM,kBAAL,GAA0B,UAAUC,CAAV,EAAa;AACnC,oBAAI,KAAKC,UAAL,IAAmB,CAAnB,IAAwB,KAAKC,MAAL,IAAe,GAA3C,EAAgD;AAC5C,wBAAIC,MAAM5C,KAAKC,KAAL,CAAWiC,KAAKW,YAAhB,CAAV;AACApH,6BAASqH,cAAT,CAAwB,iBAAxB,EAA2CC,KAA3C,GAAmDH,IAAI,CAAJ,CAAnD;;AAEA,wBAAIA,IAAI,CAAJ,CAAJ,EAAa;AACTnH,iCAASC,sBAAT,CAAgC,sBAAhC,EAAwD,CAAxD,EAA2D8E,KAA3D,CAAiEC,OAAjE,GAA2E,MAA3E;AACA,4BAAIuC,mBAAmBvH,SAASC,sBAAT,CAAgC,kBAAhC,EAAoD,CAApD,CAAvB;AACAsH,yCAAiBpG,WAAjB,CAA8BqG,YAAaL,IAAI,CAAJ,CAAb,CAA9B;;AAEA,4BAAI7G,OAAON,SAASO,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAAX;;AAEA,4BAAI4G,IAAI,CAAJ,CAAJ,EAAa;AACT,gCAAIM,4BAA4BzH,SAASiB,aAAT,CAAwB,QAAxB,CAAhC;AACAwG,sDAA0BC,YAA1B,CAAwC,MAAxC,EAAgD,WAAhD;AACAD,sDAA0BC,YAA1B,CAAwC,OAAxC,EAAiD,oBAAjD;;AAEAD,sDAA0BE,SAA1B,GAAsCR,IAAI,CAAJ,CAAtC;;AAEA7G,iCAAKa,WAAL,CAAkBsG,yBAAlB;AACH;;AAEDG;AACAC;AACAC;;AAEA,4BAAIvF,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kDAA0BE,aAA1B;AACH,qBAvBD,MAuBO;AACHzC,iCAASC,sBAAT,CAAgC,sBAAhC,EAAwD,CAAxD,EAA2D8E,KAA3D,CAAiEC,OAAjE,GAA2E,OAA3E;AACH;;AAED;AACH;AACJ,aAlCD;AAmCAyB,iBAAKsB,IAAL,CAAU,IAAV;AACH,SAzCD,MAyCO;AACH/H,qBAASC,sBAAT,CAAgC,sBAAhC,EAAwD,CAAxD,EAA2D8E,KAA3D,CAAiEC,OAAjE,GAA2E,OAA3E;AACH;AACDhF,iBAASgI,OAAT,GAAmB,IAAIC,eAAJ,EAAnB;AACAjI,iBAASkI,MAAT,GAAkB,IAAIC,cAAJ,EAAlB;;AAEA,YAAIC,cAAcC,kBAAlB;AACAC,mBAAWR,eAAX;AACH,KAnDD;;AAqDA9H,aAASgG,gBAAT,CAA0B,kBAA1B,EAA8CM,YAA9C;AACH,CAvDD;ACAA,IAAIiC,YAAY,SAAZA,SAAY,CAAUC,QAAV,EAAoBC,UAApB,EAAgC;;AAE5C,aAASC,YAAT,CAAsB7F,EAAtB,EAA0B;AACtB,YAAI8F,YAAY9F,GAAGhC,UAAnB;AAAA,YACI+H,cAAcC,SAAS7I,SAASqH,cAAT,CAAwB,qBAAxB,EAA+CC,KAAxD,CADlB;AAAA,YAEIwB,MAAM9I,SAASC,sBAAT,CAAgC,oBAAhC,EAAsD,CAAtD,EAAyDM,oBAAzD,CAA8E,IAA9E,CAFV;AAGA,aAAK,IAAIwI,IAAI,CAAb,EAAgBA,IAAID,IAAI5I,MAAxB,EAAgC6I,GAAhC,EAAqC;AACjCD,gBAAIC,CAAJ,EAAOpI,SAAP,CAAiBC,MAAjB,CAAwB,4BAAxB,EAAsD,2BAAtD,EAAmF,4BAAnF,EAAiH,+BAAjH,EAAkJ,8BAAlJ,EAAkL,+BAAlL;AACH;AACD,aAAK,IAAImI,IAAI,CAAb,EAAgBA,IAAIH,WAApB,EAAiCG,GAAjC,EAAsC;;AAElC,gBAAIC,aAAaD,KAAK,CAAL,GAAS,4BAAT,GAAwCA,KAAKH,cAAc,CAAnB,GAAuB,2BAAvB,GAAqD,4BAA9G;AACA,gBAAIK,MAAMN,UAAUpI,oBAAV,CAA+B,IAA/B,EAAqCwI,CAArC,CAAV;AACA,gBAAIE,QAAQpG,EAAZ,EAAgB;AACZoG,oBAAItI,SAAJ,CAAcO,GAAd,CAAkB8H,UAAlB;AACH;AACJ;AACJ;;AAED,aAASE,eAAT,CAAyBrG,EAAzB,EAA6B;;AAEzB,YAAIsG,KAAJ;AAAA,YACIR,YAAY9F,GAAGhC,UADnB;AAEA+H,sBAAcC,SAAS7I,SAASqH,cAAT,CAAwB,qBAAxB,EAA+CC,KAAxD,CAAd,EAA8E8B,WAAWP,SAAS7I,SAASqH,cAAT,CAAwB,kBAAxB,EAA4CC,KAArD,CAAzF,EAAsJpF,QAAQlC,SAASC,sBAAT,CAAgC,oBAAhC,EAAsD,CAAtD,CAA9J;AACA,aAAK,IAAI8I,IAAI,CAAb,EAAgBA,IAAIH,WAApB,EAAiCG,GAAjC,EAAsC;AAClC,gBAAIJ,UAAUpI,oBAAV,CAA+B,IAA/B,EAAqCwI,CAArC,MAA4ClG,EAAhD,EAAoD;AAChDsG,wBAAQJ,CAAR;AACA;AACH;AACJ;;AAED,aAAK,IAAIA,IAAI,CAAb,EAAgBA,IAAIK,QAApB,EAA8BL,GAA9B,EAAmC;AAC/B,gBAAIC,aAAaD,KAAK,CAAL,GAAS,+BAAT,GAA2CA,KAAKK,WAAW,CAAhB,GAAoB,8BAApB,GAAqD,+BAAjH;AACA,gBAAIC,KAAKnH,MAAM3B,oBAAN,CAA2B,IAA3B,EAAiCwI,CAAjC,CAAT;AACA,gBAAIM,GAAG9I,oBAAH,CAAwB,IAAxB,EAA8B4I,KAA9B,MAAyCtG,EAA7C,EAAiD;AAC7CwG,mBAAG9I,oBAAH,CAAwB,IAAxB,EAA8B4I,KAA9B,EAAqCxI,SAArC,CAA+CO,GAA/C,CAAmD8H,UAAnD;AACH;AACJ;AACJ;;AAED,QAAI,CAAEP,UAAN,EAAmB;AACfA,qBAAazI,SAASiB,aAAT,CAAuB,IAAvB,CAAb;;AAEAwH,mBAAW1D,KAAX,CAAiBuE,OAAjB,GAA2BC,OAAO,4BAAP,EAAqCC,GAArC,KAA6C,IAAxE;;AAEA,YAAIC,mBAAmBF,OAAO,iCAAP,EAA0CC,GAA1C,EAAvB;;AAEA,YAAIC,oBAAoB,EAApB,IAA0BZ,SAASY,gBAAT,KAA8B,CAA5D,EAA+D;AAC3DhB,uBAAW1D,KAAX,CAAiB2E,MAAjB,GAA0BD,mBAAmB,WAAnB,GAAiCF,OAAO,0BAAP,EAAmCC,GAAnC,EAA3D;AACH;;AAEDf,mBAAW9H,SAAX,CAAqBO,GAArB,CAAyB,gBAAzB,EAA2C,WAA3C;AACH;;AAEDuH,eAAW1E,SAAX,GAAuB,KAAvB;AACA,QAAKyE,QAAL,EAAgB;AACZC,mBAAWpH,OAAX,GAAqBmH,QAArB;AACH;;AAED5E,yBAAsB6E,UAAtB;;AAEA,QAAIkB,gBAAgBlB,WAAWxI,sBAAX,CAAmC,iBAAnC,CAApB;;AAEA,QAAK0J,cAAczJ,MAAd,GAAuB,CAA5B,EAAgC;AAAA,mCACnB6I,CADmB;AAExBY,0BAAcZ,CAAd,EAAiB1F,aAAjB,GAAiC,YAAW;AACxC,uBAAOsG,cAAcZ,CAAd,CAAP;AACH,aAFD;;AAIAnF,iCAAsB+F,cAAcZ,CAAd,CAAtB;;AAEA,gBAAIa,uBAAuBD,cAAcZ,CAAd,EAAiBrH,SAAjB,CAA2BC,KAA3B,CAAkC,0BAAlC,CAA3B;AACA,gBAAIiI,wBAAwB9G,MAAMC,OAAN,CAAe6G,oBAAf,CAA5B,EAAoE;AAAA;AAChE,wBAAIC,qBAAqBD,qBAAqB,CAArB,EAAwBE,KAAxB,CAA+B,GAA/B,CAAzB;AACAH,kCAAcZ,CAAd,EAAiBhH,IAAjB,GAAwB8H,mBAAmB,CAAnB,CAAxB;AACAnG,6CAA0BiG,cAAcZ,CAAd,CAA1B,EAA4Ca,qBAAqB,CAArB,CAA5C;AACA,wBAAIG,4BAA4BJ,cAAcZ,CAAd,EAAiB9I,sBAAjB,CAAyC,iBAAzC,CAAhC;AACA,wBAAK8J,0BAA0B7J,MAA1B,GAAmC,CAAxC,EAA4C;AAAA,qDAC9B8J,CAD8B;AAEpC,gCAAIC,+BAA+B,EAAnC;AACAA,yDAA6B5G,aAA7B,GAA6C,YAAW;AACpD,uCAAO0G,0BAA0BC,CAA1B,CAAP;AACH,6BAFD;;AAIAtG,qDAA0BuG,4BAA1B;AAPoC;;AACxC,6BAAM,IAAID,IAAI,CAAd,EAAiBA,IAAID,0BAA0B7J,MAA/C,EAAuD8J,GAAvD,EAA6D;AAAA,mCAAnDA,CAAmD;AAO5D;AACJ;AAd+D;AAenE;AAxBuB;;AAC5B,aAAK,IAAIjB,IAAI,CAAb,EAAgBA,IAAIY,cAAczJ,MAAlC,EAA0C6I,GAA1C,EAAgD;AAAA,kBAAvCA,CAAuC;AAwB/C;AACJ;;AAED,SAAK1F,aAAL,GAAqB,YAAY;AAC7B,eAAOoF,UAAP;AACH,KAFD;;AAIA,SAAKyB,SAAL,GAAiB,UAAUC,CAAV,EAAaC,CAAb,EAAgB;AAC7B,YAAI3I,KAAK,KAAK4B,aAAL,EAAT;AACA5B,WAAG4I,OAAH,CAAWC,MAAX,GAAoBH,CAApB;AACA1I,WAAG4I,OAAH,CAAWE,MAAX,GAAoBH,CAApB;AACH,KAJD;;AAMA,SAAKI,SAAL,GAAiB,YAAY;AACzB,YAAIC,MAAJ;AAAA,YACIhJ,KAAK,KAAK4B,aAAL,EADT;AAEAoH,eAAOL,CAAP,GAAW3I,GAAG4I,OAAH,CAAWE,MAAtB;AACAE,eAAON,CAAP,GAAW1I,GAAG4I,OAAH,CAAWC,MAAtB;AACA,eAAOG,MAAP;AACH,KAND;;AAQA,SAAKC,aAAL,GAAqB,UAAUxE,IAAV,EAAgB;AACjC7C,wBAAgBlC,WAAhB,CAA4B+E,IAA5B;AACH,KAFD;;AAIAuC,eAAWkC,iBAAX,GAA+B,YAAW;AACtC,YAAIC,aAAaC,OAAOC,gBAAP,CAAyB,IAAzB,EAA+B,IAA/B,CAAjB;;AAEA,YAAIC,gBAAgBH,WAAWI,gBAAX,CAA6B,cAA7B,CAApB;AACA,YAAIC,iBAAiBL,WAAWI,gBAAX,CAA6B,eAA7B,CAArB;;AAEA,YAAIE,oBAAoBN,WAAWI,gBAAX,CAA6B,mBAA7B,CAAxB;AACA,YAAIG,qBAAqBP,WAAWI,gBAAX,CAA6B,oBAA7B,CAAzB;;AAEA,YAAII,eAAeR,WAAWI,gBAAX,CAA6B,aAA7B,CAAnB;AACA,YAAIK,kBAAkBT,WAAWI,gBAAX,CAA6B,gBAA7B,CAAtB;;AAEA,YAAIM,mBAAmBV,WAAWI,gBAAX,CAA6B,kBAA7B,CAAvB;AACA,YAAIO,sBAAsBX,WAAWI,gBAAX,CAA6B,qBAA7B,CAA1B;;AAEA,YAAIQ,QAAQ7F,WAAY,KAAK8F,WAAjB,EAA8B,EAA9B,IACA9F,WAAYoF,aAAZ,EAA2B,EAA3B,CADA,GAEApF,WAAYsF,cAAZ,EAA4B,EAA5B,CAFA,GAGAtF,WAAYuF,iBAAZ,EAA+B,EAA/B,CAHA,GAIAvF,WAAYwF,kBAAZ,EAAgC,EAAhC,CAJZ;;AAMA,YAAIO,SAAS/F,WAAY,KAAKgG,YAAjB,EAA+B,EAA/B,IACDhG,WAAYyF,YAAZ,EAA0B,EAA1B,CADC,GAEDzF,WAAY0F,eAAZ,EAA6B,EAA7B,CAFC,GAGD1F,WAAY2F,gBAAZ,EAA8B,EAA9B,CAHC,GAID3F,WAAY4F,mBAAZ,EAAiC,EAAjC,CAJZ;;AAMA,eAAO;AACHC,mBAAOA,KADJ;AAEHE,oBAAQA;AAFL,SAAP;AAIH,KA/BD;;AAiCA,WAAO,IAAP;AACH,CAnJD;ACAA,IAAIE,kBAAkB,SAAlBA,eAAkB,CAAUC,QAAV,EAAoBC,CAApB,EAAuB;;AAEzC,QAAIC,uBAAJ;AAAA,QACIC,6BADJ;AAEA,QAAKhM,SAASC,sBAAT,CAAiC,kBAAjC,EAAsDC,MAAtD,IAAgE,CAArE,EAAyE;AACrE6L,yBAAiB/L,SAASiB,aAAT,CAAwB,KAAxB,CAAjB;AACA8K,uBAAepL,SAAf,CAAyBO,GAAzB,CAA8B,kBAA9B;;AAEA8K,+BAAuBhM,SAASiB,aAAT,CAAwB,KAAxB,CAAvB;AACA+K,6BAAqBrL,SAArB,CAA+BO,GAA/B,CAAoC,yBAApC;;AAEA,YAAI+K,2BAA0BjM,SAASiB,aAAT,CAAwB,KAAxB,CAA9B;AAAA,YACIiL,6BAA4BlM,SAASiB,aAAT,CAAwB,KAAxB,CADhC;AAAA,YAEIkL,8BAA6BnM,SAASiB,aAAT,CAAwB,KAAxB,CAFjC;AAAA,YAGImL,4BAA2BpM,SAASiB,aAAT,CAAwB,KAAxB,CAH/B;;AAKAgL,iCAAwBtL,SAAxB,CAAkCO,GAAlC,CAAuC,6BAAvC;AACAgL,mCAA0BvL,SAA1B,CAAoCO,GAApC,CAAyC,+BAAzC;AACAiL,oCAA2BxL,SAA3B,CAAqCO,GAArC,CAA0C,gCAA1C;AACAkL,kCAAyBzL,SAAzB,CAAmCO,GAAnC,CAAwC,8BAAxC;;AAEA8K,6BAAqB7K,WAArB,CAAkC8K,wBAAlC;AACAD,6BAAqB7K,WAArB,CAAkC+K,0BAAlC;AACAF,6BAAqB7K,WAArB,CAAkCgL,2BAAlC;AACAH,6BAAqB7K,WAArB,CAAkCiL,yBAAlC;;AAEA,YAAI9L,OAAON,SAASO,oBAAT,CAA+B,MAA/B,CAAX;AACA,YAAKD,KAAKJ,MAAL,GAAc,CAAnB,EAAuB;AACnBI,iBAAK,CAAL,EAAQa,WAAR,CAAqB4K,cAArB;AACAzL,iBAAK,CAAL,EAAQa,WAAR,CAAqB6K,oBAArB;AACH;;AAEDD,uBAAeM,WAAf,GAA6B,YAAY,CAExC,CAFD;;AAIAN,uBAAeO,UAAf,GAA4B,UAAUR,CAAV,EAAa;AACrCA,cAAES,cAAF;AACH,SAFD;;AAIAR,uBAAeS,WAAf,GAA6B,YAAY,CAExC,CAFD;AAGAT,uBAAeU,MAAf,GAAwB,UAAUX,CAAV,EAAa;AACjCA,cAAES,cAAF;AACA,gBAAIG,gBAAJ;;AAEA,gBAAKZ,EAAEnH,YAAF,CAAegI,OAAf,CAAuB,aAAvB,CAAL,EAA6C;AACzCD,0BAAU9K,YAAYgL,eAAZ,CAA6Bd,EAAEnH,YAAF,CAAegI,OAAf,CAAuB,aAAvB,CAA7B,CAAV;AACAD,0BAAUA,QAAQrJ,aAAR,EAAV;AACH,aAHD,MAGO;AACHqJ,0BAAU1M,SAASC,sBAAT,CAAiC6L,EAAEnH,YAAF,CAAegI,OAAf,CAAuB,MAAvB,CAAjC,EAAkE,CAAlE,CAAV;AACAD,wBAAQ/L,SAAR,CAAkBC,MAAlB,CAA0B,kBAA1B;AACA8L,wBAAQ/L,SAAR,CAAkBC,MAAlB,CAA0B,4BAA1B;AACA8L,wBAAQG,cAAR,GAAyB,CAAzB;AACH;;AAED,gBAAIhK,WAAJ;AACA,gBAAIkJ,eAAe1B,OAAf,CAAuByC,IAAvB,IAA+B,WAAnC,EAAiD;AAC7CjB,2BAAWE,eAAegB,mBAAf,EAAX;AACA,oBAAKlB,SAASmB,QAAT,CAAkBC,WAAlB,MAAmC,IAAxC,EAA+C;AAC3CpK,yBAAKkJ,eAAegB,mBAAf,EAAL;AACAlK,uBAAG1B,WAAH,CAAgBuL,OAAhB;AACH;AACJ,aAND,MAMO;AACH,oBAAIQ,eAAenB,eAAegB,mBAAf,EAAnB;AACAlK,qBAAKqK,aAAarM,UAAlB;;AAEA,oBAAIkL,eAAe1B,OAAf,CAAuByC,IAAvB,IAA+B,eAAnC,EAAqD;AACjDjK,uBAAGS,YAAH,CAAiBoJ,OAAjB,EAA0BQ,YAA1B;AACH,iBAFD,MAEO,IAAInB,eAAe1B,OAAf,CAAuByC,IAAvB,IAA+B,eAAnC,EAAqD;AACxD,wBAAIK,mBAAmBD,aAAa3J,WAApC;AACAV,uBAAGS,YAAH,CAAiBoJ,OAAjB,EAA0BS,gBAA1B;AACH;AACJ;;AAED,gBAAInL,UAAUa,GAAGhC,UAAjB;AACA,gBAAImB,QAAQrB,SAAR,CAAkBsB,QAAlB,CAA4B,iBAA5B,CAAJ,EAAsD;AAClD,oBAAIC,QAAQN,YAAYO,YAAZ,CAA0BH,OAA1B,EAAmC,oBAAnC,CAAZ;AACAJ,4BAAYQ,kBAAZ,CAAgCF,KAAhC;AACH;;AAED;AACA,gBAAIS,SAAS+J,QAAQhL,SAAR,CAAkBC,KAAlB,CAAwB,0BAAxB,CAAb;AACA,gBAAIyL,WAAWzK,OAAO,CAAP,CAAf;AACA,gBAAKmJ,EAAEnH,YAAF,CAAegI,OAAf,CAAwB,aAAxB,MAA6CS,YAAY,MAAZ,IAAsBA,YAAY,QAAlC,IAA8CA,YAAY,OAA1D,IAAqEA,YAAY,aAAjF,IAAkGA,YAAY,MAA3J,CAAL,EAA2K;AACvK;AACH;;AAEDrB,2BAAehH,KAAf,CAAqBC,OAArB,GAA+B,MAA/B;AACAgH,iCAAqBjH,KAArB,CAA2BC,OAA3B,GAAqC,MAArC;;AAEApB,iCAAqB8I,OAArB;AACA,gBAAI,CAAEA,QAAQ/L,SAAR,CAAkBsB,QAAlB,CAA4B,sBAA5B,CAAF,IAA0DyK,QAAQG,cAAR,IAA0B,CAAxF,EAA4F;AACxF,oBAAItK,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,0CAA0BE,aAA1B;AACAiK,wBAAQG,cAAR,IAA0BQ,SAA1B;AACH;AACJ,SAvDD;AAwDA,YAAI7H,gBAAgBxF,SAASsN,aAAT,CAAwB,iBAAxB,CAApB;AACA9H,sBAAc+H,QAAd,GAAyB,YAAW;AAChCxB,2BAAehH,KAAf,CAAqBC,OAArB,GAA+B,MAA/B;AACAgH,iCAAqBjH,KAArB,CAA2BC,OAA3B,GAAqC,MAArC;AACH,SAHD;AAIH,KApGD,MAoGO;AACH+G,yBAAiB/L,SAASC,sBAAT,CAAiC,kBAAjC,EAAsD,CAAtD,CAAjB;AACA+L,+BAAuBhM,SAASC,sBAAT,CAAiC,yBAAjC,EAA6D,CAA7D,CAAvB;AACH;AACD,QAAI4L,YAAYA,SAASmB,QAAT,CAAkBC,WAAlB,MAAmC,IAA/C,IACIpB,SAAS5L,sBAAT,CAAiC,iBAAjC,EAAqDC,MAArD,IAA+D,CADvE,EAC2E;AACvE;AACH;;AAED,QAAI8B,gBAAJ;AACA,QAAK6J,SAAS2B,SAAT,IAAsB,IAA3B,EAAkC;AAC9BxL,kBAAU6J,SAAShL,UAAnB;AACH,KAFD,MAEO,IAAKgL,SAAS2B,SAAT,IAAsB,KAAtB,IAA+B3B,SAASlL,SAAT,CAAmBsB,QAAnB,CAA6B,iBAA7B,CAApC,EAAuF;AAC1FD,kBAAU6J,SAAShL,UAAT,CAAoBA,UAA9B;AACH;AACD,QAAImB,QAAQrB,SAAR,CAAkBsB,QAAlB,CAA4B,iBAA5B,CAAJ,EAAsD;AAClD,YAAIwL,SAAS3B,EAAEnH,YAAF,CAAe+I,KAA5B;AACA,YAAIC,eAAe,KAAnB;AACA,aAAM,IAAI5E,IAAI,CAAd,EAAiBA,IAAI0E,OAAOvN,MAA5B,EAAoC6I,GAApC,EAA0C;AACtC,gBAAIpG,SAAS8K,OAAO1E,CAAP,EAAUpH,KAAV,CAAiB,uBAAjB,CAAb;AACA,gBAAKgB,UAAUA,OAAO,CAAP,KAAa,MAA5B,EAAqC;AACjCgL,+BAAe,IAAf;AACA;AACH;AACJ;AACD,YAAIA,YAAJ,EAAmB;AACf;AACH;AACJ;;AAED5B,mBAAehH,KAAf,CAAqByG,KAArB,GAA6BK,SAASJ,WAAT,GAAuB,IAApD;AACA,QAAIC,SAASG,SAASF,YAAtB;AAAA,QACIrG,qBAAqBuG,SAAStG,qBAAT,EADzB;AAAA,QAEIM,OAAOF,WAAYL,mBAAmBO,IAA/B,CAFX;AAAA,QAGIH,YAHJ;AAIAqG,mBAAehH,KAAf,CAAqBc,IAArB,GAA4BA,OAAO,IAAnC;;AAEA,QAAIiG,EAAEnH,YAAF,CAAe+I,KAAf,CAAqBE,OAArB,CAA8B,kBAA9B,KAAsD,CAAC,CAA3D,EAA+D;AAC3D,YAAIC,cAAc7N,SAASC,sBAAT,CAAiC,kBAAjC,EAAsD,CAAtD,CAAlB;AACA,YAAI4L,YAAYgC,WAAhB,EAA8B;AAC1B9B,2BAAepL,SAAf,CAAyBO,GAAzB,CAA6B,4BAA7B;AACA8K,iCAAqBrL,SAArB,CAA+BO,GAA/B,CAAmC,4BAAnC;AACH,SAHD,MAGO;AACH6K,2BAAepL,SAAf,CAAyBC,MAAzB,CAAgC,4BAAhC;AACAoL,iCAAqBrL,SAArB,CAA+BC,MAA/B,CAAsC,4BAAtC;AACH;AACJ;;AAEDmL,mBAAegB,mBAAf,GAAqC,YAAW;AAC5C,eAAOlB,QAAP;AACH,KAFD;;AAIAE,mBAAehH,KAAf,CAAqBC,OAArB,GAA+B,OAA/B;AACAgH,yBAAqBjH,KAArB,CAA2BC,OAA3B,GAAqC,OAArC;AACA,QAAI6G,SAASmB,QAAT,CAAkBC,WAAlB,MAAmC,IAAvC,EAA8C;AAC1C,YAAI9C,IAAI2B,EAAEgC,OAAF,IAAWT,SAAX,GAAqBvB,EAAEiC,MAAvB,GAA8BjC,EAAEgC,OAAxC;AACApI,cAAMC,WAAYL,mBAAmBI,GAA/B,IAAuCC,WAAY,EAAZ,CAA7C;AACAoG,uBAAe1B,OAAf,CAAuByC,IAAvB,GAA8B,eAA9B;AACA,YAAK3C,IAAIuB,SAAO,CAAhB,EAAoB;AAChBhG,kBAAMC,WAAYL,mBAAmBI,GAA/B,IAAuCgG,MAAvC,GAAgD,CAAtD;AACAK,2BAAe1B,OAAf,CAAuByC,IAAvB,GAA8B,eAA9B;AACH;AACJ,KARD,MAQO;AACHf,uBAAe1B,OAAf,CAAuByC,IAAvB,GAA8B,WAA9B;AACApH,cAAMC,WAAYL,mBAAmBI,GAA/B,IAAuCgG,SAAO,CAA9C,GAAkD,CAAxD;AACH;AACDK,mBAAehH,KAAf,CAAqBW,GAArB,GAA2BA,MAAM,IAAjC;;AAEAsG,yBAAqBjH,KAArB,CAA2BW,GAA3B,GAAiCJ,mBAAmBI,GAAnB,GAAyB,IAA1D;AACAsG,yBAAqBjH,KAArB,CAA2Bc,IAA3B,GAAkCP,mBAAmBO,IAAnB,GAA0B,IAA5D;;AAEAoG,8BAA0BD,qBAAqBsB,aAArB,CAAoC,8BAApC,CAA1B;AACArB,4BAAwBlH,KAAxB,CAA8ByG,KAA9B,GAAwC7F,WAAYkG,SAASJ,WAArB,IAAqC9F,WAAY,CAAZ,CAAvC,GAA2D,IAAjG;;AAEAuG,gCAA4BF,qBAAqBsB,aAArB,CAAoC,gCAApC,CAA5B;AACApB,8BAA0BnH,KAA1B,CAAgC2G,MAAhC,GAA2C/F,WAAYL,mBAAmB0I,MAA/B,IAA0CrI,WAAYL,mBAAmBI,GAA/B,CAA1C,GAAiF,CAAnF,GAAyF,IAAlI;AACAwG,8BAA0BnH,KAA1B,CAAgCc,IAAhC,GAAuCoG,wBAAwBlH,KAAxB,CAA8ByG,KAArE;;AAEAW,iCAA6BH,qBAAqBsB,aAArB,CAAoC,iCAApC,CAA7B;AACAnB,+BAA2BpH,KAA3B,CAAiCyG,KAAjC,GAAyCS,wBAAwBlH,KAAxB,CAA8ByG,KAAvE;AACAW,+BAA2BpH,KAA3B,CAAiCW,GAAjC,GAAuCwG,0BAA0BnH,KAA1B,CAAgC2G,MAAvE;;AAEAU,+BAA2BJ,qBAAqBsB,aAArB,CAAoC,+BAApC,CAA3B;AACAlB,6BAAyBrH,KAAzB,CAA+B2G,MAA/B,GAAwCQ,0BAA0BnH,KAA1B,CAAgC2G,MAAxE;AACH,CA5LD;ACAA,IAAIzD,kBAAkB,SAAlBA,eAAkB,GAAY;;AAEjC,KAAIgG,OAAO,EAAX;AACAA,MAAK,MAAL,IAAe,CAAf;AACAA,MAAK,OAAL,IAAgB,CAAhB;AACAA,MAAK,MAAL,IAAe,CAAf;AACAA,MAAK,QAAL,IAAiB,CAAjB;;AAEA,MAAKC,SAAL,GAAiB,UAAUC,GAAV,EAAe;AAC/B,MAAI,EAAEA,OAAOF,IAAT,CAAJ,EAAoB;AACnB;AACA;AACDA,OAAKE,GAAL;AACA,EALD;;AAOA,MAAKC,SAAL,GAAiB,UAAUD,GAAV,EAAe;AAC/B,MAAI,EAAEA,OAAOF,IAAT,CAAJ,EAAoB;AACnB,UAAOZ,SAAP;AACA;AACD,SAAOY,KAAKE,GAAL,IAAY,CAAnB;AACA,EALD;;AAOA,QAAO,IAAP;AAEA,CAxBD;ACAA,IAAIhL,qBAAqB,SAArBA,kBAAqB,CAAWH,IAAX,EAAkB;AACvC,QAAIyF,mBAAJ;AAAA,QAAgB4F,sBAAhB;AAAA,QAA+B3L,aAA/B;AACA,QAAI,CAAEM,KAAKC,QAAX,EAAsB;AAClBwF,qBAAazI,SAASiB,aAAT,CAAuB,KAAvB,CAAb,EACAoN,gBAAgBhB,SADhB,EAEA3K,OAAO,KAFP;AAGA+F,mBAAW9H,SAAX,CAAqBO,GAArB,CAA0B,UAAU8B,KAAKjB,IAAf,GAAsB,YAAhD,EAA8D,iBAA9D,EAAiF,4BAAjF;;AAEA,YAAIuM,eAAe,UAAUtL,KAAKjB,IAAf,GAAsB,UAAzC;AACA,YAAIqC,WAAWD,GAAGC,QAAH,CAAakK,YAAb,CAAf;AACAtL,aAAKkD,IAAL,GAAYuC,UAAZ;AACA,YAAI8F,WAAWnK,SAAUpB,IAAV,CAAf;;AAEAuL,mBAAWA,SAASC,OAAT,CAAiB,WAAjB,EAA8B,EAA9B,EAAkCC,IAAlC,EAAX;AACAhG,mBAAWd,SAAX,GAAuB4G,QAAvB;AACH,KAbD,MAaO;AACH9F,qBAAazF,KAAKC,QAAL,CAAcQ,SAAd,CAAyB,IAAzB,CAAb;AACAgF,mBAAW9H,SAAX,CAAqBC,MAArB,CAA6B,sBAA7B;AACA,YAAI8N,mBAAmB1L,KAAKC,QAAL,CAAcvB,SAAd,CAAwBC,KAAxB,CAA+B,0BAA/B,CAAvB;AACA,YAAK+M,oBAAoB5L,MAAMC,OAAN,CAAe2L,gBAAf,CAAzB,EAA6D;AACzDL,4BAAgBK,iBAAiB,CAAjB,CAAhB;AACH;AACDhM,eAAO,IAAP;;AAEA,YAAIM,KAAKE,YAAT,EAAwB;AACpBuF,yBAAa7G,YAAY+M,uBAAZ,CAAqClG,UAArC,CAAb;AACH;AACJ;;AAED,QAAImG,UAAUnG,WAAWoG,gBAAX,CAA6B,kBAA7B,CAAd;AACA,QAAID,QAAQ1O,MAAR,GAAiB,CAArB,EAAyB;AAAA,mCACX6I,CADW;AAEjB,gBAAI+F,YAAY,EAAhB;AACAA,sBAAUzL,aAAV,GAA0B,YAAW;AACjC,uBAAOuL,QAAQ7F,CAAR,CAAP;AACH,aAFD;;AAIArF,qCAA0BoL,SAA1B;AAPiB;;AACrB,aAAM,IAAI/F,IAAI,CAAd,EAAiBA,IAAI6F,QAAQ1O,MAA7B,EAAqC6I,GAArC,EAA2C;AAAA,kBAAjCA,CAAiC;AAO1C;AACJ;;AAED8B,WAAO7E,gBAAP,CAAyB,mBAAzB,EAA8C,UAAU1E,KAAV,EAAkB;AAC5D;AACH,KAFD,EAEG,KAFH;;AAKA,SAAKS,IAAL,GAAYiB,KAAKjB,IAAjB;AACA,SAAKsB,aAAL,GAAqB,YAAY;AAC7B,eAAOoF,UAAP;AACH,KAFD;;AAIA/E,6BAA0B,IAA1B,EAAgC2K,aAAhC,EAA+C3L,IAA/C;AACA,WAAO,IAAP;AACH,CArDD;ACAA,IAAIqM,sBAAsB,SAAtBA,mBAAsB,CAAWrC,OAAX,EAAoBvD,KAApB,EAA2BkF,aAA3B,EAA2C;;AAEjE,QAAInI,OAAOwG,QAAQrJ,aAAR,EAAX;AAAA,QAAoC2L,WAApC;;AAEA9I,SAAK7E,OAAL,GAAe,YAAY;AACvB,YAAI4N,WAAWjP,SAASqH,cAAT,CAAwB,uBAAxB,EAAiD6H,UAAhE;AACA,aAAM,IAAInG,KAAI,CAAd,EAAiBA,KAAIkG,SAAS/O,MAA9B,EAAsC6I,IAAtC,EAA2C;AACvC,gBAAIkG,SAASlG,EAAT,EAAYhE,KAAhB,EACIkK,SAASlG,EAAT,EAAYhE,KAAZ,CAAkBC,OAAlB,GAA4B,MAA5B;AACP;;AAED,YAAIrC,SAAS,KAAKjB,SAAL,CAAeC,KAAf,CAAsB,0BAAtB,CAAb;AACA;AACA,YAAIwN,2BAA2B,UAAUzC,QAAQ3K,IAAlB,GAAyB,gBAAxD;AACA,YAAIqN,qBAAqBjL,GAAGC,QAAH,CAAa+K,wBAAb,CAAzB;AACA,YAAInM,OAAO;AACPqM,uBAAW,MAAM1M,OAAO,CAAP;AADV,SAAX;AAGA,YAAI2M,yBAAyBF,mBAAoBpM,IAApB,CAA7B;AACA,YAAIuM,qBAAqBhL,KAAKC,KAAL,CAAY8K,sBAAZ,CAAzB;;AAEA;AACA,YAAIE,8BAA8BxP,SAASiB,aAAT,CAAwB,KAAxB,CAAlC;AACAuO,oCAA4B7O,SAA5B,CAAsCO,GAAtC,CAA2C,sBAA3C,EAAmE,kBAAkByB,OAAO,CAAP,CAArF;;AAEA;AACA;AACA,YAAI8M,sBAAsBzP,SAASqH,cAAT,CAAyB,uBAAzB,CAA1B;AACA,YAAIqI,8BAA8BD,oBAAoBR,QAAtD;AACA,aAAK,IAAIlG,MAAI,CAAb,EAAgBA,MAAI2G,4BAA4BxP,MAAhD,EAAwD6I,KAAxD,EAA8D;AAC1D,gBAAI4G,cAAc,IAAIC,MAAJ,CAAY,kBAAkBlD,QAAQ3K,IAA1B,GAAiC,SAA7C,EAAwD,GAAxD,CAAlB;AACA,gBAAI8N,OAAOH,4BAA4B3G,GAA5B,EAA+BrH,SAA/B,CAAyCC,KAAzC,CAAgDgO,WAAhD,CAAX;AACA,gBAAIE,IAAJ,EAAW;AACPJ,oCAAoB3O,WAApB,CAAiC4O,4BAA4B3G,GAA5B,CAAjC;AACH;AACJ;;AAED;AACA/I,iBAASC,sBAAT,CAAgC,yBAAhC,EAA2D,CAA3D,EAA8D8E,KAA9D,CAAoEC,OAApE,GAA8E,MAA9E;AACAhF,iBAASC,sBAAT,CAAgC,uBAAhC,EAAyD,CAAzD,EAA4D8E,KAA5D,CAAkEC,OAAlE,GAA4E,MAA5E;;AAEA;AACAhF,iBAASqH,cAAT,CAAwB,uBAAxB,EAAiDtC,KAAjD,CAAuDC,OAAvD,GAAiE,OAAjE;;AAEA;AACAhF,iBAASqH,cAAT,CAAyB,uBAAzB,EAAmDlG,WAAnD,CAAgEqO,2BAAhE;;AAEA;AACAA,oCAA4BzK,KAA5B,CAAkCC,OAAlC,GAA4C,OAA5C;;AAEA;AACA,YAAI8K,oBAAoB,EAAxB;;AAEA;AACA,YAAIC,wBAAwB,EAA5B;;AAEA;AACA,YAAIhH,IAAI,CAAR;AACAiH,eAAOC,IAAP,CAAaV,kBAAb,EAAkCW,OAAlC,CAA2C,UAAU/B,GAAV,EAAgB;AACvD,gBAAInL,OAAOuM,mBAAmBpB,GAAnB,CAAX;AACAnL,iBAAKmN,UAAL,GAAkBhC,GAAlB;;AAEA;AACA,gBAAIiC,sBAAsBjM,GAAGC,QAAH,CAAa,UAAUpB,KAAK5B,IAAf,GAAsB,UAAnC,CAA1B;;AAEA4B,iBAAKqN,aAAL,GAAqB1N,OAAO,CAAP,CAArB;AACAK,iBAAKsN,6BAAL,GAAqC,aAAa3N,OAAO,CAAP,CAAb,GAAyB,GAAzB,GAA+BK,KAAKmN,UAAzE;AACA,gBAAII,kBAAkBH,oBAAqBpN,IAArB,CAAtB;;AAEA,gBAAI,oBAAoBA,IAAxB,EAA+B;AAC3B,oBAAIF,MAAMC,OAAN,CAAeC,KAAKwN,cAApB,CAAJ,EAA2C;AACvCT,0CAAsBU,IAAtB,CAA4B,CAACzN,KAAKwN,cAAN,EAAsBxN,KAAKsN,6BAA3B,CAA5B;AACH;AACJ;;AAED;;AAEA,gBAAII,6BAA6B1Q,SAASiB,aAAT,CAAwB,KAAxB,CAAjC;AACAyP,uCAA2B/P,SAA3B,CAAqCO,GAArC,CAA0C,qBAA1C,EAAiE,qBAAjE;;AAEA,gBAAI8B,KAAK2N,uBAAT,EAAmC;AAC/BD,2CAA2B/P,SAA3B,CAAqCO,GAArC,CAA0C8B,KAAK2N,uBAA/C;AACH;;AAED,gBAAI3N,KAAK4N,yBAAT,EAAqC;AACjCF,2CAA2BhJ,YAA3B,CAAyC,OAAzC,EAAkD1E,KAAK4N,yBAAvD;AACH;;AAEDF,uCAA2B/I,SAA3B,GAAuC4I,eAAvC;;AAEAf,wCAA4BrO,WAA5B,CAAyCuP,0BAAzC;;AAEA,gBAAIG,uBAAuBH,2BAA2BnQ,oBAA3B,CAAiD,sBAAjD,CAA3B;AACA,gBAAIsQ,qBAAqB3Q,MAArB,GAA8B,CAAlC,EAAsC;AAClC2Q,uCAAuBA,qBAAqB,CAArB,CAAvB;AACA,oBAAIC,uBAAuBD,qBAAqBE,SAAhD;AACAL,2CAA2B5P,WAA3B,CAAwC+P,oBAAxC;AACA,oBAAIG,SAAShR,SAASiB,aAAT,CAAwB,QAAxB,CAAb;AACA+P,uBAAOtJ,YAAP,CAAqB,MAArB,EAA6B,iBAA7B;AACAsJ,uBAAOrJ,SAAP,GAAmBmJ,qBAAqBtC,OAArB,CAA6B,WAA7B,EAA0C,EAA1C,EAA8CC,IAA9C,EAAnB;AACAqB,kCAAkBW,IAAlB,CAAwBO,MAAxB;AACH;;AAEDjI;AACH,SA9CD;;AAgDA;AACA,YAAI+G,kBAAkB5P,MAAlB,GAA2B,CAA/B,EAAmC;AAC/B,iBAAK,IAAI6I,MAAI,CAAb,EAAgBA,MAAI+G,kBAAkB5P,MAAtC,EAA8C6I,KAA9C,EAAoD;AAChDyG,4CAA4BrO,WAA5B,CAAyC2O,kBAAkB/G,GAAlB,CAAzC;AACH;AACJ;;AAED;AACA,aAAM,IAAIA,MAAI,CAAd,EAAiBA,MAAIgH,sBAAsB7P,MAA3C,EAAmD6I,KAAnD,EAAyD;AACrDnH,wBAAY4O,cAAZ,CAA4BT,sBAAsBhH,GAAtB,EAAyB,CAAzB,CAA5B,EAAyDgH,sBAAsBhH,GAAtB,EAAyB,CAAzB,CAAzD;AACH;;AAEDnH,oBAAY+B,yBAAZ,CAAuC,8BAAvC;AACH,KAnHD;AAoHH,CAxHD;;;ACAA,IAAI/B,cAAc;AACdqP,cAAU,kBAAUC,GAAV,EAAgB;AACtB,YAAIC,SAAS,4CAA4CC,IAA5C,CAAkDF,GAAlD,CAAb;AACA,eAAOC,SAAS,SAAStI,SAAUsI,OAAO,CAAP,CAAV,EAAqB,EAArB,CAAT,GAAqC,GAArC,GAA2CtI,SAAUsI,OAAO,CAAP,CAAV,EAAqB,EAArB,CAA3C,GAAuE,GAAvE,GAA6EtI,SAAUsI,OAAO,CAAP,CAAV,EAAqB,EAArB,CAA7E,GAAyG,GAAlH,GAAwH,IAA/H;AACH,KAJa;AAKdE,cAAU,kBAAWC,GAAX,EAAiB;AACvB,YAAIA,MAAMA,IAAI3P,KAAJ,CAAW,sEAAX,CAAV;;AAEA,eAAS2P,OAAOA,IAAIpR,MAAJ,KAAe,CAAxB,GAA8B,MACjC,CAAE,MAAM2I,SAAUyI,IAAI,CAAJ,CAAV,EAAiB,EAAjB,EAAsBC,QAAtB,CAAgC,EAAhC,CAAR,EAA8CC,KAA9C,CAAqD,CAAC,CAAtD,CADiC,GAEjC,CAAE,MAAM3I,SAAUyI,IAAI,CAAJ,CAAV,EAAiB,EAAjB,EAAsBC,QAAtB,CAAgC,EAAhC,CAAR,EAA8CC,KAA9C,CAAqD,CAAC,CAAtD,CAFiC,GAGjC,CAAE,MAAM3I,SAAUyI,IAAI,CAAJ,CAAV,EAAiB,EAAjB,EAAsBC,QAAtB,CAAgC,EAAhC,CAAR,EAA8CC,KAA9C,CAAqD,CAAC,CAAtD,CAHG,GAGyD,EAHhE;AAIH,KAZa;AAad9M,oBAAgB,wBAAW+M,cAAX,EAA4B;AACxC,YAAIC,WAAWC,SAASC,QAAT,GAAoB,IAApB,GAA2BD,SAASE,QAAnD;AACA,YAAIC,MAAM9R,SAASiB,aAAT,CAAwB,KAAxB,CAAV;AACA6Q,YAAIC,GAAJ,GAAUN,cAAV;AACA,eAAOK,GAAP;AACH,KAlBa;AAmBdzM,yBAAqB,+BAAW;AAC5B,YAAIwH,iBAAiB7M,SAASC,sBAAT,CAAiC,kBAAjC,CAArB;AACA,YAAK4M,eAAe3M,MAAf,GAAwB,CAA7B,EAAiC;AAC7B,iBAAK,IAAI6I,IAAI,CAAb,EAAgBA,IAAI8D,eAAe3M,MAAnC,EAA2C6I,GAA3C,EAAiD;AAC7C8D,+BAAe9D,CAAf,EAAkBpI,SAAlB,CAA4BC,MAA5B,CAAoC,kBAApC;AACH;AACJ;;AAED,YAAIoR,kBAAkBhS,SAASC,sBAAT,CAAiC,kBAAjC,CAAtB;AACA,YAAK+R,gBAAgB9R,MAAhB,GAAyB,CAA9B,EAAkC;AAC9B,iBAAK,IAAI6I,KAAI,CAAb,EAAgBA,KAAIiJ,gBAAgB9R,MAApC,EAA4C6I,IAA5C,EAAkD;AAC9CiJ,gCAAgBjJ,EAAhB,EAAmBhE,KAAnB,CAAyBC,OAAzB,GAAmC,MAAnC;AACH;AACJ;;AAED,YAAIiN,wBAAwBjS,SAASC,sBAAT,CAAiC,yBAAjC,CAA5B;AACA,YAAKgS,sBAAsB/R,MAAtB,GAA+B,CAApC,EAAwC;AACpC,iBAAK,IAAI6I,MAAI,CAAb,EAAgBA,MAAIkJ,sBAAsB/R,MAA1C,EAAkD6I,KAAlD,EAAwD;AACpDkJ,sCAAsBlJ,GAAtB,EAAyBhE,KAAzB,CAA+BC,OAA/B,GAAyC,MAAzC;AACH;AACJ;AACJ,KAxCa;AAyCdkN,yBAAqB,6BAAUC,IAAV,EAAiB;AAClC,YAAKA,IAAL,EAAY;AACR,gBAAKA,KAAKvE,OAAL,CAAc,SAAd,KAA6B,CAAC,CAA9B,IAAmCuE,KAAKvE,OAAL,CAAc,UAAd,KAA8B,CAAC,CAAvE,EAA2E;AACvE,oBAAIwE,UAAUD,KAAKrI,KAAL,CAAY,GAAZ,CAAd;AAAA,oBACIuI,kBADJ;AAEA,oBAAKvP,MAAMC,OAAN,CAAeqP,OAAf,KAA4BA,QAAQlS,MAAR,GAAiB,CAAlD,EAAsD;AAClDmS,gCAAYD,QAAQA,QAAQlS,MAAR,GAAiB,CAAzB,CAAZ;AACH;AACD,uBAAOF,SAAS2R,QAAT,CAAkBC,QAAlB,GAA6B,IAA7B,GAAoCS,SAA3C;AACH,aAPD,MAOO;AACH,uBAAOF,IAAP;AACH;AACJ,SAXD,MAWO;AACH,mBAAO,EAAP;AACH;AACJ,KAxDa;AAyDd/P,wBAAoB,4BAAUF,KAAV,EAAkB;AAClC,YAAIoQ,OAAOpQ,MAAMoQ,IAAjB;AAAA,YACIC,UAAUD,KAAK,CAAL,CADd;AAEA,YAAIE,uBAAuB1H,iBAAiByH,OAAjB,CAA3B;;AAEA,YAAIE,kBAAkBF,QAAQtD,QAA9B;AACA,YAAIyD,oBAAoB,EAAxB;AACA,aAAK,IAAI3J,IAAI,CAAb,EAAgBA,IAAI0J,gBAAgBvS,MAApC,EAA4C6I,GAA5C,EAAkD;AAC9C,gBAAI4J,aAAaF,gBAAgB1J,CAAhB,EAAmBkG,QAApC;AACA,iBAAK,IAAIjF,IAAI,CAAb,EAAgBA,IAAI2I,WAAWzS,MAA/B,EAAuC8J,GAAvC,EAA6C;AACzC,oBAAI0C,UAAUiG,WAAW3I,CAAX,CAAd;AACA,oBAAI0C,QAAQ/L,SAAR,CAAkBsB,QAAlB,CAA4B,iBAA5B,CAAJ,EAAsD;AAClD,wBAAIU,SAAS+J,QAAQhL,SAAR,CAAkBC,KAAlB,CAAyB,0BAAzB,CAAb;AACA,wBAAIgB,OAAO,CAAP,KAAa,MAAjB,EAA0B;AACtB,4BAAIiQ,IAAIlG,QAAQY,aAAR,CAAuB,GAAvB,CAAR;AAAA,4BACIuF,cAAcD,EAAEC,WADpB;AAAA,4BAEIC,YAAYF,EAAE7N,KAAF,CAAQ+N,SAFxB;AAGIJ,0CAAkBD,gBAAgB1J,CAAhB,EAAmBsB,OAAnB,CAA2BE,MAA7C,IAAuD,CAACsI,WAAD,EAAcnG,QAAQ3H,KAAR,CAAcgO,QAA5B,EACnDrG,QAAQ3H,KAAR,CAAciO,KADqC,EAC9BR,qBAAqBS,eADS,EACQH,SADR,CAAvD;AAEJ;AACH;AACJ;AACJ;AACD,gBAAI,CAAEJ,kBAAkBD,gBAAgB1J,CAAhB,EAAmBsB,OAAnB,CAA2BE,MAA7C,CAAN,EAA6D;AACzDmI,kCAAkBD,gBAAgB1J,CAAhB,EAAmBsB,OAAnB,CAA2BE,MAA7C,IAAuD,CAAC,EAAD,EAAK,EAAL,EAC3C,EAD2C,EACvCiI,qBAAqBS,eADkB,EACD,EADC,CAAvD;AAEH;AACJ;AACD,aAAM,IAAIlK,MAAI,CAAd,EAAiBA,MAAIuJ,KAAKpS,MAA1B,EAAkC6I,KAAlC,EAAwC;AACpC,gBAAI/G,UAAUsQ,KAAKvJ,GAAL,CAAd;AAAA,gBACImK,kBAAkBlR,QAAQiN,QAD9B;AAEA,iBAAK,IAAIjF,KAAI,CAAb,EAAgBA,KAAIkJ,gBAAgBhT,MAApC,EAA4C8J,IAA5C,EAAkD;AAC9C,oBAAK0I,kBAAkBQ,gBAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BE,MAA7C,CAAL,EAA4D;AACxD2I,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2B8I,eAA3B,GAA6CT,kBAAkBQ,gBAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BE,MAA7C,EAAqD,CAArD,CAA7C;AACA2I,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2B+I,uBAA3B,GAAqDV,kBAAkBQ,gBAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BE,MAA7C,EAAqD,CAArD,CAArD;AACA2I,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BgJ,oBAA3B,GAAkDX,kBAAkBQ,gBAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BE,MAA7C,EAAqD,CAArD,CAAlD;AACA2I,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BiJ,wBAA3B,GAAsDZ,kBAAkBQ,gBAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BE,MAA7C,EAAqD,CAArD,CAAtD;AACA2I,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BkJ,cAA3B,GAA4Cb,kBAAkBQ,gBAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BE,MAA7C,EAAqD,CAArD,CAA5C;AACH,iBAND,MAMO;AACH2I,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2B8I,eAA3B,GAA6C,EAA7C;AACAD,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2B+I,uBAA3B,GAAqD,EAArD;AACAF,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BgJ,oBAA3B,GAAkD,EAAlD;AACAH,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BiJ,wBAA3B,GAAsD,EAAtD;AACAJ,oCAAgBlJ,EAAhB,EAAmBK,OAAnB,CAA2BkJ,cAA3B,GAA4C,EAA5C;AACH;AACJ;AACJ;AACJ,KAxGa;AAyGdpR,kBAAc,sBAASV,EAAT,EAAa+R,GAAb,EAAkB;AAC5B,eAAO,CAAC/R,KAAKA,GAAGgS,aAAT,KAA2B,CAAChS,GAAGd,SAAH,CAAasB,QAAb,CAAsBuR,GAAtB,CAAnC;AACA,eAAO/R,EAAP;AACH,KA5Ga;AA6GdiS,sBAAkB,4BAAW;AACzB,YAAIC,MAAM,EAAV;AACA,YAAIA,MAAM9I,OAAO+I,YAAjB,EAA+B;AAC3BD,kBAAM9I,OAAO+I,YAAP,GAAsBrC,QAAtB,EAAN;AACH,SAFD,MAEO;AACHoC,kBAAM3T,SAAS6T,SAAT,CAAmBC,WAAnB,GAAiChH,IAAvC;AACH;AACD,eAAO6G,GAAP;AACH,KArHa;AAsHdI,wBAAoB,8BAAW;AAC3B/T,iBAASqH,cAAT,CAAyB,8BAAzB,EAA0D2M,OAA1D,GAAoE,KAApE;AACAhU,iBAASqH,cAAT,CAAyB,wBAAzB,EAAoD2M,OAApD,GAA8D,KAA9D;AACAhU,iBAASqH,cAAT,CAAyB,0BAAzB,EAAsDC,KAAtD,GAA8D,CAA9D;AACAtH,iBAASqH,cAAT,CAAyB,0BAAzB,EAAsDC,KAAtD,GAA8D,CAA9D;AACAtH,iBAASqH,cAAT,CAAyB,yBAAzB,EAAqD2M,OAArD,GAA+D,KAA/D;AACAhU,iBAASqH,cAAT,CAAyB,yBAAzB,EAAqD1G,SAArD,CAA+DC,MAA/D,CAAuE,SAAvE;AACAZ,iBAASqH,cAAT,CAAyB,gCAAzB,EAA4DC,KAA5D,GAAoE,CAApE;AACAtH,iBAASqH,cAAT,CAAyB,gCAAzB,EAA4DC,KAA5D,GAAoE,CAApE;;AAEA1F,oBAAYqS,kBAAZ,CAAgC,yBAAhC,EAA2D,IAA3D;;AAEArS,oBAAYqS,kBAAZ,CAAgC,sBAAhC,EAAwD,IAAxD;;AAEArS,oBAAYqS,kBAAZ,CAAgC,kBAAhC,EAAoD,IAApD;;AAEArS,oBAAYqS,kBAAZ,CAAgC,iBAAhC,EAAmD,IAAnD;;AAEAjU,iBAASqH,cAAT,CAAyB,wBAAzB,EAAoDC,KAApD,GAA4D,EAA5D;AACAtH,iBAASqH,cAAT,CAAyB,wBAAzB,EAAoDC,KAApD,GAA4D,EAA5D;AACH,KA1Ia;AA2Id4M,8BAA0B,oCAAW;AACjC,YAAIzE,sBAAsBzP,SAASqH,cAAT,CAAyB,uBAAzB,CAA1B;AACA,YAAIoI,mBAAJ,EAA0B;AACtBA,gCAAoB9H,SAApB,GAAgC,EAAhC;AACH;AACJ,KAhJa;AAiJdwM,iDAA6C,qDAAU7S,KAAV,EAAkB;AAC3D,YAAIA,MAAM8S,aAAN,CAAoBhT,IAApB,IAA4B,UAAhC,EAA6C;AACzC,gBAAImB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH,SAHD,MAGO;AACH,gBAAI4R,oBAAoBzS,YAAYO,YAAZ,CAA0Bb,MAAME,MAAhC,EAAwC,qBAAxC,CAAxB;AACA,gBAAI6S,iBAAJ,EAAwB;AACpB,oBAAI/S,MAAM8S,aAAN,CAAoBhT,IAApB,IAA4B,QAA5B,IAAwCE,MAAM8S,aAAN,CAAoBhT,IAApB,IAA4B,OAAxE,EAAkF;AAC9E,wBAAId,OAAON,SAASO,oBAAT,CAA+B,MAA/B,EAAwC,CAAxC,CAAX;AACAD,yBAAKsF,mBAAL,CAA0B,SAA1B,EAAqChE,YAAY0S,gCAAjD,EAAmF,KAAnF;AACAhU,yBAAK0F,gBAAL,CAAuB,SAAvB,EAAkCpE,YAAY0S,gCAA9C,EAAgF,KAAhF;AACH;AACJ;AACJ;AACJ,KA/Ja;AAgKdA,sCAAkC,4CAAW;AACzC,YAAI/R,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;;AAEA,YAAInC,OAAON,SAASO,oBAAT,CAA+B,MAA/B,EAAwC,CAAxC,CAAX;AACAD,aAAKsF,mBAAL,CAA0B,SAA1B,EAAqChE,YAAY0S,gCAAjD,EAAmF,KAAnF;AACH,KAtKa;AAuKdL,wBAAoB,4BAAUM,SAAV,EAAqBC,IAArB,EAA4B;AAC5C,YAAIC,cAAJ;AACA,YAAID,IAAJ,EAAW;AACPC,oBAAQ,CAACzU,SAASqH,cAAT,CAAyBkN,SAAzB,CAAD,CAAR;AACAE,kBAAMvU,MAAN,GAAe,CAAf;AACH,SAHD,MAGO;AACHuU,oBAAQzU,SAASC,sBAAT,CAAiCsU,SAAjC,CAAR;AACH;AACD,aAAK,IAAIxL,IAAI,CAAb,EAAgBA,IAAI0L,MAAMvU,MAA1B,EAAkC6I,GAAlC,EAAwC;AACpC,gBAAIsL,oBAAoBzS,YAAYO,YAAZ,CAA0BsS,MAAM1L,CAAN,CAA1B,EAAoC,qBAApC,CAAxB;AACA,gBAAIsL,iBAAJ,EAAwB;AACpB,oBAAIK,SAASL,kBAAkBxT,UAA/B;AACA6T,uBAAO5T,WAAP,CAAoBuT,iBAApB;AACA,oBAAIM,WAAW3U,SAASiB,aAAT,CAAwB,OAAxB,CAAf;AACA,oBAAIuT,IAAJ,EAAW;AACPG,6BAASjN,YAAT,CAAuB,IAAvB,EAA6B6M,SAA7B;AACH,iBAFD,MAEO;AACHI,6BAAShU,SAAT,CAAmBO,GAAnB,CAAwB,uBAAxB,EAAiDqT,SAAjD;AACH;AACDI,yBAASrN,KAAT,GAAiB,EAAjB;AACAoN,uBAAOvT,WAAP,CAAoBwT,QAApB;AACH;AACJ;AACJ,KA9La;AA+LdnO,gBAAY,sBAAW;AACnB,YAAIoO,MAAM/J,OAAO8G,QAAP,CAAgBkD,IAA1B;AAAA,YACIC,QAAQ,IAAIlF,MAAJ,CAAW,4BAAX,CADZ;AAAA,YAEImF,UAAUD,MAAM1D,IAAN,CAAWwD,GAAX,CAFd;AAGA,YAAI,CAACG,OAAL,EAAc,OAAO,KAAP;AACd,YAAI,CAACA,QAAQ,CAAR,CAAL,EAAiB,OAAO,EAAP;AACjB,eAAOC,mBAAmBD,QAAQ,CAAR,EAAWvG,OAAX,CAAmB,KAAnB,EAA0B,GAA1B,CAAnB,CAAP;AACH,KAtMa;AAuMdyG,oBAAgB,wBAAU/S,KAAV,EAAiBgT,IAAjB,EAAwB;AACpC,YAAI3K,SAAS2K,KAAK7K,OAAL,CAAaE,MAA1B;AACA,YAAI4K,WAAWjT,MAAM2M,gBAAN,CAAwB,oBAAoBtE,MAApB,GAA6B,IAArD,CAAf;AACA,YAAI6K,YAAYF,KAAKvK,iBAAL,GAAyBa,KAAzC;AACA,aAAK,IAAIzC,IAAI,CAAb,EAAgBA,IAAIoM,SAASjV,MAA7B,EAAqC6I,GAArC,EAA2C;AACvC,gBAAIqM,YAAYD,SAASpM,CAAT,EAAY4B,iBAAZ,GAAgCa,KAAhD,EAAwD;AACpD4J,4BAAYD,SAASpM,CAAT,EAAY4B,iBAAZ,GAAgCa,KAA5C;AACH;AACJ;AACD,eAAO4J,SAAP;AACH,KAjNa;AAkNdC,kBAAc,sBAAUnT,KAAV,EAAiBgT,IAAjB,EAAwB;AAClC,YAAI5K,SAAS4K,KAAK7K,OAAL,CAAaC,MAA1B;AACA,YAAIgL,WAAWpT,MAAM2M,gBAAN,CAAwB,oBAAoBvE,MAApB,GAA6B,IAArD,CAAf;AACA,YAAIiL,aAAaL,KAAKvK,iBAAL,GAAyBe,MAA1C;AACA,aAAK,IAAI3C,IAAI,CAAb,EAAgBA,IAAIuM,SAASpV,MAA7B,EAAqC6I,GAArC,EAA2C;AACvC,gBAAIwM,aAAaD,SAASvM,CAAT,EAAY4B,iBAAZ,GAAgCe,MAAjD,EAA0D;AACtD6J,6BAAaD,SAASvM,CAAT,EAAY4B,iBAAZ,GAAgCe,MAA7C;AACH;AACJ;AACD,eAAO6J,UAAP;AACH,KA5Na;AA6Nd3I,qBAAiB,yBAAUnL,EAAV,EAAe;AAC5B,YAAIA,EAAJ,EAAS;AACL,gBAAIuB,OAAO,EAACjB,MAAMN,EAAP,EAAX;AACA,mBAAO,IAAI0B,kBAAJ,CAAwBH,IAAxB,CAAP;AACH;AACJ,KAlOa;AAmOdwS,yBAAqB,6BAAUlU,KAAV,EAAiBmU,EAAjB,EAAsB;AACvC,YAAIC,gBAAJ;AACA,YAAID,EAAJ,EAAS;AACLC,sBAAUD,GAAGzC,KAAH,CAASzB,QAAT,EAAV;AACH,SAFD,MAEO;AACHmE,sBAAU,EAAV;AACH;;AAED,YAAIhB,SAAS9S,YAAYO,YAAZ,CAA0Bb,MAAME,MAAhC,EAAwC,sBAAxC,EAAiEvB,sBAAjE,CAAyF,mBAAzF,EAA+G,CAA/G,CAAb;AAAA,YAAgI0V,eAAhI;AAAA,YAAwIvU,aAAxI;AAAA,YAA8IwU,WAA9I;AAAA,YAAkJC,eAAlJ;AACAF,iBAASjB,OAAOrK,OAAP,CAAeqC,OAAf,CAAuB/K,KAAvB,CAA6B,0BAA7B,CAAT;AACAP,eAAOuU,OAAO,CAAP,CAAP;AACAE,iBAASF,OAAO,CAAP,CAAT;AACA,YAAIG,aAAa9V,SAASC,sBAAT,CAAiC,kBAAkBmB,IAAlB,GAAyB,GAAzB,GAA+ByU,MAAhE,EAAyE,CAAzE,CAAjB;AACA,YAAKzU,QAAQ,QAAb,EAAwB;AACpB,gBAAKsT,OAAOrK,OAAP,CAAejJ,IAAf,IAAuB,mBAA5B,EAAkD;AAC9C0U,2BAAW7V,sBAAX,CAAmC,aAAnC,EAAmD,CAAnD,EAAsD8E,KAAtD,CAA4DiO,KAA5D,GAAoE0C,OAApE;AACH,aAFD,MAEO;AACHI,2BAAW7V,sBAAX,CAAmC,aAAnC,EAAmD,CAAnD,EAAsD8E,KAAtD,CAA4DkO,eAA5D,GAA8EyC,OAA9E;AACH;AACJ,SAND,MAMO,IAAItU,QAAQ,MAAZ,EAAqB;AACxB,gBAAIwU,MAAKE,WAAWjH,gBAAX,CAA6B,GAA7B,CAAT;AACA,gBAAI+G,IAAG1V,MAAH,GAAY,CAAhB,EAAoB;AAChB,qBAAM,IAAI6I,IAAI,CAAd,EAAiBA,IAAI6M,IAAG1V,MAAxB,EAAgC6I,GAAhC,EAAsC;AAClC6M,wBAAG7M,CAAH,EAAMhE,KAAN,CAAYiO,KAAZ,GAAoB0C,OAApB;AACH;AACJ;AACJ,SAPM,MAOA,IAAItU,QAAQ,aAAZ,EAA4B;AAC/B,gBAAKsT,OAAOrK,OAAP,CAAejJ,IAAf,IAAuB,YAA5B,EAA2C;AACvC,oBAAI2U,aAAaD,WAAWjH,gBAAX,CAA4B,IAA5B,CAAjB;AACA,qBAAK,IAAI9F,MAAI,CAAb,EAAgBA,MAAIgN,WAAW7V,MAA/B,EAAuC6I,KAAvC,EAA6C;AACzC,wBAAIiN,OAAOD,WAAWhN,GAAX,EAAcxI,oBAAd,CAAoC,MAApC,CAAX;AACA,yBAAK,IAAIyJ,IAAI,CAAb,EAAgBA,IAAIgM,KAAK9V,MAAzB,EAAiC8J,GAAjC,EAAuC;AACnCgM,6BAAKhM,CAAL,EAAQjF,KAAR,CAAckR,IAAd,GAAqBP,OAArB;AACH;AACJ;AACJ,aARD,MAQO,IAAIhB,OAAOrK,OAAP,CAAejJ,IAAf,IAAuB,sBAA3B,EAAoD;AACvD,oBAAI8U,sBAAsBJ,WAAWxI,aAAX,CAAyB,qBAAzB,CAA1B;AACA4I,oCAAoBnR,KAApB,CAA0BiO,KAA1B,GAAkC0C,OAAlC;AACH;AAEJ,SAdM,MAcA;AACHI,uBAAW/Q,KAAX,CAAiBiO,KAAjB,GAAyB0C,OAAzB;AACH;AACJ,KA9Qa;AA+QdS,qBAAiB,yBAAWC,gBAAX,EAA6BC,QAA7B,EAAuCC,QAAvC,EAAkD;AAC/DF,yBAAiBG,SAAjB,GAA6B,YAAW;AACpC,gBAAIC,YAAY,KAAKlP,KAArB;AACAkP,wBAAYC,OAAQD,SAAR,CAAZ;AACA,gBAAKA,UAAU,CAAV,KAAgB,CAArB,EAAyB;AACrB,qBAAKlP,KAAL,GAAa,EAAb;AACH,aAFD,MAEO;AACHkP,4BAAYA,UAAUE,SAAV,CAAqB,CAArB,EAAwBL,QAAxB,CAAZ;AACA,qBAAK/O,KAAL,GAAakP,SAAb;AACH;AACJ,SATD;AAUAJ,yBAAiBO,OAAjB,GAA2B,YAAa;AACpC,gBAAIH,YAAY,KAAKlP,KAArB;AACA,gBAAKuB,SAAU2N,SAAV,EAAqB,EAArB,IAA4B3N,SAAUyN,QAAV,EAAoB,EAApB,CAAjC,EAA4D;AACxD,qBAAKhP,KAAL,GAAagP,QAAb;AACH;;AAED,gBAAI/T,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH,SARD;AASH,KAnSa;AAoSdmU,aAAS,iBAAUC,GAAV,EAAgB;AACrB,eAAOA,IAAIC,MAAJ,CAAW,CAAX,EAAcC,WAAd,KAA8BF,IAAIrF,KAAJ,CAAU,CAAV,CAArC;AACH,KAtSa;AAuSd7N,+BAA2B,mCAAUqT,SAAV,EAAqBtK,OAArB,EAA8BuK,OAA9B,EAAwC;AAC/D,YAAID,aAAatK,OAAjB,EAA2B;AACvB,gBAAI,CAAEuK,OAAN,EAAgB;AACZA,0BAAU,IAAV;AACH;AACD,gBAAI3V,QAAQ,IAAI4V,WAAJ,CAAiBF,SAAjB,EAA4B,EAAEG,QAAQF,OAAV,EAAmBG,SAAS,IAA5B,EAA5B,CAAZ;AACA1K,oBAAQ2K,aAAR,CAAuB/V,KAAvB;AACH;AACJ,KA/Sa;AAgTd;AACAgW,wBAAoB,4BAAU5K,OAAV,EAAoB;AACpC;AACA,YAAI/J,SAAS+J,QAAQhL,SAAR,CAAkBC,KAAlB,CAAwB,0BAAxB,CAAb;AACA,YAAIgB,UAAUG,MAAMC,OAAN,CAAeJ,MAAf,CAAd,EAAwC;AACpC,gBAAIZ,OAAOY,OAAO,CAAP,CAAX;AACA,gBAAIZ,IAAJ,EAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACgB,oBAAIA,QAAQwV,4BAAZ,EAA2C;AACvCA,iDAA6BxV,IAA7B,EAAoC2K,OAApC;AACH;AACJ;AACJ;AACJ,KAxUa;AAyUd;AACA8K,yBAAqB,6BAAU9K,OAAV,EAAoB;AACrC,YAAIA,OAAJ,EAAc;AACVnD,mBAAQmD,OAAR,EAAkB+K,GAAlB;AACA,gBAAIC,kBAAkBhL,QAAQuC,QAA9B;AACA,gBAAIyI,eAAJ,EAAsB;AAClB,qBAAM,IAAI3O,IAAI,CAAd,EAAiBA,IAAI2O,gBAAgBxX,MAArC,EAA6C6I,GAA7C,EAAmD;AAC/CnH,gCAAY4V,mBAAZ,CAAiCE,gBAAgB3O,CAAhB,CAAjC;AACH;AACJ;AACJ,SARD,MAQO;AACH;AACH;AACJ,KAtVa;AAuVd;AACA4O,gBAAY,oBAAUC,MAAV,EAAkBC,MAAlB,EAA0BrJ,OAA1B,EAAmC;AAC3C,eAAOoJ,OAAO9N,KAAP,CAAc+N,MAAd,EAAuBC,IAAvB,CAA6BtJ,OAA7B,CAAP;AACH,KA1Va;AA2Vd;AACAG,6BAAyB,iCAAUjC,OAAV,EAAoB;AACzC,YAAIqL,kBAAkBrL,QAAQmC,gBAAR,CAA0B,mBAA1B,CAAtB;AACA,YAAIkJ,gBAAgB7X,MAAhB,GAAyB,CAA7B,EAAiC;AAC7B,iBAAM,IAAI8X,IAAI,CAAd,EAAiBA,IAAID,gBAAgB7X,MAArC,EAA6C8X,GAA7C,EAAmD;AAC/CD,gCAAgBC,CAAhB,EAAmBrX,SAAnB,CAA6BC,MAA7B,CAAqC,kBAArC;AACH;AACJ;;AAED,YAAIqX,eAAevL,QAAQmC,gBAAR,CAA0B,kBAA1B,CAAnB;AACA,YAAKoJ,aAAa/X,MAAb,GAAsB,CAA3B,EAA+B;AAC3B,iBAAM,IAAI8X,KAAI,CAAd,EAAiBA,KAAIC,aAAa/X,MAAlC,EAA0C8X,IAA1C,EAAgD;AAC5CC,6BAAaD,EAAb,EAAgBE,eAAhB,CAAiC,gBAAjC;AACH;AACJ;;AAED,YAAIC,eAAezL,QAAQmC,gBAAR,CAA0B,iBAA1B,CAAnB;AACA,YAAIsJ,aAAajY,MAAb,GAAsB,CAA1B,EAA8B;AAC1B,iBAAM,IAAI8X,MAAI,CAAd,EAAiBA,MAAIG,aAAajY,MAAlC,EAA0C8X,KAA1C,EAAgD;AAC5CG,6BAAaH,GAAb,EAAgBrX,SAAhB,CAA0BC,MAA1B,CAAkC,gBAAlC;AACH;AACJ;;AAED,YAAIwX,kBAAkB1L,QAAQmC,gBAAR,CAA0B,mBAA1B,CAAtB;AACA,YAAKuJ,gBAAgBlY,MAAhB,GAAyB,CAA9B,EAAkC;AAC9B,iBAAM,IAAI8X,MAAI,CAAd,EAAiBA,MAAII,gBAAgBlY,MAArC,EAA6C8X,KAA7C,EAAmD;AAC/CI,gCAAgBJ,GAAhB,EAAmBE,eAAnB,CAAoC,iBAApC;AACH;AACJ;;AAED,YAAIG,aAAa3L,QAAQmC,gBAAR,CAA0B,cAA1B,CAAjB;AACA,YAAKwJ,WAAWnY,MAAX,GAAoB,CAAzB,EAA6B;AACzB,iBAAM,IAAI8X,MAAI,CAAd,EAAiBA,MAAIK,WAAWnY,MAAhC,EAAwC8X,KAAxC,EAA8C;AAC1CK,2BAAWL,GAAX,EAAcE,eAAd,CAA+B,YAA/B;AACH;AACJ;;AAED,YAAII,SAAS5L,QAAQmC,gBAAR,CAA0B,YAA1B,CAAb;AACA,YAAKyJ,OAAOpY,MAAP,GAAgB,CAArB,EAAyB;AACrB,iBAAM,IAAI8X,MAAI,CAAd,EAAiBA,MAAIM,OAAOpY,MAA5B,EAAoC8X,KAApC,EAA0C;AACtCM,uBAAON,GAAP,EAAUE,eAAV,CAA2B,IAA3B;AACH;AACJ;;AAED,eAAOxL,OAAP;AACH,KAxYa;AAyYd6L,0CAAsC,8CAAUC,WAAV,EAAuB7H,uBAAvB,EAAiD;AACnF,YAAI6H,eAAe7H,uBAAnB,EAA6C;AACzC,gBAAI8H,mBAAmB7W,YAAYO,YAAZ,CAA0BqW,WAA1B,EAAuC,qBAAvC,CAAvB;AACA,gBAAIC,gBAAJ,EAAuB;AACnBA,iCAAiB9X,SAAjB,CAA2BO,GAA3B,CAAgCyP,uBAAhC;AACH;AACJ;AACJ,KAhZa;AAiZd+H,4CAAwC,gDAAUF,WAAV,EAAuB5H,yBAAvB,EAAmD;AACvF,YAAI4H,eAAe5H,yBAAnB,EAA+C;AAC3C,gBAAI6H,mBAAmB7W,YAAYO,YAAZ,CAA0BqW,WAA1B,EAAuC,qBAAvC,CAAvB;AACA,gBAAIG,wBAAwB/H,0BAA0B9G,KAA1B,CAAiC,GAAjC,CAA5B;;AAEA,gBAAI2O,oBAAoBE,qBAAxB,EAAgD;AAAA,oBACnCC,kBADmC,GAC5C,SAASA,kBAAT,CAA6BC,iBAA7B,EAAgDJ,gBAAhD,EAAmE;AAC/D,wBAAII,iBAAJ,EAAwB;AACpBC,+CAAuBD,kBAAkB/O,KAAlB,CAAyB,GAAzB,CAAvB;;AAEA,4BAAIgP,wBAAwBhW,MAAMC,OAAN,CAAe+V,oBAAf,CAA5B,EAAoE;AAChEL,6CAAiB1T,KAAjB,CAAuB+T,qBAAqB,CAArB,CAAvB,IAAkDA,qBAAqB,CAArB,CAAlD;AACH;AACJ;AACJ,iBAT2C;;AAU5C,oBAAIH,yBAAyB7V,MAAMC,OAAN,CAAe4V,qBAAf,CAA7B,EAAsE;AAClE,yBAAK,IAAI5P,IAAI,CAAb,EAAgBA,IAAI4P,sBAAsBzY,MAA1C,EAAkD6I,GAAlD,EAAwD;AACpD9D,gCAAQC,GAAR,CAAayT,qBAAb;AACA,4BAAIA,sBAAsB5P,CAAtB,CAAJ,EAA+B;AAC3B6P,+CAAoBD,sBAAsB5P,CAAtB,CAApB,EAA8C0P,gBAA9C;AACH;AACJ;AACJ,iBAPD,MAOO;AACHG,uCAAoBD,qBAApB,EAA2CF,gBAA3C;AACH;AACJ;AACJ;AACJ,KA5aa;AA6ad;AACAM,qBAAiB,yBAAUrM,OAAV,EAAmBsM,eAAnB,EAAqC;AAClD,YAAItM,WAAW,QAAOA,OAAP,yCAAOA,OAAP,OAAmB,QAA9B,IAA0C,OAAOsM,eAAP,KAA2B,UAAzE,EAAsF;AAClFtM,oBAAQ1G,gBAAR,CAA0B,OAA1B,EAAmC,YAAW;AAC1C,oBAAIrD,SAAS+J,QAAQhL,SAAR,CAAkBC,KAAlB,CAAyB,0BAAzB,CAAb;AAAA,oBACIsX,oBADJ;;AAGA,oBAAItW,UAAUG,MAAMC,OAAN,CAAeJ,MAAf,CAAd,EAAwC;AACpCsW,kCAActW,OAAO,CAAP,CAAd;AACH;;AAED,oBAAI,CAAE+J,QAAQ5K,cAAR,CAAwB,sBAAxB,CAAF,IAAsD4K,QAAQwM,oBAAR,KAAiC,IAAjC,IAAyCD,WAAnG,EAAkH;AAC9G,wBAAIE,6BAA6BnZ,SAASC,sBAAT,CAAiC,oBAAjC,CAAjC;AACA,wBAAIkZ,2BAA2BjZ,MAA3B,GAAoC,CAAxC,EAA4C;AAAA;AACxCiZ,yDAA6BA,2BAA2B,CAA3B,CAA7B;;AAEA,gCAAIC,mBAAmBD,2BAA2BxR,SAAlD;AACA,gCAAI0R,sBAAsB,EAA1B;AACA,gCAAID,gBAAJ,EAAuB;AACnBA,mDAAmB7U,KAAKC,KAAL,CAAY4U,gBAAZ,CAAnB;AACA,oCAAIA,oBAAoB,QAAOA,gBAAP,yCAAOA,gBAAP,OAA4B,QAApD,EAA+D;AAC3D,wCAAI,6BAA6BzW,OAAO,CAAP,CAA7B,GAAyC,GAAzC,GAA+CA,OAAO,CAAP,CAA/C,IAA4DyW,gBAAhE,EAAmF;AAC/E,4CAAIE,kBAAkBF,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA7B,GAAyC,GAAzC,GAA+CA,OAAO,CAAP,CAAhE,CAAtB;AACA,4CAAI2W,mBAAmB,QAAOA,eAAP,yCAAOA,eAAP,OAA2B,QAAlD,EAA6D;AACzDtJ,mDAAOC,IAAP,CAAaqJ,eAAb,EAA+BpJ,OAA/B,CAAwC,UAAU/B,GAAV,EAAgB;AACpD,oDAAIwB,cAAc,IAAIC,MAAJ,CAAY,kBAAkBqJ,WAAlB,GAAgC,cAA5C,EAA4D,GAA5D,CAAlB;AACA,oDAAIM,YAAYpL,IAAIxM,KAAJ,CAAWgO,WAAX,CAAhB;AACA,oDAAI4J,aAAazW,MAAMC,OAAN,CAAewW,SAAf,CAAjB,EAA8C;AAC1C,wDAAIC,eAAerL,IAAIK,OAAJ,CAAa,OAAb,EAAsB,EAAtB,CAAnB;AACA6K,wEAAoB5I,IAApB,CAA0B,CAAC+I,YAAD,EAAeD,UAAU,CAAV,CAAf,CAA1B;AACH;AACJ,6CAPD;AAQH;AACJ;AACJ;AACJ;;AAtBuC,uDAwB/BxQ,CAxB+B;AAyBpC2D,wCAAQ1G,gBAAR,CAA0B,kBAAkBqT,oBAAoBtQ,CAApB,EAAuB,CAAvB,CAA5C,EAAuE,YAAW;AAC9E,wCAAI0Q,WAAW,EAAf;AACA,wCAAIC,cAAcL,oBAAoBtQ,CAApB,EAAuB,CAAvB,CAAlB;AACA,wCAAI4Q,UAAU3Z,SAASC,sBAAT,CAAiCoZ,oBAAoBtQ,CAApB,EAAuB,CAAvB,CAAjC,CAAd;AACA,wCAAI4Q,QAAQzZ,MAAR,GAAiB,CAAjB,IAAsBwZ,WAA1B,EAAwC;AACpC,4CAAIE,qBAAqBhY,YAAYiY,qBAAZ,CAAmCF,OAAnC,CAAzB;;AAEAF,iDAASC,WAAT,IAAwBE,kBAAxB;AACH;;AAEDZ,oDAAiBS,QAAjB,EAA2B/M,OAA3B;AACH,iCAXD,EAWG,KAXH;;AAaAA,wCAAQwM,oBAAR,GAA+B,IAA/B;AAtCoC;;AAwBxC,iCAAK,IAAInQ,IAAI,CAAb,EAAgBA,IAAIsQ,oBAAoBnZ,MAAxC,EAAgD6I,GAAhD,EAAsD;AAAA,sCAA7CA,CAA6C;AAerD;AAvCuC;AAwC3C;AACJ;AACJ,aApDD,EAoDG,KApDH;AAqDH;AACJ,KAtea;AAued+Q,uBAAmB,2BAAUpN,OAAV,EAAmBsM,eAAnB,EAAoCU,WAApC,EAAkD;AACjE,YAAIhN,WAAW,QAAOA,OAAP,yCAAOA,OAAP,OAAmB,QAA9B,IAA0C,OAAOsM,eAAP,KAA2B,UAArE,IAAmF,OAAOU,WAAP,KAAuB,QAA9G,EAAyH;AACrH,gBAAI/W,SAAS+J,QAAQhL,SAAR,CAAkBC,KAAlB,CAAyB,0BAAzB,CAAb;AAAA,gBACAsX,oBADA;;AAGA,gBAAItW,UAAUG,MAAMC,OAAN,CAAeJ,MAAf,CAAd,EAAwC;AACpCsW,8BAActW,OAAO,CAAP,EAAUmH,KAAV,CAAiB,GAAjB,EAAuB,CAAvB,CAAd;;AAEA,oBAAIqF,2BAA2B,UAAU8J,WAAV,GAAwB,gBAAvD;AACA,oBAAI7J,qBAAqBjL,GAAGC,QAAH,CAAa+K,wBAAb,CAAzB;AACA,oBAAInM,OAAO;AACPqM,+BAAW,MAAM1M,OAAO,CAAP;AADV,iBAAX;AAGA,oBAAI2M,yBAAyBF,mBAAoBpM,IAApB,CAA7B;AACA,oBAAIuM,qBAAqBhL,KAAKC,KAAL,CAAY8K,sBAAZ,CAAzB;;AAEA,oBAAIC,sBAAsB,QAAOA,kBAAP,yCAAOA,kBAAP,OAA8B,QAApD,IAAgEA,mBAAmBzN,cAAnB,CAAmC4X,WAAnC,CAApE,EAAuH;AACnH,wBAAIK,mBAAmB,aAAapX,OAAO,CAAP,CAAb,GAAyB,GAAzB,GAA+B+W,WAAtD;;AAEAhN,4BAAQ1G,gBAAR,CAA0B,kBAAkB+T,gBAA5C,EAA8D,UAAUzY,KAAV,EAAkB;AAC5E,4BAAIqY,UAAU3Z,SAASC,sBAAT,CAAiC8Z,gBAAjC,CAAd;AACA,4BAAIJ,QAAQzZ,MAAR,GAAiB,CAArB,EAAyB;AACrB,gCAAI0Z,qBAAqBhY,YAAYiY,qBAAZ,CAAmCF,OAAnC,CAAzB;;AAEAX,4CAAiBY,kBAAjB,EAAqClN,OAArC;AACH;AACJ,qBAPD,EAOG,KAPH;AAQH;AACJ;AACJ,SA5BD,MA4BO;AACH,mBAAO,KAAP;AACH;AACJ,KAvgBa;AAwgBd;AACAsN,oCAAgC,wCAAUtN,OAAV,EAAmBsM,eAAnB,EAAqC;AACjE,YAAItM,WAAW,QAAOA,OAAP,yCAAOA,OAAP,OAAmB,QAA9B,IAA0C,OAAOsM,eAAP,KAA2B,UAAzE,EAAsF;AAClFtM,oBAAQ1G,gBAAR,CAA0B,yBAA1B,EAAqD,UAAU1E,KAAV,EAAkB;AACnE,oBAAI4L,eAAe5L,MAAM6V,MAAzB;AACA,oBAAIjK,YAAJ,EAAmB;AACftL,gCAAY+M,uBAAZ,CAAqCzB,YAArC;AACA8L,oCAAiB9L,YAAjB,EAA+BR,OAA/B;AACH;AACJ,aAND,EAMG,KANH;AAOH;AACJ,KAnhBa;AAohBd;AACA8D,oBAAgB,wBAAUyJ,QAAV,EAAoBC,yBAApB,EAAgD;AAC5D,YAAIpX,MAAMC,OAAN,CAAekX,QAAf,CAAJ,EAAgC;AAC5B,gBAAIE,sBAAsBF,SAAS,CAAT,CAA1B;AACA,gBAAItX,SAASuX,0BAA0BvY,KAA1B,CAAiC,0BAAjC,CAAb;;AAEA,gBAAIgB,UAAUG,MAAMC,OAAN,CAAeJ,MAAf,CAAd,EAAwC;AACpC,oBAAI+W,cAAc/W,OAAO,CAAP,CAAlB;;AAEA,oBAAIyX,8BAA8BF,0BAA0B1L,OAA1B,CAAmCkL,WAAnC,EAAgDS,mBAAhD,CAAlC;;AAEA,oBAAIE,yBAAyBra,SAASC,sBAAT,CAAiCma,2BAAjC,CAA7B;;AAEA,oBAAIC,uBAAuBna,MAAvB,GAAgC,CAApC,EAAwC;AACpCma,6CAAyBA,uBAAuB,CAAvB,CAAzB;AACA,wBAAIC,uBAAuBta,SAASC,sBAAT,CAAiCia,yBAAjC,CAA3B;AACA,wBAAII,qBAAqBpa,MAArB,GAA8B,CAAlC,EAAsC;AAClCoa,+CAAuBA,qBAAqB,CAArB,CAAvB;AACA,4BAAIC,uBAAuB3Y,YAAYO,YAAZ,CAA0BmY,oBAA1B,EAAgD,qBAAhD,CAA3B;;AAEA,4BAAIC,oBAAJ,EAA2B;AAAA,gCACdC,8BADc,GACvB,SAASA,8BAAT,CAAyCC,0BAAzC,EAAsE;;AAElE,oCAAItB,6BAA6BnZ,SAASC,sBAAT,CAAiC,oBAAjC,CAAjC;AACA,oCAAIkZ,2BAA2BjZ,MAA3B,GAAoC,CAAxC,EAA4C;AACxCiZ,iEAA6BA,2BAA2B,CAA3B,CAA7B;;AAEA,wCAAIC,mBAAmBD,2BAA2BxR,SAAlD;AACA,wCAAIyR,gBAAJ,EAAuB;AACnBA,2DAAmB7U,KAAKC,KAAL,CAAY4U,gBAAZ,CAAnB;AACA,4CAAIA,oBAAoB,QAAOA,gBAAP,yCAAOA,gBAAP,OAA4B,QAAhD,IACE,6BAA6BqB,0BAA/B,IAA+DrB,gBADnE,EACsF;AAClF,gDAAIE,kBAAkBF,iBAAiB,6BAA6BqB,0BAA9C,CAAtB;AACA,gDAAInB,mBAAmB,QAAOA,eAAP,yCAAOA,eAAP,OAA2B,QAA9C,IACM,kBAAkBmB,0BAAlB,GAA+C,GAA/C,GAAqDN,mBAAvD,IAAgFb,eADxF,EAC0G;AACtG,oDAAIoB,sBAAsBpB,gBAAgB,kBAAkBmB,0BAAlB,GAA+C,GAA/C,GAAqDN,mBAArE,CAA1B;;AAEA,oDAAIO,mBAAJ,EAA0B;AACtB,wDAAIT,SAAS,CAAT,KAAenX,MAAMC,OAAN,CAAekX,SAAS,CAAT,CAAf,CAAf,IACEA,SAAS,CAAT,EAAYrM,OAAZ,CAAqB8M,mBAArB,MAA+C,CAAC,CADtD,EAC4D;AACxDH,6EAAqBxV,KAArB,CAA2BC,OAA3B,GAAqC,OAArC;AACH,qDAHD,MAGO,IAAIiV,SAAS,CAAT,KAAenX,MAAMC,OAAN,CAAekX,SAAS,CAAT,CAAf,CAAf,IACLA,SAAS,CAAT,EAAYrM,OAAZ,CAAqB8M,mBAArB,MAA+C,CAAC,CAD/C,EACqD;AACxDH,6EAAqBxV,KAArB,CAA2BC,OAA3B,GAAqC,MAArC;AACH;AACJ;AACJ;AACJ;AACJ;AACJ;AACJ,6BA9BsB;;AAgCvBwV,2DAAgC7X,OAAO,CAAP,CAAhC;;AAEA0X,mDAAuBrU,gBAAvB,CAAyC,QAAzC,EAAmD,YAAW;AAC1DwU,+DAAgC7X,OAAO,CAAP,CAAhC;AACH,6BAFD,EAEG,KAFH;AAGH;AACJ;AACJ;AACJ;AACJ;AACJ,KAllBa;AAmlBd;AACAgY,0BAAsB,8BAAWC,kBAAX,EAA+BC,kBAA/B,EAAoD;AACtE,YAAIC,iBAAiB9a,SAASC,sBAAT,CAAiC2a,kBAAjC,CAArB;AACA,YAAIE,eAAe5a,MAAf,GAAwB,CAA5B,EAAgC;AAC5B;;AAEA,gBAAIyC,SAASiY,mBAAmBjZ,KAAnB,CAA0B,0BAA1B,CAAb;;AAEA,gBAAIgB,UAAUG,MAAMC,OAAN,CAAeJ,MAAf,CAAd,EAAwC;AACpC,oBAAIoY,kBAAkB/a,SAASsN,aAAT,CAAwB,mBAAmB3K,OAAO,CAAP,CAA3C,CAAtB;AACA,oBAAIoY,eAAJ,EAAsB;AAClB,wBAAIC,oCAAJ;AACA,wBAAI1B,kBAAkB,EAAtB;AACA,wBAAIF,yBAAJ;AACA4B,kDAA8Bhb,SAASC,sBAAT,CAAiC,oBAAjC,CAA9B;AACA,wBAAI+a,4BAA4B9a,MAA5B,IAAsC,CAAtC,IAA2C8a,4BAA4B,CAA5B,EAA+BrT,SAA/B,IAA4C,EAA3F,EAAgG;AAC5F,4BAAIiS,qBAAqBhY,YAAYiY,qBAAZ,CAAmCiB,cAAnC,CAAzB;AACAxB,wCAAgB,UAAUsB,kBAA1B,IAAgDhB,kBAAhD;;AAEAR,2CAAmB,EAAnB;AACAA,yCAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,IAA2D2W,eAA3D;AACAF,2CAAmB7U,KAAK0W,SAAL,CAAgB7B,gBAAhB,CAAnB;;AAEA,4BAAI4B,4BAA4B9a,MAA5B,IAAsC,CAA1C,EAA8C;AAC1C8a,0DAA8Bhb,SAASiB,aAAT,CAAwB,QAAxB,CAA9B;AACA+Z,wDAA4BtT,YAA5B,CAA0C,MAA1C,EAAkD,WAAlD;AACAsT,wDAA4BtT,YAA5B,CAA0C,OAA1C,EAAmD,oBAAnD;AACH,yBAJD,MAIO;AACHsT,0DAA8BA,4BAA4B,CAA5B,CAA9B;AACH;;AAEDA,oDAA4BrT,SAA5B,GAAwCyR,gBAAxC;;AAEA,4BAAI9Y,OAAON,SAASO,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAAX;AACAD,6BAAKa,WAAL,CAAkB6Z,2BAAlB;AACH,qBApBD,MAoBO;AACHA,sDAA8BA,4BAA4B,CAA5B,CAA9B;AACA5B,2CAAmB4B,4BAA4BrT,SAA/C;AACA,4BAAIyR,gBAAJ,EAAuB;AACnBA,+CAAmB7U,KAAKC,KAAL,CAAY4U,gBAAZ,CAAnB;;AAEA,gCAAIA,oBAAoB,QAAOA,gBAAP,yCAAOA,gBAAP,OAA4B,QAApD,EAA+D;;AAG3D,oCAAIyB,kBAAJ,EAAyB;AACrB,wCAAIjB,sBAAqBhY,YAAYiY,qBAAZ,CAAmCiB,cAAnC,CAAzB;AACA,wCAAI,EAAM,6BAA6BnY,OAAO,CAAP,CAA/B,IAA8CyW,gBAAlD,KACI,QAAOA,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,CAAP,MAAoE,QAD5E,EACsF;AAClFyW,yDAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,IAA2D,EAA3D;AACH;AACDyW,qDAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,EAAyD,UAAUiY,kBAAnE,IAAyFhB,mBAAzF;AACAoB,gEAA4BrT,SAA5B,GAAwCpD,KAAK0W,SAAL,CAAgB7B,gBAAhB,CAAxC;AACH,iCARD,MAQO,IAAI,EAAQ,6BAA6BzW,OAAO,CAAP,CAA/B,IAA8CyW,gBAAhD,IACP,QAAOA,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,CAAP,MAAoE,QAD7D,IAEJ,UAAUiY,kBAAZ,IAAoCxB,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,CAFlC,CAAJ,EAEmG;AACtG,wCAAIiX,uBAAqBhY,YAAYiY,qBAAZ,CAAmCiB,cAAnC,CAAzB;AACA,wCAAI,EAAM,6BAA6BnY,OAAO,CAAP,CAA/B,IAA8CyW,gBAAlD,KACI,QAAOA,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,CAAP,MAAoE,QAD5E,EACsF;AAClFyW,yDAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,IAA2D,EAA3D;AACH;AACDyW,qDAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,EAAyD,UAAUiY,kBAAnE,IAAyFhB,oBAAzF;AACAoB,gEAA4BrT,SAA5B,GAAwCpD,KAAK0W,SAAL,CAAgB7B,gBAAhB,CAAxC;AACH,iCAVM,MAUA,IAAQ,6BAA6BzW,OAAO,CAAP,CAA/B,IAA8CyW,gBAAhD,IACH,QAAOA,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,CAAP,MAAoE,QADjE,IAED,UAAUiY,kBAAZ,IAAoCxB,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,CAFrC,EAEgG;AACnG,yCAAK,IAAIoG,IAAI,CAAb,EAAgBA,IAAI+R,eAAe5a,MAAnC,EAA2C6I,GAA3C,EAAiD;AAC7C,4CAAI+R,eAAe/R,CAAf,EAAkB3H,IAAlB,IAA0B,UAA9B,EAA2C;AACvC,gDAAIwY,6BAAJ;AACA,gDAAIkB,eAAe/R,CAAf,EAAkBmS,IAAtB,EAA6B;AACzBtB,uEAAqBR,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,EAAyD,UAAUiY,kBAAnE,EAAuFE,eAAe/R,CAAf,EAAkBmS,IAAzG,CAArB;AACH,6CAFD,MAEO;AACHtB,uEAAqBR,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,EAAyD,UAAUiY,kBAAnE,CAArB;AACH;;AAED,gDAAIhB,wBAAsB,SAA1B,EAAsC;AAClCkB,+DAAe/R,CAAf,EAAkBiL,OAAlB,GAA4B,IAA5B;AACH,6CAFD,MAEO,IAAI4F,wBAAsB,WAA1B,EAAwC;AAC3CkB,+DAAe/R,CAAf,EAAkBiL,OAAlB,GAA4B,KAA5B;AACH;AACJ,yCAbD,MAaO;AACH8G,2DAAe/R,CAAf,EAAkBzB,KAAlB,GAA0B8R,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA9C,EAAyD,UAAUiY,kBAAnE,CAA1B;AACH;AACJ;AAEJ;AACJ;AACJ;AACJ;AACJ;AACJ;AACJ;AACJ,KA9qBa;AA+qBd;AACAf,2BAAuB,+BAAUiB,cAAV,EAA2B;AAC9C,YAAIlB,2BAAJ;AACA,aAAK,IAAI7Q,IAAI,CAAb,EAAgBA,IAAI+R,eAAe5a,MAAnC,EAA2C6I,GAA3C,EAAiD;AAC7C,gBAAI+R,eAAe/R,CAAf,EAAkB3H,IAAlB,IAA0B,UAA1B,IAAwC0Z,eAAe/R,CAAf,EAAkBmS,IAA9D,EAAqE;AACjE,oBAAI,CAAEtB,kBAAN,EAA2BA,qBAAqB,EAArB;AAC3B,oBAAIkB,eAAe/R,CAAf,EAAkBiL,OAAlB,IAA6B,IAAjC,EAAwC;AACpC4F,uCAAmBkB,eAAe/R,CAAf,EAAkBmS,IAArC,IAA6C,SAA7C;AACH,iBAFD,MAEO;AACHtB,uCAAmBkB,eAAe/R,CAAf,EAAkBmS,IAArC,IAA6C,WAA7C;AACH;AACJ,aAPD,MAOO,IAAIJ,eAAe/R,CAAf,EAAkB3H,IAAlB,IAA0B,UAA9B,EAA2C;AAC1C,oBAAI0Z,eAAe/R,CAAf,EAAkBiL,OAAlB,IAA6B,IAAjC,EAAwC;AACpC4F,yCAAqB,SAArB;AACH,iBAFD,MAEO;AACHA,yCAAqB,WAArB;AACH;AACR,aANM,MAMA;AACHA,qCAAqBkB,eAAe/R,CAAf,EAAkBzB,KAAvC;AACH;AACJ;AACD,eAAOsS,kBAAP;AACH,KArsBa;AAssBd;AACAxW,8BAA0B,kCAAU+X,WAAV,EAAuBC,QAAvB,EAAkC;AACxD,YAAID,eAAeC,QAAnB,EAA8B;AAC1B,gBAAIC,aAAaF,YAAYzZ,SAAZ,CAAsBC,KAAtB,CAA6B,0BAA7B,CAAjB;AACA,gBAAI2Z,aAAaF,SAAS1Z,SAAT,CAAmBC,KAAnB,CAA0B,0BAA1B,CAAjB;AACA,gBAAI0Z,cAAcvY,MAAMC,OAAN,CAAesY,UAAf,CAAd,IACIC,UADJ,IACkBxY,MAAMC,OAAN,CAAeuY,UAAf,CADtB,EACmD;AAC/C,oBAAIC,eAAeF,WAAW,CAAX,CAAnB;AACA,oBAAIG,eAAeF,WAAW,CAAX,CAAnB;AACA,oBAAInC,6BAA6BnZ,SAASC,sBAAT,CAAiC,oBAAjC,CAAjC;AACA,oBAAIkZ,2BAA2BjZ,MAA3B,GAAoC,CAAxC,EAA4C;AACxCiZ,iDAA6BA,2BAA2B,CAA3B,CAA7B;;AAEA,wBAAIC,mBAAmBD,2BAA2BxR,SAAlD;AACA,wBAAIyR,gBAAJ,EAAuB;AACnBA,2CAAmB7U,KAAKC,KAAL,CAAY4U,gBAAZ,CAAnB;;AAEA,4BAAIA,oBAAoB,QAAOA,gBAAP,yCAAOA,gBAAP,OAA4B,QAApD,EAA+D;AAC3D,gCAAIqC,sBAAsBrC,iBAAiB,6BAA6BmC,YAA9C,CAA1B;AACA,gCAAIE,uBAAuB,QAAOA,mBAAP,yCAAOA,mBAAP,OAA+B,QAA1D,EAAqE;AACjE,oCAAIC,sBAAsB,EAA1B;;AAEA1L,uCAAOC,IAAP,CAAawL,mBAAb,EAAmCvL,OAAnC,CAA4C,UAAU/B,GAAV,EAAgB;AACxD,wCAAIuM,sBAAsBe,oBAAoBtN,GAApB,CAA1B;AACA,wCAAIwN,wBAAwBxN,IAAIK,OAAJ,CAAa+M,YAAb,EAA2BC,YAA3B,CAA5B;AACAE,wDAAoBC,qBAApB,IAA6CjB,mBAA7C;AACH,iCAJD;;AAMA,oCAAI1K,OAAOC,IAAP,CAAayL,mBAAb,EAAmCxb,MAAnC,GAA4C,CAAhD,EAAoD;AAChDkZ,qDAAiB,6BAA6BoC,YAA9C,IAA8DE,mBAA9D;;AAEAtC,uDAAmB7U,KAAK0W,SAAL,CAAgB7B,gBAAhB,CAAnB;AACAD,+DAA2BxR,SAA3B,GAAuCyR,gBAAvC;AACH;AACJ;AACJ;AACJ;AACJ;AACJ;AACJ;AACJ,KA9uBa;AA+uBd;AACAvX,gCAA4B,oCAAU6K,OAAV,EAAoB;AAC5C,YAAI/J,SAAS+J,QAAQhL,SAAR,CAAkBC,KAAlB,CAAyB,0BAAzB,CAAb;AACA,YAAIrB,OAAON,SAASO,oBAAT,CAA+B,MAA/B,EAAwC,CAAxC,CAAX;AACA,YAAIqb,mBAAmBtb,KAAKL,sBAAL,CAA6B,oBAA7B,CAAvB;AACA,YAAI0C,UAAUG,MAAMC,OAAN,CAAeJ,MAAf,CAAV,IAAqCiZ,iBAAiB1b,MAAjB,GAA0B,CAAnE,EAAuE;AACnE0b,+BAAmBA,iBAAiB,CAAjB,CAAnB;AACA,gBAAIxC,mBAAmBwC,iBAAiBjU,SAAxC;AACA,gBAAIyR,gBAAJ,EAAuB;AACnBA,mCAAmB7U,KAAKC,KAAL,CAAY4U,gBAAZ,CAAnB;AACA,oBAAIA,oBAAoB,QAAOA,gBAAP,yCAAOA,gBAAP,OAA4B,QAAhD,IACQ,6BAA6BzW,OAAO,CAAP,CAA7B,GAAyC,GAAzC,GAA+CA,OAAO,CAAP,CAAjD,IAAgEyW,gBAD1E,EAC+F;AAC3F,2BAAOA,iBAAiB,6BAA6BzW,OAAO,CAAP,CAA7B,GAAyC,GAAzC,GAA+CA,OAAO,CAAP,CAAhE,CAAP;;AAEA,wBAAIqN,OAAOC,IAAP,CAAamJ,gBAAb,EAAgClZ,MAAhC,IAA0C,CAA9C,EAAkD;AAC9CI,6BAAKQ,WAAL,CAAkB8a,gBAAlB;AACH,qBAFD,MAEO;AACHxC,2CAAmB7U,KAAK0W,SAAL,CAAgB7B,gBAAhB,CAAnB;AACAwC,yCAAiBjU,SAAjB,GAA6ByR,gBAA7B;AACH;AACJ;AACJ;AACJ;AACJ;AAtwBa,CAAlB;ACAA,IAAI/Q,mBAAmB,SAAnBA,gBAAmB,GAAY;;AAE/B,YAAMwT,cAAc,CAApB;AAAA,YACIC,WAAW,CADf;AAAA,YAEIC,cAAc,EAFlB;AAAA,YAGIC,WAAW,EAHf;;AAKA,YAAIC,iBAAiBjc,SAASM,IAA9B;AACA4b,iCAAyBD,eAAehc,sBAAf,CAAsC,6BAAtC,EAAqE,CAArE,CAAzB,EACQkc,yBAAyBF,eAAehc,sBAAf,CAAsC,6BAAtC,EAAqE,CAArE,CADjC,EAEQmc,sBAAsBH,eAAehc,sBAAf,CAAsC,6BAAtC,EAAqE,CAArE,CAF9B,EAGQoc,sBAAsBJ,eAAehc,sBAAf,CAAsC,6BAAtC,EAAqE,CAArE,CAH9B,EAIQqc,eAAetc,SAASqH,cAAT,CAAwB,qBAAxB,CAJvB,EAKQkV,YAAYvc,SAASqH,cAAT,CAAwB,kBAAxB,CALpB;;AAOA6U,+BAAuB7a,OAAvB,GAAiC,YAAY;AACrC,oBAAIib,aAAahV,KAAb,GAAqBuU,WAAzB,EAAsC;AAC9BS,qCAAahV,KAAb;AACP;AACR,SAJD;;AAMA6U,+BAAuB9a,OAAvB,GAAiC,YAAY;AACrC,oBAAIib,aAAahV,KAAb,GAAqByU,WAAzB,EAAsC;AAC9BO,qCAAahV,KAAb;AACP;AACR,SAJD;;AAMA8U,4BAAoB/a,OAApB,GAA8B,YAAY;AAClC,oBAAIkb,UAAUjV,KAAV,GAAkBwU,QAAtB,EAAgC;AACxBS,kCAAUjV,KAAV;AACP;AACR,SAJD;;AAMA+U,4BAAoBhb,OAApB,GAA8B,YAAY;AAClC,oBAAIkb,UAAUjV,KAAV,GAAkB0U,QAAtB,EAAgC;AACxBO,kCAAUjV,KAAV;AACP;AACR,SAJD;;AAMAtH,iBAASqH,cAAT,CAAwB,qBAAxB,EAA+ChG,OAA/C,GAAyD,YAAY;AAC7D,oBAAImb,UAAUxc,SAASqH,cAAT,CAAwB,qBAAxB,EAA+CC,KAA7D;AAAA,oBACIgL,OAAOtS,SAASqH,cAAT,CAAwB,kBAAxB,EAA4CC,KADvD;;AAGAM,2BAAW4U,OAAX,EAAoBlK,IAApB;;AAEA,oBAAI/P,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,0CAA0BE,aAA1B;AACP,SARD;AAUH,CAjDD;ACAA,IAAIoF,iBAAiB,SAAjBA,cAAiB,GAAY;;AAE7B,QAAI3F,QAAQlC,SAASC,sBAAT,CAAgC,oBAAhC,EAAsD,CAAtD,CAAZ;AAAA,QACIwc,qBAAqBzc,SAASC,sBAAT,CAAgC,cAAhC,CADzB;;AAGA,aAASyc,qBAAT,CAAgCC,OAAhC,EAAyCC,QAAzC,EAAoD;AAChD,YAAKA,WAAW,CAAhB,EAAoB;AACpB,YAAI1a,KAAJ,EAAY;AACR,gBAAI2a,YAAY3a,MAAM3B,oBAAN,CAA2B,IAA3B,CAAhB;AACA,gBAAKsc,UAAU3c,MAAV,GAAmB0c,QAAxB,EAAmC;AAC/B,oBAAIE,oBAAoBD,UAAUD,QAAV,EAAoB7X,KAApB,CAA0BkO,eAAlD;AACA,oBAAI8J,gBAAgB/c,SAASqH,cAAT,CAAwBsV,OAAxB,CAApB;AACA,oBAAKI,iBAAiBD,iBAAtB,EAA0C;AACtCC,kCAAczV,KAAd,GAAsB1F,YAAYyP,QAAZ,CAAsByL,iBAAtB,CAAtB;AACH;AACJ;AACJ;AAEJ;;AAEDJ,0BAAuB,kBAAvB,EAA2C,CAA3C;AACAnT,WAAO,mBAAP,EAA4ByT,aAA5B,CAA0C;AACtCC,gBAAQ,gBAAW3b,KAAX,EAAkBmU,EAAlB,EAAuB;AAC3B,gBAAIoH,YAAY3a,MAAM3B,oBAAN,CAA2B,IAA3B,CAAhB;AACA,iBAAM,IAAIwI,KAAI,CAAd,EAAiBA,KAAI8T,UAAU3c,MAA/B,EAAuC6I,MAAK,CAA5C,EAAgD;AAC5C8T,0BAAU9T,EAAV,EAAahE,KAAb,CAAmBkO,eAAnB,GAAqCwC,GAAGzC,KAAH,CAASzB,QAAT,EAArC;AACH;AACD3P,wBAAYuS,2CAAZ,CAAyD7S,KAAzD;AACH,SAPqC;AAQtC4b,eAAO,iBAAU;AACb,gBAAIL,YAAY3a,MAAM3B,oBAAN,CAA2B,IAA3B,CAAhB;AACA,iBAAM,IAAIwI,MAAI,CAAd,EAAiBA,MAAI8T,UAAU3c,MAA/B,EAAuC6I,OAAK,CAA5C,EAAgD;AAC5C8T,0BAAU9T,GAAV,EAAahE,KAAb,CAAmBkO,eAAnB,GAAqC,EAArC;AACA,oBAAInK,MAAM+T,UAAU9T,GAAV,EAAaxI,oBAAb,CAAkC,IAAlC,CAAV;AACA,qBAAM,IAAIyJ,IAAI,CAAd,EAAiBA,IAAIlB,IAAI5I,MAAzB,EAAiC8J,GAAjC,EAAuC;AACnClB,wBAAIkB,CAAJ,EAAOjF,KAAP,CAAakO,eAAb,GAA+B,EAA/B;AACH;AACJ;;AAED,gBAAI1Q,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH;;AApBqC,KAA1C;;AAwBAia,0BAAuB,iBAAvB,EAA0C,CAA1C;AACAnT,WAAO,kBAAP,EAA2ByT,aAA3B,CAAyC;AACrCC,gBAAQ,gBAAW3b,KAAX,EAAkBmU,EAAlB,EAAuB;AAC3B,gBAAIoH,YAAY3a,MAAM3B,oBAAN,CAA2B,IAA3B,CAAhB;AACA,iBAAM,IAAIwI,MAAI,CAAd,EAAiBA,MAAI8T,UAAU3c,MAA/B,EAAuC6I,OAAK,CAA5C,EAAgD;AAC5C8T,0BAAU9T,GAAV,EAAahE,KAAb,CAAmBkO,eAAnB,GAAqCwC,GAAGzC,KAAH,CAASzB,QAAT,EAArC;AACH;;AAED3P,wBAAYuS,2CAAZ,CAAyD7S,KAAzD;AACH,SARoC;AASrC4b,eAAO,iBAAU;AACb,gBAAIL,YAAY3a,MAAM3B,oBAAN,CAA2B,IAA3B,CAAhB;AACA,iBAAM,IAAIwI,MAAI,CAAd,EAAiBA,MAAI8T,UAAU3c,MAA/B,EAAuC6I,OAAK,CAA5C,EAAgD;AAC5C8T,0BAAU9T,GAAV,EAAahE,KAAb,CAAmBkO,eAAnB,GAAqC,EAArC;AACA,oBAAInK,MAAM+T,UAAU9T,GAAV,EAAaxI,oBAAb,CAAmC,IAAnC,CAAV;AACA,qBAAM,IAAIyJ,IAAI,CAAd,EAAiBA,IAAIlB,IAAI5I,MAAzB,EAAiC8J,GAAjC,EAAuC;AACnClB,wBAAIkB,CAAJ,EAAOjF,KAAP,CAAakO,eAAb,GAA+B,EAA/B;AACH;AACJ;;AAED,gBAAI1Q,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH;AArBoC,KAAzC;;AAwBAia,0BAAuB,sBAAvB,EAA+C,CAA/C;AACAnT,WAAO,uBAAP,EAAgCyT,aAAhC,CAA8C;AAC1CC,gBAAQ,gBAAU3b,KAAV,EAAiBmU,EAAjB,EAAqB;AACzB,gBAAI0H,cAAcjb,MAAM3B,oBAAN,CAA2B,IAA3B,EAAiC,CAAjC,CAAlB;AACA4c,wBAAYpY,KAAZ,CAAkBkO,eAAlB,GAAoCwC,GAAGzC,KAAH,CAASzB,QAAT,EAApC;;AAEA,gBAAIhP,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH,SAPyC;AAQ1Cya,eAAO,iBAAU;AACb,gBAAIC,cAAcjb,MAAM3B,oBAAN,CAA2B,IAA3B,EAAiC,CAAjC,CAAlB;AACA4c,wBAAYpY,KAAZ,CAAkBkO,eAAlB,GAAoC,EAApC;AACA,gBAAInK,MAAMqU,YAAY5c,oBAAZ,CAAiC,IAAjC,CAAV;AACA,iBAAK,IAAIyJ,IAAI,CAAb,EAAgBA,IAAIlB,IAAI5I,MAAxB,EAAgC8J,GAAhC,EAAqC;AACjClB,oBAAIkB,CAAJ,EAAOjF,KAAP,CAAakO,eAAb,GAA+B,EAA/B;AACH;;AAEDrR,wBAAYuS,2CAAZ,CAAyD7S,KAAzD;AACH;AAjByC,KAA9C;;AAoBA,aAAS8b,sBAAT,CAAiClb,KAAjC,EAAyC;AACrC,YAAImb,4BAA4Brd,SAASqH,cAAT,CAAyB,8BAAzB,CAAhC;AACA,YAAInF,SAASA,MAAMmI,OAAN,CAAciT,iBAAvB,IAA4Cpb,MAAMmI,OAAN,CAAciT,iBAAd,IAAmC,GAAnF,EAAyF;AACrFD,sCAA0BrJ,OAA1B,GAAoC,IAApC;AACH,SAFD,MAEO;AACHqJ,sCAA0BrJ,OAA1B,GAAoC,KAApC;AACH;AACJ;AACDoJ,2BAAwBlb,KAAxB;;AAEA,aAASqb,yBAAT,CAAoCrb,KAApC,EAA4C;AACxC,YAAIsb,qBAAqBxd,SAASqH,cAAT,CAAyB,wBAAzB,CAAzB;;AAEA,YAAInF,SAASA,MAAMvB,SAAN,CAAgBsB,QAAhB,CAA0B,yBAA1B,CAAb,EAAqE;AACjEub,+BAAmBxJ,OAAnB,GAA6B,IAA7B;AACH,SAFD,MAEO;AACHwJ,+BAAmBxJ,OAAnB,GAA6B,KAA7B;AACH;AACJ;AACDuJ,8BAA2Brb,KAA3B;;AAEA,aAASub,6BAAT,GAAyC;AACrC,YAAIvb,QAAQlC,SAASC,sBAAT,CAAgC,oBAAhC,CAAZ;AACA,YAAKiC,MAAMhC,MAAN,GAAe,CAApB,EAAwB;AACpB,gBAAIwd,mBAAmBxb,MAAM,CAAN,EAAS6C,KAAT,CAAe4Y,WAAtC;AACA,gBAAKD,gBAAL,EAAwB;AACpB,oBAAIE,wBAAwB5d,SAASqH,cAAT,CAAyB,yBAAzB,CAA5B;AACA,oBAAKuW,qBAAL,EAA6B;AACzBA,0CAAsBtW,KAAtB,GAA8B1F,YAAYyP,QAAZ,CAAsBqM,gBAAtB,CAA9B;AACH;AACJ;;AAED,gBAAIG,mBAAmB3b,MAAM,CAAN,EAAS6C,KAAT,CAAe+Y,WAAtC;AACA,gBAAKD,gBAAL,EAAwB;AACpB,oBAAIE,6BAA6B/d,SAASqH,cAAT,CAAwB,0BAAxB,CAAjC;AAAA,oBACI2W,6BAA6Bhe,SAASqH,cAAT,CAAwB,0BAAxB,CADjC;;AAGA,oBAAK0W,0BAAL,EAAkC;AAC9BA,+CAA2BzW,KAA3B,GAAmCuB,SAAUgV,gBAAV,CAAnC;AACH;AACD,oBAAKG,0BAAL,EAAkC;AAC9BA,+CAA2B1W,KAA3B,GAAmCuB,SAAUgV,gBAAV,CAAnC;AACH;AACJ;;AAGD,gBAAII,UAAU/b,MAAM,CAAN,EAASoL,aAAT,CAAwB,IAAxB,CAAd;AACA,gBAAI4Q,mBAAmBD,QAAQlZ,KAAR,CAAc+Y,WAArC;AACA,gBAAKI,gBAAL,EAAwB;AACpB,oBAAIC,wBAAwBne,SAASqH,cAAT,CAAyB,yBAAzB,CAA5B;AACA,oBAAI+W,uBAAuBpe,SAASqH,cAAT,CAAyB,yBAAzB,CAA3B;AACA,oBAAK6W,oBAAoBrV,SAAUqV,gBAAV,IAA+B,CAAxD,EAA4D;AACxD,wBAAKC,qBAAL,EAA6B;AACzBA,8CAAsBnK,OAAtB,GAAgC,IAAhC;;AAEA,4BAAKoK,oBAAL,EAA4B;AACxBA,iDAAqBzd,SAArB,CAA+BO,GAA/B,CAAoC,SAApC;AACA,gCAAImd,6BAA6Bre,SAASqH,cAAT,CAAyB,gCAAzB,CAAjC;AACA,gCAAIiX,8BAA6Bte,SAASqH,cAAT,CAAyB,gCAAzB,CAAjC;AACAgX,uDAA2B/W,KAA3B,GAAmCuB,SAAUqV,gBAAV,CAAnC;AACAI,wDAA2BhX,KAA3B,GAAmCuB,SAAUqV,gBAAV,CAAnC;AACH;AACJ;AACJ,iBAZD,MAYO;AACHC,0CAAsBnK,OAAtB,GAAgC,KAAhC;AACH;AACJ;;AAED,gBAAO6J,oBAAoBhV,SAAUgV,gBAAV,IAA+B,CAArD,IAA8DK,oBAAoBrV,SAAUqV,gBAAV,IAA+B,CAAtH,EAA4H;AACxHle,yBAASqH,cAAT,CAAyB,kCAAzB,EAA8DtC,KAA9D,CAAoEC,OAApE,GAA8E,EAA9E;AACH;AACJ;AACJ;;AAEDyY;;AAEAlU,WAAO,0BAAP,EAAmCyT,aAAnC,CAAiD;AAC7CC,gBAAQ,gBAAU3b,KAAV,EAAiBmU,EAAjB,EAAqB;AACzB,gBAAI8I,aAAarc,MAAM3B,oBAAN,CAA2B,IAA3B,CAAjB;AACA2B,kBAAM6C,KAAN,CAAY2E,MAAZ,GAAqB1J,SAASsN,aAAT,CAAuB,2BAAvB,EAAoDhG,KAApD,GAA4D,WAA5D,GAA0EmO,GAAGzC,KAAH,CAASzB,QAAT,EAA/F;;AAEA,iBAAK,IAAIxI,IAAI,CAAb,EAAgBA,IAAIwV,WAAWre,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxC,oBAAIyV,yBAAyBxe,SAASsN,aAAT,CAAuB,iCAAvB,EAA0DhG,KAAvF;AACA,oBAAKtH,SAASqH,cAAT,CAAwB,yBAAxB,EAAmD2M,OAAxD,EAAkE;AAC9DuK,+BAAWxV,CAAX,EAAchE,KAAd,CAAoB2E,MAApB,GAA6B,CAAE8U,0BAA0B,CAA1B,GAA8BA,sBAA9B,GAAuD,CAAzD,IAA+D,WAA/D,GAA6E/I,GAAGzC,KAAH,CAASzB,QAAT,EAA1G;AACH;AACJ;AACD3P,wBAAYuS,2CAAZ,CAAyD7S,KAAzD;AACH,SAZ4C;AAa7C4b,eAAO,iBAAW;AACd,gBAAIqB,aAAarc,MAAM3B,oBAAN,CAA2B,IAA3B,CAAjB;AACA2B,kBAAM6C,KAAN,CAAY4Y,WAAZ,GAA0B,EAA1B;;AAEA,iBAAK,IAAI5U,IAAI,CAAb,EAAgBA,IAAIwV,WAAWre,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxCwV,2BAAWxV,CAAX,EAAchE,KAAd,CAAoB4Y,WAApB,GAAkC,EAAlC;AACH;;AAED,gBAAIpb,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH;AAvB4C,KAAjD;;AA0BA,aAASgc,kBAAT,CAA4BnX,KAA5B,EAAmC;AAC/B,YAAIiX,aAAarc,MAAM3B,oBAAN,CAA2B,IAA3B,CAAjB;AACA,aAAK,IAAIwI,IAAI,CAAb,EAAgBA,IAAIwV,WAAWre,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxCwV,uBAAWxV,CAAX,EAAchE,KAAd,CAAoB+Y,WAApB,GAAkC9d,SAASsN,aAAT,CAAuB,iCAAvB,EAA0DhG,KAA1D,GAAkE,IAApG;AACAiX,uBAAWxV,CAAX,EAAchE,KAAd,CAAoB2Z,WAApB,GAAkC,OAAlC;AACH;AACJ;;AAED,aAASC,cAAT,CAAwBrX,KAAxB,EAA+B;AAC3B,YAAIiX,aAAarc,MAAM3B,oBAAN,CAA2B,IAA3B,CAAjB;AACA,aAAK,IAAIwI,IAAI,CAAb,EAAgBA,IAAIwV,WAAWre,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxCwV,uBAAWxV,CAAX,EAAchE,KAAd,CAAoBuE,OAApB,GAA8BhC,QAAQ,IAAtC;AACH;AACJ;;AAED,aAASsX,cAAT,CAAyB5K,OAAzB,EAAmC;AAC/B,YAAI6K,MAAJ;AAAA,YAAY7L,QAAQhT,SAASsN,aAAT,CAAuB,0BAAvB,EAAmDhG,KAAnD,IAA4D+F,SAA5D,GAChBrN,SAASsN,aAAT,CAAuB,0BAAvB,EAAmDhG,KADnC,GAC2C,YAD/D;AAEI,YAAKtH,SAASsN,aAAT,CAAwB,iCAAxB,EAA4DhG,KAA5D,IAAqE,CAArE,IAA0EtH,SAASsN,aAAT,CAAwB,iCAAxB,EAA4DhG,KAA5D,IAAqE,CAApJ,EAAwJ;AACpJtH,qBAASsN,aAAT,CAAwB,iCAAxB,EAA4DhG,KAA5D,GAAoE,CAApE;AACAtH,qBAASsN,aAAT,CAAwB,iCAAxB,EAA4DhG,KAA5D,GAAoE,CAApE;AACH;AACD,YAAIkE,QAAQxL,SAASsN,aAAT,CAAwB,iCAAxB,EAA4DhG,KAA5D,GAAoE,IAAhF;AACJ,YAAIwX,mBAAmB9e,SAASC,sBAAT,CAAgC,oBAAhC,CAAvB;AACA,YAAI6e,iBAAiB5e,MAAjB,GAA0B,CAA9B,EAAkC;AAC9B,gBAAI8T,WAAW,SAAf,EAA0B;AACtBhU,yBAASqH,cAAT,CAAwB,yBAAxB,EAAmDtC,KAAnD,CAAyDga,YAAzD,GAAwE,KAAxE;AACA,oBAAIR,aAAaO,iBAAiB,CAAjB,EAAoBve,oBAApB,CAA0C,IAA1C,CAAjB;AACA,qBAAK,IAAIwI,IAAI,CAAb,EAAgBA,IAAIwV,WAAWre,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxCwV,+BAAWxV,CAAX,EAAchE,KAAd,CAAoB2E,MAApB,GAA6B8B,QAAQ,SAAR,GAAoBwH,KAAjD;AACH;AACDhT,yBAASqH,cAAT,CAAyB,yBAAzB,EAAqD1G,SAArD,CAA+DO,GAA/D,CAAoE,SAApE;AACH,aAPD,MAOO;AACHlB,yBAASqH,cAAT,CAAyB,yBAAzB,EAAqD1G,SAArD,CAA+DC,MAA/D,CAAuE,SAAvE;AACA,oBAAI2d,aAAaO,iBAAiB,CAAjB,EAAoBve,oBAApB,CAA0C,IAA1C,CAAjB;AACA,qBAAK,IAAIwI,IAAI,CAAb,EAAgBA,IAAIwV,WAAWre,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxCwV,+BAAWxV,CAAX,EAAchE,KAAd,CAAoB2E,MAApB,GAA6B,eAAesJ,KAA5C;AACAuL,+BAAWxV,CAAX,EAAchE,KAAd,CAAoB2E,MAApB,GAA6B,IAA7B;AACH;AACJ;AACJ;AAEJ;;AAED,aAASsV,aAAT,CAAwB1X,KAAxB,EAAgC;AAC5BpF,cAAM6C,KAAN,CAAY+Y,WAAZ,GAA0BxW,QAAQ,IAAlC;AACApF,cAAM6C,KAAN,CAAY2Z,WAAZ,GAA0B,OAA1B;AACH;;AAED,aAASO,mBAAT,GAA+B;AAC3B,YAAI/c,QAAQlC,SAASC,sBAAT,CAAgC,oBAAhC,CAAZ;;AAEA,YAAKiC,MAAMhC,MAAN,GAAe,CAApB,EAAwB;AACpB,gBAAI2C,KAAKX,MAAM,CAAN,EAASoL,aAAT,CAAwB,IAAxB,CAAT;;AAEA,gBAAKzK,EAAL,EAAU;AACN,oBAAIyG,UAAUzG,GAAGkC,KAAH,CAASuE,OAAvB;;AAEA,oBAAKA,OAAL,EAAe;AACX,wBAAI4V,sBAAsBlf,SAASqH,cAAT,CAAwB,wBAAxB,CAA1B;AAAA,wBACI8X,uBAAsBnf,SAASqH,cAAT,CAAwB,wBAAxB,CAD1B;;AAGA,wBAAK6X,mBAAL,EAA2B;AACvBA,4CAAoB5X,KAApB,GAA4BuB,SAAUS,OAAV,CAA5B;AACH;AACD,wBAAK6V,oBAAL,EAA2B;AACvBA,6CAAoB7X,KAApB,GAA4BuB,SAAUS,OAAV,CAA5B;AACH;AACJ;AACJ;AACJ;AACJ;;AAED2V;;AAEA,QAAIG,wBAAwBpf,SAASqH,cAAT,CAAyB,0BAAzB,CAA5B;AACAzF,gBAAYuU,eAAZ,CAA6BiJ,qBAA7B,EAAoD,CAApD,EAAuD,EAAvD;;AAEA,QAAId,6BAA6Bte,SAASqH,cAAT,CAAyB,gCAAzB,CAAjC;AACAzF,gBAAYuU,eAAZ,CAA6BmI,0BAA7B,EAAyD,CAAzD,EAA4D,EAA5D;;AAEA,QAAIa,sBAAsBnf,SAASqH,cAAT,CAAyB,wBAAzB,CAA1B;AACAzF,gBAAYuU,eAAZ,CAA6BgJ,mBAA7B,EAAkD,CAAlD,EAAqD,EAArD;;AAEJ;AACA;AACA;AACA;AACA;;AAEI,QAAIE,6BAA6Brf,SAASqH,cAAT,CAAyB,gCAAzB,CAAjC;AACAzF,gBAAYuU,eAAZ,CAA6BkJ,0BAA7B,EAAyD,CAAzD,EAA4D,GAA5D;;AAEA,QAAIC,2BAA2Btf,SAASqH,cAAT,CAAyB,8BAAzB,CAA/B;AACAzF,gBAAYuU,eAAZ,CAA6BmJ,wBAA7B,EAAuD,CAAvD,EAA0D,GAA1D;;AAIAtf,aAASqH,cAAT,CAAwB,wBAAxB,EAAkDkY,OAAlD,GAA4D,YAAY;AACpEvf,iBAASqH,cAAT,CAAwB,wBAAxB,EAAkDC,KAAlD,GAA0D,KAAKA,KAA/D;AACAqX,uBAAe,KAAKrX,KAApB;AACApF,cAAMsd,cAAN;AACH,KAJD;;AAMAxf,aAASqH,cAAT,CAAwB,wBAAxB,EAAkDoY,QAAlD,GAA6D,YAAW;AACpE,YAAIld,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAHD;;AAKAzC,aAASqH,cAAT,CAAwB,wBAAxB,EAAkDoY,QAAlD,GAA6D,YAAY;AACrEzf,iBAASqH,cAAT,CAAwB,wBAAxB,EAAkDC,KAAlD,GAA0D,KAAKA,KAA/D;AACAqX,uBAAe,KAAKrX,KAApB;AACApF,cAAMsd,cAAN;;AAEA,YAAIjd,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAPD;;AASAzC,aAASqH,cAAT,CAAwB,0BAAxB,EAAoDkY,OAApD,GAA8D,YAAY;AACtEvf,iBAASqH,cAAT,CAAwB,0BAAxB,EAAoDC,KAApD,GAA4D,KAAKA,KAAjE;AACA0X,sBAAc,KAAK1X,KAAnB;AACApF,cAAMsd,cAAN;;AAEA,YAAIE,uBAAuB1f,SAASqH,cAAT,CAAwB,yBAAxB,EAAmD2M,OAA9E;AAAA,YACI2L,0BAA0B3f,SAASqH,cAAT,CAAyB,kCAAzB,CAD9B;AAEA,YAAK,KAAKC,KAAL,IAAc,CAAd,IAAmBoY,wBAAwB,KAAhD,EAAwD;AACpDC,oCAAwB5a,KAAxB,CAA8BC,OAA9B,GAAwC,MAAxC;AACH,SAFD,MAEO;AACH2a,oCAAwB5a,KAAxB,CAA8BC,OAA9B,GAAwC,EAAxC;AACH;AACJ,KAZD;;AAcAhF,aAASqH,cAAT,CAAwB,0BAAxB,EAAoDoY,QAApD,GAA+D,YAAW;AACtE,YAAIld,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAHD;;AAKAzC,aAASqH,cAAT,CAAwB,0BAAxB,EAAoDoY,QAApD,GAA+D,YAAY;AACvEzf,iBAASqH,cAAT,CAAwB,0BAAxB,EAAoDC,KAApD,GAA4D,KAAKA,KAAjE;AACA0X,sBAAc,KAAK1X,KAAnB;AACApF,cAAMsd,cAAN;AACA,YAAIjd,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAND;;AAQAzC,aAASqH,cAAT,CAAwB,gCAAxB,EAA0DkY,OAA1D,GAAoE,YAAY;AAC5Evf,iBAASqH,cAAT,CAAwB,gCAAxB,EAA0DC,KAA1D,GAAkE,KAAKA,KAAvE;AACAmX,2BAAmB,KAAKnX,KAAxB;AACApF,cAAMsd,cAAN;AACH,KAJD;;AAMAxf,aAASqH,cAAT,CAAwB,gCAAxB,EAA0DoY,QAA1D,GAAqE,YAAY;AAC7E,YAAIld,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAHD;;AAKAzC,aAASqH,cAAT,CAAwB,gCAAxB,EAA0DoY,QAA1D,GAAqE,YAAY;AAC7Ezf,iBAASqH,cAAT,CAAwB,gCAAxB,EAA0DC,KAA1D,GAAkE,KAAKA,KAAvE;AACAmX,2BAAmB,KAAKnX,KAAxB;AACApF,cAAMsd,cAAN;AACA,YAAIjd,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAND;;AAQAzC,aAASqH,cAAT,CAAwB,yBAAxB,EAAmDoY,QAAnD,GAA8D,YAAY;AACtE,YAAIvd,KAAJ,EAAY;AACR,gBAAIsH,MAAM,KAAKwK,OAAL,GAAe,SAAf,GAA2B,WAArC;AACA4K,2BAAgBpV,GAAhB;AACA,gBAAIsU,cAAc9d,SAASqH,cAAT,CAAwB,0BAAxB,EAAoDC,KAAtE;AAAA,gBACIqY,0BAA0B3f,SAASqH,cAAT,CAAyB,kCAAzB,CAD9B;AAEA,gBAAImC,OAAO,WAAP,IAAsBsU,eAAe,CAAzC,EAA6C;AACzC6B,wCAAwB5a,KAAxB,CAA8BC,OAA9B,GAAwC,MAAxC;AACH,aAFD,MAEO;AACH2a,wCAAwB5a,KAAxB,CAA8BC,OAA9B,GAAwC,EAAxC;AACH;;AAED,gBAAIzC,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH;AACJ,KAfD;;AAiBAzC,aAASqH,cAAT,CAAyB,gCAAzB,EAA4DkY,OAA5D,GAAsE,YAAY;AAC9Evf,iBAASqH,cAAT,CAAyB,gCAAzB,EAA4DC,KAA5D,GAAoE,KAAKA,KAAzE;AACApF,cAAM0d,cAAN,CAAsB,KAAKtY,KAA3B;AACH,KAHD;;AAKAtH,aAASqH,cAAT,CAAyB,gCAAzB,EAA4DoY,QAA5D,GAAuE,YAAY;AAC/E,YAAIld,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAHD;;AAKAzC,aAASqH,cAAT,CAAyB,gCAAzB,EAA4DoY,QAA5D,GAAuE,YAAY;AAC/Ezf,iBAASqH,cAAT,CAAyB,gCAAzB,EAA4DC,KAA5D,GAAoE,KAAKA,KAAzE;AACApF,cAAM0d,cAAN,CAAsB,KAAKtY,KAA3B;;AAEA,YAAI/E,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAND;;AAQAzC,aAASqH,cAAT,CAAyB,oCAAzB,EAAgEoY,QAAhE,GAA2E,YAAY;AACnF,YAAI,KAAKzL,OAAT,EAAmB;AACf,gBAAI6L,cAAc3d,MAAMoL,aAAN,CAAqB,mBAArB,CAAlB;AACA,gBAAI9B,QAAQ5J,YAAYqT,cAAZ,CAA4B/S,KAA5B,EAAmC2d,WAAnC,CAAZ;AACA3d,kBAAM0d,cAAN,CAAsBpU,KAAtB;AACH,SAJD,MAIO;AACHtJ,kBAAM0d,cAAN,CAAsB,KAAtB,EAA6B,IAA7B;AACA,gBAAIC,eAAc3d,MAAMoL,aAAN,CAAqB,mBAArB,CAAlB;AACA,gBAAI9B,SAAQ5J,YAAYqT,cAAZ,CAA4B/S,KAA5B,EAAmC2d,YAAnC,CAAZ;AACA7f,qBAASqH,cAAT,CAAyB,gCAAzB,EAA4DC,KAA5D,GAAoEkE,MAApE;AACAxL,qBAASqH,cAAT,CAAyB,gCAAzB,EAA4DC,KAA5D,GAAoEkE,MAApE;AACH;;AAED,YAAIjJ,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAfD;;AAiBAzC,aAASqH,cAAT,CAAyB,8BAAzB,EAA0DkY,OAA1D,GAAoE,YAAY;AAC5Evf,iBAASqH,cAAT,CAAyB,8BAAzB,EAA0DC,KAA1D,GAAkE,KAAKA,KAAvE;AACApF,cAAM4d,YAAN,CAAoB,KAAKxY,KAAzB;AACH,KAHD;;AAKAtH,aAASqH,cAAT,CAAyB,8BAAzB,EAA0DoY,QAA1D,GAAqE,YAAY;AAC7E,YAAIld,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAHD;;AAKAzC,aAASqH,cAAT,CAAyB,8BAAzB,EAA0DoY,QAA1D,GAAqE,YAAY;AAC7Ezf,iBAASqH,cAAT,CAAyB,8BAAzB,EAA0DC,KAA1D,GAAkE,KAAKA,KAAvE;AACApF,cAAM4d,YAAN,CAAoB,KAAKxY,KAAzB;;AAEA,YAAI/E,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAND;;AAQAzC,aAASqH,cAAT,CAAyB,kCAAzB,EAA8DoY,QAA9D,GAAyE,YAAY;AACjF,YAAI,KAAKzL,OAAT,EAAmB;AACf,gBAAI6L,cAAc3d,MAAMoL,aAAN,CAAqB,mBAArB,CAAlB;AACA,gBAAI5B,SAAS9J,YAAYyT,YAAZ,CAA0BnT,KAA1B,EAAiC2d,WAAjC,CAAb;AACA3d,kBAAM4d,YAAN,CAAoBpU,MAApB;AACH,SAJD,MAIO;AACHxJ,kBAAM4d,YAAN,CAAoB,KAApB,EAA2B,IAA3B;AACA,gBAAID,gBAAc3d,MAAMoL,aAAN,CAAqB,mBAArB,CAAlB;AACA,gBAAI5B,UAAS9J,YAAYyT,YAAZ,CAA0BnT,KAA1B,EAAiC2d,aAAjC,CAAb;AACA7f,qBAASqH,cAAT,CAAyB,8BAAzB,EAA0DC,KAA1D,GAAkEoE,OAAlE;AACA1L,qBAASqH,cAAT,CAAyB,8BAAzB,EAA0DC,KAA1D,GAAkEoE,OAAlE;AACH;;AAED,YAAInJ,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAfD;;AAiBAzC,aAASqH,cAAT,CAAyB,8BAAzB,EAA0DoY,QAA1D,GAAqE,YAAW;AAC5E,YAAI,KAAKzL,OAAT,EAAmB;AACf9R,kBAAMmI,OAAN,CAAciT,iBAAd,GAAkC,CAAlC;AACH,SAFD,MAEO;AACHpb,kBAAMmI,OAAN,CAAciT,iBAAd,GAAkC,CAAlC;AACH;AACD,YAAI/a,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KARD;;AAUA,aAASsd,wBAAT,CAAmC7d,KAAnC,EAA0C8d,SAA1C,EAAsD;;AAElD,YAAIA,UAAUhM,OAAd,EAAwB;AACpBpS,wBAAYQ,kBAAZ,CAAgCF,KAAhC;;AAEAA,kBAAMvB,SAAN,CAAgBO,GAAhB,CAAqB,yBAArB;AACAgB,kBAAMoQ,IAAN,CAAW,CAAX,EAAc3R,SAAd,CAAwBO,GAAxB,CAA6B,iBAA7B;AACH,SALD,MAKO;AACH,gBAAIoR,OAAOpQ,MAAMoQ,IAAjB;AACApQ,kBAAMvB,SAAN,CAAgBC,MAAhB,CAAwB,yBAAxB;AACA0R,iBAAK,CAAL,EAAQ3R,SAAR,CAAkBC,MAAlB,CAA0B,iBAA1B;;AAEA,iBAAM,IAAImI,MAAI,CAAd,EAAiBA,MAAIuJ,KAAKpS,MAA1B,EAAkC6I,KAAlC,EAAwC;AACpC,oBAAI/G,UAAUsQ,KAAKvJ,GAAL,CAAd;AAAA,oBACImK,kBAAkBlR,QAAQiN,QAD9B;AAEA,qBAAK,IAAIjF,IAAI,CAAb,EAAgBA,IAAIkJ,gBAAgBhT,MAApC,EAA4C8J,GAA5C,EAAkD;AAC9CkJ,oCAAgBlJ,CAAhB,EAAmBkO,eAAnB,CAAoC,wBAApC;AACAhF,oCAAgBlJ,CAAhB,EAAmBkO,eAAnB,CAAoC,kCAApC;AACAhF,oCAAgBlJ,CAAhB,EAAmBkO,eAAnB,CAAoC,8BAApC;AACAhF,oCAAgBlJ,CAAhB,EAAmBkO,eAAnB,CAAoC,kCAApC;AACAhF,oCAAgBlJ,CAAhB,EAAmBkO,eAAnB,CAAoC,uBAApC;AACH;AACJ;AACJ;AACJ;;AAEDlY,aAASqH,cAAT,CAAyB,wBAAzB,EAAoDoY,QAApD,GAA+D,YAAY;AACvEM,iCAA0B7d,KAA1B,EAAiC,IAAjC;AACA,YAAIK,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAJD;;AAMA,SAAK,IAAIsG,IAAI,CAAb,EAAgBA,IAAI0T,mBAAmBvc,MAAvC,EAA+C6I,GAA/C,EAAoD;AAChD0T,2BAAmB1T,CAAnB,EAAsB/E,WAAtB,GAAoC,UAAU8H,CAAV,EAAa;AAC7CA,cAAEnH,YAAF,CAAeG,OAAf,CAAuB,aAAvB,EAAsC,KAAKuF,OAAL,CAAa4V,WAAnD;AACAnU,cAAEnH,YAAF,CAAeG,OAAf,CAAwB,iBAAiB,KAAKuF,OAAL,CAAa4V,WAAtD,EAAmE,iBAAiB,KAAK5V,OAAL,CAAa4V,WAAjG;AACH,SAHD;AAIH;;AAED,QAAI/d,KAAJ,EAAY;AACRlC,iBAASqH,cAAT,CAAwB,oCAAxB,EAA8DhG,OAA9D,GAAwEa,MAAMge,mBAA9E;AACAlgB,iBAASqH,cAAT,CAAyB,4BAAzB,EAAwDhG,OAAxD,GAAkEa,MAAMge,mBAAxE;AACAlgB,iBAASqH,cAAT,CAAyB,sCAAzB,EAAkEhG,OAAlE,GAA4Ea,MAAMge,mBAAlF;AACAlgB,iBAASqH,cAAT,CAAwB,kBAAxB,EAA4ChG,OAA5C,GAAsDa,MAAMie,cAA5D;AACAngB,iBAASqH,cAAT,CAAwB,oBAAxB,EAA8ChG,OAA9C,GAAwDa,MAAMke,gBAA9D;AACApgB,iBAASqH,cAAT,CAAwB,qBAAxB,EAA+ChG,OAA/C,GAAyDa,MAAMme,YAA/D;AACArgB,iBAASqH,cAAT,CAAwB,oBAAxB,EAA8ChG,OAA9C,GAAwDa,MAAMoe,WAA9D;AACAtgB,iBAASqH,cAAT,CAAwB,qBAAxB,EAA+ChG,OAA/C,GAAyDa,MAAMqe,YAA/D;AACAvgB,iBAASqH,cAAT,CAAwB,uBAAxB,EAAiDhG,OAAjD,GAA2Da,MAAMse,cAAjE;AACAxgB,iBAASqH,cAAT,CAAwB,wBAAxB,EAAkDhG,OAAlD,GAA4Da,MAAMue,eAAlE;AACAzgB,iBAASqH,cAAT,CAAwB,uBAAxB,EAAiDhG,OAAjD,GAA2Da,MAAMwe,cAAjE;AACA1gB,iBAASqH,cAAT,CAAwB,oBAAxB,EAA8ChG,OAA9C,GAAwDa,MAAMye,YAA9D;AACA3gB,iBAASqH,cAAT,CAAwB,iBAAxB,EAA2ChG,OAA3C,GAAqDa,MAAM0e,SAA3D;AACA5gB,iBAASqH,cAAT,CAAwB,kBAAxB,EAA4ChG,OAA5C,GAAsDa,MAAM2e,UAA5D;AACA7gB,iBAASqH,cAAT,CAAwB,iBAAxB,EAA2ChG,OAA3C,GAAqDa,MAAM4e,SAA3D;AACH;;AAED9gB,aAASsN,aAAT,CAAwB,yBAAxB,EAAoDjM,OAApD,GAA8D,YAAW;AACrE,YAAImE,gBAAgBxF,SAASsN,aAAT,CAAwB,iBAAxB,CAApB;AACA,YAAI9H,aAAJ,EAAoB;AAChB,gBAAKA,cAAc7E,SAAd,CAAwBsB,QAAxB,CAAkC,WAAlC,CAAL,EAAuD;AACnDuD,8BAAc7E,SAAd,CAAwBC,MAAxB,CAAgC,WAAhC;AACH,aAFD,MAEO;AACH4E,8BAAc7E,SAAd,CAAwBO,GAAxB,CAA6B,WAA7B;AACH;AACJ;AACJ,KATD;;AAWA;AACA;AACA,QAAI6f,mBAAmB/gB,SAASC,sBAAT,CAAiC,oBAAjC,EAAwD,CAAxD,CAAvB;AACA8gB,qBAAiB1f,OAAjB,GAA2B,UAAUyK,CAAV,EAAc;AACrC,YAAI,CAAEA,EAAEtK,MAAF,CAASb,SAAT,CAAmBsB,QAAnB,CAA6B,iBAA7B,CAAF,IAAsD,CAAEL,YAAYO,YAAZ,CAA0B2J,EAAEtK,MAA5B,EAAoC,iBAApC,CAAxD,IACG,CAAEsK,EAAEtK,MAAF,CAASb,SAAT,CAAmBsB,QAAnB,CAA6B,oBAA7B,CADL,IAC4D,CAAEL,YAAYO,YAAZ,CAA0B2J,EAAEtK,MAA5B,EAAoC,oBAApC,CADlE,EAC+H;AAC3Hwf;AACH;AACL,KALA;;AAOD,QAAIC,aAAajhB,SAASC,sBAAT,CAAiC,aAAjC,CAAjB;AACA,QAAIghB,WAAW/gB,MAAX,GAAoB,CAAxB,EAA4B+gB,aAAaA,WAAW,CAAX,CAAb;AAC5BA,eAAW5f,OAAX,GAAqB,YAAW;AAC5B2f;AACH,KAFD;;AAIA,aAASA,gBAAT,GAA4B;AACxBhhB,iBAASC,sBAAT,CAAiC,yBAAjC,EAA6D,CAA7D,EAAgE8E,KAAhE,CAAsEC,OAAtE,GAAgF,OAAhF;AACChF,iBAASC,sBAAT,CAAiC,uBAAjC,EAA2D,CAA3D,EAA8D8E,KAA9D,CAAoEC,OAApE,GAA8E,OAA9E;AACAhF,iBAASqH,cAAT,CAAyB,uBAAzB,EAAmDtC,KAAnD,CAAyDC,OAAzD,GAAmE,MAAnE;AACA,YAAIkc,mBAAmBlhB,SAASqH,cAAT,CAAyB,oBAAzB,CAAvB;AACA,YAAI6Z,iBAAiBC,YAAjB,CAA+B,wBAA/B,CAAJ,EAAgE;AAC5DnhB,qBAASqH,cAAT,CAAyB6Z,iBAAiBE,YAAjB,CAA+B,wBAA/B,CAAzB,EAAqFzgB,SAArF,CAA+FC,MAA/F,CAAuG,gBAAvG;AACH;AACL;AACDZ,aAASsN,aAAT,CAAuB,kBAAvB,EAA2CtH,gBAA3C,CAA4D,OAA5D,EAAqE,UAAU1E,KAAV,EAAiB;AACnF,YAAIA,MAAME,MAAN,CAAab,SAAb,CAAuBsB,QAAvB,CAAgC,mBAAhC,CAAJ,EAA0D;AACxD+e;AACD;AACF,KAJF;AAMF,CAziBD;ACAA,IAAI7Y,iBAAiB,SAAjBA,cAAiB,GAAY;;AAEhC,KAAIkZ,gBAAgB,EAApB;AAAA,KACCC,mBAAmB,KADpB;;AAGA,MAAKC,0BAAL,GAAkC,YAAY;AAC7CF,kBAAgB,EAAhB;AACA,MAAIvY,MAAM9I,SAASC,sBAAT,CAAgC,oBAAhC,EAAsD,CAAtD,EAAyDM,oBAAzD,CAA8E,IAA9E,CAAV;AACA,OAAK,IAAIwI,IAAI,CAAb,EAAgBA,IAAID,IAAI5I,MAAxB,EAAgC6I,GAAhC,EAAqC;AACpCD,OAAIC,CAAJ,EAAOpI,SAAP,CAAiBC,MAAjB,CAAwB,kBAAxB;AACA;AACD0gB,qBAAmB,IAAnB;AACA,EAPD;;AASA,MAAKE,4BAAL,GAAoC,YAAY;AAC/CF,qBAAmB,KAAnB;AACA,EAFD;;AAIA,MAAKG,WAAL,GAAmB,YAAY;AAC9B,SAAOH,gBAAP;AACA,EAFD;;AAIA,MAAKI,gBAAL,GAAwB,UAAUxM,IAAV,EAAgB;AACvC,MAAI,CAACoM,gBAAL,EAAuB;AACtB;AACA;AACDD,gBAAc5Q,IAAd,CAAmByE,IAAnB;AACAA,OAAKvU,SAAL,CAAeO,GAAf,CAAmB,kBAAnB;AACA,EAND;;AAQA,MAAKmgB,aAAL,GAAqB,YAAY;AAChC,SAAOA,aAAP;AACA,EAFD;;AAIA,MAAKM,kBAAL,GAA0B,YAAY;AACrCN,kBAAgB,EAAhB;AACA,EAFD;;AAIA,MAAKO,QAAL,GAAgB,YAAY;AAC3B,MAAIC,YAAY,IAAhB;AAAA,MAAsBC,YAAY,IAAlC;AAAA,MAAwCC,KAAxC;AACA,OAAK,IAAIhZ,IAAIsY,cAAcnhB,MAAd,GAAuB,CAApC,EAAuC6I,KAAK,CAA5C,EAA+CA,GAA/C,EAAoD;AACnD,OAAI8Y,aAAaR,cAActY,CAAd,EAAiBsB,OAAjB,CAAyBE,MAAtC,IACAuX,aAAaT,cAActY,CAAd,EAAiBsB,OAAjB,CAAyBC,MAD1C,EACkD;AACjDyX,YAAQV,cAActY,CAAd,CAAR;AACA8Y,gBAAYR,cAActY,CAAd,EAAiBsB,OAAjB,CAAyBE,MAArC;AACAuX,gBAAYT,cAActY,CAAd,EAAiBsB,OAAjB,CAAyBC,MAArC;AACA;AACD;AACD,SAAOyX,KAAP;AACA,EAXD;;AAaA,MAAKC,OAAL,GAAe,YAAY;AAC1B,MAAIC,YAAY,CAAC,CAAjB;AAAA,MAAoBC,YAAY,CAAC,CAAjC;AAAA,MAAoCC,IAApC;AACA,OAAK,IAAIpZ,IAAIsY,cAAcnhB,MAAd,GAAuB,CAApC,EAAuC6I,KAAK,CAA5C,EAA+CA,GAA/C,EAAoD;AACnD,OAAIkZ,aAAaZ,cAActY,CAAd,EAAiBsB,OAAjB,CAAyBE,MAAtC,IACA2X,aAAab,cAActY,CAAd,EAAiBsB,OAAjB,CAAyBC,MAD1C,EACkD;AACjD6X,WAAOd,cAActY,CAAd,CAAP;AACAkZ,gBAAYZ,cAActY,CAAd,EAAiBsB,OAAjB,CAAyBE,MAArC;AACA2X,gBAAYb,cAActY,CAAd,EAAiBsB,OAAjB,CAAyBC,MAArC;AACA;AACD;AACD,SAAO6X,IAAP;AACA,EAXD;;AAaA,MAAKC,iBAAL,GAAyB,YAAY;AACpC,MAAIvf,KAAK,KAAK+e,QAAL,EAAT;AACA,OAAK,IAAI7Y,IAAI,CAAb,EAAgBA,IAAIsY,cAAcnhB,MAAlC,EAA0C6I,GAA1C,EAA+C;AAC9CsY,iBAActY,CAAd,EAAiBpI,SAAjB,CAA2BO,GAA3B,CAA+B,qBAAqB2B,GAAGwH,OAAH,CAAWE,MAAhC,GAAyC,GAAzC,GAA+C1H,GAAGwH,OAAH,CAAWC,MAAzF;AACA;AACD,EALD;;AAOA,QAAO,IAAP;AAEA,CAzED;;;ACAA,IAAI9C,cAAc,SAAdA,WAAc,CAAW6a,IAAX,EAAkB;AAChC,QAAIC,MAAMtiB,SAASiB,aAAT,CAAwB,KAAxB,CAAV;AACAqhB,QAAI3a,SAAJ,GAAgB0a,IAAhB;;AAEA,QAAIngB,QAAQogB,IAAIrT,QAAJ,CAAa,CAAb,CAAZ;AACA,QAAIsT,iDAAwBrgB,MAAM2M,gBAAN,CAAwB,qCAAxB,CAAxB,EAAJ;;AAEA,SAAK,IAAI9F,IAAI,CAAb,EAAgBA,IAAIwZ,kBAAkBriB,MAAtC,EAA8C6I,GAA9C,EAAoD;AAChD,YAAI2L,SAAS6N,kBAAkBxZ,CAAlB,EAAqBlI,UAAlC;AACA6T,eAAO5T,WAAP,CAAoByhB,kBAAkBxZ,CAAlB,CAApB;AACH;;AAED,QAAID,MAAM5G,MAAM2M,gBAAN,CAAwB,IAAxB,CAAV;AACA,SAAM,IAAI9F,KAAI,CAAd,EAAiBA,KAAID,IAAI5I,MAAzB,EAAiC6I,IAAjC,EAAuC;AACnCD,YAAIC,EAAJ,EAAOpI,SAAP,CAAiBO,GAAjB,CAAsB,gBAAtB;AACA4H,YAAIC,EAAJ,EAAOpI,SAAP,CAAiBC,MAAjB,CAAyB,uCAAzB;AACH;;AAED,WAAOsB,KAAP;AACH,CAnBD;;;ACAA;AACA,IAAI,CAAC8N,OAAOC,IAAZ,EAAkB;AACdD,WAAOC,IAAP,GAAe,YAAY;AACvB;;AACA,YAAInO,iBAAiBkO,OAAOwS,SAAP,CAAiB1gB,cAAtC;AAAA,YACQ2gB,iBAAiB,CAAE,EAAClR,UAAU,IAAX,EAAD,CAAmBmR,oBAAnB,CAAwC,UAAxC,CAD1B;AAAA,YAEQC,YAAY,CACR,UADQ,EAER,gBAFQ,EAGR,SAHQ,EAIR,gBAJQ,EAKR,eALQ,EAMR,sBANQ,EAOR,aAPQ,CAFpB;AAAA,YAWQC,kBAAkBD,UAAUziB,MAXpC;;AAaA,eAAO,UAAU2iB,GAAV,EAAe;AAClB,gBAAI,QAAOA,GAAP,yCAAOA,GAAP,OAAe,QAAf,KAA4B,OAAOA,GAAP,KAAe,UAAf,IAA6BA,QAAQ,IAAjE,CAAJ,EAA4E;AACxE,sBAAM,IAAIC,SAAJ,CAAc,kCAAd,CAAN;AACH;;AAED,gBAAI3R,SAAS,EAAb;AAAA,gBAAiB4R,IAAjB;AAAA,gBAAuBha,CAAvB;;AAEA,iBAAKga,IAAL,IAAaF,GAAb,EAAkB;AACd,oBAAI/gB,eAAekhB,IAAf,CAAoBH,GAApB,EAAyBE,IAAzB,CAAJ,EAAoC;AAChC5R,2BAAOV,IAAP,CAAYsS,IAAZ;AACH;AACJ;;AAED,gBAAIN,cAAJ,EAAoB;AAChB,qBAAK1Z,IAAI,CAAT,EAAYA,IAAI6Z,eAAhB,EAAiC7Z,GAAjC,EAAsC;AAClC,wBAAIjH,eAAekhB,IAAf,CAAoBH,GAApB,EAAyBF,UAAU5Z,CAAV,CAAzB,CAAJ,EAA4C;AACxCoI,+BAAOV,IAAP,CAAYkS,UAAU5Z,CAAV,CAAZ;AACH;AACJ;AACJ;AACD,mBAAOoI,MAAP;AACH,SArBD;AAsBH,KArCc,EAAf;AAsCH;ACxCD,IAAIrJ,gBAAgB,SAAhBA,aAAgB,GAAY;AAC5B,QAAImb,QAAQjjB,SAASC,sBAAT,CAAgC,cAAhC,CAAZ;;AAEA,SAAM,IAAI8I,IAAI,CAAd,EAAiBA,IAAIka,MAAM/iB,MAA3B,EAAmC6I,GAAnC,EAAyC;AACrCka,cAAMla,CAAN,EAAS/E,WAAT,GAAuB,UAAW1C,KAAX,EAAmB;AACtCA,kBAAMqD,YAAN,CAAmBC,aAAnB,GAAmC,MAAnC;AACAtD,kBAAMqD,YAAN,CAAmBG,OAAnB,CAA4B,aAA5B,EAA2CxD,MAAME,MAAN,CAAa6I,OAAb,CAAqB4V,WAAhE;AACA3e,kBAAMqD,YAAN,CAAmBG,OAAnB,CAA4B,iBAAiBxD,MAAME,MAAN,CAAa6I,OAAb,CAAqB4V,WAAlE,EAA+E,iBAAiB3e,MAAME,MAAN,CAAa6I,OAAb,CAAqB4V,WAArH;AACH,SAJD;AAKAgD,cAAMla,CAAN,EAAS3D,SAAT,GAAqB,YAAY;AAC7BxD,wBAAYyD,mBAAZ;AACH,SAFD;AAGH;;AAED,QAAI9C,4BAA4B,IAAIC,0BAAJ,EAAhC;AACA,QAAI0gB,WAAWljB,SAASC,sBAAT,CAAiC,WAAjC,CAAf;AACA,QAAIijB,SAAShjB,MAAT,GAAkB,CAAtB,EAA0B;AACtBgjB,mBAAWA,SAAS,CAAT,CAAX;;AAEAA,iBAAS7hB,OAAT,GAAmB,UAAUC,KAAV,EAAkB;AACjC,gBAAI,CAAE,KAAKX,SAAL,CAAesB,QAAf,CAAyB,wBAAzB,CAAN,EAA4D;AACxDM,0CAA0B4gB,aAA1B,CAAyC,KAAK9Y,OAAL,CAAa+Y,YAAtD;AACA,oBAAIC,wBAAwBrjB,SAASC,sBAAT,CAAiC,0BAAjC,CAA5B;AACA,oBAAIojB,sBAAsBnjB,MAAtB,GAA+B,CAAnC,EAAuC;AACnCmjB,4CAAwBA,sBAAsB,CAAtB,CAAxB;AACAA,0CAAsBjd,YAAtB,GAAqC,UAAU9E,KAAV,EAAkB;AACnDA,8BAAME,MAAN,CAAa4E,YAAb,GAA4B,EAA5B;AACAwB;AACH,qBAHD;AAIH;AACJ;AAEJ,SAbD;AAcH;;AAED,QAAI0b,WAAWtjB,SAASC,sBAAT,CAAiC,WAAjC,CAAf;AACA,QAAIqjB,SAASpjB,MAAT,GAAkB,CAAtB,EAA0B;AACtBojB,mBAAWA,SAAS,CAAT,CAAX;;AAEAA,iBAASjiB,OAAT,GAAmB,UAAUC,KAAV,EAAkB;AACjC,gBAAI,CAAE,KAAKX,SAAL,CAAesB,QAAf,CAAyB,wBAAzB,CAAN,EAA4D;AACxDM,0CAA0B4gB,aAA1B,CAAyC,KAAK9Y,OAAL,CAAa+Y,YAAtD;AACA,oBAAIC,wBAAwBrjB,SAASC,sBAAT,CAAiC,0BAAjC,CAA5B;AACA,oBAAIojB,sBAAsBnjB,MAAtB,GAA+B,CAAnC,EAAuC;AACnCmjB,4CAAwBA,sBAAsB,CAAtB,CAAxB;AACAA,0CAAsBjd,YAAtB,GAAqC,UAAU9E,KAAV,EAAkB;AACnDA,8BAAME,MAAN,CAAa4E,YAAb,GAA4B,EAA5B;AACAwB;AACH,qBAHD;AAIH;AACJ;AAEJ,SAbD;AAcH;;AAED,QAAI2b,uBAAuBvjB,SAASC,sBAAT,CAAiC,yBAAjC,EAA6D,CAA7D,CAA3B;AACAD,aAASC,sBAAT,CAAiC,gBAAjC,EAAoD,CAApD,EAAuDoB,OAAvD,GAAiE,YAAY;AACzE,YAAI,CAAE,KAAKV,SAAL,CAAesB,QAAf,CAAyB,qBAAzB,CAAN,EAAyD;AACrDshB,iCAAqB5iB,SAArB,CAA+BO,GAA/B,CAAoC,iBAApC;AACH;AACJ,KAJD;;AAMA2J,WAAO2Y,cAAP,GAAwB,UAAS1X,CAAT,EAAY;AAChC,YAAI2X,mBAAmBzjB,SAASC,sBAAT,CAAiC,oBAAjC,CAAvB;AACA,YAAIwjB,iBAAiBvjB,MAAjB,IAA2B,CAA/B,EAAmC;AAC/B,mBAAO,IAAP;AACH,SAFD,MAEO;AACH,mBAAO,IAAP;AACH;AACJ,KAPD;;AAUAF,aAASC,sBAAT,CAAiC,sBAAjC,EAA0D,CAA1D,EAA6DoB,OAA7D,GAAuE,YAAY;AAC/EkiB,6BAAqB5iB,SAArB,CAA+BC,MAA/B,CAAuC,iBAAvC;AACH,KAFD;;AAIAZ,aAASC,sBAAT,CAAiC,8BAAjC,EAAkE,CAAlE,EAAqEoB,OAArE,GAA+E,YAAY;AACvFkiB,6BAAqB5iB,SAArB,CAA+BC,MAA/B,CAAuC,iBAAvC;AACH,KAFD;;AAIAZ,aAASC,sBAAT,CAAiC,kBAAjC,EAAsD,CAAtD,EAAyDoB,OAAzD,GAAmE,UAAWyK,CAAX,EAAe;AAC9E,YAAI,KAAKnL,SAAL,CAAesB,QAAf,CAAyB,qBAAzB,CAAJ,EAAuD;AACnD6J,cAAES,cAAF;AACH;AACJ,KAJD;;AAMAvM,aAASC,sBAAT,CAAiC,eAAjC,EAAmD,CAAnD,EAAsDoB,OAAtD,GAAgE,UAAWC,KAAX,EAAmB;AAC/E,YAAM,CAAEA,MAAME,MAAN,CAAa6I,OAAb,CAAqBqZ,wBAAvB,IAAmD7Y,OAAO8Y,wBAAP,IAAmC,CAAxF,IACI9Y,OAAO8Y,wBAAP,IAAmCriB,MAAME,MAAN,CAAa6I,OAAb,CAAqBqZ,wBADhE,EAC2F;AACvF;AACH;AACD,YAAIE,MAAM5jB,SAASsN,aAAT,CAAwB,gBAAxB,CAAV;AACA,YAAKsW,OAAOA,IAAIjjB,SAAJ,CAAcsB,QAAd,CAAwB,SAAxB,CAAZ,EAAkD;AAC9C,gBAAIC,QAAQlC,SAASC,sBAAT,CAAiC,oBAAjC,EAAwD,CAAxD,CAAZ;AACAiC,kBAAMge,mBAAN;AACH;;AAED,YAAIzZ,OAAO,IAAIC,cAAJ,EAAX;AAAA,YACIkO,MAAM,CAAEiP,oBAAoBA,kBAAkBjd,OAAtC,GAAgDA,OAAlD,IAA8D,oBADxE;AAAA,YAEIkd,IAAI9jB,SAASqH,cAAT,CAAyB,iBAAzB,EAA6CC,KAA7C,CAAmDmH,IAAnD,EAFR;AAAA,YAGIsV,sBAHJ;AAAA,YAII1B,aAJJ;AAAA,YAKI2B,cALJ;AAMA3B,eAAOriB,SAASC,sBAAT,CAAiC,oBAAjC,CAAP;AACA,YAAIoiB,KAAKniB,MAAL,GAAc,CAAlB,EAAsB;AAClBmiB,mBAAO4B,iBAAkB5B,KAAK,CAAL,CAAlB,CAAP;AACAA,mBAAOA,KAAK6B,SAAZ;AACH,SAHD,MAGO;AACH7B,mBAAO,EAAP;AACH;;AAED2B,gBAAQ,EAAR;AACA,YAAIG,mBAAmBnkB,SAASC,sBAAT,CAAiC,oBAAjC,CAAvB;;AAEA,YAAIkkB,iBAAiBjkB,MAAjB,GAA0B,CAA9B,EAAkC;AAC9B,gBAAIikB,iBAAiB,CAAjB,EAAoBxc,SAAxB,EAAoC;AAChCqc,wBAAQG,iBAAiB,CAAjB,EAAoBxc,SAA5B;AACH;AACJ;;AAED,YAAKmc,MAAM,EAAN,IAAYzB,SAAS,EAA1B,EAA+B;AAC3B,gBAAI+B,oBAAoB,EAAxB;AACA,gBAAIN,MAAM,EAAV,EAAeM,qBAAqB,4DAArB;AACf,gBAAI/B,SAAS,EAAb,EAAkB+B,qBAAqB,uBAArB;AAClBL,4BAAgB/jB,SAASqH,cAAT,CAAyB,qBAAzB,CAAhB;AACA0c,0BAAcpc,SAAd,GAA0B,iDAAiDyc,iBAAjD,GAAqE,QAA/F;AACAL,0BAAcpjB,SAAd,CAAwBO,GAAxB,CAA6B,cAA7B;AACAmjB,uBAAW,YAAY;AACfN,8BAAcjjB,WAAd,CAA2BijB,cAAcO,UAAzC;AACP,aAFD,EAEG,IAFH;AAGA;AACH;;AAED,YAAIC,SAAS;AACTC,mBAAOV,CADE;AAETW,qBAASpC,IAFA;AAGTqC,4BAAgBV,KAHP;AAITW,2BAAed,kBAAkBc;AAJxB,SAAb;AAMA,YAAI,CAAEC,KAAKhjB,YAAY4E,UAAZ,EAAP,MAAuCoe,KAAK5kB,SAAS6kB,MAArD,CAAJ,EAAmE;AAC/DN,mBAAOO,EAAP,GAAYF,EAAZ;AACH;AACDL,iBAAShgB,KAAK0W,SAAL,CAAgBsJ,MAAhB,CAAT;;AAEA9d,aAAKI,IAAL,CAAU,MAAV,EAAkB+N,GAAlB,EAAuB,IAAvB;AACAnO,aAAKK,gBAAL,CAAuB,cAAvB,EAAuC,iCAAvC;;AAEAL,aAAKM,kBAAL,GAA0B,UAAWge,MAAX,EAAoB;AAC1C,gBAAK,KAAK9d,UAAL,IAAmB,CAAnB,IAAwB,KAAKC,MAAL,IAAe,GAA5C,EAAkD;AAC9C,oBAAIlE,OAAOuB,KAAKC,KAAL,CAAYiC,KAAKW,YAAjB,CAAX;AACA2c,gCAAgB/jB,SAASqH,cAAT,CAAyB,qBAAzB,CAAhB;;AAEA,oBAAKrE,KAAK,CAAL,KAAW,OAAhB,EAA0B;AACtBhD,6BAAS6kB,MAAT,GAAkB7hB,KAAK,CAAL,CAAlB;AACA+gB,kCAAcpc,SAAd,GAA0B,mDAAmDmc,CAAnD,GAAuD,iCAAjF;AACA9jB,6BAASC,sBAAT,CAAiC,gBAAjC,EAAoD,CAApD,EAAuDU,SAAvD,CAAiEC,MAAjE,CAAyE,qBAAzE;AACAZ,6BAASqH,cAAT,CAAyB,sBAAzB,EAAkDC,KAAlD,GAA0D,cAActE,KAAK,CAAL,CAAd,GAAwB,GAAlF;AACA,wBAAIgiB,iBAAiBhlB,SAASC,sBAAT,CAAiC,kBAAjC,CAArB;AACA,wBAAI+kB,eAAe9kB,MAAf,GAAwB,CAA5B,EAAgC;AAC5B8kB,yCAAiBA,eAAe,CAAf,CAAjB;AACAA,uCAAerkB,SAAf,CAAyBC,MAAzB,CAAiC,qBAAjC;AACA,4BAAIqkB,qBAAqBD,eAAe3a,OAAf,CAAuB6a,WAAhD;AACAD,6CAAqBA,mBAAmBzW,OAAnB,CAA4B,OAA5B,EAAqCxL,KAAK,CAAL,CAArC,CAArB;AACAgiB,uCAAetd,YAAf,CAA6B,MAA7B,EAAqCud,kBAArC;AACH;AAEJ,iBAdD,MAcO,IAAIjiB,KAAK,CAAL,KAAW,QAAf,EAA0B;AAC7B+gB,kCAAcpc,SAAd,GAA0B,mDAAmDmc,CAAnD,GAAuD,mCAAjF;AACAxiB,0BAAME,MAAN,CAAa6I,OAAb,CAAqBqZ,wBAArB,GAAgD7Y,OAAO8Y,wBAAvD;;AAEA,wBAAIwB,cAAcnlB,SAASC,sBAAT,CAAiC,eAAjC,CAAlB;AACA,wBAAIklB,YAAYjlB,MAAZ,GAAqB,CAAzB,EAA6B;AACzBilB,sCAAcA,YAAY,CAAZ,CAAd;AACAA,oCAAYxkB,SAAZ,CAAsBO,GAAtB,CAA2B,oBAA3B;AACH;AACJ,iBATM,MASA;AACH6iB,kCAAcpc,SAAd,GAA0B,4DAA1B;AACH;AACDoc,8BAAcpjB,SAAd,CAAwBO,GAAxB,CAA6B,cAA7B;AACAmjB,2BAAY,YAAY;AACpBN,kCAAcjjB,WAAd,CAA2BijB,cAAcO,UAAzC;AACH,iBAFD,EAEG,IAFH;AAGH;AACJ,SApCD;AAqCA7d,aAAKsB,IAAL,CAAWwc,MAAX;AACH,KAnGD;AAoGH,CA1LD;ACAA,IAAIN,mBAAmB,SAAnBA,gBAAmB,CAAWmB,QAAX,EAAsB;AACzC,QAAKA,QAAL,EAAgB;AACZ,YAAI/C,OAAO+C,SAAS3hB,SAAT,CAAoB,IAApB,CAAX;AACA4e,aAAK1hB,SAAL,CAAeO,GAAf,CAAoB,iCAApB;AACAmhB,aAAKhY,OAAL,CAAagb,YAAb,GAA4BD,SAAS5I,OAArC;AACA6F,aAAKtd,KAAL,CAAWyG,KAAX,GAAmB,IAAnB;AACA6W,aAAKtd,KAAL,CAAWugB,QAAX,GAAsB,IAAtB;AACAjD,aAAKtd,KAAL,CAAWwgB,QAAX,GAAsB,IAAtB;;AAEA,YAAIzc,MAAMuZ,KAAK9hB,oBAAL,CAA2B,IAA3B,CAAV;AACA,YAAKuI,IAAI5I,MAAJ,GAAa,CAAlB,EAAsB;AAClB,iBAAM,IAAI6I,IAAI,CAAd,EAAiBA,IAAID,IAAI5I,MAAzB,EAAiC6I,GAAjC,EAAuC;;AAEnC,oBAAKqc,SAAS9X,aAAT,CAAwB,yBAAxB,CAAL,EAA2D;AACvDxE,wBAAIC,CAAJ,EAAOmP,eAAP,CAAwB,cAAxB;AACH;AACDpP,oBAAIC,CAAJ,EAAOmP,eAAP,CAAwB,cAAxB;AACApP,oBAAIC,CAAJ,EAAOmP,eAAP,CAAwB,WAAxB;AACApP,oBAAIC,CAAJ,EAAOpI,SAAP,CAAiBC,MAAjB,CAAyB,gBAAzB;AACA,oBAAI4kB,gBAAgB1c,IAAIC,CAAJ,EAAO9I,sBAAP,CAA+B,iBAA/B,CAApB;;AAEA,oBAAKulB,cAActlB,MAAd,GAAuB,CAA5B,EAAgC;AAC5B,yBAAM,IAAI8J,IAAI,CAAd,EAAiBA,IAAIwb,cAActlB,MAAnC,EAA2C8J,GAA3C,EAAiD;;AAE7C,4BAAI+N,kBAAkByN,cAAcxb,CAAd,EAAiB6E,gBAAjB,CAAmC,mBAAnC,CAAtB;AACA,4BAAIkJ,gBAAgB7X,MAAhB,GAAyB,CAA7B,EAAiC;AAC7B,iCAAM,IAAI8X,IAAI,CAAd,EAAiBA,IAAID,gBAAgB7X,MAArC,EAA6C8X,GAA7C,EAAmD;AAC/CD,gDAAgBC,CAAhB,EAAmBrX,SAAnB,CAA6BC,MAA7B,CAAqC,kBAArC;AACH;AACJ;;AAED,4BAAIqX,eAAeuN,cAAcxb,CAAd,EAAiB6E,gBAAjB,CAAmC,kBAAnC,CAAnB;AACA,4BAAKoJ,aAAa/X,MAAb,GAAsB,CAA3B,EAA+B;AAC3B,iCAAM,IAAI8X,KAAI,CAAd,EAAiBA,KAAIC,aAAa/X,MAAlC,EAA0C8X,IAA1C,EAAgD;AAC5CC,6CAAaD,EAAb,EAAgBE,eAAhB,CAAiC,gBAAjC;AACH;AACJ;;AAED,4BAAIE,kBAAkBoN,cAAcxb,CAAd,EAAiB6E,gBAAjB,CAAmC,mBAAnC,CAAtB;AACA,4BAAKuJ,gBAAgBlY,MAAhB,GAAyB,CAA9B,EAAkC;AAC9B,iCAAM,IAAI8X,MAAI,CAAd,EAAiBA,MAAII,gBAAgBlY,MAArC,EAA6C8X,KAA7C,EAAmD;AAC/CI,gDAAgBJ,GAAhB,EAAmBE,eAAnB,CAAoC,iBAApC;AACH;AACJ;;AAED,4BAAIG,aAAamN,cAAcxb,CAAd,EAAiB6E,gBAAjB,CAAmC,cAAnC,CAAjB;AACA,4BAAKwJ,WAAWnY,MAAX,GAAoB,CAAzB,EAA6B;AACzB,iCAAM,IAAI8X,MAAI,CAAd,EAAiBA,MAAIK,WAAWnY,MAAhC,EAAwC8X,KAAxC,EAA8C;AAC1CK,2CAAWL,GAAX,EAAcE,eAAd,CAA+B,YAA/B;AACH;AACJ;;AAED,4BAAII,SAASkN,cAAcxb,CAAd,EAAiB6E,gBAAjB,CAAmC,YAAnC,CAAb;AACA,4BAAKyJ,OAAOpY,MAAP,GAAgB,CAArB,EAAyB;AACrB,iCAAM,IAAI8X,MAAI,CAAd,EAAiBA,MAAIM,OAAOpY,MAA5B,EAAoC8X,KAApC,EAA0C;AACtCM,uCAAON,GAAP,EAAUE,eAAV,CAA2B,IAA3B;AACH;AACJ;;AAED,4BAAInY,cAAcylB,cAAcxb,CAAd,EAAiB6E,gBAAjB,CAAmC,eAAnC,CAAlB;AACA,4BAAI4W,oBAAoB1lB,YAAYG,MAApC;AACA,+BAAQulB,oBAAoB,CAA5B,EAAgC;AAC5B,gCAAI1lB,YAAY,CAAZ,KAAkBA,YAAY,CAAZ,EAAec,UAArC,EAAkD;AAC9Cd,4CAAY,CAAZ,EAAec,UAAf,CAA0BC,WAA1B,CAAuCf,YAAY,CAAZ,CAAvC;AACA0lB;AACH,6BAHD,MAGO;AACH;AACH;AAEJ;AACJ;AACJ;;AAED,oBAAI3c,IAAIC,CAAJ,EAAOoY,YAAP,CAAqB,wBAArB,CAAJ,EAAsD;AAClD,wBAAIuE,yBAAyB1lB,SAASiB,aAAT,CAAwB,KAAxB,CAA7B;AAAA,wBACI0kB,gBAAgB3lB,SAASiB,aAAT,CAAwB,KAAxB,CADpB;AAEAykB,2CAAuB/kB,SAAvB,CAAiCO,GAAjC,CAAsC,oCAAtC;AACAykB,kCAAchlB,SAAd,CAAwBO,GAAxB,CAA6B,0BAA7B;AACAykB,kCAActb,OAAd,CAAsB8I,eAAtB,GAAwCrK,IAAIC,CAAJ,EAAOsB,OAAP,CAAe8I,eAAvD;AACAwS,kCAAcje,YAAd,CAA4B,OAA5B,EAAqC,eAAeoB,IAAIC,CAAJ,EAAOsB,OAAP,CAAe+I,uBAA9B,GAAwD;+BAAxD,GACvBtK,IAAIC,CAAJ,EAAOsB,OAAP,CAAegJ,oBADQ,GACe,qBADf,GACuCvK,IAAIC,CAAJ,EAAOsB,OAAP,CAAeiJ,wBADtD,GACiF,eADjF,GACmGxK,IAAIC,CAAJ,EAAOsB,OAAP,CAAekJ,cADlH,GACmI,GADxK;AAEAoS,kCAAc5gB,KAAd,CAAoBuE,OAApB,GAA8BR,IAAIC,CAAJ,EAAOhE,KAAP,CAAauE,OAA3C;AACA,wBAAIR,IAAIC,CAAJ,EAAOkG,QAAP,CAAgB/O,MAAhB,IAA0B,CAA9B,EAAkC;AAC9B4I,4BAAIC,CAAJ,EAAOpI,SAAP,CAAiBO,GAAjB,CAAsB,uCAAtB;AACH;AACDwkB,2CAAuBvkB,WAAvB,CAAoCwkB,aAApC;AACA7c,wBAAIC,CAAJ,EAAOzF,YAAP,CAAqBoiB,sBAArB,EAA6C5c,IAAIC,CAAJ,EAAOub,UAApD;AACH;AACJ;AACJ;;AAED,eAAOjC,IAAP;AACH;AACJ,CA7FD;;;ACAA,IAAIuD,QAAQ,EAAZ;AAAA,IAAgBhe,aAAa,SAAbA,UAAa,CAAU4U,OAAV,EAAmBlK,IAAnB,EAAyB;;AAElD;AACA,QAAIhK,WAAWtI,SAASC,sBAAT,CAAgC,qBAAhC,CAAf;AAAA,QACQ4lB,iBAAiB7lB,SAASC,sBAAT,CAAgC,kBAAhC,EAAoD,CAApD,CADzB;AAAA,QAEQiC,KAFR;AAAA,QAEe4jB,GAFf;AAAA,QAEoB5Q,IAFpB;AAAA,QAGQ6Q,gBAHR;AAAA,QAIQC,eAJR;;AAMA;AACA;;;;;;;;AAQA,QAAIC,OAAO,SAAPA,IAAO,CAAW3kB,KAAX,EAAmB;AAC1B,YAAIsjB,KAAK,KAAKsB,OAAd;AAAA,YACIC,KAAK,KAAKC,OADd;AAAA,YAEIC,WAFJ;AAAA,YAGIC,UAAUtmB,SAASC,sBAAT,CAAgC,qBAAhC,CAHd;AAAA,YAIIsmB,cAAcvmB,SAASC,sBAAT,CAAgC,oBAAhC,CAJlB;AAAA,YAKIumB,gBAAgBxmB,SAASC,sBAAT,CAAgC,6BAAhC,CALpB;AAAA,YAMIwmB,eAAezmB,SAASqH,cAAT,CAAyB,sCAAzB,CANnB;AAAA,YAOIqf,WAAWlc,UAAU,IAAV,CAPf;AAAA,YAQIsb,MAAMY,SAAS,CAAT,CARV;AAAA,YASIC,SAASD,SAAS,CAAT,CATb;AAUA,YAAK,CAAE1mB,SAASkI,MAAT,CAAgBuZ,WAAhB,EAAP,EAAuC;AACnC;AACH;AACD,YAAI,KAAK/f,SAAL,CAAeC,KAAf,CAAqB,kBAArB,CAAJ,EAA8C;AAC1C,iBAAKhB,SAAL,CAAeC,MAAf,CAAsB,kBAAtB;AACA,iBAAK,IAAImI,IAAI,CAAb,EAAgBA,IAAI6b,EAApB,EAAwB7b,GAAxB,EAA6B;AACzB,qBAAK,IAAIiB,IAAI,CAAb,EAAgBA,IAAImc,EAApB,EAAwBnc,GAAxB,EAA6B;AACzB4b,0BAAME,MAAM/c,CAAZ,EAAe4d,SAAS3c,CAAxB,IAA6B,CAA7B;AACH;AACJ;AACJ,SAPD,MAOO;AACH,iBAAKrJ,SAAL,CAAeO,GAAf,CAAmB,kBAAnB;AACA,iBAAK,IAAI6H,IAAI,CAAb,EAAgBA,IAAI6b,EAApB,EAAwB7b,GAAxB,EAA6B;AACzB,qBAAK,IAAIiB,IAAI,CAAb,EAAgBA,IAAImc,EAApB,EAAwBnc,GAAxB,EAA6B;AACzB4b,0BAAME,MAAM/c,CAAZ,EAAe4d,SAAS3c,CAAxB,IAA6B,CAA7B;AACH;AACJ;AACJ;;AAEDqc,sBAAcrmB,SAASC,sBAAT,CAAgC,kBAAhC,EAAoDC,MAAlE;AACA,YAAImmB,gBAAgB,CAApB,EAAuB;AACnB,iBAAK,IAAItd,IAAI,CAAb,EAAgBA,IAAIyd,cAActmB,MAAlC,EAA0C6I,GAA1C,EAA+C;AAC3Cyd,8BAAczd,CAAd,EAAiBpI,SAAjB,CAA2BC,MAA3B,CAAkC,SAAlC;AACA4lB,8BAAczd,CAAd,EAAiBrB,YAAjB,CAA8B,UAA9B,EAA0C,UAA1C;AACH;AACD,iBAAK,IAAIqB,IAAI,CAAb,EAAgBA,IAAIud,QAAQpmB,MAA5B,EAAoC6I,GAApC,EAAyC;AACrCud,wBAAQvd,CAAR,EAAWpI,SAAX,CAAqBO,GAArB,CAAyB,SAAzB;AACAolB,wBAAQvd,CAAR,EAAWmP,eAAX,CAA2B,UAA3B;AACH;AACD,iBAAK,IAAInP,IAAI,CAAb,EAAgBA,IAAIwd,YAAYrmB,MAAhC,EAAwC6I,GAAxC,EAA6C;AACzCwd,4BAAYxd,CAAZ,EAAepI,SAAf,CAAyBC,MAAzB,CAAgC,SAAhC;AACA2lB,4BAAYxd,CAAZ,EAAerB,YAAf,CAA4B,UAA5B,EAAwC,UAAxC;AACH;AACD+e,yBAAa9lB,SAAb,CAAuBC,MAAvB,CAA+B,SAA/B;AACH,SAdD,MAcO,IAAIylB,gBAAgB,CAApB,EAAuB;AAC1B,iBAAK,IAAItd,IAAI,CAAb,EAAgBA,IAAIyd,cAActmB,MAAlC,EAA0C6I,GAA1C,EAA+C;AAC3Cyd,8BAAczd,CAAd,EAAiBpI,SAAjB,CAA2BC,MAA3B,CAAkC,SAAlC;AACA4lB,8BAAczd,CAAd,EAAiBrB,YAAjB,CAA8B,UAA9B,EAA0C,UAA1C;AACH;AACD,iBAAK,IAAIqB,IAAI,CAAb,EAAgBA,IAAIud,QAAQpmB,MAA5B,EAAoC6I,GAApC,EAAyC;AACrCud,wBAAQvd,CAAR,EAAWpI,SAAX,CAAqBC,MAArB,CAA4B,SAA5B;AACA0lB,wBAAQvd,CAAR,EAAWrB,YAAX,CAAwB,UAAxB,EAAoC,UAApC;AACH;AACD,iBAAK,IAAIqB,IAAI,CAAb,EAAgBA,IAAIwd,YAAYrmB,MAAhC,EAAwC6I,GAAxC,EAA6C;AACzCwd,4BAAYxd,CAAZ,EAAepI,SAAf,CAAyBO,GAAzB,CAA6B,SAA7B;AACAqlB,4BAAYxd,CAAZ,EAAemP,eAAf,CAA+B,UAA/B;AACH;AACD,gBAAI0O,kBAAkB5mB,SAASsN,aAAT,CAAwB,mBAAxB,CAAtB;AACA,gBAAIsZ,eAAJ,EAAsB;AAClB,oBAAIC,6BAA6B7mB,SAASqH,cAAT,CAAyB,gCAAzB,CAAjC;AACA,oBAAIgY,6BAA6Brf,SAASqH,cAAT,CAAyB,gCAAzB,CAAjC;AACA,oBAAIyf,oCAAoC9mB,SAASqH,cAAT,CAAyB,oCAAzB,CAAxC;AACA,oBAAImE,QAAQob,gBAAgB7hB,KAAhB,CAAsByG,KAAlC;AACA,oBAAIA,KAAJ,EAAY;AACRqb,+CAA2Bvf,KAA3B,GAAmC3B,WAAY6F,KAAZ,EAAmB,EAAnB,CAAnC;AACA6T,+CAA2B/X,KAA3B,GAAmC3B,WAAY6F,KAAZ,EAAmB,EAAnB,CAAnC;AACAsb,sDAAkC9S,OAAlC,GAA4C,IAA5C;AACH,iBAJD,MAIO,IAAI4S,gBAAgBvc,OAAhB,CAAwB0c,cAA5B,EAA6C;AAChDF,+CAA2Bvf,KAA3B,GAAmCsf,gBAAgBvc,OAAhB,CAAwB0c,cAA3D;AACA1H,+CAA2B/X,KAA3B,GAAmCsf,gBAAgBvc,OAAhB,CAAwB0c,cAA3D;AACAD,sDAAkC9S,OAAlC,GAA4C,IAA5C;AACH,iBAJM,MAIA;AACH,wBAAIoB,YAAYxT,YAAYqT,cAAZ,CAA4B/S,KAA5B,EAAmC0kB,eAAnC,CAAhB;AACAC,+CAA2Bvf,KAA3B,GAAmC8N,SAAnC;AACAiK,+CAA2B/X,KAA3B,GAAmC8N,SAAnC;AACA0R,sDAAkC9S,OAAlC,GAA4C,KAA5C;AACH;;AAGD,oBAAIgT,2BAA2BhnB,SAASqH,cAAT,CAAyB,8BAAzB,CAA/B;AACA,oBAAIiY,2BAA2Btf,SAASqH,cAAT,CAAyB,8BAAzB,CAA/B;AACA,oBAAI4f,kCAAkCjnB,SAASqH,cAAT,CAAyB,kCAAzB,CAAtC;AACA,oBAAIqE,SAASkb,gBAAgB7hB,KAAhB,CAAsB2G,MAAnC;AACA,oBAAIA,MAAJ,EAAa;AACTsb,6CAAyB1f,KAAzB,GAAiC3B,WAAY+F,MAAZ,EAAoB,EAApB,CAAjC;AACA4T,6CAAyBhY,KAAzB,GAAiC3B,WAAY+F,MAAZ,EAAoB,EAApB,CAAjC;AACAub,oDAAgCjT,OAAhC,GAA0C,IAA1C;AACH,iBAJD,MAIO,IAAI4S,gBAAgBvc,OAAhB,CAAwB6c,eAA5B,EAA8C;AACjDF,6CAAyB1f,KAAzB,GAAiCsf,gBAAgBvc,OAAhB,CAAwB6c,eAAzD;AACA5H,6CAAyBhY,KAAzB,GAAiCsf,gBAAgBvc,OAAhB,CAAwB6c,eAAzD;AACAD,oDAAgCjT,OAAhC,GAA0C,IAA1C;AACH,iBAJM,MAIA;AACH,wBAAIuB,aAAa3T,YAAYyT,YAAZ,CAA0BnT,KAA1B,EAAiC0kB,eAAjC,CAAjB;AACAI,6CAAyB1f,KAAzB,GAAiCiO,UAAjC;AACA+J,6CAAyBhY,KAAzB,GAAiCiO,UAAjC;AACA0R,oDAAgCjT,OAAhC,GAA0C,KAA1C;AACH;AACJ;AACDyS,yBAAa9lB,SAAb,CAAuBO,GAAvB,CAA4B,SAA5B;AACH,SAvDM,MAuDA;AACH,iBAAK,IAAI6H,IAAI,CAAb,EAAgBA,IAAIyd,cAActmB,MAAlC,EAA0C6I,GAA1C,EAA+C;AAC3C,oBAAI7G,MAAMilB,QAAN,CAAevB,KAAf,CAAJ,EAA2B;AACvBY,kCAAczd,CAAd,EAAiBpI,SAAjB,CAA2BO,GAA3B,CAA+B,SAA/B;AACAslB,kCAAczd,CAAd,EAAiBmP,eAAjB,CAAiC,UAAjC;AACH,iBAHD,MAGO;AACHsO,kCAAczd,CAAd,EAAiBpI,SAAjB,CAA2BC,MAA3B,CAAkC,SAAlC;AACA4lB,kCAAczd,CAAd,EAAiBrB,YAAjB,CAA8B,UAA9B,EAA0C,UAA1C;AACH;AACJ;AACD,iBAAK,IAAIqB,IAAI,CAAb,EAAgBA,IAAIud,QAAQpmB,MAA5B,EAAoC6I,GAApC,EAAyC;AACrCud,wBAAQvd,CAAR,EAAWpI,SAAX,CAAqBC,MAArB,CAA4B,SAA5B;AACA0lB,wBAAQvd,CAAR,EAAWrB,YAAX,CAAwB,UAAxB,EAAoC,UAApC;AACH;AACD,iBAAK,IAAIqB,IAAI,CAAb,EAAgBA,IAAIwd,YAAYrmB,MAAhC,EAAwC6I,GAAxC,EAA6C;AACzCwd,4BAAYxd,CAAZ,EAAepI,SAAf,CAAyBC,MAAzB,CAAgC,SAAhC;AACA2lB,4BAAYxd,CAAZ,EAAerB,YAAf,CAA4B,UAA5B,EAAwC,UAAxC;AACH;AACD+e,yBAAa9lB,SAAb,CAAuBC,MAAvB,CAA+B,SAA/B;AACH;AACJ,KAxHD;;AA0HA;;;;;;;;AAQA,QAAIwmB,gBAAgB,SAAhBA,aAAgB,GAAY;AAC5B,YAAIC,UAAU,EAAd;AAAA,YAAkBve,GAAlB;AAAA,YAAuBwe,IAAvB;AAAA,YAA6BC,SAAS,EAAtC;;AAEA,aAAK,IAAIxe,IAAI,CAAb,EAAgBA,IAAIgd,gBAApB,EAAsChd,GAAtC,EAA2C;AACvCse,oBAAQte,CAAR,IAAa,CAAb;AACH;;AAED,aAAK,IAAIA,IAAI,CAAb,EAAgBA,IAAI7G,MAAMoQ,IAAN,CAAWpS,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxCue,mBAAO,EAAP;;AAEA,gBAAIxe,MAAM5G,MAAMoQ,IAAN,CAAWvJ,CAAX,EAAcxI,oBAAd,CAAmC,IAAnC,CAAV;;AAEA,iBAAKinB,QAAQ,CAAb,EAAgBA,QAAQ1e,IAAI5I,MAA5B,EAAoCsnB,OAApC,EAA6C;;AAEzC,qBAAK,IAAIxP,IAAI,CAAb,EAAgBA,IAAIlP,IAAI0e,KAAJ,EAAWpB,OAA/B,EAAwCpO,GAAxC,EAA6C;AACzCsP,yBAAK7W,IAAL,CAAU,CAAV;AACH;;AAED,oBAAI3H,IAAI0e,KAAJ,EAAWtB,OAAX,GAAqB,CAAzB,EAA4B;AACxB,yBAAK,IAAIlO,IAAI,CAAb,EAAgBA,IAAIlP,IAAI0e,KAAJ,EAAWpB,OAA/B,EAAwCpO,GAAxC,EAA6C;AACzCqP,gCAAQG,QAAQxP,CAAhB,IAAqB;AACjByP,0CAAc,IADG;AAEjBC,oCAAQ5e,IAAI0e,KAAJ,EAAWtB;AAFF,yBAArB;AAIH;AACJ;AACJ;;AAED,iBAAK,IAAIlO,IAAI,CAAb,EAAgBA,IAAI+N,gBAApB,EAAsC/N,GAAtC,EAA2C;AACvC,oBAAI,QAAOqP,QAAQrP,CAAR,CAAP,KAAqB,QAArB,IAAiCqP,QAAQrP,CAAR,EAAW0P,MAAX,GAAoB,CAAzD,EAA4D;AACxDL,4BAAQrP,CAAR,EAAW0P,MAAX;AACA,wBAAIL,QAAQrP,CAAR,EAAWyP,YAAf,EAA6B;AACzBJ,gCAAQrP,CAAR,EAAWyP,YAAX,GAA0B,KAA1B;AACH,qBAFD,MAEO;AACHH,6BAAK7W,IAAL,CAAU,CAAV;AACH;AACJ;AACJ;;AAED8W,mBAAO9W,IAAP,CAAY6W,IAAZ;AAEH;AACD,eAAOC,MAAP;AACH,KA3CD;;AA6CA;;;;;;AAMA,QAAII,kBAAkB,SAAlBA,eAAkB,CAAU7B,GAAV,EAAe;AACjC,YAAIuB,UAAU,EAAd;AAAA,YAAkBve,GAAlB;AAAA,YAAuBwe,IAAvB;;AAEA,aAAK,IAAIve,IAAI,CAAb,EAAgBA,IAAIgd,gBAApB,EAAsChd,GAAtC,EAA2C;AACvCse,oBAAQte,CAAR,IAAa,CAAb;AACH;;AAED,YAAI+c,OAAO,CAAC,CAAZ,EAAe;AACX,mBAAOuB,OAAP;AACH;;AAED,aAAK,IAAIte,IAAI,CAAb,EAAgBA,KAAK+c,GAArB,EAA0B/c,GAA1B,EAA+B;AAC3B6e,0BAAc1lB,MAAMoQ,IAAN,CAAWvJ,CAAX,EAAcxI,oBAAd,CAAmC,IAAnC,CAAd;AACAsnB,0BAAc,CAAd;;AAEA,iBAAK,IAAIC,YAAY,CAArB,EAAwBA,YAAY/B,gBAApC,EAAsD+B,aAAaC,WAAnE,EAAgF;AAC5EA,8BAAc,CAAd;;AAEA,oBAAIV,QAAQS,SAAR,CAAJ,EAAwB;AACpBT,4BAAQS,SAAR;AACH,iBAFD,MAEO;AACHE,4BAAQJ,YAAYC,aAAZ,CAAR;AACA,wBAAIG,MAAM9B,OAAN,GAAgB,CAApB,EAAuB;AACnB,6BAAKlO,IAAI,CAAT,EAAYA,IAAIgQ,MAAM5B,OAAtB,EAA+BpO,GAA/B,EAAoC;AAChCqP,oCAAQS,YAAY9P,CAApB,IAAyBgQ,MAAM9B,OAAN,GAAgB,CAAzC;AACH;AACD6B,sCAAcC,MAAM5B,OAApB;AACH,qBALD,MAKO,IAAI4B,MAAM5B,OAAN,GAAgB,CAApB,EAAuB;AAC1B2B,sCAAcC,MAAM5B,OAApB;AACH;AACJ;AACJ;AAEJ;AACD,eAAOiB,OAAP;AACH,KAnCD;;AAqCA;;;;;AAKA,QAAIY,YAAY,SAAZA,SAAY,CAAUC,CAAV,EAAa;AACzB,YAAItQ,SAAS,kBAAb;AACA,aAAK,IAAI7O,IAAI,CAAb,EAAgBA,IAAImf,EAAEhoB,MAAtB,EAA8B6I,GAA9B,EAAmC;;AAE/B,iBAAK,IAAIiB,IAAI,CAAb,EAAgBA,IAAIke,EAAEnf,CAAF,EAAK7I,MAAzB,EAAiC8J,GAAjC,EAAsC;AAClC4N,0BAAU,MAAMsQ,EAAEnf,CAAF,EAAKiB,CAAL,CAAhB;AACH;AACD4N,sBAAU,IAAV;AACH;AACD1V,cAAMilB,QAAN,CAAee,CAAf;AACH,KAVD;;AAYA;;;;;AAKA,QAAIC,aAAa,SAAbA,UAAa,GAAY;AACzB,YAAI7B,UAAUtmB,SAASC,sBAAT,CAAgC,qBAAhC,CAAd;AAAA,YACQsmB,cAAcvmB,SAASC,sBAAT,CAAgC,oBAAhC,CADtB;AAAA,YAEQumB,gBAAgBxmB,SAASC,sBAAT,CAAgC,6BAAhC,CAFxB;AAAA,YAGQwmB,eAAezmB,SAASqH,cAAT,CAAyB,sCAAzB,CAHvB;AAAA,YAIQyB,MAAM5G,MAAMjC,sBAAN,CAA6B,kBAA7B,CAJd;AAKA,eAAO6I,IAAI5I,MAAX,EAAmB;AACf4I,gBAAI,CAAJ,EAAOnI,SAAP,CAAiBC,MAAjB,CAAwB,kBAAxB;AACH;AACD6lB,qBAAa9lB,SAAb,CAAuBC,MAAvB,CAA+B,SAA/B;AACA,aAAK,IAAImI,IAAI,CAAb,EAAgBA,IAAI6c,MAAM1lB,MAA1B,EAAkC6I,GAAlC,EAAuC;AACnC,iBAAK,IAAIiB,IAAI,CAAb,EAAgBA,IAAI4b,MAAM7c,CAAN,EAAS7I,MAA7B,EAAqC8J,GAArC,EAA0C;AACtC4b,sBAAM7c,CAAN,EAASiB,CAAT,IAAc,CAAd;AACH;AACJ;AACD,aAAK,IAAIjB,IAAI,CAAb,EAAgBA,IAAIyd,cAActmB,MAAlC,EAA0C6I,GAA1C,EAA+C;AAC3Cyd,0BAAczd,CAAd,EAAiBpI,SAAjB,CAA2BC,MAA3B,CAAkC,SAAlC;AACA4lB,0BAAczd,CAAd,EAAiBrB,YAAjB,CAA8B,UAA9B,EAA0C,UAA1C;AACH;AACD,aAAK,IAAIqB,IAAI,CAAb,EAAgBA,IAAIud,QAAQpmB,MAA5B,EAAoC6I,GAApC,EAAyC;AACrCud,oBAAQvd,CAAR,EAAWpI,SAAX,CAAqBO,GAArB,CAAyB,SAAzB;AACAolB,oBAAQvd,CAAR,EAAWmP,eAAX,CAA2B,UAA3B;AACH;AACD,aAAK,IAAInP,IAAI,CAAb,EAAgBA,IAAIwd,YAAYrmB,MAAhC,EAAwC6I,GAAxC,EAA6C;AACzCwd,wBAAYxd,CAAZ,EAAepI,SAAf,CAAyBC,MAAzB,CAAgC,SAAhC;AACA2lB,wBAAYxd,CAAZ,EAAerB,YAAf,CAA4B,UAA5B,EAAwC,UAAxC;AACH;AACJ,KA3BD;;AA6BA;;;;;;AAMA,QAAI0gB,iBAAiB,SAAjBA,cAAiB,GAAY;AAC7B,YAAIC,eAAe,EAAnB;AAAA,YAAuBH,IAAI,EAA3B;;AAEA;AACA,aAAK,IAAInf,IAAI,CAAb,EAAgBA,IAAI7G,MAAMoQ,IAAN,CAAWpS,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxC,gBAAIuf,QAAQpmB,MAAMoQ,IAAN,CAAWvJ,CAAX,EAAcxI,oBAAd,CAAmC,IAAnC,CAAZ;AAAA,gBACQgoB,kBAAkB,CAD1B;AAEA,iBAAK,IAAIve,IAAI,CAAb,EAAgBA,IAAIse,MAAMpoB,MAA1B,EAAkC8J,GAAlC,EAAuC;AACnCue,mCAAmBD,MAAMte,CAAN,EAASoc,OAA5B;AACH;AACDiC,yBAAa5X,IAAb,CAAkB8X,eAAlB;AACH;;AAEDxC,2BAAmByC,KAAKC,GAAL,CAASC,KAAT,CAAe,IAAf,EAAqBL,YAArB,CAAnB;AACA;AACA,YAAIrC,kBAAkB9jB,MAAMoQ,IAAN,CAAWpS,MAAjC;;AAEA;AACA,aAAK,IAAI6I,IAAI,CAAb,EAAgBA,IAAIid,eAApB,EAAqCjd,GAArC,EAA0C;AACtCmf,cAAEnf,CAAF,IAAO,EAAP;AACA,iBAAK,IAAIiB,IAAI,CAAb,EAAgBA,IAAI+b,gBAApB,EAAsC/b,GAAtC,EAA2C;AACvCke,kBAAEnf,CAAF,EAAK0H,IAAL,CAAU,CAAV;AACH;AACJ;AACDwX,kBAAUC,CAAV;AACA,eAAOA,CAAP;AACH,KA1BD;;AA4BA;;;;AAIA,QAAIS,uBAAuB,SAAvBA,oBAAuB,CAAU7C,GAAV,EAAe;AACtC,YAAIhd,MAAM5G,MAAMoQ,IAAN,CAAWwT,GAAX,EAAgBvlB,oBAAhB,CAAqC,IAArC,CAAV;AAAA,YACQqoB,SAAS,CADjB;AAEA,aAAK,IAAI7f,IAAI,CAAb,EAAgBA,IAAID,IAAI5I,MAAxB,EAAgC6I,GAAhC,EAAqC;AACjC6f,sBAAU9f,IAAIC,CAAJ,EAAOqd,OAAjB;AACH;AACD,eAAOwC,MAAP;AACH,KAPD;;AASA;;;;;;AAMA,QAAIpe,YAAY,SAAZA,SAAY,CAAUqN,MAAV,EAAkB;AAC9B,YAAIgR,aAAa,EAAjB;AAAA,YAAqB3T,IAArB;;AAEA,aAAK,IAAInM,IAAI,CAAb,EAAgBA,IAAIgd,gBAApB,EAAsChd,GAAtC,EAA2C;AACvC8f,uBAAW9f,CAAX,IAAgB,CAAhB;AACH;;AAED,aAAK,IAAIA,IAAI,CAAb,EAAgBA,IAAI7G,MAAMoQ,IAAN,CAAWpS,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxC,gBAAI6e,cAAc1lB,MAAMoQ,IAAN,CAAWvJ,CAAX,EAAcxI,oBAAd,CAAmC,IAAnC,CAAlB;AACAsnB,0BAAc,CAAd;AACA,iBAAK,IAAIC,YAAY,CAArB,EAAwBA,YAAY/B,gBAApC,EAAsD+B,aAAaC,WAAnE,EAAgF;AAC5EA,8BAAc,CAAd;;AAEA,oBAAIc,WAAWf,SAAX,CAAJ,EAA2B;AACvBe,+BAAWf,SAAX;AACH,iBAFD,MAEO;AACH,wBAAIjlB,KAAK+kB,YAAYC,aAAZ,CAAT;AACA,wBAAIhlB,MAAMgV,MAAV,EAAkB;AACd,+BAAO,CAAC9O,CAAD,EAAI+e,SAAJ,CAAP;AACH;AACD,wBAAIjlB,GAAGqjB,OAAH,GAAa,CAAjB,EAAoB;AAChB,6BAAM,IAAIlO,KAAI,CAAd,EAAiBA,KAAInV,GAAGujB,OAAxB,EAAiCpO,IAAjC,EAAuC;AACnC6Q,uCAAWf,YAAY9P,EAAvB,IAA4BnV,GAAGqjB,OAAH,GAAa,CAAzC;AACH;AACD6B,sCAAcllB,GAAGujB,OAAjB;AACH,qBALD,MAKO,IAAIvjB,GAAGujB,OAAH,GAAa,CAAjB,EAAoB;AACvB2B,sCAAcllB,GAAGujB,OAAjB;AACH;AACJ;AACJ;AACJ;AACJ,KA/BD;;AAiCA7c,WAAO,uBAAP,EAAgCC,GAAhC,CAAoC,EAApC;AACAD,WAAO,mBAAP,EAA4BC,GAA5B,CAAgC,EAAhC;AACAD,WAAO,kBAAP,EAA2BC,GAA3B,CAA+B,EAA/B;AACAD,WAAO,0BAAP,EAAmCC,GAAnC,CAAuC,EAAvC;AACAD,WAAO,iEAAP,EAA0EC,GAA1E,CAA8E,GAA9E;AACAD,WAAO,qDAAP,EAA8DC,GAA9D,CAAkE,GAAlE;AACAD,WAAO,uDAAP,EAAgEC,GAAhE,CAAoE,IAApE;;AAEA,QAAIgT,WAAWlK,IAAf,EAAqB;AACjB;AACA,aAAK,IAAIvJ,IAAI,CAAb,EAAgBA,IAAIT,SAASpI,MAA7B,EAAqC6I,GAArC,EAA0C;AACtC,gBAAIT,SAASS,CAAT,EAAY+b,EAAZ,KAAmB,yBAAvB,EAAkD;AAC9Cxc,yBAASS,CAAT,EAAYpI,SAAZ,CAAsBO,GAAtB,CAA0B,SAA1B;AACH;AACJ;;AAED;AACAgB,gBAAQlC,SAASiB,aAAT,CAAwB,OAAxB,CAAR;AACAiB,cAAMvB,SAAN,CAAgBO,GAAhB,CAAqB,oBAArB;AACAgB,cAAMmI,OAAN,CAAcye,cAAd,GAA+B,CAA/B;AACA5mB,cAAMmI,OAAN,CAAciT,iBAAd,GAAkC,CAAlC;AACA;AACA,aAAK,IAAIvU,IAAI,CAAb,EAAgBA,IAAIuJ,IAApB,EAA0BvJ,GAA1B,EAA+B;;AAE3B+c,kBAAM5jB,MAAM6mB,SAAN,CAAgB,CAAC,CAAjB,CAAN;AACAjD,gBAAInlB,SAAJ,CAAcO,GAAd,CAAmB,UAAnB;;AAEA,iBAAK,IAAI8I,IAAI,CAAb,EAAgBA,IAAIwS,OAApB,EAA6BxS,GAA7B,EAAkC;AAC9BkL,uBAAO,IAAI3M,SAAJ,CAAc0d,IAAd,CAAP;AACA/Q,qBAAKhL,SAAL,CAAenB,CAAf,EAAkBiB,CAAlB;AACA8b,oBAAI3kB,WAAJ,CAAgB+T,KAAK7R,aAAL,EAAhB;AACH;AACJ;AACJ,KAzBD,MAyBO;AACH,YAAI2lB,qBAAqBhpB,SAASC,sBAAT,CAAiC,oBAAjC,CAAzB;;AAEA,YAAI+oB,mBAAmB9oB,MAAnB,GAA4B,CAAhC,EAAmC;AAC/BgC,oBAAQ8mB,mBAAmB,CAAnB,CAAR;;AAEA,gBAAIV,QAAQpmB,MAAM3B,oBAAN,CAA2B,IAA3B,CAAZ;;AAEA,gBAAI+nB,MAAMpoB,MAAN,GAAe,CAAnB,EAAsB;AAClB,qBAAK,IAAI6I,KAAI,CAAb,EAAgBA,KAAIuf,MAAMpoB,MAA1B,EAAkC6I,IAAlC,EAAuC;AACnCR,8BAAU0d,IAAV,EAAgBqC,MAAMvf,EAAN,CAAhB;AACH;AACJ;AACJ;AACJ;;AAED;;;;;AAKA7G,UAAMge,mBAAN,GAA4B,YAAY;AACpC,YAAI0D,MAAM5jB,SAASC,sBAAT,CAAgC,eAAhC,CAAV;AAAA,YACQgpB,qBAAqBjpB,SAASqH,cAAT,CAAwB,2BAAxB,CAD7B;AAAA,YAEQ6hB,yBAAyBlpB,SAASqH,cAAT,CAAwB,gCAAxB,CAFjC;AAAA,YAGQ8hB,8BAA8BnpB,SAASqH,cAAT,CAAyB,sCAAzB,CAHtC;AAAA,YAIQyX,mBAAmB9e,SAASC,sBAAT,CAAgC,oBAAhC,CAJ3B;AAKA,YAAI6e,iBAAiB5e,MAAjB,GAA0B,CAA9B,EAAiC;AAC7B4e,+BAAmBA,iBAAiB,CAAjB,CAAnB;AACH;;AAED,YAAK8E,IAAI1jB,MAAJ,GAAa,CAAlB,EAAsB;AAClB,iBAAM,IAAI6I,MAAI,CAAd,EAAiBA,MAAI6a,IAAI1jB,MAAzB,EAAiC6I,KAAjC,EAAuC;AACnC,oBAAK6a,IAAI7a,GAAJ,EAAOpI,SAAP,CAAiBsB,QAAjB,CAA2B,SAA3B,CAAL,EAA8C;AAC1CjC,6BAASkI,MAAT,CAAgBsZ,4BAAhB;AACAoC,wBAAI7a,GAAJ,EAAOpI,SAAP,CAAiBC,MAAjB,CAAyB,SAAzB;AACAqoB,uCAAmBtoB,SAAnB,CAA6BC,MAA7B,CAAqC,SAArC;AACAsoB,2CAAuBvoB,SAAvB,CAAiCC,MAAjC,CAAyC,SAAzC;AACAuoB,gDAA4BxoB,SAA5B,CAAsCC,MAAtC,CAA8C,SAA9C;AACAke,qCAAiBje,UAAjB,CAA4BF,SAA5B,CAAsCC,MAAtC,CAA8C,iCAA9C;AACA,wBAAIwoB,sBAAsBtK,iBAAiBve,oBAAjB,CAAuC,IAAvC,CAA1B;AACA,wBAAK6oB,oBAAoBlpB,MAApB,GAA6B,CAAlC,EAAsC;AAClC,6BAAM,IAAI6I,MAAI,CAAd,EAAiBA,MAAIqgB,oBAAoBlpB,MAAzC,EAAiD6I,KAAjD,EAAuD;AACnDqgB,gDAAoBrgB,GAApB,EAAuBpI,SAAvB,CAAiCC,MAAjC,CAAyC,kBAAzC;AACH;AACJ;AACJ,iBAbD,MAaO;AACHZ,6BAASkI,MAAT,CAAgBqZ,0BAAhB;AACAqC,wBAAI7a,GAAJ,EAAOpI,SAAP,CAAiBO,GAAjB,CAAsB,SAAtB;AACA+nB,uCAAmBtoB,SAAnB,CAA6BO,GAA7B,CAAkC,SAAlC;AACAgoB,2CAAuBvoB,SAAvB,CAAiCO,GAAjC,CAAsC,SAAtC;AACA4d,qCAAiBje,UAAjB,CAA4BF,SAA5B,CAAsCO,GAAtC,CAA2C,iCAA3C;AACH;AACJ;AAEJ;AACJ,KAnCD;;AAqCA;;;;;AAKAgB,UAAMmnB,kBAAN,GAA2B,UAAWC,KAAX,EAAmB;AAC1C,YAAIC,MAAM,KAAKhpB,oBAAL,CAA0B,IAA1B,CAAV;AAAA,YAA2CuI,YAA3C;AAAA,YAAgD0gB,UAAU,CAA1D;AAAA,YAA6DC,cAAc,CAA3E;AAAA,YACQC,SAAS,EADjB;AAEA,YAAIlM,qBAAqBxd,SAASqH,cAAT,CAAyB,wBAAzB,CAAzB;;AAEA,aAAK,IAAI0B,IAAI,CAAb,EAAgBA,IAAIwgB,IAAIrpB,MAAxB,EAAgC6I,GAAhC,EAAqC;AACjC,gBAAKA,KAAK,CAAV,EAAc;AACV,oBAAKugB,SAASjc,SAAd,EAA0B;AACtBkc,wBAAIxgB,CAAJ,EAAOhE,KAAP,CAAakO,eAAb,GAA+B1J,OAAO,uBAAP,EAAgCC,GAAhC,EAA/B;AACH;AACD,oBAAIgU,mBAAmBxJ,OAAvB,EAAiC;AAC7B,wBAAIsV,SAASjc,SAAb,EAAyB;AACrB,6BAAK1M,SAAL,CAAeO,GAAf,CAAoB,yBAApB;AACAqoB,4BAAIxgB,CAAJ,EAAOpI,SAAP,CAAiBO,GAAjB,CAAsB,iBAAtB;AACH,qBAAE;AACN,iBALD,MAKO;AACH,wBAAIooB,SAASjc,SAAb,EAAyB;AACrB,6BAAK1M,SAAL,CAAeC,MAAf,CAAuB,yBAAvB;AACA2oB,4BAAIxgB,CAAJ,EAAOpI,SAAP,CAAiBC,MAAjB,CAAyB,iBAAzB;AACH;AACJ;AACJ,aAfD,MAeO;AACH,oBAAImI,IAAI,CAAJ,IAAS,CAAb,EAAgB;AACZ,wBAAKugB,SAASjc,SAAd,EAA0B;AACtBkc,4BAAIxgB,CAAJ,EAAOhE,KAAP,CAAakO,eAAb,GAA+B1J,OAAO,kBAAP,EAA2BC,GAA3B,EAA/B;AACH;AACD+f,wBAAIxgB,CAAJ,EAAOpI,SAAP,CAAiBC,MAAjB,CAAyB,iBAAzB;AACH,iBALD,MAKO;AACH,wBAAK0oB,SAASjc,SAAd,EAA0B;AACtBkc,4BAAIxgB,CAAJ,EAAOhE,KAAP,CAAakO,eAAb,GAA+B1J,OAAO,mBAAP,EAA4BC,GAA5B,EAA/B;AACH;AACD+f,wBAAIxgB,CAAJ,EAAOpI,SAAP,CAAiBC,MAAjB,CAAyB,iBAAzB;AACH;AACJ;;AAED8oB,mBAAO3gB,CAAP;AACAD,kBAAMygB,IAAIxgB,CAAJ,EAAOxI,oBAAP,CAA4B,IAA5B,CAAN;;AAEA,gBAAImpB,OAAO3gB,CAAP,KAAasE,SAAjB,EAA4B;AACxBqc,uBAAO3gB,CAAP,IAAY,EAAZ;AACH;;AAED,gBAAI4gB,YAAY,CAAhB;AACA,iBAAK,IAAI3f,IAAI,CAAb,EAAgBA,IAAIlB,IAAI5I,MAAxB,EAAgC8J,GAAhC,EAAqC;AACjC,oBAAI0f,OAAO3gB,CAAP,EAAUiB,CAAV,KAAgBqD,SAApB,EAA+B;AAC3B,yBAAK,IAAIlD,IAAI,CAAb,EAAgBA,IAAI,GAApB,EAAyBA,GAAzB,EAA8B;AAC1B,4BAAIuf,OAAO3gB,CAAP,EAAU4gB,SAAV,KAAwBtc,SAA5B,EAAuC;AACnCsc;AACA;AACH;AACDD,+BAAO3gB,CAAP,EAAU4gB,SAAV,IAAuB7gB,IAAIkB,CAAJ,CAAvB;AACAlB,4BAAIkB,CAAJ,EAAOK,OAAP,CAAeE,MAAf,GAAwBof,SAAxB;AACA;AACH;AACJ,iBAVD,MAUO;AACHD,2BAAO3gB,CAAP,EAAUiB,CAAV,IAAelB,IAAIkB,CAAJ,CAAf;AACAlB,wBAAIkB,CAAJ,EAAOK,OAAP,CAAeE,MAAf,GAAwBof,SAAxB;AACH;AACD7gB,oBAAIkB,CAAJ,EAAOK,OAAP,CAAeC,MAAf,GAAwBvB,CAAxB;;AAEA,oBAAID,IAAIkB,CAAJ,EAAOoc,OAAP,GAAiB,CAArB,EAAwB;AACpB,yBAAK,IAAIpO,MAAI,CAAb,EAAgBA,MAAIlP,IAAIkB,CAAJ,EAAOoc,OAA3B,EAAoCpO,KAApC,EAAyC;AACrC2R;AACAD,+BAAO3gB,CAAP,EAAU4gB,SAAV,IAAuB,SAAvB;AACH;AACJ;;AAED,oBAAI7gB,IAAIkB,CAAJ,EAAOkc,OAAP,GAAiB,CAArB,EAAwB;AACpB,yBAAK,IAAI9b,IAAI,CAAb,EAAgBA,IAAItB,IAAIkB,CAAJ,EAAOkc,OAA3B,EAAoC9b,GAApC,EAAyC;AACrC,4BAAIsf,OAAO3gB,IAAIqB,CAAX,KAAiBiD,SAArB,EAAgC;AAC5Bqc,mCAAO3gB,IAAIqB,CAAX,IAAgB,EAAhB;AACH;AACD,6BAAK,IAAIwf,IAAI,CAAb,EAAgBA,IAAI9gB,IAAIkB,CAAJ,EAAOoc,OAA3B,EAAoCwD,GAApC,EAAyC;AACrCF,mCAAO3gB,IAAIqB,CAAX,EAAcuf,YAAY7gB,IAAIkB,CAAJ,EAAOoc,OAAnB,GAA6B,CAA7B,GAAiCwD,CAA/C,IAAqD,SAArD;AACH;AACJ;AACJ;AACDD;AACA,oBAAI5gB,KAAK,CAAT,EAAa;AACT0gB,kCAAcE,SAAd;AACH;AACJ;AACD,gBAAI3f,IAAIwf,OAAR,EAAiB;AACbA,0BAAUxf,CAAV;AACH;AACJ;AACD,aAAKwS,OAAL,GAAegN,OAAf;AACA,aAAKA,OAAL,GAAeC,WAAf;AACH,KAxFD;;AA0FCvnB,UAAM0d,cAAN,GAAuB,UAAUtY,KAAV,EAAiBuiB,OAAjB,EAA2B;AAC/C,YAAIhK,cAAe3d,MAAMjC,sBAAN,CAA8B,kBAA9B,CAAnB;AACA,YAAI4f,YAAY3f,MAAZ,GAAqB,CAAzB,EAA6B;AACzB,iBAAK,IAAI8X,MAAI,CAAb,EAAgBA,MAAI6H,YAAY3f,MAAhC,EAAwC8X,KAAxC,EAA8C;AAC1C,oBAAI8R,aAAajK,YAAY7H,GAAZ,EAAe3N,OAAf,CAAuBE,MAAxC;AACA,oBAAIuf,UAAJ,EAAiB;AAAA;AAAA,4BACJC,WADI,GACb,SAASA,WAAT,CAAsBD,UAAtB,EAAkCE,OAAlC,EAA4C;AACxC,gCAAInN,YAAY3a,MAAMoQ,IAAtB;AACA,gCAAI2X,aAAa,KAAjB;AACA,gCAAIC,0BAA0B,EAA9B;AACA,iCAAK,IAAInhB,MAAI,CAAb,EAAgBA,MAAI8T,UAAU3c,MAA9B,EAAsC6I,KAAtC,EAA4C;AACxC,oCAAI+c,OAAMjJ,UAAU9T,GAAV,CAAV;AACA,oCAAID,MAAMgd,KAAI7W,QAAd;AACA,qCAAK,IAAIjF,KAAI,CAAb,EAAgBA,KAAIlB,IAAI5I,MAAxB,EAAgC8J,IAAhC,EAAsC;AAClC,wCAAInH,KAAKiG,IAAIkB,EAAJ,CAAT;AACA,wCAAInH,GAAGwH,OAAH,CAAWE,MAAX,IAAqBuf,UAAzB,EAAsC;AAClC,4CAAIxiB,KAAJ,EAAY;AACR,gDAAIzE,GAAGujB,OAAH,IAAc4D,OAAlB,EAA4B;AACxBnnB,mDAAGkC,KAAH,CAASyG,KAAT,GAAiBlE,QAAQ,IAAzB;AACAzE,mDAAGqV,eAAH,CAAoB,uBAApB;AACA+R,6DAAa,IAAb;AACA,oDAAInD,oCAAoC9mB,SAASqH,cAAT,CAAyB,oCAAzB,CAAxC;AACA,oDAAI,CAAEyf,kCAAkC9S,OAAxC,EAAkD;AAC9C8S,sFAAkC9S,OAAlC,GAA4C,IAA5C;AACH;AACJ,6CARD,MAQO;AACHnR,mDAAGkC,KAAH,CAASyG,KAAT,GAAiB,IAAjB;AACA3I,mDAAGwH,OAAH,CAAW0c,cAAX,GAA4Bzf,KAA5B;AACA,oDAAIyB,OAAK8T,UAAU3c,MAAV,GAAmB,CAAxB,IAA6B,CAAE+pB,UAAnC,EAAgD;AAC5CF,gEAAaD,UAAb,EAAyBE,UAAU,CAAnC;AACH;AACJ;AACJ,yCAhBD,MAgBO,IAAIH,OAAJ,EAAc;AACjBhnB,+CAAGkC,KAAH,CAASyG,KAAT,GAAiB,IAAjB;AACA3I,+CAAGqV,eAAH,CAAoB,uBAApB;AACH,yCAHM,MAGA;AACH,gDAAIrV,GAAGwH,OAAH,CAAW0c,cAAf,EAAgC;AAC5B,oDAAIlkB,GAAGujB,OAAH,IAAc4D,OAAlB,EAA4B;AACxBnnB,uDAAGkC,KAAH,CAASyG,KAAT,GAAiB3I,GAAGwH,OAAH,CAAW0c,cAAX,GAA4B,IAA7C;AACAlkB,uDAAGqV,eAAH,CAAoB,uBAApB;AACH;AACJ,6CALD,MAKO,IAAIrV,GAAGkC,KAAH,CAASyG,KAAb,EAAqB;AACxB,qDAAK,IAAIoe,IAAI,CAAb,EAAgBA,IAAIM,wBAAwBhqB,MAA5C,EAAoD0pB,GAApD,EAA0D;AACtDM,4EAAwBN,CAAxB,EAA2B7kB,KAA3B,CAAiCyG,KAAjC,GAAyC3I,GAAGkC,KAAH,CAASyG,KAAlD;AACH;AACD0e,0EAA0B,EAA1B;AACH,6CALM,MAKA;AACHA,wEAAwBzZ,IAAxB,CAA8B5N,EAA9B;AACH;AACJ;AACD;AACH;AACJ;AACJ;AACJ,yBAjDY;;AAmDbknB,oCAAaD,UAAb,EAAyB,CAAzB;AAnDa;AAoDhB;AACJ;;AAED5nB,kBAAMsd,cAAN;AACH;AACJ,KA9DA;;AAgEDtd,UAAMsd,cAAN,GAAuB,YAAW;AAC9B,YAAIlN,OAAOpQ,MAAMoQ,IAAjB;;AAEA,YAAI6X,sBAAsB,CAA1B;AACA,YAAIC,2BAA2B,CAA/B;AACA,YAAIC,0BAA0B,CAA9B;;AAEA,YAAIxE,iBAAiB7lB,SAASC,sBAAT,CAAiC,kBAAjC,EAAsD,CAAtD,CAArB;AACA,YAAIqqB,sBAAsBzE,eAAepa,WAAzC;;AAEA,YAAI8e,6BAA6B,EAAjC;AACA,YAAIC,4BAA4B,EAAhC;AACA,YAAIC,kBAAkB,CAAtB;AACA,YAAIC,2BAA2B,CAA/B;AACA,YAAIC,qBAAqB,EAAzB;;AAEA,aAAK,IAAI5hB,MAAI,CAAb,EAAgBA,MAAIuJ,KAAKpS,MAAzB,EAAiC6I,KAAjC,EAAuC;AACnC,gBAAID,MAAMwJ,KAAKvJ,GAAL,EAAQkG,QAAlB;AACA,iBAAK,IAAIjF,MAAI,CAAb,EAAgBA,MAAIlB,IAAI5I,MAAxB,EAAgC8J,KAAhC,EAAsC;AAClC,oBAAInH,KAAKiG,IAAIkB,GAAJ,CAAT;;AAEA,oBAAI,CAAEugB,2BAA2B1hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA3B,CAAF,IAA+D,CAAEigB,0BAA0B3hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA1B,CAArE,EAAgI;AAC5H,wBAAI1H,GAAGkC,KAAH,CAASyG,KAAb,EAAqB;AACjB+e,mDAA2B1hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA3B,IAA4D5E,WAAY9C,GAAGkC,KAAH,CAASyG,KAArB,CAA5D;AACA3I,2BAAGqV,eAAH,CAAoB,6BAApB;AACH,qBAHD,MAGO;AACH,4BAAI,CAAErV,GAAGwH,OAAH,CAAW0c,cAAjB,EAAkC;AAC9ByD,sDAA0B3hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA1B,IAA2D,GAA3D;AACA1H,+BAAGwH,OAAH,CAAWugB,kBAAX,GAAgC,IAAhC;AACH;AACJ;;AAED,wBAAI/f,OAAOC,gBAAP,CAAyBjI,EAAzB,EAA6B,IAA7B,CAAJ,EAA0C;AACtC,4BAAI+H,aAAaC,OAAOC,gBAAP,CAAyBjI,EAAzB,EAA6B,IAA7B,CAAjB;AACA,4BAAIkI,gBAAgBH,WAAWI,gBAAX,CAA6B,cAA7B,CAApB;AACA,4BAAIC,iBAAiBL,WAAWI,gBAAX,CAA6B,eAA7B,CAArB;AACAyf,0CAAkB9kB,WAAYoF,aAAZ,EAA2B,EAA3B,IAAkCpF,WAAYsF,cAAZ,EAA4B,EAA5B,CAApD;;AAEA,4BAAI4f,yBAAyBjgB,WAAWI,gBAAX,CAA6B,mBAA7B,CAA7B;AACA,4BAAI8f,0BAA0BlgB,WAAWI,gBAAX,CAA6B,oBAA7B,CAA9B;AACA0f,mDAA2B/kB,WAAYklB,sBAAZ,EAAoC,EAApC,IAA2CllB,WAAYmlB,uBAAZ,EAAqC,EAArC,CAAtE;AACA,4BAAIP,2BAA2B1hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA3B,CAAJ,EAAgE;AAC5DggB,uDAA2B1hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA3B,KAA6DkgB,eAA7D;AACAF,uDAA2B1hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA3B,KAA6DmgB,wBAA7D;AACH,yBAHD,MAGO;AACHF,sDAA0B3hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA1B,KAA4DkgB,eAA5D;AACAD,sDAA0B3hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA1B,KAA4DmgB,wBAA5D;AACH;AACJ;AACJ,iBA5BD,MA4BO,IAAIF,0BAA0B3hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA1B,CAAJ,EAA+D;AAClE,wBAAI,CAAE1H,GAAGwH,OAAH,CAAW0c,cAAjB,EAAkC;AAC9BlkB,2BAAGwH,OAAH,CAAWugB,kBAAX,GAAgC,IAAhC;AACH;AACJ,iBAJM,MAIA,IAAIL,2BAA2B1hB,SAAUhG,GAAGwH,OAAH,CAAWE,MAArB,CAA3B,CAAJ,EAAgE;AACnE1H,uBAAGqV,eAAH,CAAoB,6BAApB;AACH;AACJ;AACJ;;AAED,aAAK,IAAInP,MAAI,CAAb,EAAgBA,MAAIwhB,2BAA2BrqB,MAA/C,EAAuD6I,KAAvD,EAA6D;AACzD,gBAAIwhB,2BAA2BxhB,GAA3B,CAAJ,EAAoC;AAChCqhB,4CAA4BG,2BAA2BxhB,GAA3B,CAA5B;AACH;AACJ;;AAED,YAAIgiB,sBAAsB,CAA1B;AACA,aAAK,IAAIhiB,MAAI,CAAb,EAAgBA,MAAIyhB,0BAA0BtqB,MAA9C,EAAsD6I,KAAtD,EAA4D;AACxD,gBAAIyhB,0BAA0BzhB,GAA1B,CAAJ,EAAmC;AAC/BshB,2CAA2BG,0BAA0BzhB,GAA1B,CAA3B;AACAgiB;AACH;AACJ;;AAED,YAAIC,oBAAoBngB,OAAOC,gBAAP,CAAyB5I,KAAzB,EAAgC,IAAhC,CAAxB;AACA,YAAI+oB,kBAAkBD,kBAAkBhgB,gBAAlB,CAAoC,mBAApC,CAAtB;AACA,YAAIkgB,mBAAmBF,kBAAkBhgB,gBAAlB,CAAoC,oBAApC,CAAvB;AACA,YAAImgB,oBAAoBxlB,WAAYslB,eAAZ,EAA6B,EAA7B,IAAoCtlB,WAAYulB,gBAAZ,EAA8B,EAA9B,CAA5D;AACAf,8BAAsBC,2BAA2BC,uBAA3B,GAAqDc,iBAA3E;;AAEAjpB,cAAMmI,OAAN,CAAc+gB,uBAAd,GAAwCjB,mBAAxC;AACA,YAAIY,mBAAJ,EAA0B;AACtB7oB,kBAAMmI,OAAN,CAAcghB,uBAAd,GAAwCN,mBAAxC;AACA,gBAAI7oB,MAAMopB,wBAAV,EAAqC;AACjCppB,sBAAMmI,OAAN,CAAckhB,kBAAd,GAAmCnB,2BAA2Be,iBAA9D;AACH,aAFD,MAEO;AACHjpB,sBAAMgW,eAAN,CAAuB,4BAAvB;AACH;AACJ,SAPD,MAOO;AACHhW,kBAAMgW,eAAN,CAAuB,4BAAvB;AACAhW,kBAAMgW,eAAN,CAAuB,kCAAvB;AACH;;AAED,YAAIsT,qBAAqB,KAAzB;AACA,YAAIC,yBAAJ;AACA,YAAItB,sBAAsBG,mBAA1B,EAAgD;AAC5C,gBAAIS,mBAAJ,EAA0B;AACtB7oB,sBAAM6C,KAAN,CAAYugB,QAAZ,GAAuB,MAAvB;AACA,oBAAIpjB,MAAMopB,wBAAV,EAAqC;AACjCppB,0BAAM6C,KAAN,CAAYyG,KAAZ,GAAoB,IAApB;AACA,wBAAIkgB,0BAA0BpB,sBAAsBF,wBAAtB,GAAiDe,iBAA/E;AACAM,uCAAmBC,0BAA0BX,mBAA7C;AACAU,uCAAmBA,mBAAmBhB,eAAnB,GAAqCC,wBAAxD;AACAc,yCAAqB,IAArB;AACH,iBAND,MAMO;AACHtpB,0BAAM6C,KAAN,CAAYyG,KAAZ,GAAoB,MAApB;AACH;AACJ,aAXD,MAWO;AACHtJ,sBAAM6C,KAAN,CAAYyG,KAAZ,GAAoB,IAApB;AACAtJ,sBAAM6C,KAAN,CAAYugB,QAAZ,GAAuB,IAAvB;AACApjB,sBAAM6C,KAAN,CAAYwgB,QAAZ,GAAuB4E,sBAAsB,IAA7C;AACH;AACJ,SAjBD,MAiBO;AACHjoB,kBAAM6C,KAAN,CAAYwgB,QAAZ,GAAuB,IAAvB;AACArjB,kBAAM6C,KAAN,CAAYugB,QAAZ,GAAuB6E,sBAAsB,IAA7C;AACAjoB,kBAAM6C,KAAN,CAAYyG,KAAZ,GAAoB,IAApB;AACAigB,+BAAmB,KAAnB;AACAD,iCAAqB,IAArB;AACH;;AAED,YAAIG,OAAO3rB,SAAS2rB,IAApB;AACA,YAAIA,IAAJ,EAAW;AACP,gBAAIC,wBAAwBD,KAAKre,aAAL,CAAoB,uCAApB,CAA5B;AACA,gBAAIse,qBAAJ,EAA4B;AACxBD,qBAAK7qB,WAAL,CAAkB8qB,qBAAlB;AACH;AACJ;;AAED,YAAIJ,kBAAJ,EAAyB;AACrBb,iCAAqB3qB,SAASiB,aAAT,CAAwB,OAAxB,CAArB;AACA0pB,+BAAmBjjB,YAAnB,CAAiC,yBAAjC,EAA4D,IAA5D;AACAijB,+BAAmBhjB,SAAnB,GAA+B,8CAA8C8jB,gBAA9C,GAAiE,KAAhG;AACA,gBAAIE,IAAJ,EAAW;AACPA,qBAAKxqB,WAAL,CAAkBwpB,kBAAlB;AACH;AACJ;AACJ,KAvID;;AAyIAzoB,UAAM4d,YAAN,GAAqB,UAAUxY,KAAV,EAAiBuiB,OAAjB,EAA2B;AAC5C,YAAIhK,cAAe3d,MAAMjC,sBAAN,CAA8B,kBAA9B,CAAnB;AACA,YAAI4f,YAAY3f,MAAZ,GAAqB,CAAzB,EAA6B;AACzB,iBAAK,IAAI8X,MAAI,CAAb,EAAgBA,MAAI6H,YAAY3f,MAAhC,EAAwC8X,KAAxC,EAA8C;AAC1C,oBAAI6T,aAAahM,YAAY7H,GAAZ,EAAe3N,OAAf,CAAuBC,MAAxC;AACA,oBAAIuhB,UAAJ,EAAiB;AAAA;AAAA,4BACJ9B,WADI,GACb,SAASA,WAAT,CAAsB8B,UAAtB,EAAkCC,OAAlC,EAA4C;AACxC,gCAAIjP,YAAY3a,MAAMoQ,IAAtB;AACA,gCAAIyZ,cAAc,KAAlB;AACA,gCAAIC,mBAAmB,EAAvB;AACA,iCAAK,IAAIjjB,MAAI,CAAb,EAAgBA,MAAI8T,UAAU3c,MAA9B,EAAsC6I,KAAtC,EAA4C;AACxC,oCAAI+c,QAAMjJ,UAAU9T,GAAV,CAAV;AACA,oCAAID,MAAMgd,MAAI7W,QAAd;AACA,qCAAK,IAAIjF,MAAI,CAAb,EAAgBA,MAAIlB,IAAI5I,MAAxB,EAAgC8J,KAAhC,EAAsC;AAClC,wCAAInH,KAAKiG,IAAIkB,GAAJ,CAAT;AACA,wCAAInH,GAAGwH,OAAH,CAAWC,MAAX,IAAqBuhB,UAAzB,EAAsC;AAClC,4CAAIvkB,KAAJ,EAAY;AACR,gDAAIzE,GAAGqjB,OAAH,IAAc4F,OAAlB,EAA4B;AACxBjpB,mDAAGkC,KAAH,CAAS2G,MAAT,GAAkBpE,QAAQ,IAA1B;AACAzE,mDAAGqV,eAAH,CAAoB,wBAApB;AACA6T,8DAAc,IAAd;AACA,oDAAIE,qCAAqCjsB,SAASqH,cAAT,CAAyB,kCAAzB,CAAzC;AACA,oDAAI,CAAE4kB,mCAAmCjY,OAAzC,EAAmD;AAC/CiY,uFAAmCjY,OAAnC,GAA6C,IAA7C;AACH;AACD;AACH,6CATD,MASO;AACHnR,mDAAGkC,KAAH,CAAS2G,MAAT,GAAkB,IAAlB;AACA7I,mDAAGwH,OAAH,CAAW6c,eAAX,GAA6B5f,KAA7B;AACA,oDAAI0C,OAAKlB,IAAI5I,MAAJ,GAAa,CAAlB,IAAuB,CAAE6rB,WAA7B,EAA2C;AACvChC,gEAAa8B,UAAb,EAA0BC,UAAU,CAApC;AACH;AACJ;AACJ,yCAjBD,MAiBO,IAAIjC,OAAJ,EAAc;AACjBhnB,+CAAGkC,KAAH,CAAS2G,MAAT,GAAkB,IAAlB;AACA7I,+CAAGqV,eAAH,CAAoB,wBAApB;AACH,yCAHM,MAGA;AACH,gDAAIrV,GAAGwH,OAAH,CAAW6c,eAAf,EAAiC;AAC7B,oDAAIrkB,GAAGqjB,OAAH,GAAa4F,OAAjB,EAA2B;AACvBjpB,uDAAGkC,KAAH,CAAS2G,MAAT,GAAkB7I,GAAGwH,OAAH,CAAW6c,eAAX,GAA6B,IAA/C;AACArkB,uDAAGqV,eAAH,CAAoB,uBAApB;AACH;AACJ,6CALD,MAKO,IAAIrV,GAAGkC,KAAH,CAAS2G,MAAb,EAAsB;AACzB,qDAAK,IAAIke,IAAI,CAAb,EAAgBA,IAAIoC,iBAAiB9rB,MAArC,EAA6C0pB,GAA7C,EAAmD;AAC/CoC,qEAAiBpC,CAAjB,EAAoB7kB,KAApB,CAA0B2G,MAA1B,GAAmC7I,GAAGkC,KAAH,CAAS2G,MAA5C;AACH;AACDsgB,mEAAmB,EAAnB;AACH,6CALM,MAKA;AACHA,iEAAiBvb,IAAjB,CAAuB5N,EAAvB;AACH;AACJ;AACJ;AACJ;AACJ;AACJ,yBAjDY;;AAmDbknB,oCAAa8B,UAAb,EAAyB,CAAzB;AAnDa;AAoDhB;AACJ;AACJ;AACJ,KA5DD;;AA8DA3pB,UAAM4mB,cAAN,GAAuB,YAAW;AAC9B,YAAIhgB,MAAM5G,MAAM3B,oBAAN,CAA4B,IAA5B,CAAV;AACA,YAAI2rB,8BAA8BlsB,SAASC,sBAAT,CAAiC,iCAAjC,CAAlC;AACA,YAAIisB,4BAA4BhsB,MAA5B,GAAqC,CAAzC,EAA6C;AACzCgsB,0CAA8BA,4BAA4B,CAA5B,CAA9B;AACH;AACDhqB,cAAMopB,wBAAN,GAAiC,KAAjC;AACAppB,cAAMiqB,sBAAN,GAA+B,KAA/B;AACAjqB,cAAMmI,OAAN,CAAcye,cAAd,GAA+B,CAA/B;AACAoD,oCAA4BnnB,KAA5B,CAAkCC,OAAlC,GAA4C,OAA5C;AACA,YAAIonB,WAAW,CAAf;AACA,aAAK,IAAIrjB,MAAI,CAAb,EAAgBA,MAAID,IAAI5I,MAAxB,EAAgC6I,KAAhC,EAAsC;AAClC,gBAAID,IAAIC,GAAJ,EAAOqd,OAAP,GAAiB,CAArB,EAAyB;AACrBlkB,sBAAMmI,OAAN,CAAcye,cAAd,GAA+B,CAA/B;AACAoD,4CAA4BnnB,KAA5B,CAAkCC,OAAlC,GAA4C,MAA5C;AACA9C,sBAAMopB,wBAAN,GAAiC,IAAjC;AACAc;AACH;;AAED,gBAAItjB,IAAIC,GAAJ,EAAOmd,OAAP,GAAiB,CAArB,EAAyB;AACrBhkB,sBAAMmI,OAAN,CAAcye,cAAd,GAA+B,CAA/B;AACAoD,4CAA4BnnB,KAA5B,CAAkCC,OAAlC,GAA4C,MAA5C;AACA9C,sBAAMiqB,sBAAN,GAA+B,IAA/B;AACAC;AACH;;AAED,gBAAIA,YAAY,CAAhB,EAAoB;AAChB;AACH;AACJ;AACJ,KA9BD;;AAgCA;;;AAGAlqB,UAAMqe,YAAN,GAAqB,YAAY;AAC7B,YAAI1d,WAAJ;AAAA,YACIwpB,eAAersB,SAASC,sBAAT,CAAgC,oBAAhC,CADnB;AAAA,YAEIqsB,uBAFJ;AAAA,YAGIC,uBAHJ;AAIA,YAAIF,aAAansB,MAAb,GAAsB,CAA1B,EAA6B;AACzBosB,6BAAiBD,aAAa,CAAb,EAAgB/e,aAAhB,CAA8B,IAA9B,CAAjB;AACH;;AAED,YAAIgf,cAAJ,EAAoB;AAChBC,6BAAiBD,eAAelL,YAAf,CAA4B,OAA5B,CAAjB;AACH;;AAED,aAAK,IAAIrY,IAAI,CAAb,EAAgBA,IAAI7G,MAAMoQ,IAAN,CAAWpS,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxClG,iBAAK,IAAI0F,SAAJ,CAAc0d,IAAd,CAAL;;AAEA,gBAAIsG,cAAJ,EAAoB;AAChB1pB,mBAAGQ,aAAH,GAAmBqE,YAAnB,CAAgC,OAAhC,EAAyC6kB,cAAzC;AACA1pB,mBAAGQ,aAAH,GAAmB0B,KAAnB,CAAyByG,KAAzB,GAAiC,IAAjC;AACA3I,mBAAGQ,aAAH,GAAmB0B,KAAnB,CAAyB2G,MAAzB,GAAkC,IAAlC;AACH;;AAEDxJ,kBAAMoQ,IAAN,CAAWvJ,CAAX,EAAc5H,WAAd,CAA0B0B,GAAGQ,aAAH,EAA1B;AACAuiB,kBAAM7c,CAAN,EAAS0H,IAAT,CAAc,CAAd;AACH;;AAEDsV;AACA7jB,cAAMmnB,kBAAN;AACAnnB,cAAMsd,cAAN;AACAtd,cAAM4d,YAAN;AACAle,oBAAYQ,kBAAZ,CAAgCF,KAAhC;AACAimB;AACA,YAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAlCD;;AAoCA;;;;AAIAP,UAAMse,cAAN,GAAuB,YAAY;AAC/B,YAAI3d,WAAJ;AAAA,YACI2pB,kBADJ;AAAA,YAEIH,eAAersB,SAASC,sBAAT,CAAgC,oBAAhC,CAFnB;AAAA,YAGIqsB,uBAHJ;AAAA,YAIIC,uBAJJ;AAKA,YAAKF,aAAansB,MAAb,GAAsB,CAA3B,EAA+B;AAC3BosB,6BAAiBD,aAAa,CAAb,EAAgB/e,aAAhB,CAA8B,IAA9B,CAAjB;AACH;;AAED,YAAKgf,cAAL,EAAsB;AAClBC,6BAAiBD,eAAelL,YAAf,CAA4B,OAA5B,CAAjB;AACH;;AAED,aAAK,IAAIrY,IAAI,CAAb,EAAgBA,IAAI7G,MAAMoQ,IAAN,CAAWpS,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxClG,iBAAK,IAAI0F,SAAJ,CAAc0d,IAAd,CAAL;AACA,gBAAIsG,cAAJ,EAAoB;AAChB1pB,mBAAGQ,aAAH,GAAmBqE,YAAnB,CAAgC,OAAhC,EAAyC6kB,cAAzC;AACA1pB,mBAAGQ,aAAH,GAAmB0B,KAAnB,CAAyByG,KAAzB,GAAiC,IAAjC;AACA3I,mBAAGQ,aAAH,GAAmB0B,KAAnB,CAAyB2G,MAAzB,GAAkC,IAAlC;AACH;AACD8gB,wBAAYtqB,MAAMoQ,IAAN,CAAWvJ,CAAX,EAAcxI,oBAAd,CAAmC,IAAnC,EAAyC,CAAzC,CAAZ;AACA,gBAAIisB,SAAJ,EAAe;AACXtqB,sBAAMoQ,IAAN,CAAWvJ,CAAX,EAAczF,YAAd,CAA2BT,GAAGQ,aAAH,EAA3B,EAA+CmpB,SAA/C;AACH,aAFD,MAEO;AACHtqB,sBAAMoQ,IAAN,CAAWvJ,CAAX,EAAc5H,WAAd,CAA0B0B,GAAGQ,aAAH,EAA1B;AACH;AACDuiB,kBAAM7c,CAAN,EAAS0H,IAAT,CAAc,CAAd;AACH;;AAEDsV;AACA7jB,cAAMmnB,kBAAN;AACAnnB,cAAMsd,cAAN;AACAtd,cAAM4d,YAAN;AACAle,oBAAYQ,kBAAZ,CAAgCF,KAAhC;AACAimB;AACA,YAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAtCD;;AAwCA;;;;;;;AAOAP,UAAMwe,cAAN,GAAuB,UAAU+L,KAAV,EAAiB;AACpC,YAAIna,OAAOpQ,MAAMoQ,IAAjB;AAAA,YACIuV,oBADJ;AAAA,YAEID,oBAFJ;AAAA,YAGI1S,OAAOlV,SAASsN,aAAT,CAAuB,mBAAvB,CAHX;AAAA,YAIIof,YAAYxX,KAAKkM,YAAL,CAAkB,OAAlB,CAJhB;AAAA,YAKIuL,MAAMF,SAASpf,SAAT,IAAsB,OAAOof,KAAP,KAAiB,QAAvC,GAAkDA,KAAlD,GAA0DjiB,UAAU0K,IAAV,EAAgB,CAAhB,CALpE;;AASA,YAAI6Q,mBAAmB4G,GAAnB,GAAyBzX,KAAKkR,OAA9B,GAAwC,CAAxC,IAA6C,CAAjD,EAAqD;AACjDlkB,kBAAMqe,YAAN;AACH,SAFD,MAEO;AACH,gBAAIqM,mBAAmB,KAAvB;AAAA,gBACI7E,qBADJ;AAAA,gBAEIllB,WAFJ;AAAA,gBAEQgqB,YAFR;AAAA,gBAGIlF,mBAAkB,EAHtB;AAAA,gBAIImF,oBAJJ;;AAMA,iBAAK,IAAI/jB,IAAI,CAAb,EAAgBA,IAAIgd,gBAApB,EAAsChd,GAAtC,EAA2C;AACvC4e,iCAAgBlX,IAAhB,CAAqB,CAArB;AACH;;AAED,iBAAK,IAAI1H,IAAI,CAAb,EAAgBA,IAAIuJ,KAAKpS,MAAzB,EAAiC6I,GAAjC,EAAsC;AAClC8e,8BAAc,CAAd;AACAD,8BAActV,KAAKvJ,CAAL,EAAQxI,oBAAR,CAA6B,IAA7B,CAAd;AACAqsB,mCAAmB,KAAnB;AACA,qBAAK,IAAI9E,YAAY,CAArB,EACQA,YAAY/B,gBADpB,EAEQ+B,aAAaC,YAFrB,EAEkC;AAC9BA,mCAAc,CAAd;;AAEA,wBAAI6E,gBAAJ,EAAsB;AAClB/pB,6BAAK,IAAI0F,SAAJ,CAAc0d,IAAd,CAAL;AACA,4BAAIyG,SAAJ,EAAe;AACX7pB,+BAAGQ,aAAH,GAAmBqE,YAAnB,CAAgC,OAAhC,EAAyCglB,SAAzC;AACA7pB,+BAAGQ,aAAH,GAAmB0B,KAAnB,CAAyByG,KAAzB,GAAiC,IAAjC;AACA3I,+BAAGQ,aAAH,GAAmB0B,KAAnB,CAAyB2G,MAAzB,GAAkC,IAAlC;AACH;AACD,4BAAIohB,eAAexa,KAAKvJ,CAAL,EAAQ9G,QAAR,CAAiB6qB,WAAjB,CAAnB,EAAkD;AAC9CD,kCAAMC,YAAYvpB,WAAlB;AACA,gCAAIspB,GAAJ,EAAS;AACLva,qCAAKvJ,CAAL,EAAQzF,YAAR,CAAqBT,GAAGQ,aAAH,EAArB,EAAyCwpB,GAAzC;AACH,6BAFD,MAEO;AACHva,qCAAKvJ,CAAL,EAAQ5H,WAAR,CAAoB0B,GAAGQ,aAAH,EAApB;AACH;AACJ,yBAPD,MAOO;AACHiP,iCAAKvJ,CAAL,EAAQzF,YAAR,CAAqBT,GAAGQ,aAAH,EAArB,EAAyCukB,YAAY,CAAZ,CAAzC;AACH;AACD;AACH,qBAlBD,MAkBO,IAAID,iBAAgBG,SAAhB,IAA6B,CAAjC,EAAoC;AACvC;AACA,4BAAI6E,OAAO7E,SAAX,EAAsB;AAClB8E,+CAAmB,IAAnB;AACH;AACJ,qBALM,MAKA;AACHE,sCAAclF,YAAYC,aAAZ,CAAd;AACA,4BAAIiF,YAAY5G,OAAZ,GAAsB,CAA1B,EAA6B;AACzB6B,2CAAc+E,YAAY1G,OAA1B;AACA,iCAAK,IAAIpO,IAAI,CAAb,EAAgBA,IAAI8U,YAAY1G,OAAhC,EAAyCpO,GAAzC,EAA8C;AAC1C2P,iDAAgBG,YAAY9P,CAA5B,IAAiC8U,YAAY5G,OAA7C;AACA,oCAAI4B,YAAY9P,CAAZ,IAAiB2U,GAArB,EAA0B;AACtBC,uDAAmB,IAAnB;AACH;AACJ;AACJ,yBARD,MAQO,IAAIE,YAAY1G,OAAZ,GAAsB,CAA1B,EAA6B;AAChC2B,2CAAc+E,YAAY1G,OAA1B;AACA,iCAAK,IAAIpO,IAAI,CAAb,EAAgBA,IAAI8U,YAAY1G,OAAhC,EAAyCpO,GAAzC,EAA8C;AAC1C,oCAAI8P,YAAY9P,CAAZ,IAAiB2U,GAArB,EAA0B;AACtBC,uDAAmB,IAAnB;AACH;AACJ;AACJ,yBAPM,MAOA,IAAI9E,aAAa6E,GAAjB,EAAsB;AACzBC,+CAAmB,IAAnB;AACH;AACJ;AACJ;;AAED,qBAAK,IAAIG,IAAI,CAAb,EAAgBA,IAAIhH,gBAApB,EAAsCgH,GAAtC,EAA2C;AACvC,wBAAIpF,iBAAgBoF,CAAhB,IAAqB,CAAzB,EACIpF,iBAAgBoF,CAAhB;AACP;AAEJ;;AAED,iBAAK,IAAIhkB,IAAI,CAAb,EAAgBA,IAAI6c,MAAM1lB,MAA1B,EAAkC6I,GAAlC,EAAuC;AACnC6c,sBAAM7c,CAAN,EAAS0H,IAAT,CAAc,CAAd;AACH;AACDsV;AACAkC,sBAAUrC,KAAV;AACA1jB,kBAAMmnB,kBAAN;AACAnnB,kBAAM0d,cAAN;AACA1d,kBAAM4d,YAAN;AACAle,wBAAYQ,kBAAZ,CAAgCF,KAAhC;AACAimB;AACA,gBAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH;AACJ,KAlGD;;AAoGA;;;;;;;AAOAP,UAAMue,eAAN,GAAwB,YAAY;AAChC,YAAIvL,OAAOlV,SAASsN,aAAT,CAAuB,mBAAvB,CAAX;AAAA,YACQqf,MAAMniB,UAAU0K,IAAV,EAAgB,CAAhB,CADd;;AAGA,YAAIyX,QAAQ,CAAZ,EAAe;AACXzqB,kBAAMse,cAAN;AACH,SAFD,MAEO;AACHte,kBAAMwe,cAAN,CAAqBiM,MAAM,CAA3B;AACH;AACJ,KATD;;AAWA;;;;;AAKAzqB,UAAMie,cAAN,GAAuB,YAAY;AAC/B,YAAI6M,IAAI9qB,MAAM6mB,SAAN,CAAgB,CAAC,CAAjB,CAAR;AAAA,YACAlmB,WADA;AAAA,YAEAoqB,YAFA;AAAA,YAGAZ,eAAersB,SAASC,sBAAT,CAAgC,oBAAhC,CAHf;AAIA+sB,UAAErsB,SAAF,CAAYO,GAAZ,CAAiB,UAAjB;AACA,YAAImrB,aAAansB,MAAb,GAAsB,CAA1B,EAA6B;AACzBmsB,2BAAeA,aAAa,CAAb,CAAf;;AAEA,iBAAK,IAAItjB,IAAI,CAAb,EAAgBA,IAAIgd,gBAApB,EAAsChd,GAAtC,EAA2C;AACvClG,qBAAK,IAAI0F,SAAJ,CAAc0d,IAAd,CAAL;AACA,oBAAIqG,iBAAiBD,aAAa/e,aAAb,CAA2B,oBAAoBvE,CAApB,GAAwB,IAAnD,CAArB;AACA,oBAAIujB,cAAJ,EAAqB;AACjB,wBAAIC,iBAAiBD,eAAelL,YAAf,CAA6B,OAA7B,CAArB;;AAEAve,uBAAGQ,aAAH,GAAmBqE,YAAnB,CAAiC,OAAjC,EAA0C6kB,cAA1C;AACA1pB,uBAAGQ,aAAH,GAAmB0B,KAAnB,CAAyB2G,MAAzB,GAAkC,IAAlC;AACH;AACDshB,kBAAE7rB,WAAF,CAAc0B,GAAGQ,aAAH,EAAd;AACH;;AAED4pB,kBAAMnqB,MAAMoqB,IAAN,CAAWtH,MAAM,CAAN,CAAX,CAAN;AACAA,kBAAMnV,IAAN,CAAWwc,GAAX;AACAhF,sBAAUrC,KAAV;AACA1jB,kBAAMmnB,kBAAN;AACAnnB,kBAAM0d,cAAN;AACAhe,wBAAYQ,kBAAZ,CAAgCF,KAAhC;AACAimB;AACA,gBAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH;AACJ,KA/BD;;AAiCA;;;;;AAKAP,UAAMke,gBAAN,GAAyB,YAAY;AACjC,YAAI4M,IAAI9qB,MAAM6mB,SAAN,CAAgB,CAAhB,CAAR;AAAA,YACAlmB,WADA;AAAA,YAEAoqB,YAFA;AAAA,YAGAZ,eAAersB,SAASC,sBAAT,CAAgC,oBAAhC,CAHf;AAAA,YAIAqsB,uBAJA;AAAA,YAKAC,uBALA;AAMAS,UAAErsB,SAAF,CAAYO,GAAZ,CAAiB,UAAjB;AACA,YAAImrB,aAAansB,MAAb,GAAsB,CAA1B,EAA6B;AACzBmsB,2BAAeA,aAAa,CAAb,CAAf;;AAEA,iBAAK,IAAItjB,IAAI,CAAb,EAAgBA,IAAIgd,gBAApB,EAAsChd,GAAtC,EAA2C;AACvClG,qBAAK,IAAI0F,SAAJ,CAAc0d,IAAd,CAAL;AACA,oBAAIqG,kBAAiBD,aAAa/e,aAAb,CAA2B,oBAAoBvE,CAApB,GAAwB,IAAnD,CAArB;AACA,oBAAIujB,eAAJ,EAAqB;AACjB,wBAAIC,kBAAiBD,gBAAelL,YAAf,CAA6B,OAA7B,CAArB;;AAEAve,uBAAGQ,aAAH,GAAmBqE,YAAnB,CAAiC,OAAjC,EAA0C6kB,eAA1C;AACA1pB,uBAAGQ,aAAH,GAAmB0B,KAAnB,CAAyB2G,MAAzB,GAAkC,IAAlC;AACH;AACDshB,kBAAE7rB,WAAF,CAAc0B,GAAGQ,aAAH,EAAd;AACH;;AAED4pB,kBAAMnqB,MAAMoqB,IAAN,CAAWtH,MAAM,CAAN,CAAX,CAAN;AACAA,kBAAMnV,IAAN,CAAWwc,GAAX;AACAhF,sBAAUrC,KAAV;AACA1jB,kBAAMmnB,kBAAN;AACAnnB,kBAAM0d,cAAN;AACAhe,wBAAYQ,kBAAZ,CAAgCF,KAAhC;AACAimB;AACA,gBAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH;AACJ,KAjCD;;AAmCA;;;;;;AAMAP,UAAMme,YAAN,GAAqB,YAAY;AAC7B,YAAInL,OAAOlV,SAASsN,aAAT,CAAuB,mBAAvB,CAAX;AAAA,YACIof,YAAYxX,KAAKkM,YAAL,CAAkB,OAAlB,CADhB;AAAA,YAEI0E,MAAMtb,UAAU0K,IAAV,EAAgB,CAAhB,CAFV;AAAA,YAGIiY,gBAHJ;AAIA,aAAK,IAAIpkB,OAAI+c,MAAM,CAAnB,EAAsB/c,QAAK,CAA3B,EAA8BA,MAA9B,EAAoC;AAChC,gBAAIqkB,cAAclrB,MAAMoQ,IAAN,CAAWvJ,IAAX,EAAckG,QAAhC;AACA,gBAAIoe,oBAAoBD,YAAYltB,MAApC;AACA,gBAAImtB,oBAAoB,CAAxB,EAA4B;AACxB,qBAAK,IAAIrjB,MAAI,CAAb,EAAgBA,MAAIqjB,iBAApB,EAAuCrjB,KAAvC,EAA6C;AACzC,wBAAIojB,YAAYpjB,GAAZ,EAAekc,OAAf,IAA0B,CAA9B,EAAkC;AAC9BJ,8BAAM/c,IAAN;AACAokB,kCAAU,IAAV;AACA;AACH;AACJ;AACJ;AACD,gBAAKA,OAAL,EAAe;AACX;AACH;AACJ;;AAED,YAAIrH,QAAQ,CAAZ,EAAe;AACX5jB,kBAAMke,gBAAN;AACH,SAFD,MAEO;AACHle,kBAAMoe,WAAN,CAAmBwF,GAAnB,EAAwB4G,SAAxB;AACH;AACJ,KA3BD;;AA6BA;;;;;;;;;;AAUAxqB,UAAMoe,WAAN,GAAoB,UAAWwF,GAAX,EAAgB4G,SAAhB,EAA4B;AAC5C,YAAIY,oBAAJ;AAAA,YACIC,iBADJ;AAAA,YAEIN,YAFJ;;AAIA,YAAK,CAAEnH,OAAOzY,SAAP,IAAoB,OAAOyY,GAAP,KAAe,QAArC,KAAmD4G,aAAarf,SAArE,EAAiF;AAC7E,gBAAI6H,QAAOlV,SAASsN,aAAT,CAAuB,mBAAvB,CAAX;AACAof,wBAAYxX,MAAKkM,YAAL,CAAkB,OAAlB,CAAZ,EACA0E,MAAMtb,UAAU0K,KAAV,EAAgB,CAAhB,CADN,EAEAoY,cAAcpY,MAAKgR,OAFnB,EAGAqH,WAAWzH,MAAMwH,WAAN,GAAoB,CAH/B;AAIH,SAND,MAMO;AACHC,uBAAWzH,GAAX;AACH;;AAGD,YAAI0H,eAAe,CAAnB;AACA,YAAKD,WAAWrrB,MAAMoQ,IAAN,CAAWpS,MAAX,GAAmB,CAAnC,EAAuC;AACnC,iBAAK,IAAI6I,OAAI,CAAb,EAAgBA,QAAKwkB,QAArB,EAAgCxkB,MAAhC,EAAsC;AAClC,oBAAI0kB,qBAAqBvrB,MAAMoQ,IAAN,CAAWvJ,IAAX,EAAckG,QAAvC;AAAA,oBACIye,wBAAwBD,mBAAmBvtB,MAD/C;AAEA,oBAAIwtB,wBAAwB,CAA5B,EAAgC;AAC5B,yBAAK,IAAI1jB,MAAI,CAAb,EAAgBA,MAAI0jB,qBAApB,EAA2C1jB,KAA3C,EAAiD;AAC7C,4BAAI2jB,cAAcF,mBAAmBzjB,GAAnB,EAAsBkc,OAAxC;;AAEA,4BAAKyH,cAAc,CAAd,GAAmB5kB,IAAnB,GAAuBwkB,QAA5B,EAAuC;AACnCE,+CAAmBzjB,GAAnB,EAAsBkc,OAAtB;AACH;AACJ;AACJ;AACJ;;AAED,gBAAI0H,QAAQ1rB,MAAMoQ,IAAN,CAAWib,WAAW,CAAtB,CAAZ;AAAA,gBACIM,gBAAgBD,MAAM3e,QAD1B;AAAA,gBAEI6e,sBAAsBD,cAAc3tB,MAFxC;;AAIA,gBAAI4tB,sBAAsB,CAA1B,EAA8B;AAC1B,qBAAM,IAAI/kB,OAAI,CAAd,EAAiBA,OAAI+kB,mBAArB,EAA0C/kB,MAA1C,EAAgD;AAC5CykB,oCAAgBK,cAAc9kB,IAAd,EAAiBqd,OAAjC;AACH;AACJ;AACJ,SAxBD,MAwBO;AACHoH,2BAAe5H,MAAM,CAAN,EAAS1lB,MAAxB;AACH;;AAED,YAAI8sB,IAAI9qB,MAAM6mB,SAAN,CAAiBwE,WAAW,CAA5B,CAAR;AACAP,UAAErsB,SAAF,CAAYO,GAAZ,CAAiB,UAAjB;;AAEA,aAAM8I,IAAI,CAAV,EAAaA,IAAIwjB,YAAjB,EAA+BxjB,GAA/B,EAAqC;AACjC,gBAAInH,KAAK,IAAI0F,SAAJ,CAAe0d,IAAf,CAAT;AACApjB,eAAGQ,aAAH,GAAmBqE,YAAnB,CAAiC,OAAjC,EAA0CglB,SAA1C;AACA7pB,eAAGQ,aAAH,GAAmB0B,KAAnB,CAAyByG,KAAzB,GAAiC,IAAjC;AACA3I,eAAGQ,aAAH,GAAmB0B,KAAnB,CAAyB2G,MAAzB,GAAkC,IAAlC;AACAshB,cAAE7rB,WAAF,CAAe0B,GAAGQ,aAAH,EAAf;AACH;;AAED4pB,cAAMnqB,MAAMoqB,IAAN,CAAWtH,MAAM,CAAN,CAAX,CAAN;AACAA,cAAMnV,IAAN,CAAWwc,GAAX;AACAhF,kBAAUrC,KAAV;AACA1jB,cAAMmnB,kBAAN;AACAnnB,cAAM0d,cAAN;AACAhe,oBAAYQ,kBAAZ,CAAgCF,KAAhC;AACAimB;AACA,YAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAjED;;AAmEA;;;;;;;;AAQAP,UAAMilB,QAAN,GAAiB,UAAUe,CAAV,EAAa;AAC1B,YAAI6F,WAAW,CAAC,CAAhB;AAAA,YACIC,cAAc,CAAC,CADnB;AAAA,YAEIC,SAAS,CAAC,CAFd;AAAA,YAGIC,YAAY,CAAC,CAHjB;AAAA,YAIIxiB,MAJJ;AAAA,YAKIF,KALJ;AAAA,YAMI2iB,gBAAgB,CANpB;AAAA,YAOI3G,QAAQ,CAPZ;;AASA,aAAK,IAAIze,IAAI,CAAb,EAAgBA,IAAImf,EAAEhoB,MAAtB,EAA8B6I,GAA9B,EAAmC;AAC/B,iBAAK,IAAIiB,IAAI,CAAb,EAAgBA,IAAIke,EAAEnf,CAAF,EAAK7I,MAAzB,EAAiC8J,GAAjC,EAAsC;AAClC,oBAAIke,EAAEnf,CAAF,EAAKiB,CAAL,KAAW,CAAf,EAAkB;AACd,wBAAKA,IAAIgkB,WAAJ,IAAmBA,eAAe,CAAC,CAAxC,EAA4C;AACxCA,sCAAchkB,CAAd;AACH;AACD,wBAAKjB,IAAIglB,QAAJ,IAAgBA,YAAY,CAAC,CAAlC,EAAsC;AAClCA,mCAAWhlB,CAAX;AACH;AACJ;AACJ;AAEJ;;AAED,aAAK,IAAIA,IAAImf,EAAEhoB,MAAF,GAAW,CAAxB,EAA2B6I,IAAI,CAAC,CAAhC,EAAmCA,GAAnC,EAAwC;AACpC,iBAAK,IAAIiB,IAAIke,EAAEnf,CAAF,EAAK7I,MAAL,GAAc,CAA3B,EAA8B8J,IAAI,CAAC,CAAnC,EAAsCA,GAAtC,EAA2C;AACvC,oBAAIke,EAAEnf,CAAF,EAAKiB,CAAL,KAAW,CAAf,EAAkB;AACd,wBAAKA,IAAIkkB,SAAT,EAAqB;AACjBA,oCAAYlkB,CAAZ;AACH;AACD,wBAAKjB,IAAIklB,MAAT,EAAkB;AACdA,iCAASllB,CAAT;AACH;AACJ;AACJ;AACJ;;AAED,aAAK,IAAIA,IAAIglB,QAAb,EAAuBhlB,IAAIklB,MAA3B,EAAmCllB,GAAnC,EAAwC;AACpC,iBAAK,IAAIiB,IAAIgkB,WAAb,EAA0BhkB,IAAIkkB,SAA9B,EAAyClkB,GAAzC,EAA8C;AAC1C,oBAAIke,EAAEnf,CAAF,EAAKiB,CAAL,KAAW,CAAX,IAAgBke,EAAEnf,CAAF,EAAKiB,CAAL,KAAWqD,SAA/B,EAA0C;AACtC,2BAAO,KAAP;AACH;AACJ;AACJ;;AAED,aAAK,IAAItE,IAAI,CAAb,EAAgBA,IAAImf,EAAEhoB,MAAtB,EAA8B6I,GAA9B,EAAmC;AAC/B,iBAAK,IAAIiB,IAAI,CAAb,EAAgBA,IAAIke,EAAEnf,CAAF,EAAK7I,MAAzB,EAAiC8J,GAAjC,EAAsC;AAClC,oBAAIke,EAAEnf,CAAF,EAAKiB,CAAL,KAAW,CAAf,EAAkB;AACdwd;AACH;AACJ;AACJ;;AAED9b,iBAASuiB,SAASF,QAAT,GAAoB,CAA7B;AACAviB,gBAAQ0iB,YAAYF,WAAZ,GAA0B,CAAlC;AACAG,wBAAgBziB,SAASF,KAAzB;;AAEA,YAAI2iB,kBAAkB3G,KAAtB,EAA6B;AACzB,mBAAO,KAAP;AACH;AACD,eAAO,CAAC9b,MAAD,EAASF,KAAT,CAAP;AACH,KA7DD;;AA+DA;;;;;;AAMAtJ,UAAM2e,UAAN,GAAmB,YAAY;AAC3B,YAAIuN,aAAalsB,MAAMilB,QAAN,CAAevB,KAAf,CAAjB;AAAA,YACIkG,UAAUsC,WAAW,CAAX,CADd;AAAA,YAEIpE,UAAUoE,WAAW,CAAX,CAFd;AAAA,YAGIrM,QAAQ/hB,SAASsN,aAAT,CAAuB,mBAAvB,CAHZ;AAAA,YAIIxE,MAAM,GAAG0I,KAAH,CAASwR,IAAT,CAAchjB,SAASC,sBAAT,CAAgC,kBAAhC,CAAd,EAAmE,CAAnE,CAJV;AAAA,YAKIouB,iBAAiB,EALrB;;AAOA,aAAK,IAAItlB,OAAI,CAAb,EAAgBA,OAAID,IAAI5I,MAAxB,EAAgC6I,MAAhC,EAAqC;AACjC,gBAAIulB,sBAAsBxlB,IAAIC,IAAJ,EAAO9I,sBAAP,CAA8B,iBAA9B,CAA1B;AACA,gBAAIquB,oBAAoBpuB,MAApB,GAA6B,CAAjC,EAAoC;AAChC,oBAAIquB,mBAAmBD,oBAAoBpuB,MAA3C;AACA,qBAAK,IAAI8J,MAAI,CAAb,EAAgBA,MAAIukB,gBAApB,EAAsCvkB,KAAtC,EAA2C;AACvCqkB,mCAAe5d,IAAf,CAAoB6d,oBAAoBtkB,GAApB,CAApB;AACH;AACJ;AACD,gBAAI4I,IAAI9J,IAAIC,IAAJ,EAAOlI,UAAf;AACA+R,cAAE9R,WAAF,CAAcgI,IAAIC,IAAJ,CAAd;AACH;AACD,YAAIslB,eAAenuB,MAAf,GAAwB,CAA5B,EAA+B;AAC3B,iBAAK,IAAI6I,OAAI,CAAb,EAAgBA,OAAIslB,eAAenuB,MAAnC,EAA2C6I,MAA3C,EAAgD;AAC5CgZ,sBAAM5gB,WAAN,CAAkBktB,eAAetlB,IAAf,CAAlB;AACH;AACJ;;AAEDgZ,cAAMqE,OAAN,GAAgB4D,OAAhB;AACAjI,cAAMmE,OAAN,GAAgB4F,OAAhB;AACA5pB,cAAMmnB,kBAAN;AACAnnB,cAAM4mB,cAAN;AACA,YAAI0F,aAAazM,MAAMhd,KAAN,CAAYyG,KAA7B;AACA,YAAIijB,sBAAsB1M,MAAM1X,OAAN,CAAc0c,cAAxC;AACA,YAAIyH,UAAJ,EAAiB;AACbtsB,kBAAM0d,cAAN,CAAsBja,WAAY6oB,UAAZ,EAAwB,EAAxB,CAAtB;AACH,SAFD,MAEO,IAAIC,mBAAJ,EAA0B;AAC7BvsB,kBAAM0d,cAAN;AACH,SAFM,MAEA;AACH1d,kBAAM0d,cAAN,CAAsB,KAAtB,EAA6B,IAA7B;AACH;;AAED,YAAI8O,cAAc3M,MAAMhd,KAAN,CAAY2G,MAA9B;AACA,YAAIijB,uBAAuB5M,MAAM1X,OAAN,CAAc6c,eAAzC;AACA,YAAIwH,WAAJ,EAAkB;AACdxsB,kBAAM4d,YAAN,CAAoBna,WAAY+oB,WAAZ,EAAyB,EAAzB,CAApB;AACH,SAFD,MAEO,IAAIC,oBAAJ,EAA2B;AAC9BzsB,kBAAM4d,YAAN;AACH,SAFM,MAEA;AACH5d,kBAAM4d,YAAN,CAAoB,KAApB,EAA2B,IAA3B;AACH;AACDle,oBAAYQ,kBAAZ,CAAgCF,KAAhC;AACAimB;AACA,YAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KApDD;;AAsDA;;;;;;;AAOAP,UAAM4e,SAAN,GAAkB,YAAY;AAC1B,YAAI5L,OAAOlV,SAASC,sBAAT,CAAgC,kBAAhC,EAAoD,CAApD,CAAX;AAAA,YACI6rB,UAAU5W,KAAKgR,OADnB;AAAA,YAEI8D,UAAU9U,KAAKkR,OAFnB;AAAA,YAGIwI,aAAa1Z,KAAKkM,YAAL,CAAkB,OAAlB,CAHjB;AAAA,YAII0E,MAAMtb,UAAU0K,IAAV,EAAgB,CAAhB,CAJV;AAAA,YAKIlT,UAAUE,MAAMoQ,IAAN,CAAWwT,GAAX,CALd;AAAA,YAMI+I,aAAY3Z,KAAK7K,OAAL,CAAaE,MAN7B;;AAQA2K,aAAKgR,OAAL,GAAe,CAAf;AACAhR,aAAKkR,OAAL,GAAe,CAAf;;AAEA,aAAK,IAAIrd,OAAI,CAAb,EAAgBA,OAAIihB,OAApB,EAA6BjhB,MAA7B,EAAkC;AAC9B,gBAAIlG,KAAK,IAAI0F,SAAJ,CAAc0d,IAAd,CAAT;AACApjB,eAAGQ,aAAH,GAAmBqE,YAAnB,CAAgC,OAAhC,EAAyCknB,UAAzC;AACA/rB,eAAGQ,aAAH,GAAmB1C,SAAnB,CAA6BO,GAA7B,CAAkC,kBAAlC;AACA,gBAAKgU,KAAK3R,WAAV,EAAwB;AACpBvB,wBAAQsB,YAAR,CAAsBT,GAAGQ,aAAH,EAAtB,EAA0C6R,KAAK3R,WAA/C;AACH,aAFD,MAEO;AACHvB,wBAAQb,WAAR,CAAqB0B,GAAGQ,aAAH,EAArB;AACH;AAEJ;;AAED,YAAIyoB,UAAU,CAAd,EAAiB;AACb,iBAAK,IAAI/iB,OAAI,CAAb,EAAgBA,OAAI+iB,OAApB,EAA6B/iB,MAA7B,EAAkC;AAC9B,oBAAI+lB,uBAAuBzhB,SAA3B;AAAA,oBACI0hB,UAAU7sB,MAAMoQ,IAAN,CAAWwT,MAAM/c,IAAjB,CADd;AAAA,oBAEIqkB,cAAc2B,QAAQ9f,QAF1B;AAAA,oBAGIoe,oBAAoBD,YAAYltB,MAHpC;;AAKA,oBAAKmtB,oBAAoB,CAAzB,EAA6B;AACzB,yBAAM,IAAIrV,MAAI,CAAd,EAAiBA,MAAIqV,iBAArB,EAAwCrV,KAAxC,EAA8C;AAC1C,4BAAKgX,OAAQ5B,YAAYpV,GAAZ,EAAe3N,OAAf,CAAuBE,MAA/B,IAA0CykB,OAAQH,UAAR,CAA/C,EAAsE;AAClEC,mDAAuB1B,YAAYpV,GAAZ,CAAvB;AACA;AACH;AACJ;AACJ;AACD,qBAAM,IAAIhO,MAAI,CAAd,EAAiBA,MAAIggB,OAArB,EAA8BhgB,KAA9B,EAAoC;AAChC,wBAAInH,MAAK,IAAI0F,SAAJ,CAAe0d,IAAf,CAAT;AACApjB,wBAAGQ,aAAH,GAAmBqE,YAAnB,CAAiC,OAAjC,EAA0CknB,UAA1C;AACA,wBAAKE,wBAAwBzhB,SAA7B,EAAyC;AACrC0hB,gCAAQzrB,YAAR,CAAsBT,IAAGQ,aAAH,EAAtB,EAA0CyrB,oBAA1C;AACH,qBAFD,MAEO;AACHC,gCAAQ5tB,WAAR,CAAqB0B,IAAGQ,aAAH,EAArB;AACH;AACJ;AACJ;AACJ;;AAEDnB,cAAMmnB,kBAAN;AACAnnB,cAAM4mB,cAAN;AACA5mB,cAAM0d,cAAN;AACA1d,cAAM4d,YAAN;AACAle,oBAAYQ,kBAAZ,CAAgCF,KAAhC;AACAimB;AACA,YAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KA3DD;;AA6DA;;;;;;AAMAP,UAAM+sB,mBAAN,GAA4B,UAAUnJ,GAAV,EAAe;AACvC,YAAIF,QAAQ,EAAZ;AAAA,YACQsJ,UADR;AAEAC,uBAAexG,qBAAqB7C,GAArB,CAAf;AACA,YAAIqJ,iBAAiBpJ,gBAArB,EAAuC;AACnC,mBAAO,EAAP;AACH;AACDmJ,qBAAanJ,mBAAmBoJ,YAAhC;;AAEA,aAAK,IAAIpmB,IAAI+c,MAAM,CAAnB,EAAsB/c,KAAK,CAAL,IAAUmmB,UAAhC,EAA4CnmB,GAA5C,EAAiD;AAC7C,gBAAID,MAAM5G,MAAMoQ,IAAN,CAAWvJ,CAAX,EAAcxI,oBAAd,CAAmC,IAAnC,CAAV;AACA,iBAAK,IAAIwI,IAAI,CAAb,EAAgBA,IAAID,IAAI5I,MAAxB,EAAgC6I,GAAhC,EAAqC;AACjC,oBAAID,IAAIC,CAAJ,EAAOmd,OAAP,GAAiB,CAArB,EAAwB;AACpBN,0BAAMnV,IAAN,CAAW3H,IAAIC,CAAJ,CAAX;AACAmmB,kCAAcpmB,IAAIC,CAAJ,EAAOqd,OAArB;AACH;AACJ;AACJ;AACD,eAAOR,KAAP;AAEH,KApBD;;AAsBA;;;;;;AAMA1jB,UAAMktB,eAAN,GAAwB,YAAY;AAChC,YAAIC,UAAU,EAAd;AACA,aAAK,IAAItmB,IAAI,CAAb,EAAgBA,IAAI7G,MAAMoQ,IAAN,CAAWpS,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxCsmB,oBAAQ5e,IAAR,CAAa,CAAb;AACH;;AAED,aAAK,IAAI1H,IAAI,CAAb,EAAgBA,IAAI7G,MAAMoQ,IAAN,CAAWpS,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxC,gBAAID,MAAM5G,MAAMoQ,IAAN,CAAWvJ,CAAX,EAAcxI,oBAAd,CAAmC,IAAnC,CAAV;AACA,iBAAK,IAAIyJ,IAAI,CAAb,EAAgBA,IAAIlB,IAAI5I,MAAxB,EAAgC8J,GAAhC,EAAqC;AACjC,oBAAIlB,IAAIkB,CAAJ,EAAOkc,OAAP,GAAiB,CAArB,EAAwB;AACpB,yBAAK,IAAIlO,IAAI,CAAb,EAAgBA,IAAIlP,IAAIkB,CAAJ,EAAOkc,OAA3B,EAAoClO,GAApC,EAAyC;AACrCqX,gCAAQtmB,IAAIiP,CAAZ;AACH;AACJ;AACJ;AACJ;;AAED,aAAK,IAAIjP,IAAI,CAAb,EAAgBA,IAAI7G,MAAMoQ,IAAN,CAAWpS,MAA/B,EAAuC6I,GAAvC,EAA4C;AACxC,gBAAID,MAAM5G,MAAMoQ,IAAN,CAAWvJ,CAAX,EAAcxI,oBAAd,CAAmC,IAAnC,CAAV;AAAA,gBACQ+uB,eAAe,CADvB;AAEA,iBAAK,IAAItlB,IAAI,CAAb,EAAgBA,IAAIlB,IAAI5I,MAAxB,EAAgC8J,GAAhC,EAAqC;AACjCslB,gCAAgBxmB,IAAIkB,CAAJ,EAAOoc,OAAvB;AACH;AACDkJ,4BAAgBD,QAAQtmB,CAAR,CAAhB;AACAmmB,yBAAanJ,mBAAmBuJ,YAAhC;AACA,iBAAK,IAAItlB,IAAI,CAAb,EAAgBA,IAAIklB,UAApB,EAAgCllB,GAAhC,EAAqC;AACjC,oBAAInH,KAAK,IAAI0F,SAAJ,CAAc0d,IAAd,CAAT;AACA/jB,sBAAMoQ,IAAN,CAAWvJ,CAAX,EAAc5H,WAAd,CAA0B0B,GAAGQ,aAAH,EAA1B;AACA;AACH;AACJ;AACJ,KA/BD;;AAiCA;;;;;AAKAnB,UAAM0e,SAAN,GAAkB,YAAY;AAC1B,YAAI1L,OAAOlV,SAASsN,aAAT,CAAuB,mBAAvB,CAAX;AAAA,YACIshB,aAAa1Z,KAAKkM,YAAL,CAAkB,OAAlB,CADjB;AAAA,YAEI0K,UAAU5W,KAAKgR,OAFnB;AAAA,YAGIJ,MAAMtb,UAAU0K,IAAV,EAAgB,CAAhB,CAHV;AAAA,YAIIlT,gBAJJ;AAAA,YAKIirB,YALJ;;AAOA,YAAKnB,WAAWze,SAAhB,EAA4Bye,UAAU,CAAV;;AAE5B,aAAM,IAAI/iB,OAAI,CAAd,EAAiBA,OAAI+iB,OAArB,EAA8B/iB,MAA9B,EAAoC;AAChC/G,sBAAUE,MAAMoQ,IAAN,CAAWwT,GAAX,CAAV;AACA,gBAAI5S,kBAAkBlR,QAAQiN,QAA9B;AAAA,gBACIsgB,UAAUrtB,MAAMoQ,IAAN,CAAWwT,MAAM,CAAjB,CADd;AAAA,gBAEI0J,wBAFJ;AAAA,gBAGIC,8BAHJ;AAAA,gBAIIC,QAAQ,EAJZ;;AAMA,gBAAIH,WAAWliB,SAAf,EAA2B;AACvBmiB,kCAAkBD,QAAQtgB,QAA1B;AACAwgB,wCAAwBD,gBAAgBtvB,MAAxC;AACA,qBAAK,IAAI8J,MAAI,CAAb,EAAgBA,MAAIkJ,gBAAgBhT,MAApC,EAA4C8J,KAA5C,EAAiD;AAC7C,wBAAKkJ,gBAAgBlJ,GAAhB,EAAmBkc,OAAnB,GAA6B,CAAlC,EAAsC;AAClC,4BAAIrjB,KAAK,IAAI0F,SAAJ,CAAc0d,IAAd,CAAT;AACIpjB,2BAAGQ,aAAH,GAAmBqE,YAAnB,CAAgC,OAAhC,EAAyCknB,UAAzC;AACA/rB,2BAAGQ,aAAH,GAAmB+iB,OAAnB,GAA6BlT,gBAAgBlJ,GAAhB,EAAmBoc,OAAhD;AACAvjB,2BAAGQ,aAAH,GAAmB6iB,OAAnB,GAA6BhT,gBAAgBlJ,GAAhB,EAAmBkc,OAAnB,GAA6B,CAA1D;;AAEJ,4BAAIyJ,mBAAmBtiB,SAAvB;AACA,6BAAM,IAAI2K,MAAI,CAAd,EAAiBA,MAAIyX,qBAArB,EAA4CzX,KAA5C,EAAkD;AAC9C,gCAAKgX,OAAQQ,gBAAgBxX,GAAhB,EAAmB3N,OAAnB,CAA2BE,MAAnC,IAA8CykB,OAAQ9b,gBAAgBlJ,GAAhB,EAAmBK,OAAnB,CAA2BE,MAAnC,CAAnD,EAAiG;AAC7FolB,mDAAmBH,gBAAgBxX,GAAhB,CAAnB;AACA;AACH;AACJ;;AAED,4BAAK2X,gBAAL,EAAwB;AACpBD,kCAAMjf,IAAN,CAAY,CAAC5N,EAAD,EAAK8sB,gBAAL,CAAZ;AACH,yBAFD,MAEO;AACHD,kCAAMjf,IAAN,CAAY,CAAC5N,EAAD,CAAZ;AACH;AACJ;AACJ;;AAED,oBAAK6sB,MAAMxvB,MAAN,GAAe,CAApB,EAAwB;AACpB,yBAAM,IAAI8X,MAAI,CAAd,EAAiBA,MAAI0X,MAAMxvB,MAA3B,EAAmC8X,KAAnC,EAAyC;AACrC,4BAAK0X,MAAM1X,GAAN,EAAS,CAAT,KAAe3K,SAApB,EAAgC;AAC5BkiB,oCAAQjsB,YAAR,CAAsBosB,MAAM1X,GAAN,EAAS,CAAT,EAAY3U,aAAZ,EAAtB,EAAmDqsB,MAAM1X,GAAN,EAAS,CAAT,CAAnD;AACH,yBAFD,MAEO;AACHuX,oCAAQpuB,WAAR,CAAqBuuB,MAAM1X,GAAN,EAAS,CAAT,EAAY3U,aAAZ,EAArB;AACH;AACJ;AACJ;AACJ;;AAED,gBAAIwZ,YAAY3a,MAAMoQ,IAAtB;AACA,gBAAKuK,UAAU3c,MAAV,GAAmB,CAAxB,EAA4B;AACxB,qBAAM,IAAI8J,MAAI,CAAd,EAAiBA,MAAI8b,GAArB,EAA0B9b,KAA1B,EAAgC;AAC5B,wBAAI4lB,eAAe/S,UAAU7S,GAAV,EAAaiF,QAAhC;AACA,wBAAK2gB,aAAa1vB,MAAb,GAAsB,CAA3B,EAA+B;AAC3B,6BAAM,IAAIkK,IAAI,CAAd,EAAiBA,IAAIwlB,aAAa1vB,MAAlC,EAA0CkK,GAA1C,EAAgD;AAC5C,gCAAKwlB,aAAaxlB,CAAb,EAAgB8b,OAAhB,GAA0B,CAA1B,IAA+BJ,MAAM9b,GAA1C,EAA8C;AAC1C4lB,6CAAaxlB,CAAb,EAAgB8b,OAAhB;AACH;AACJ;AACJ;AACJ;AACJ;AACD+G,kBAAMnqB,MAAMoqB,IAAN,CAAWtH,MAAM,CAAN,CAAX,CAAN;AACAA,kBAAMiK,GAAN,CAAU5C,GAAV;AACAhF,sBAAUrC,KAAV;AACA1jB,kBAAM3B,oBAAN,CAA2B,OAA3B,EAAoC,CAApC,EAAuCO,WAAvC,CAAmDoB,MAAMoQ,IAAN,CAAWwT,GAAX,CAAnD;;AAEA,gBAAI5jB,MAAMoQ,IAAN,CAAWpS,MAAX,IAAqB,CAAzB,EAA6B;AACzBgC,sBAAMge,mBAAN;AACA2F,+BAAele,SAAf,GAA2B,EAA3B;AACA/F,4BAAYmS,kBAAZ;AACA/T,yBAASC,sBAAT,CAAgC,sBAAhC,EAAwD,CAAxD,EAA2D8E,KAA3D,CAAiEC,OAAjE,GAA2E,OAA3E;AACH;;AAED9C,kBAAMmnB,kBAAN;AACAznB,wBAAYQ,kBAAZ,CAAgCF,KAAhC;AACH;;AAEDimB;AACA,YAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KAvFD;;AAyFA;;;;;;AAMAP,UAAMye,YAAN,GAAqB,YAAY;AAC7B,YAAIzL,OAAOlV,SAASsN,aAAT,CAAuB,mBAAvB,CAAX;AAAA,YACIuhB,aAAa3Z,KAAK7K,OAAL,CAAaE,MAD9B;AAAA,YAEIyf,UAAU9U,KAAKkR,OAFnB;;AAIA,aAAM,IAAIrd,OAAI,CAAd,EAAiBA,OAAIihB,OAArB,EAA8BjhB,MAA9B,EAAoC;AAChC,iBAAM,IAAIiB,OAAI,CAAd,EAAiBA,OAAI9H,MAAMoQ,IAAN,CAAWpS,MAAhC,EAAwC8J,MAAxC,EAA8C;AAC1C,oBAAIojB,cAAclrB,MAAMoQ,IAAN,CAAWtI,IAAX,EAAciF,QAAhC;AACA,oBAAIoe,oBAAoBD,YAAYltB,MAApC;AACA,oBAAImtB,oBAAoB,CAAxB,EAA4B;AACxB,yBAAM,IAAIrV,MAAIqV,oBAAoB,CAAlC,EAAqCrV,OAAK,CAA1C,EAA6CA,KAA7C,EAAmD;AAC/C,4BAAKgX,OAAQ5B,YAAYpV,GAAZ,EAAe3N,OAAf,CAAuBE,MAA/B,KAA2CykB,OAAQH,UAAR,CAAhD,EAAuE;AACnE,gCAAKzB,YAAYpV,GAAZ,EAAeoO,OAAf,GAAyB,CAA9B,EAAkC;AAC9BgH,4CAAYpV,GAAZ,EAAeoO,OAAf;AACH,6BAFD,MAEO;AACHlkB,sCAAMoQ,IAAN,CAAWtI,IAAX,EAAclJ,WAAd,CAA2BssB,YAAYpV,GAAZ,CAA3B;AACH;AACD;AACH,yBAPD,MAOO,IAAIgX,OAAQ5B,YAAYpV,GAAZ,EAAe3N,OAAf,CAAuBE,MAA/B,IAA0CykB,OAAQH,UAAR,CAA1C,IACHG,OAAQ5B,YAAYpV,GAAZ,EAAe3N,OAAf,CAAuBE,MAA/B,IACAykB,OAAQ5B,YAAYpV,GAAZ,EAAeoO,OAAf,GAAwB,CAAhC,CADA,IACuCyI,UAFxC,EAEqD;AACxD,gCAAKzB,YAAYpV,GAAZ,EAAeoO,OAAf,GAAyB,CAA9B,EAAkC;AAC9BgH,4CAAYpV,GAAZ,EAAeoO,OAAf;AACH;AACD;AACH;AACJ;AACJ;AACJ;;AAED,iBAAM,IAAIpc,OAAI,CAAd,EAAiBA,OAAI9H,MAAMoQ,IAAN,CAAWpS,MAAhC,EAAwC8J,MAAxC,EAA8C;AAC1C,oBAAI4b,MAAM5b,IAAN,KAAYqD,SAAhB,EACIuY,MAAM5b,IAAN,EAAS6lB,GAAT;AACP;;AAED9J;;AAEA,gBAAI7jB,MAAM2M,gBAAN,CAAwB,IAAxB,EAA+B3O,MAA/B,IAAyC,CAA7C,EAAiD;AAC7CgC,sBAAMge,mBAAN;AACA2F,+BAAele,SAAf,GAA2B,EAA3B;AACA/F,4BAAYmS,kBAAZ;AACA/T,yBAASC,sBAAT,CAAgC,sBAAhC,EAAwD,CAAxD,EAA2D8E,KAA3D,CAAiEC,OAAjE,GAA2E,OAA3E;AACH;;AAED9C,kBAAMmnB,kBAAN;AACAnnB,kBAAMsd,cAAN;AACA5d,wBAAYQ,kBAAZ,CAAgCF,KAAhC;AACH;;AAEDimB;AACA,YAAI5lB,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,kCAA0BE,aAA1B;AACH,KApDD;;AAsDAzC,aAASC,sBAAT,CAAgC,sBAAhC,EAAwD,CAAxD,EAA2D8E,KAA3D,CAAiEC,OAAjE,GAA2E,MAA3E;;AAEA4gB,YAAQwC,gBAAR;;AAEAD;AACAF,cAAUrC,KAAV;;AAEAC,mBAAe1kB,WAAf,CAA2Be,KAA3B;AACA;AACIA,UAAMmnB,kBAAN,CAA0B,IAA1B;AACJ;AACAnnB,UAAM4mB,cAAN;AACA5mB,UAAMsd,cAAN;;AAEAqG,mBAAeiK,QAAf,GAA0B,YAAW;AACjC5tB,cAAMsd,cAAN;AACH,KAFD;;AAIA3X;;AAEA;AACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACC,CA7rDD;ACAA,IAAIrF,6BAA6B,SAA7BA,0BAA6B,GAAW;AACxC,SAAKC,aAAL,GAAqB,YAAM;AACvB;AACA,YAAIqc,mBAAmB9e,SAASC,sBAAT,CAAiC,oBAAjC,CAAvB;AACA,YAAI6e,iBAAiB5e,MAAjB,GAA0B,CAA9B,EAAkC;AAC9B4e,+BAAmBA,iBAAiB,CAAjB,CAAnB;;AAEA;AACA;AACA,gBAAI,CAAEjU,OAAOklB,oBAAb,EAAoC;AAChCllB,uBAAOklB,oBAAP,GAA8B,EAA9B;AACH;;AAED;AACA;AACA,gBAAIllB,OAAOklB,oBAAP,CAA4B7vB,MAA5B,GAAqC2K,OAAO8Y,wBAAP,GAAkC,CAA3E,EAA+E;AAC3E9Y,uBAAOklB,oBAAP,GAA8BllB,OAAOklB,oBAAP,CAA4Bve,KAA5B,CAAmC,CAAnC,EAAsC3G,OAAO8Y,wBAAP,GAAkC,CAAxE,CAA9B;AACH;;AAED;AACA,gBAAIqM,sBAAsBlR,iBAAiBrb,SAAjB,CAA4B,IAA5B,CAA1B;AACA,gBAAIwsB,kBAAkBD,oBAAoB/vB,sBAApB,CAA4C,kBAA5C,CAAtB;AACA,iBAAK,IAAI8I,IAAI,CAAb,EAAgBA,IAAIknB,gBAAgB/vB,MAApC,EAA4C6I,GAA5C,EAAkD;AAC9CknB,gCAAgBlnB,CAAhB,EAAmBpI,SAAnB,CAA6BC,MAA7B,CAAqC,kBAArC;AACH;AACD,gBAAIsvB,sBAAsBF,oBAAoB/vB,sBAApB,CAA4C,sBAA5C,CAA1B;AACA,iBAAK,IAAI8I,KAAI,CAAb,EAAgBA,KAAImnB,oBAAoBhwB,MAAxC,EAAgD6I,IAAhD,EAAsD;AAClDmnB,oCAAoBnnB,EAApB,EAAuBpI,SAAvB,CAAiCC,MAAjC,CAAyC,sBAAzC;AACH;;AAED,gBAAIuvB,0BAA0B,EAA9B;AACA,gBAAIxE,OAAO3rB,SAAS2rB,IAApB;AACA,gBAAIA,IAAJ,EAAW;AACP,oBAAIhB,qBAAqBgB,KAAKre,aAAL,CAAoB,uCAApB,CAAzB;AACA,oBAAIqd,kBAAJ,EAAyB;AACrBwF,8CAA0BxF,mBAAmBhjB,SAA7C;AACH;AACJ;;AAED,gBAAIyoB,mBAAmBpwB,SAASC,sBAAT,CAAiC,oBAAjC,CAAvB;AACA,gBAAImwB,iBAAiBlwB,MAAjB,GAA0B,CAA9B,EAAkC;AAC9BkwB,mCAAmBA,iBAAiBzoB,SAApC;AACH,aAFD,MAEO;AACHyoB,mCAAmB,EAAnB;AACH;;AAED,gBAAIrY,kBAAkBiY,oBAAoBnhB,gBAApB,CAAsC,mBAAtC,CAAtB;AACA,gBAAIkJ,gBAAgB7X,MAAhB,GAAyB,CAA7B,EAAiC;AAC7B,qBAAM,IAAI8X,IAAI,CAAd,EAAiBA,IAAID,gBAAgB7X,MAArC,EAA6C8X,GAA7C,EAAmD;AAC/CD,oCAAgBC,CAAhB,EAAmBrX,SAAnB,CAA6BC,MAA7B,CAAqC,kBAArC;AACH;AACJ;;AAED,gBAAIqX,eAAe+X,oBAAoBnhB,gBAApB,CAAsC,kBAAtC,CAAnB;AACA,gBAAKoJ,aAAa/X,MAAb,GAAsB,CAA3B,EAA+B;AAC3B,qBAAM,IAAI8X,KAAI,CAAd,EAAiBA,KAAIC,aAAa/X,MAAlC,EAA0C8X,IAA1C,EAAgD;AAC5CC,iCAAaD,EAAb,EAAgBE,eAAhB,CAAiC,gBAAjC;AACH;AACJ;;AAED,gBAAII,SAAS0X,oBAAoBnhB,gBAApB,CAAsC,YAAtC,CAAb;AACA,gBAAKyJ,OAAOpY,MAAP,GAAgB,CAArB,EAAyB;AACrB,qBAAM,IAAI8X,MAAI,CAAd,EAAiBA,MAAIM,OAAOpY,MAA5B,EAAoC8X,KAApC,EAA0C;AACtCM,2BAAON,GAAP,EAAUE,eAAV,CAA2B,IAA3B;AACH;AACJ;;AAEDrN,mBAAOklB,oBAAP,CAA4Btf,IAA5B,CAAkC,CAACuf,mBAAD,EAAsBG,uBAAtB,EAA+CC,gBAA/C,CAAlC;;AAEA;AACAvlB,mBAAO8Y,wBAAP,GAAkC9Y,OAAOklB,oBAAP,CAA4B7vB,MAA5B,GAAqC,CAAvE;;AAEA;AACA,gBAAI2K,OAAOklB,oBAAP,CAA4B7vB,MAA5B,GAAqC,CAAzC,EAA6C;AACzC,oBAAIgjB,WAAWljB,SAASC,sBAAT,CAAiC,WAAjC,CAAf;AACA,oBAAIijB,SAAShjB,MAAT,GAAkB,CAAtB,EAA0B;AACtBgjB,+BAAWA,SAAS,CAAT,CAAX;;AAEAA,6BAASviB,SAAT,CAAmBC,MAAnB,CAA2B,wBAA3B;AACH;AACJ;;AAED;AACA,gBAAI0iB,WAAWtjB,SAASC,sBAAT,CAAiC,WAAjC,CAAf;AACA,gBAAIqjB,SAASpjB,MAAT,GAAkB,CAAtB,EAA0B;AACtBojB,2BAAWA,SAAS,CAAT,CAAX;;AAEAA,yBAAS3iB,SAAT,CAAmBO,GAAnB,CAAwB,wBAAxB;AACH;;AAED,gBAAIikB,cAAcnlB,SAASC,sBAAT,CAAiC,eAAjC,CAAlB;AACA,gBAAIklB,YAAYjlB,MAAZ,GAAqB,CAAzB,EAA6B;AACzBilB,8BAAcA,YAAY,CAAZ,CAAd;AACA,oBAAM,CAAEA,YAAY9a,OAAZ,CAAoBqZ,wBAAtB,IAAkD7Y,OAAO8Y,wBAAP,IAAmC,CAAvF,IACI9Y,OAAO8Y,wBAAP,IAAmCwB,YAAY9a,OAAZ,CAAoBqZ,wBAD/D,EAC0F;AACtFyB,gCAAYxkB,SAAZ,CAAsBO,GAAtB,CAA2B,oBAA3B;AACH,iBAHD,MAGO;AACHikB,gCAAYxkB,SAAZ,CAAsBC,MAAtB,CAA8B,oBAA9B;AACH;AACJ;AACJ;AACJ,KApGD;;AAsGA,SAAKuiB,aAAL,GAAqB,UAAEkN,gBAAF,EAAwB;AACzC,YAAIA,oBAAoBxlB,OAAOklB,oBAA3B,IAAmDllB,OAAOklB,oBAAP,CAA4B7vB,MAA5B,GAAqC,CAA5F,EAAgG;;AAE5F;AACA,gBAAImwB,oBAAoB,MAAxB,EAAiC;AAC7B,oBAAIxlB,OAAO8Y,wBAAP,GAAkC,CAAtC,EAA0C;AACtC9Y,2BAAO8Y,wBAAP;AACH,iBAFD,MAEO;AACH,2BAAO,KAAP;AACH;AACJ,aAND,MAMO,IAAI0M,oBAAoB,MAAxB,EAAiC;AACpC,oBAAIxlB,OAAO8Y,wBAAP,GAAkC9Y,OAAOklB,oBAAP,CAA4B7vB,MAA5B,GAAqC,CAA3E,EAA+E;AAC3E2K,2BAAO8Y,wBAAP;AACH,iBAFD,MAEO;AACH,2BAAO,KAAP;AACH;AACJ;;AAED;AACA,gBAAIT,WAAWljB,SAASC,sBAAT,CAAiC,WAAjC,CAAf;AACA,gBAAIijB,SAAShjB,MAAT,GAAkB,CAAtB,EAA0B;AACtBgjB,2BAAWA,SAAS,CAAT,CAAX;AACH;AACD,gBAAIrY,OAAO8Y,wBAAP,IAAmC,CAAvC,EAA2C;AACvC,oBAAIT,QAAJ,EAAe;AACXA,6BAASviB,SAAT,CAAmBO,GAAnB,CAAwB,wBAAxB;AACH;AACJ,aAJD,MAIO,IAAI2J,OAAO8Y,wBAAP,GAAkC,CAAtC,EAA0C;AAC7C,oBAAIT,QAAJ,EAAe;AACXA,6BAASviB,SAAT,CAAmBC,MAAnB,CAA2B,wBAA3B;AACH;AACJ;;AAED;AACA,gBAAI0iB,WAAWtjB,SAASC,sBAAT,CAAiC,WAAjC,CAAf;AACA,gBAAIqjB,SAASpjB,MAAT,GAAkB,CAAtB,EAA0B;AACtBojB,2BAAWA,SAAS,CAAT,CAAX;AACH;AACD,gBAAIzY,OAAO8Y,wBAAP,IAAmC9Y,OAAOklB,oBAAP,CAA4B7vB,MAA5B,GAAqC,CAA5E,EAAgF;AAC5E,oBAAIojB,QAAJ,EAAe;AACXA,6BAAS3iB,SAAT,CAAmBO,GAAnB,CAAwB,wBAAxB;AACH;AACJ,aAJD,MAIO,IAAI2J,OAAO8Y,wBAAP,GAAkC9Y,OAAOklB,oBAAP,CAA4B7vB,MAA5B,GAAqC,CAA3E,EAA+E;AAClF,oBAAIojB,QAAJ,EAAe;AACXA,6BAAS3iB,SAAT,CAAmBC,MAAnB,CAA2B,wBAA3B;AACH;AACJ;;AAED,gBAAIukB,cAAcnlB,SAASC,sBAAT,CAAiC,eAAjC,CAAlB;AACA,gBAAIklB,YAAYjlB,MAAZ,GAAqB,CAAzB,EAA6B;AACzBilB,8BAAcA,YAAY,CAAZ,CAAd;AACA,oBAAM,CAAEA,YAAY9a,OAAZ,CAAoBqZ,wBAAtB,IAAkD7Y,OAAO8Y,wBAAP,IAAmC,CAAvF,IACI9Y,OAAO8Y,wBAAP,IAAmCwB,YAAY9a,OAAZ,CAAoBqZ,wBAD/D,EAC0F;AACtFyB,gCAAYxkB,SAAZ,CAAsBO,GAAtB,CAA2B,oBAA3B;AACH,iBAHD,MAGO;AACHikB,gCAAYxkB,SAAZ,CAAsBC,MAAtB,CAA8B,oBAA9B;AACH;AACJ;;AAED;AACA,gBAAIilB,iBAAiB7lB,SAASC,sBAAT,CAAiC,kBAAjC,CAArB;AACA,gBAAI4lB,eAAe3lB,MAAf,GAAwB,CAA5B,EAAgC;AAC5B2lB,iCAAiBA,eAAe,CAAf,CAAjB;;AAEAA,+BAAele,SAAf,GAA2B,EAA3B;AACAke,+BAAele,SAAf,GAA2BkD,OAAOklB,oBAAP,CAA4BllB,OAAO8Y,wBAAnC,EAA6D,CAA7D,EAAgEO,SAA3F;;AAEA,oBAAIrZ,OAAOklB,oBAAP,CAA4BllB,OAAO8Y,wBAAnC,EAA6D,CAA7D,CAAJ,EAAsE;AAClE,wBAAIgH,qBAAqB3qB,SAASiB,aAAT,CAAwB,OAAxB,CAAzB;AACA0pB,uCAAmBjjB,YAAnB,CAAiC,yBAAjC,EAA4D,IAA5D;AACAijB,uCAAmBhjB,SAAnB,GAA+BkD,OAAOklB,oBAAP,CAA4BllB,OAAO8Y,wBAAnC,EAA6D,CAA7D,CAA/B;AACA,wBAAIgI,OAAO3rB,SAAS2rB,IAApB;AACA,wBAAIA,IAAJ,EAAW;AACP,4BAAIC,wBAAwBD,KAAKre,aAAL,CAAoB,uCAApB,CAA5B;AACA,4BAAIse,qBAAJ,EAA4B;AACxBD,iCAAK7qB,WAAL,CAAkB8qB,qBAAlB;AACH;AACDD,6BAAKxqB,WAAL,CAAkBwpB,kBAAlB;AACH;AACJ;;AAGD,oBAAI/O,mBAAmB5b,SAASC,sBAAT,CAAiC,oBAAjC,CAAvB;AACA,oBAAIK,OAAON,SAASO,oBAAT,CAA+B,MAA/B,CAAX;AACA,oBAAID,KAAKJ,MAAL,GAAc,CAAlB,EAAsB;AAClBI,2BAAOA,KAAK,CAAL,CAAP;AACH;AACD,oBAAIuK,OAAOklB,oBAAP,CAA4BllB,OAAO8Y,wBAAnC,EAA6D,CAA7D,CAAJ,EAAsE;AAClE/H,qCAAiBjU,SAAjB,GAA6BkD,OAAOklB,oBAAP,CAA4BllB,OAAO8Y,wBAAnC,EAA6D,CAA7D,CAA7B;;AAEA,wBAAI/H,iBAAiB1b,MAAjB,GAA0B,CAA9B,EAAkC;AAC9B0b,2CAAmBA,iBAAiB,CAAjB,CAAnB;AACH,qBAFD,MAEO;AACHA,2CAAmB5b,SAASiB,aAAT,CAAwB,KAAxB,CAAnB;AACA2a,yCAAiBjb,SAAjB,CAA2BO,GAA3B,CAAgC,oBAAhC;AACAZ,6BAAKa,WAAL,CAAkBya,gBAAlB;AACH;AACJ,iBAVD,MAUO;AACH,wBAAIA,iBAAiB1b,MAAjB,GAA0B,CAA9B,EAAkC;AAC9B0b,2CAAmBA,iBAAiB,CAAjB,CAAnB;AACAtb,6BAAKQ,WAAL,CAAkB8a,gBAAlB;AACH;AACJ;;AAEDha,4BAAYmS,kBAAZ;AACAnS,4BAAYsS,wBAAZ;AACArM;;AAEA,oBAAIyoB,iCAAiCtwB,SAASqH,cAAT,CAAyB,sCAAzB,CAArC;AACA,oBAAIipB,8BAAJ,EAAqC;AACjCA,mDAA+B3vB,SAA/B,CAAyCC,MAAzC,CAAiD,SAAjD;AACH;AACJ;AACJ;AACJ,KAlHD;AAmHH,CA1ND;ACAA,IAAIgD,uBAAuB,SAAvBA,oBAAuB,CAAY8I,OAAZ,EAAsB;;AAE7CA,YAAQL,WAAR,GAAsB,UAAUP,CAAV,EAAa;AAC/B,YAAIwW,GAAJ;AACA,YAAKxW,EAAEnH,YAAF,CAAe+I,KAAf,CAAqBE,OAArB,CAA8B,aAA9B,KAAiD,CAAC,CAAlD,IAAuD9B,EAAEnH,YAAF,CAAe+I,KAAf,CAAqBE,OAArB,CAA8B,kBAA9B,KAAsD,CAAC,CAAnH,EAAuH;AACnH;AACH;AACDhC,wBAAgB,IAAhB,EAAsBE,CAAtB;;AAEAY,gBAAQ/L,SAAR,CAAkBO,GAAlB,CAAuB,kBAAvB;AACH,KARD;AASAwL,YAAQJ,UAAR,GAAqB,UAAUR,CAAV,EAAa;AAC9BA,UAAES,cAAF;AACAX,wBAAgB,IAAhB,EAAsBE,CAAtB;AACH,KAHD;AAIAY,YAAQF,WAAR,GAAsB,YAAY,CAEjC,CAFD;AAGAE,YAAQD,MAAR,GAAiB,UAASX,CAAT,EAAY;AACzB,aAAKnL,SAAL,CAAeC,MAAf,CAAuB,kBAAvB;AACA,YAAI8L,gBAAJ;AAAA,YAAa6jB,gBAAb;AACAzkB,UAAES,cAAF;AACAT,UAAE0kB,eAAF;;AAEA,YAAI,CAAC1kB,EAAEnH,YAAF,CAAegI,OAAf,CAAuB,aAAvB,CAAD,IAA0C,CAACb,EAAEnH,YAAF,CAAegI,OAAf,CAAuB,MAAvB,CAA/C,EAA+E;AAC3E;AACH;AACD,YAAIZ,uBAAJ;AAAA,YACIC,6BADJ;AAEA,YAAKhM,SAASC,sBAAT,CAAiC,kBAAjC,EAAsDC,MAAtD,GAA+D,CAApE,EAAwE;AACpE6L,6BAAiB/L,SAASC,sBAAT,CAAiC,kBAAjC,EAAsD,CAAtD,CAAjB;AACH;AACD,YAAID,SAASC,sBAAT,CAAiC,yBAAjC,EAA6DC,MAA7D,GAAsE,CAA1E,EAA8E;AAC1E8L,mCAAuBhM,SAASC,sBAAT,CAAiC,yBAAjC,EAA6D,CAA7D,CAAvB;AACH;;AAED,YAAK6L,EAAEnH,YAAF,CAAegI,OAAf,CAAwB,aAAxB,CAAL,EAA+C;AAC3CD,sBAAU9K,YAAYgL,eAAZ,CAA6Bd,EAAEnH,YAAF,CAAegI,OAAf,CAAwB,aAAxB,CAA7B,CAAV;AACAD,sBAAUA,QAAQrJ,aAAR,EAAV;AACH,SAHD,MAGO;AACHktB,sBAAUzkB,EAAEnH,YAAF,CAAegI,OAAf,CAAwB,MAAxB,CAAV;AACAD,sBAAU1M,SAASC,sBAAT,CAAiCswB,OAAjC,EAA2C,CAA3C,CAAV;AACA;AACH;;AAED,YAAIxkB,eAAehH,KAAf,CAAqBC,OAArB,IAAgC,OAApC,EAA8C;AAC1C,gBAAInC,WAAJ;AACA,gBAAIkJ,eAAe1B,OAAf,CAAuByC,IAAvB,IAA+B,WAAnC,EAAiD;AAC7CjK,qBAAKkJ,eAAegB,mBAAf,EAAL;AACAlK,mBAAG1B,WAAH,CAAgBuL,OAAhB;AACH,aAHD,MAGO;AACH,oBAAIQ,eAAenB,eAAegB,mBAAf,EAAnB;AACAlK,qBAAKqK,aAAarM,UAAlB;;AAEA,oBAAIkL,eAAe1B,OAAf,CAAuByC,IAAvB,IAA+B,eAAnC,EAAqD;AACjDjK,uBAAGS,YAAH,CAAiBoJ,OAAjB,EAA0BQ,YAA1B;AACH,iBAFD,MAEO,IAAInB,eAAe1B,OAAf,CAAuByC,IAAvB,IAA+B,eAAnC,EAAqD;AACxD,wBAAIK,mBAAmBD,aAAa3J,WAApC;AACAV,uBAAGS,YAAH,CAAiBoJ,OAAjB,EAA0BS,gBAA1B;AACH;AACJ;AACD,gBAAInL,UAAUa,GAAGhC,UAAjB;AACA,gBAAImB,QAAQrB,SAAR,CAAkBsB,QAAlB,CAA4B,iBAA5B,CAAJ,EAAsD;AAClD,oBAAIC,QAAQN,YAAYO,YAAZ,CAA0BH,OAA1B,EAAmC,oBAAnC,CAAZ;AACAJ,4BAAYQ,kBAAZ,CAAgCF,KAAhC;AACH;;AAED;AACA,gBAAIS,SAAS+J,QAAQhL,SAAR,CAAkBC,KAAlB,CAAwB,0BAAxB,CAAb;AACA,gBAAIyL,WAAWzK,OAAO,CAAP,CAAf;AACA,gBAAKmJ,EAAEnH,YAAF,CAAegI,OAAf,CAAwB,aAAxB,MAA6CS,YAAY,MAAZ,IAAsBA,YAAY,QAAlC,IAA8CA,YAAY,OAA1D,IAAqEA,YAAY,aAAjF,IAAkGA,YAAY,MAA3J,CAAL,EAA2K;AACvK;AACH;AACJ,SA5BD,MA4BO;AACH;AACH;;AAEDrB,uBAAehH,KAAf,CAAqBC,OAArB,GAA+B,MAA/B;AACAgH,6BAAqBjH,KAArB,CAA2BC,OAA3B,GAAqC,MAArC;;AAEApB,6BAAsB8I,OAAtB;;AAEA,YAAI,CAAEA,QAAQ/L,SAAR,CAAkBsB,QAAlB,CAA4B,sBAA5B,CAAF,IAA0DyK,QAAQ/L,SAAR,CAAkBsB,QAAlB,CAA4B,kBAA5B,CAA9D,EAAiH;AAC7GyK,oBAAQ/L,SAAR,CAAkBC,MAAlB,CAA0B,kBAA1B;AACA,gBAAI2B,4BAA4B,IAAIC,0BAAJ,EAAhC;AACAD,sCAA0BE,aAA1B;AACH;AACD,eAAO,IAAP;AACH,KAtED;AAuEAiK,YAAQ+jB,WAAR,GAAsB,UAAS3kB,CAAT,EAAY;AAC9BY,gBAAQ/L,SAAR,CAAkBC,MAAlB,CAA0B,kBAA1B;AACH,KAFD;AAGH,CA5FD;;;;;ACAA,IAAI8C,2BAA2B,SAA3BA,wBAA2B,CAAWgJ,OAAX,EAAoB2B,aAApB,EAAkD;AAAA,QAAf3L,IAAe,uEAAR,KAAQ;;AAC7E,QAAIwD,OAAOwG,QAAQrJ,aAAR,EAAX;AAAA,QACI8F,KADJ;AAAA,QAEIzG,IAFJ;AAGA,QAAIwD,KAAKvF,SAAL,CAAesB,QAAf,CAAyB,iBAAzB,CAAJ,EAAmD;AAC/C,YAAKoM,iBAAiBhB,SAAjB,IAA8B3K,QAAQ,IAA3C,EAAkD;AAC9CyG,oBAAQnJ,SAASgI,OAAT,CAAiBoG,SAAjB,CAA4B1B,QAAQ3K,IAApC,CAAR;AACA,gBAAI2uB,eAAe1wB,SAASC,sBAAT,CAAiC,iBAAjC,CAAnB;AACA,gBAAI0wB,oBAAoB,EAAxB;AACA,iBAAK,IAAI5nB,IAAI,CAAb,EAAgBA,IAAI2nB,aAAaxwB,MAAjC,EAAyC6I,GAAzC,EAA+C;AAC3C,oBAAI+L,QAAQ,IAAIlF,MAAJ,CAAY,kBAAkBlD,QAAQ3K,IAA1B,GAAiC,SAA7C,EAAwD,GAAxD,CAAZ;AACA,oBAAIY,SAAS+tB,aAAa3nB,CAAb,EAAgBrH,SAAhB,CAA0BC,KAA1B,CAAiCmT,KAAjC,CAAb;AACA,oBAAInS,MAAJ,EAAa;AACTguB,sCAAkBlgB,IAAlB,CAAwB9N,OAAO,CAAP,CAAxB;AACH;AACJ;AACD,gBAAIguB,kBAAkBzwB,MAAlB,GAA2B,CAA/B,EAAmC;AAC/B,oBAAI0wB,kBAAkBpI,KAAKC,GAAL,aAAakI,iBAAb,CAAtB;AACAxnB,wBAAQynB,kBAAkB,CAA1B;AACH,aAHD,MAGO;AACHznB,wBAAQ,CAAR;AACH;;AAED,gBAAIzG,IAAJ,EAAW;AACP;AACA,oBAAImuB,kDAAyB3qB,KAAK4qB,UAA9B,EAAJ;AACA,qBAAK,IAAI/nB,KAAI,CAAb,EAAgBA,KAAI8nB,mBAAmB3wB,MAAvC,EAA+C6I,IAA/C,EAAqD;AACjD,wBAAI8nB,mBAAmB9nB,EAAnB,KAAyB,QAAO8nB,mBAAmB9nB,EAAnB,CAAP,MAAiC,QAA1D,IAAsE8nB,mBAAmB9nB,EAAnB,EAAsBiE,QAAhG,EAA2G;AACvG,4BAAI2C,cAAc,IAAIC,MAAJ,CAAY,kBAAkBlD,QAAQ3K,IAA1B,GAAiC,cAA7C,EAA6D,GAA7D,CAAlB;AACA,4BAAIgvB,OAAOF,mBAAmB9nB,EAAnB,EAAsBiE,QAAtB,CAA+BrL,KAA/B,CAAsCgO,WAAtC,CAAX;AACA,4BAAIohB,QAAQjuB,MAAMC,OAAN,CAAeguB,IAAf,CAAZ,EAAoC;AAChC,gCAAIC,uBAAuBH,mBAAmB9nB,EAAnB,EAAsBiE,QAAtB,CAA+BwB,OAA/B,CAAwC9B,QAAQ3K,IAAR,GAAe,GAAf,GAAqBgvB,KAAK,CAAL,CAA7D,EAAsErkB,QAAQ3K,IAAR,GAAe,GAAf,GAAqBoH,KAA3F,CAA3B;AACA,gCAAI8nB,wBAAwBJ,mBAAmB9nB,EAAnB,EAAsBmoB,SAAlD;AACAhrB,iCAAKgS,eAAL,CAAsB2Y,mBAAmB9nB,EAAnB,EAAsBiE,QAA5C;AACA9G,iCAAKwB,YAAL,CAAmBspB,oBAAnB,EAAyCC,qBAAzC;AACH;AACJ;AACJ;AACJ;AACJ,SAlCD,MAkCO,IAAK5iB,iBAAiB,CAAE3L,IAAxB,EAA+B;AAClC,gBAAIyuB,mBAAmB9iB,cAAcvE,KAAd,CAAoB,GAApB,CAAvB;AACAX,oBAAQgoB,iBAAiBA,iBAAiBjxB,MAAjB,GAA0B,CAA3C,CAAR;AACA;AAEH;;AAED,YAAIkxB,6BAA6BlrB,KAAKxE,SAAL,CAAeC,KAAf,CAAqB,0BAArB,CAAjC;AACA,YAAKyvB,0BAAL,EAAkC;AAC9BlrB,iBAAKvF,SAAL,CAAeC,MAAf,CAAuBwwB,2BAA2B,CAA3B,CAAvB;AACH;AACD,YAAK,CAAElrB,KAAKvF,SAAL,CAAesB,QAAf,CAAyB,iBAAzB,CAAP,EAAsD;AAClDiE,iBAAKvF,SAAL,CAAeO,GAAf,CAAoB,iBAApB;AACA,gBAAI,CAAEgF,KAAKvF,SAAL,CAAesB,QAAf,CAAyB,kBAAkByK,QAAQ3K,IAA1B,GAAiC,GAAjC,GAAuCoH,KAAhE,CAAN,EAAgF;AAC5EjD,qBAAKvF,SAAL,CAAeO,GAAf,CAAoB,kBAAkBwL,QAAQ3K,IAA1B,GAAiC,GAAjC,GAAuCoH,KAA3D;AACH;AACJ,SALD,MAKO;AACH,gBAAI,CAAEjD,KAAKvF,SAAL,CAAesB,QAAf,CAAyB,kBAAkByK,QAAQ3K,IAA1B,GAAiC,GAAjC,GAAuCoH,KAAhE,CAAN,EAAgF;AAC5EjD,qBAAKvF,SAAL,CAAeO,GAAf,CAAoB,kBAAkBwL,QAAQ3K,IAA1B,GAAiC,GAAjC,GAAuCoH,KAA3D;AACH;AACJ;AACD,YAAI4F,mBAAJ,CAAyBrC,OAAzB,EAAkCvD,KAAlC,EAAyCkF,aAAzC;AACAzM,oBAAY0V,kBAAZ,CAAgC5K,QAAQrJ,aAAR,EAAhC;AACArD,iBAASgI,OAAT,CAAiBkG,SAAjB,CAA2BxB,QAAQ3K,IAAnC;AACH;;AAEDmE,SAAKmrB,YAAL,GAAoB,UAAW/vB,KAAX,EAAmB;AACnC,YAAIA,MAAME,MAAN,CAAab,SAAb,CAAuBsB,QAAvB,CAAiC,kBAAjC,CAAJ,EAA4D;AACxD;AACH;;AAED,YAAII,mBAAmB,IAAIvC,iBAAJ,EAAvB;;AAEAuC,yBAAiBlC,cAAjB,CAAiC,CAAjC,EAAoC+F,IAApC;;AAEA7D,yBAAiBwB,aAAjB,CAAgCqC,IAAhC;;AAEAA,aAAKvF,SAAL,CAAeC,MAAf,CAAuB,kBAAvB;AACH,KAZD;;AAcAsF,SAAKE,YAAL,GAAoB,UAAW9E,KAAX,EAAmB;AACnC,YAAIe,mBAAmB,IAAIvC,iBAAJ,EAAvB;;AAEAuC,yBAAiB4D,cAAjB,CAAiC3E,KAAjC,EAAwC4E,IAAxC;AACH,KAJD;AAKH,CApFD","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 \n if( act && act.className.match( /wptb-element-(.+)-(\\d+)/i ) ) {\n WPTB_Helper.elementControlsStateDelete( act );\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 if( thisRow.classList.contains( 'wptb-table-head' ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n\n let wptbActionsField = new WPTB_ActionsField();\n wptbActionsField.actionsRemove();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n btnCopy.onclick = ( event ) => {\n let copy,\n infArr,\n type;\n let activeElement = event.target.parentNode.activeElem;\n let td = 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.elementStartScript( copy.getDOMElement() );\n \n td.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 td.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 if( thisRow.classList.contains( 'wptb-table-head' ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n } else {\n this.style.display = 'none';\n console.log(this);\n }\n\n this.actionsHide();\n };\n\n btnMove.ondragend = ( event ) => {\n WPTB_Helper.elementDragEndClear();\n }\n }\n\n actions.style.display = 'block';\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 = 'block';\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 = 'block';\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 if( ans[2] ) {\n let elementsSettingTemplateJs = document.createElement( 'script' );\n elementsSettingTemplateJs.setAttribute( 'type', 'text/html' );\n elementsSettingTemplateJs.setAttribute( 'class', 'wptb-element-datas' );\n\n elementsSettingTemplateJs.innerHTML = ans[2];\n\n body.appendChild( elementsSettingTemplateJs );\n }\n \n WPTB_Table();\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 document.counter = new ElementCounters();\n document.select = new MultipleSelect();\n\n var initializer = WPTB_Initializer();\n settings = WPTB_Settings();\n };\n\n document.addEventListener('DOMContentLoaded', WPTB_Builder);\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 WPTB_innerElementSet( DOMElement );\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 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 = parseFloat( this.offsetWidth, 10 ) - \n parseFloat( tdPaddingLeft, 10 ) - \n parseFloat( tdPaddingRight, 10 ) -\n parseFloat( tdBorderLeftWidth, 10 ) -\n parseFloat( tdBorderRightWidth, 10 );\n \n let height = parseFloat( this.offsetHeight, 10 ) - \n parseFloat( tdPaddingTop, 10 ) - \n parseFloat( tdPaddingBottom, 10 ) -\n parseFloat( tdBorderTopWidth, 10 ) -\n parseFloat( tdBorderBottomWidth, 10 );\n \n return {\n width: width, \n height: height\n };\n }\n\n return this;\n};","var WPTB_DropHandle = function (thisElem, e) {\n \n let wptbDropHandle,\n wptbDropBorderMarker;\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 let 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\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 }\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 } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n }\n }\n \n let thisRow = td.parentNode\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n WPTB_Helper.dataTitleColumnSet( table );\n }\n \n // 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 \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 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 if( thisRow.classList.contains( 'wptb-table-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 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', 'wptb-item-javascript-indic' );\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(), elemIdClass;\n\n node.onclick = function () {\n var 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 \n var infArr = this.className.match( /wptb-element-((.+-)\\d+)/i );\n // get controls config for this item\n let wptbContrlStacksConfigId = 'wptb-' + element.kind + '-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 // create a container for inserting controls of this item\n let wptbElementOptionsContainer = document.createElement( 'div' );\n wptbElementOptionsContainer.classList.add( 'wptb-element-options', 'wptb-options-' + infArr[1] );\n\n // clear elements from options group\n //document.getElementById( 'element-options-group' ).innerHTML = '';\n let elementOptionsGroup = document.getElementById( 'element-options-group' );\n let elementOptionsGroupChildren = elementOptionsGroup.children;\n for( let i = 0; i < elementOptionsGroupChildren.length; i++ ) {\n let regularText = new RegExp( 'wptb-options-' + element.kind + '-(\\\\d+)', \"i\" );\n let elem = elementOptionsGroupChildren[i].className.match( regularText );\n if( elem ) {\n elementOptionsGroup.removeChild( elementOptionsGroupChildren[i] );\n }\n }\n\n // hide wptb-elements-container and wptb-settings-section\n document.getElementsByClassName('wptb-elements-container')[0].style.display = 'none';\n document.getElementsByClassName('wptb-settings-section')[0].style.display = 'none';\n\n // show element-options-group \n document.getElementById(\"element-options-group\").style.display = 'block';\n\n // insert created container into element-option-group tag\n document.getElementById( 'element-options-group' ).appendChild( wptbElementOptionsContainer );\n\n // show created container\n wptbElementOptionsContainer.style.display = 'block';\n\n // array for save all scrips for each controls\n let controlScriptsArr = [];\n\n // array for keep \"appear depend on\" parametrs\n let controlAppearDependOn = [];\n\n // create controls\n let i = 0;\n Object.keys( jsonControlsConfig ).forEach( function( key ) {\n let data = jsonControlsConfig[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 = infArr[0];\n data.elementControlTargetUnicClass = 'wptb-el-' + infArr[1] + '-' + data.controlKey;\n let controlTemplate = tmplControlTemplate( data );\n\n if( 'appearDependOn' in data ) {\n if( Array.isArray( data.appearDependOn ) ) {\n controlAppearDependOn.push( [data.appearDependOn, data.elementControlTargetUnicClass] );\n }\n }\n\n //console.log( controlTemplate );\n\n let wptbElementOptionContainer = document.createElement( 'div' );\n wptbElementOptionContainer.classList.add( 'wptb-element-option', 'wptb-settings-items' );\n\n if( data.customClassForContainer ) {\n wptbElementOptionContainer.classList.add( data.customClassForContainer );\n }\n\n if( data.containerAdditionalStyles ) {\n wptbElementOptionContainer.setAttribute( 'style', data.containerAdditionalStyles );\n }\n\n wptbElementOptionContainer.innerHTML = controlTemplate;\n\n wptbElementOptionsContainer.appendChild( wptbElementOptionContainer );\n\n let helperJavascriptElem = wptbElementOptionContainer.getElementsByTagName( 'wptb-template-script' );\n if( helperJavascriptElem.length > 0 ) {\n helperJavascriptElem = helperJavascriptElem[0];\n let helperJavascriptCode = helperJavascriptElem.innerText;\n wptbElementOptionContainer.removeChild( helperJavascriptElem );\n let script = document.createElement( 'script' );\n script.setAttribute( 'type', 'text/javascript' );\n script.innerHTML = helperJavascriptCode.replace(/\\r|\\n|\\t/g, '').trim();\n controlScriptsArr.push( script );\n }\n\n i++;\n });\n\n // run the scripts of controls\n if( controlScriptsArr.length > 0 ) {\n for( let i = 0; i < controlScriptsArr.length; i++ ) {\n wptbElementOptionsContainer.appendChild( controlScriptsArr[i] );\n }\n }\n\n // run appearDependOn function\n for ( let i = 0; i < controlAppearDependOn.length; i++ ) {\n WPTB_Helper.appearDependOn( controlAppearDependOn[i][0], controlAppearDependOn[i][1] );\n }\n\n WPTB_Helper.wptbDocumentEventGenerate( 'controlPanel:added:leftPanel' );\n };\n};","var WPTB_Helper = {\n hexToRgb: function( hex ) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec( hex );\n return result ? 'rgb(' + parseInt( result[1], 16 ) + ',' + parseInt( result[2], 16 ) + ',' + parseInt( result[3], 16 ) + ')' : null;\n },\n rgbToHex: function ( rgb ) {\n var rgb = rgb.match( /^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i );\n\n return ( rgb && rgb.length === 4 ) ? \"#\" +\n ( \"0\" + parseInt( rgb[1],10 ).toString( 16 )).slice( -2 ) +\n ( \"0\" + parseInt( rgb[2],10 ).toString( 16 )).slice( -2 ) +\n ( \"0\" + parseInt( rgb[3],10 ).toString( 16 )).slice( -2 ) : '';\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 ) {\n if ( link ) {\n 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 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 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 = '';\n thisRowChildren[j].dataset.wptbTitleColumnFontSize = '';\n thisRowChildren[j].dataset.wptbTitleColumnColor = '';\n thisRowChildren[j].dataset.wptbTitleBackgroundColor = '';\n thisRowChildren[j].dataset.wptbTitleAlign = '';\n }\n }\n }\n },\n findAncestor: function(el, cls) {\n while ((el = el.parentElement) && !el.classList.contains(cls));\n return el;\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 settingsPanelClear: function() {\n document.getElementById( 'wptb-adaptive-table-checkbox' ).checked = false;\n document.getElementById( 'wptb-top-row-as-header' ).checked = false;\n document.getElementById( 'wptb-table-border-slider' ).value = 0;\n document.getElementById( 'wptb-table-border-number' ).value = 0;\n document.getElementById( 'wptb-inner-border-check' ).checked = false;\n document.getElementById( 'wptb-apply-inner-border' ).classList.remove( 'visible' );\n document.getElementById( 'wptb-table-inner-border-slider' ).value = 1;\n document.getElementById( 'wptb-table-inner-border-number' ).value = 1;\n \n WPTB_Helper.wpColorPickerClear( 'wptb-table-border-color', true );\n \n WPTB_Helper.wpColorPickerClear( 'wptb-table-header-bg', true );\n \n WPTB_Helper.wpColorPickerClear( 'wptb-even-row-bg', true );\n \n WPTB_Helper.wpColorPickerClear( 'wptb-odd-row-bg', true );\n \n document.getElementById( 'wptb-table-cell-slider' ).value = 15;\n document.getElementById( 'wptb-table-cell-number' ).value = 15;\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 ) {\n //let script = element.getElementsByTagName( 'script' );\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n if( infArr && Array.isArray( infArr ) ) {\n let kind = infArr[1];\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 },\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 console.log( containerStylesArrOne );\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 ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\n element.addEventListener( 'click', function() {\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 = JSON.parse( elementsSettings );\n if( elementsSettings && typeof elementsSettings === 'object' ) {\n if( 'tmpl-wptb-element-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings ) {\n let elementSettings = elementsSettings['tmpl-wptb-element-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+)-(.+)', \"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 for( let i = 0; i < controlClassesNames.length; i++ ) {\n element.addEventListener( 'wptb-control:' + controlClassesNames[i][0], function() {\n let controls = {};\n let controlName = controlClassesNames[i][1];\n let control = document.getElementsByClassName( controlClassesNames[i][0] );\n if( control.length > 0 && controlName ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n controls[controlName] = targetControlValue;\n }\n\n functionHandler( controls, element );\n }, false );\n\n element.сontrolsConnectIndic = true;\n }\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 appearDependOn: function( dependOn, targetControlElementClass ) {\n if( Array.isArray( dependOn ) ) {\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\n let dependOnControlElement = document.getElementsByClassName( dependOnControlElementClass );\n\n if( dependOnControlElement.length > 0 ) {\n dependOnControlElement = dependOnControlElement[0];\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 function showHideDependOnControlElement( dependOnControlElementKind ) {\n \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 = JSON.parse( elementsSettings );\n if( elementsSettings && typeof elementsSettings === 'object' && \n ( 'tmpl-wptb-element-datas-' + dependOnControlElementKind ) in elementsSettings ) {\n let elementSettings = elementsSettings['tmpl-wptb-element-datas-' + dependOnControlElementKind];\n if( elementSettings && typeof elementSettings === 'object' && \n ( 'data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName ) in elementSettings ) {\n let elementSettingValue = elementSettings['data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName];\n \n if( elementSettingValue ) {\n if( dependOn[1] && Array.isArray( dependOn[1] ) && \n ( dependOn[1].indexOf( elementSettingValue ) !== -1 ) ) {\n controlContainerElem.style.display = 'block';\n } else if( dependOn[2] && Array.isArray( dependOn[2] ) && \n ( dependOn[2].indexOf( elementSettingValue ) !== -1 ) ) {\n controlContainerElem.style.display = 'none';\n }\n }\n }\n }\n }\n }\n }\n\n showHideDependOnControlElement( infArr[1] );\n\n dependOnControlElement.addEventListener( 'change', function() {\n showHideDependOnControlElement( infArr[1] );\n }, false );\n }\n }\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 = document.querySelector( '.wptb-element-' + infArr[1] );\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-element-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 = 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-element-datas-' + infArr[1] ) in elementsSettings ) || \n typeof elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ! ( ( ( 'tmpl-wptb-element-datas-' + infArr[1] ) in elementsSettings ) && \n typeof elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] === 'object' && \n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] ) ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n if( ! ( ( 'tmpl-wptb-element-datas-' + infArr[1] ) in elementsSettings ) || \n typeof elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ( ( 'tmpl-wptb-element-datas-' + infArr[1] ) in elementsSettings ) && \n typeof elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] === 'object' && \n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-element-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-element-datas-' + infArr[1]]['data-' + targetControlClass][targetControls[i].name];\n } else {\n targetControlValue = elementsSettings['tmpl-wptb-element-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-element-datas-' + infArr[1]]['data-' + targetControlClass];\n }\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 {\n targetControlValue = targetControls[i].value;\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 = JSON.parse( elementsSettings );\n \n if( elementsSettings && typeof elementsSettings === 'object' ) {\n let elementSettingsProt = elementsSettings['tmpl-wptb-element-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-element-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 ) {\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 = JSON.parse( elementsSettings );\n if( elementsSettings && typeof elementsSettings === 'object' &&\n ( ( 'tmpl-wptb-element-datas-' + infArr[1] + '-' + infArr[2] ) in elementsSettings ) ) {\n delete elementsSettings['tmpl-wptb-element-datas-' + infArr[1] + '-' + infArr[2]];\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","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 WPTB_Table(columns, rows);\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n};\n","var WPTB_LeftPanel = function () {\n\n var table = document.getElementsByClassName('wptb-preview-table')[0],\n wptbElementButtons = document.getElementsByClassName('wptb-element');\n \n function wptbTdBgColorSavedSet( inputId, trNumber ) {\n if ( trNumber > 3 ) return;\n if( table ) {\n let tableRows = table.getElementsByTagName('tr');\n if ( tableRows.length > trNumber ) {\n let trBackgroundColor = tableRows[trNumber].style.backgroundColor;\n var wptbEvenRowBg = document.getElementById(inputId);\n if ( wptbEvenRowBg && trBackgroundColor ) {\n wptbEvenRowBg.value = WPTB_Helper.rgbToHex( trBackgroundColor );\n }\n }\n }\n \n }\n \n wptbTdBgColorSavedSet( 'wptb-even-row-bg', 1 );\n jQuery('#wptb-even-row-bg').wpColorPicker({\n change: function ( event, ui ) {\n var tableRows = table.getElementsByTagName('tr');\n for ( let i = 1; i < tableRows.length; i += 2 ) {\n tableRows[i].style.backgroundColor = ui.color.toString();\n }\n WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving( event );\n },\n clear: function(){\n var tableRows = table.getElementsByTagName('tr');\n for ( let i = 1; i < tableRows.length; i += 2 ) {\n tableRows[i].style.backgroundColor = '';\n let tds = tableRows[i].getElementsByTagName('td');\n for ( let j = 0; j < tds.length; j++ ) {\n tds[j].style.backgroundColor = '';\n }\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n },\n\n });\n \n wptbTdBgColorSavedSet( 'wptb-odd-row-bg', 2 );\n jQuery('#wptb-odd-row-bg').wpColorPicker({\n change: function ( event, ui ) {\n var tableRows = table.getElementsByTagName('tr');\n for ( let i = 2; i < tableRows.length; i += 2 ) {\n tableRows[i].style.backgroundColor = ui.color.toString();\n }\n \n WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving( event );\n },\n clear: function(){\n var tableRows = table.getElementsByTagName('tr');\n for ( let i = 2; i < tableRows.length; i += 2 ) {\n tableRows[i].style.backgroundColor = '';\n let tds = tableRows[i].getElementsByTagName( 'td' );\n for ( var j = 0; j < tds.length; j++ ) {\n tds[j].style.backgroundColor = '';\n }\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n },\n });\n \n wptbTdBgColorSavedSet( 'wptb-table-header-bg', 0 );\n jQuery('#wptb-table-header-bg').wpColorPicker({\n change: function (event, ui) {\n var tableHeader = table.getElementsByTagName('tr')[0];\n tableHeader.style.backgroundColor = ui.color.toString();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n },\n clear: function(){\n var tableHeader = table.getElementsByTagName('tr')[0];\n tableHeader.style.backgroundColor = '';\n let tds = tableHeader.getElementsByTagName('td');\n for (var j = 0; j < tds.length; j++) {\n tds[j].style.backgroundColor = '';\n }\n \n WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving( event );\n },\n });\n \n function tableAdaptiveForMobile( table ) {\n let wptbAdaptiveTableCheckbox = document.getElementById( 'wptb-adaptive-table-checkbox' );\n if( table && table.dataset.wptbAdaptiveTable && table.dataset.wptbAdaptiveTable == \"1\" ) {\n wptbAdaptiveTableCheckbox.checked = true;\n } else {\n wptbAdaptiveTableCheckbox.checked = false;\n }\n }\n tableAdaptiveForMobile( table );\n \n function tableTopRowAsHeadSavedSet( table ) {\n let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );\n \n if( table && table.classList.contains( 'wptb-table-preview-head' ) ) {\n wptbTopRowAsHeader.checked = true;\n } else {\n wptbTopRowAsHeader.checked = false;\n }\n }\n tableTopRowAsHeadSavedSet( table );\n \n function tableBorderColorWidthSavedSet() {\n let table = document.getElementsByClassName('wptb-preview-table');\n if ( table.length > 0 ) {\n let tableBorderColor = table[0].style.borderColor;\n if ( tableBorderColor ) {\n let tableBorderColorInput = document.getElementById( 'wptb-table-border-color' );\n if ( tableBorderColorInput ) {\n tableBorderColorInput.value = WPTB_Helper.rgbToHex( tableBorderColor );\n }\n }\n \n let tableBorderWidth = table[0].style.borderWidth;\n if ( tableBorderWidth ) {\n let wptbTableBorderWidthSlider = document.getElementById('wptb-table-border-slider'),\n wptbTableBorderWidthNumber = document.getElementById('wptb-table-border-number');\n \n if ( wptbTableBorderWidthSlider ) {\n wptbTableBorderWidthSlider.value = parseInt( tableBorderWidth );\n }\n if ( wptbTableBorderWidthNumber ) {\n wptbTableBorderWidthNumber.value = parseInt( tableBorderWidth );\n }\n }\n \n \n let tableTd = table[0].querySelector( 'td' );\n let applyInnerBorder = tableTd.style.borderWidth;\n if ( applyInnerBorder ) {\n let innerBorderCheckInput = document.getElementById( 'wptb-inner-border-check' );\n let wptbApplyInnerBorder = document.getElementById( 'wptb-apply-inner-border' );\n if ( applyInnerBorder && parseInt( applyInnerBorder ) > 0 ) {\n if ( innerBorderCheckInput ) {\n innerBorderCheckInput.checked = true;\n \n if ( wptbApplyInnerBorder ) {\n wptbApplyInnerBorder.classList.add( 'visible' );\n let wptbTableInnerBorderSlider = document.getElementById( 'wptb-table-inner-border-slider' );\n let wptbTableInnerBorderNumber = document.getElementById( 'wptb-table-inner-border-number' );\n wptbTableInnerBorderSlider.value = parseInt( applyInnerBorder );\n wptbTableInnerBorderNumber.value = parseInt( applyInnerBorder );\n }\n }\n } else {\n innerBorderCheckInput.checked = false;\n }\n }\n \n if ( ( tableBorderWidth && parseInt( tableBorderWidth ) > 0 ) || ( applyInnerBorder && parseInt( applyInnerBorder ) > 0 ) ) {\n document.getElementById( 'wptb-table-border-color-set-area' ).style.display = '';\n }\n }\n }\n \n tableBorderColorWidthSavedSet();\n\n jQuery('#wptb-table-border-color').wpColorPicker({\n change: function (event, ui) {\n var tableCells = table.getElementsByTagName('td');\n table.style.border = document.querySelector('#wptb-table-border-number').value + 'px solid ' + ui.color.toString();\n\n for (var i = 0; i < tableCells.length; i++) {\n let tableInnerborderNumber = document.querySelector('#wptb-table-inner-border-number').value;\n if ( document.getElementById('wptb-inner-border-check').checked ) {\n tableCells[i].style.border = ( tableInnerborderNumber != 0 ? tableInnerborderNumber : 1 ) + 'px solid ' + ui.color.toString();\n }\n }\n WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving( event );\n },\n clear: function() {\n var tableCells = table.getElementsByTagName('td');\n table.style.borderColor = '';\n\n for (var i = 0; i < tableCells.length; i++) {\n tableCells[i].style.borderColor = '';\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n });\n\n function addInnerBorderSize(value) {\n var tableCells = table.getElementsByTagName('td');\n for (var i = 0; i < tableCells.length; i++) {\n tableCells[i].style.borderWidth = document.querySelector('#wptb-table-inner-border-number').value + 'px';\n tableCells[i].style.borderStyle = 'solid';\n }\n }\n\n function addCellPadding(value) {\n var tableCells = table.getElementsByTagName('td');\n for (var i = 0; i < tableCells.length; i++) {\n tableCells[i].style.padding = value + 'px';\n }\n }\n\n function addInnerBorder( checked ) {\n var styles, color = document.querySelector('#wptb-table-border-color').value != undefined ?\n document.querySelector('#wptb-table-border-color').value : 'rgb(0,0,0)';\n if ( document.querySelector( '#wptb-table-inner-border-slider' ).value == 0 || document.querySelector( '#wptb-table-inner-border-number' ).value == 0 ) {\n document.querySelector( '#wptb-table-inner-border-slider' ).value = 1;\n document.querySelector( '#wptb-table-inner-border-number' ).value = 1;\n }\n let width = document.querySelector( '#wptb-table-inner-border-slider' ).value + 'px';\n let wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');\n if( wptbPreviewTable.length > 0 ) {\n if (checked == 'checked') {\n document.getElementById('wptb-apply-inner-border').style.marginBottom = '0px';\n var tableCells = wptbPreviewTable[0].getElementsByTagName( 'td' );\n for (var i = 0; i < tableCells.length; i++) {\n tableCells[i].style.border = width + ' solid ' + color;\n }\n document.getElementById( 'wptb-apply-inner-border' ).classList.add( 'visible' );\n } else {\n document.getElementById( 'wptb-apply-inner-border' ).classList.remove( 'visible' );\n var tableCells = wptbPreviewTable[0].getElementsByTagName( 'td' );\n for (var i = 0; i < tableCells.length; i++) {\n tableCells[i].style.border = '0px solid ' + color;\n tableCells[i].style.border = null;\n }\n }\n }\n \n }\n\n function addBorderSize( value ) {\n table.style.borderWidth = value + 'px';\n table.style.borderStyle = 'solid';\n }\n \n function cellPaddingSavedSet() {\n let table = document.getElementsByClassName('wptb-preview-table');\n \n if ( table.length > 0 ) {\n let td = table[0].querySelector( 'td' );\n \n if ( td ) {\n let padding = td.style.padding;\n \n if ( padding ) {\n let wptbTableCellSlider = document.getElementById('wptb-table-cell-slider'),\n wptbTableCellNumber = document.getElementById('wptb-table-cell-number');\n \n if ( wptbTableCellSlider ) {\n wptbTableCellSlider.value = parseInt( padding );\n }\n if ( wptbTableCellNumber ) {\n wptbTableCellNumber.value = parseInt( padding );\n }\n }\n }\n }\n }\n \n cellPaddingSavedSet();\n \n let wptbTableBorderNumber = document.getElementById( 'wptb-table-border-number' );\n WPTB_Helper.numberImputSize( wptbTableBorderNumber, 1, 50 );\n \n let wptbTableInnerBorderNumber = document.getElementById( 'wptb-table-inner-border-number' );\n WPTB_Helper.numberImputSize( wptbTableInnerBorderNumber, 1, 50 );\n \n let wptbTableCellNumber = document.getElementById( 'wptb-table-cell-number' );\n WPTB_Helper.numberImputSize( wptbTableCellNumber, 1, 50 );\n \n// let wptbTextfontSizeNumber = document.getElementById( 'wptb-size-number' );\n// WPTB_Helper.numberImputSize( wptbTextfontSizeNumber, 1, 50 );\n// \n// let wptbImageWidthNumber = document.getElementById( 'wptb-size-number' );\n// WPTB_Helper.numberImputSize( wptbImageWidthNumber, 2, 100 );\n \n let wptbTableColumnWidthNumber = document.getElementById( 'wptb-table-column-width-number' );\n WPTB_Helper.numberImputSize( wptbTableColumnWidthNumber, 2, 500 );\n \n let wptbTableRowHeightNumber = document.getElementById( 'wptb-table-row-height-number' );\n WPTB_Helper.numberImputSize( wptbTableRowHeightNumber, 2, 200 );\n \n \n \n document.getElementById('wptb-table-cell-slider').oninput = function () {\n document.getElementById('wptb-table-cell-number').value = this.value;\n addCellPadding(this.value);\n table.tdDefaultWidth();\n };\n \n document.getElementById('wptb-table-cell-slider').onchange = function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n document.getElementById('wptb-table-cell-number').onchange = function () {\n document.getElementById('wptb-table-cell-slider').value = this.value;\n addCellPadding(this.value);\n table.tdDefaultWidth();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementById('wptb-table-border-slider').oninput = function () {\n document.getElementById('wptb-table-border-number').value = this.value;\n addBorderSize(this.value);\n table.tdDefaultWidth();\n \n let wptbInnerBorderCheck = document.getElementById('wptb-inner-border-check').checked,\n tableBorderColorSetArea = document.getElementById( 'wptb-table-border-color-set-area' );\n if ( this.value == 0 && wptbInnerBorderCheck == false ) {\n tableBorderColorSetArea.style.display = 'none';\n } else {\n tableBorderColorSetArea.style.display = '';\n }\n };\n \n document.getElementById('wptb-table-border-slider').onchange = function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n document.getElementById('wptb-table-border-number').onchange = function () {\n document.getElementById('wptb-table-border-slider').value = this.value;\n addBorderSize(this.value);\n table.tdDefaultWidth();\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementById('wptb-table-inner-border-slider').oninput = function () {\n document.getElementById('wptb-table-inner-border-number').value = this.value;\n addInnerBorderSize(this.value);\n table.tdDefaultWidth();\n };\n \n document.getElementById('wptb-table-inner-border-slider').onchange = function () {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n document.getElementById('wptb-table-inner-border-number').onchange = function () {\n document.getElementById('wptb-table-inner-border-slider').value = this.value;\n addInnerBorderSize(this.value);\n table.tdDefaultWidth();\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementById('wptb-inner-border-check').onchange = function () {\n if( table ) {\n let val = this.checked ? 'checked' : 'unchecked';\n addInnerBorder( val );\n let borderWidth = document.getElementById('wptb-table-border-slider').value,\n tableBorderColorSetArea = document.getElementById( 'wptb-table-border-color-set-area' );\n if( val == 'unchecked' && borderWidth == 0 ) {\n tableBorderColorSetArea.style.display = 'none';\n } else {\n tableBorderColorSetArea.style.display = '';\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n \n document.getElementById( 'wptb-table-column-width-slider' ).oninput = function () {\n document.getElementById( 'wptb-table-column-width-number' ).value = this.value;\n table.addColumnWidth( this.value );\n };\n \n document.getElementById( 'wptb-table-column-width-slider' ).onchange = function () {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n document.getElementById( 'wptb-table-column-width-number' ).onchange = function () {\n document.getElementById( 'wptb-table-column-width-slider' ).value = this.value;\n table.addColumnWidth( this.value );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n document.getElementById( 'wptb-table-column-width-auto-fixed' ).onchange = function () {\n if( this.checked ) {\n let highlighted = table.querySelector( '.wptb-highlighted' );\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\n table.addColumnWidth( width );\n } else {\n table.addColumnWidth( false, true );\n let highlighted = table.querySelector( '.wptb-highlighted' );\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\n document.getElementById( 'wptb-table-column-width-number' ).value = width;\n document.getElementById( 'wptb-table-column-width-slider' ).value = width;\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementById( 'wptb-table-row-height-slider' ).oninput = function () {\n document.getElementById( 'wptb-table-row-height-number' ).value = this.value;\n table.addRowHeight( this.value );\n };\n \n document.getElementById( 'wptb-table-row-height-slider' ).onchange = function () {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementById( 'wptb-table-row-height-number' ).onchange = function () {\n document.getElementById( 'wptb-table-row-height-slider' ).value = this.value;\n table.addRowHeight( this.value );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n document.getElementById( 'wptb-table-row-height-auto-fixed' ).onchange = function () {\n if( this.checked ) {\n let highlighted = table.querySelector( '.wptb-highlighted' );\n let height = WPTB_Helper.getRowHeight( table, highlighted );\n table.addRowHeight( height );\n } else {\n table.addRowHeight( false, true );\n let highlighted = table.querySelector( '.wptb-highlighted' );\n let height = WPTB_Helper.getRowHeight( table, highlighted );\n document.getElementById( 'wptb-table-row-height-number' ).value = height;\n document.getElementById( 'wptb-table-row-height-slider' ).value = height;\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n document.getElementById( 'wptb-adaptive-table-checkbox' ).onchange = function() {\n if( this.checked ) {\n table.dataset.wptbAdaptiveTable = 1;\n } else {\n table.dataset.wptbAdaptiveTable = 0;\n }\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n function createMobileHeadForTable( table, thisEvent ) {\n \n if( thisEvent.checked ) {\n WPTB_Helper.dataTitleColumnSet( table );\n \n table.classList.add( 'wptb-table-preview-head' );\n table.rows[0].classList.add( 'wptb-table-head' );\n } else {\n let rows = table.rows;\n table.classList.remove( 'wptb-table-preview-head' );\n rows[0].classList.remove( 'wptb-table-head' );\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 thisRowChildren[j].removeAttribute( 'data-wptb-title-column' );\n thisRowChildren[j].removeAttribute( 'data-wptb-title-column-font-size' );\n thisRowChildren[j].removeAttribute( 'data-wptb-title-column-color' );\n thisRowChildren[j].removeAttribute( 'data-wptb-title-background-color' );\n thisRowChildren[j].removeAttribute( 'data-wptb-title-align' );\n }\n }\n }\n }\n \n document.getElementById( 'wptb-top-row-as-header' ).onchange = function () {\n createMobileHeadForTable( table, this );\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n for (var i = 0; i < wptbElementButtons.length; i++) {\n wptbElementButtons[i].ondragstart = function (e) {\n e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);\n e.dataTransfer.setData( 'wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement );\n }\n }\n \n if( table ) {\n document.getElementById('wptb-activate-cell-management-mode').onclick = table.toggleTableEditMode;\n document.getElementById( 'wptb-table-edit-mode-close' ).onclick = table.toggleTableEditMode;\n document.getElementById( 'wptb-left-scroll-panel-curtain-close' ).onclick = table.toggleTableEditMode;\n document.getElementById('wptb-add-end-row').onclick = table.addRowToTheEnd;\n document.getElementById('wptb-add-start-row').onclick = table.addRowToTheStart;\n document.getElementById('wptb-add-row-before').onclick = table.addRowBefore;\n document.getElementById('wptb-add-row-after').onclick = table.addRowAfter;\n document.getElementById('wptb-add-end-column').onclick = table.addColumnEnd;\n document.getElementById('wptb-add-start-column').onclick = table.addColumnStart;\n document.getElementById('wptb-add-column-before').onclick = table.addColumnBefore;\n document.getElementById('wptb-add-column-after').onclick = table.addColumnAfter;\n document.getElementById('wptb-delete-column').onclick = table.deleteColumn;\n document.getElementById('wptb-delete-row').onclick = table.deleteRow;\n document.getElementById('wptb-merge-cells').onclick = table.mergeCells;\n document.getElementById('wptb-split-cell').onclick = table.splitCell;\n }\n \n document.querySelector( '.wptb-left-panel-extend' ).onclick = function() {\n let wptbContainer = document.querySelector( '.wptb-container' );\n if( wptbContainer ) {\n if ( wptbContainer.classList.contains( 'collapsed' ) ) {\n wptbContainer.classList.remove( 'collapsed' );\n } else {\n wptbContainer.classList.add( 'collapsed' );\n }\n }\n };\n \n // this code hides the \"element parameters\" area \n // when clicked outside this element and its \"tinymce\" toolbar \n let wptbBuilderPanel = document.getElementsByClassName( 'wptb-builder-panel' )[0];\n wptbBuilderPanel.onclick = function( e ) {\n if( ! e.target.classList.contains( 'wptb-ph-element' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-ph-element' ) && \n ! e.target.classList.contains( 'wptb-fixed-toolbar' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-fixed-toolbar' ) ) {\n clickOnFreeSpace();\n } \n };\n \n let wptbHeader = document.getElementsByClassName( 'wptb-header' );\n if( wptbHeader.length > 0 ) wptbHeader = wptbHeader[0];\n wptbHeader.onclick = function() {\n clickOnFreeSpace();\n }\n \n function clickOnFreeSpace() {\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 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 }\n document.querySelector('.wptb-panel-left').addEventListener('click', function (event) {\n if (event.target.classList.contains('wptb-exit-options')) {\n clickOnFreeSpace();\n }\n });\n \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}","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 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 WPTB_Table();\n }\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 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 ( e ) {\n if( this.classList.contains( 'wptb-button-disable' ) ) {\n e.preventDefault();\n }\n }\n\n document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function ( event ) {\n if( ( ! event.target.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \n window.wptbTableStateNumberShow == event.target.dataset.wptbTableStateNumberSave ) {\n return;\n }\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 table.toggleTableEditMode();\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 code = document.getElementsByClassName( 'wptb-preview-table' );\n if( code.length > 0 ) {\n code = WPTB_Stringifier( code[0] );\n code = code.outerHTML;\n } else { \n code = '';\n }\n \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 }\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 security_code: wptb_admin_object.security_code\n };\n if (( rs = WPTB_Helper.detectMode() ) || ( rs = document.wptbId )) {\n params.id = rs;\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 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 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 } 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 }\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","var WPTB_Stringifier = function ( codeMain ) {\n if ( codeMain ) {\n let code = codeMain.cloneNode( true );\n code.classList.add( 'wptb-table-preview-static-indic' );\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 if ( codeMain.querySelector( 'wptb-table-preview-head' ) ) {\n tds[i].removeAttribute( 'data-x-index' );\n }\n tds[i].removeAttribute( 'data-y-index' );\n tds[i].removeAttribute( 'draggable' );\n tds[i].classList.remove( 'wptb-droppable' );\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 }\n \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) {\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 var rs = this.rowSpan,\n cs = this.colSpan,\n markedCells,\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(this),\n row = position[0],\n column = position[1];\n if ( ! document.select.isActivated() ) {\n return;\n }\n if (this.className.match(/wptb-highlighted/)) {\n this.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 this.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 markedCells = document.getElementsByClassName('wptb-highlighted').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 let cellHighlighted = document.querySelector( '.wptb-highlighted' );\n if( cellHighlighted ) {\n let wptbTableColumnWidthSlider = document.getElementById( 'wptb-table-column-width-slider' );\n let wptbTableColumnWidthNumber = document.getElementById( 'wptb-table-column-width-number' );\n let tableColumnWidthAutoFixedCheckbox = document.getElementById( 'wptb-table-column-width-auto-fixed' );\n let width = cellHighlighted.style.width;\n if( width ) {\n wptbTableColumnWidthSlider.value = parseFloat( width, 10 );\n wptbTableColumnWidthNumber.value = parseFloat( width, 10 );\n tableColumnWidthAutoFixedCheckbox.checked = true;\n } else if( cellHighlighted.dataset.wptbFixedWidth ) {\n wptbTableColumnWidthSlider.value = cellHighlighted.dataset.wptbFixedWidth;\n wptbTableColumnWidthNumber.value = cellHighlighted.dataset.wptbFixedWidth;\n tableColumnWidthAutoFixedCheckbox.checked = true;\n } else {\n let cellWidth = WPTB_Helper.getColumnWidth( table, cellHighlighted );\n wptbTableColumnWidthSlider.value = cellWidth;\n wptbTableColumnWidthNumber.value = cellWidth;\n tableColumnWidthAutoFixedCheckbox.checked = false;\n }\n \n \n let wptbTableRowHeightSlider = document.getElementById( 'wptb-table-row-height-slider' );\n let wptbTableRowHeightNumber = document.getElementById( 'wptb-table-row-height-number' );\n let tableRowHeightAutoFixedCheckbox = document.getElementById( 'wptb-table-row-height-auto-fixed' );\n let height = cellHighlighted.style.height;\n if( height ) {\n wptbTableRowHeightSlider.value = parseFloat( height, 10 );\n wptbTableRowHeightNumber.value = parseFloat( height, 10 );\n tableRowHeightAutoFixedCheckbox.checked = true;\n } else if( cellHighlighted.dataset.wptbFixedHeight ) {\n wptbTableRowHeightSlider.value = cellHighlighted.dataset.wptbFixedHeight;\n wptbTableRowHeightNumber.value = cellHighlighted.dataset.wptbFixedHeight;\n tableRowHeightAutoFixedCheckbox.checked = true;\n } else {\n let cellHeight = WPTB_Helper.getRowHeight( table, cellHighlighted );\n wptbTableRowHeightSlider.value = cellHeight;\n wptbTableRowHeightNumber.value = cellHeight;\n tableRowHeightAutoFixedCheckbox.checked = false;\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 /* \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 var 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 (var i = 0; i < array.length; i++) {\n for (var j = 0; j < array[i].length; j++) {\n array[i][j] = 0;\n }\n }\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 };\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-header-bg').val('');\n jQuery('#wptb-even-row-bg').val('');\n jQuery('#wptb-odd-row-bg').val('');\n jQuery('#wptb-table-border-color').val('');\n jQuery('#wptb-table-inner-border-number,#wptb-table-inner-border-slider').val('0');\n jQuery('#wptb-table-border-number,#wptb-table-border-slider').val('0');\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' );\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 row.appendChild(cell.getDOMElement());\n }\n }\n } else {\n let wptb_preview_table = document.getElementsByClassName( 'wptb-preview-table' );\n\n if (wptb_preview_table.length > 0) {\n table = wptb_preview_table[0];\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 }\n }\n\n /*\n * This just toggles visibility of cell edit bar, and toggles \n * cell selecting mode.\n */\n\n table.toggleTableEditMode = function () {\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 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 } else {\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 }\n\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\n table.recalculateIndexes = function ( start ) {\n let trs = this.getElementsByTagName('tr'), tds, maxCols = 0, maxColsFull = 0,\n tdsArr = [];\n let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );\n \n for (var i = 0; i < trs.length; i++) {\n if ( i == 0 ) {\n if ( start == undefined ) {\n trs[i].style.backgroundColor = jQuery('#wptb-table-header-bg').val();\n }\n if( wptbTopRowAsHeader.checked ) {\n if( start == undefined ) {\n this.classList.add( 'wptb-table-preview-head' ); \n trs[i].classList.add( 'wptb-table-head' )\n } ;\n } else {\n if( start == undefined ) {\n this.classList.remove( 'wptb-table-preview-head' );\n trs[i].classList.remove( 'wptb-table-head' );\n }\n }\n } else {\n if (i % 2 == 0) {\n if ( start == undefined ) {\n trs[i].style.backgroundColor = jQuery('#wptb-odd-row-bg').val();\n }\n trs[i].classList.remove( 'wptb-table-head' );\n } else {\n if ( start == undefined ) {\n trs[i].style.backgroundColor = jQuery('#wptb-even-row-bg').val();\n }\n trs[i].classList.remove( 'wptb-table-head' );\n }\n }\n\n tdsArr[i];\n tds = trs[i].getElementsByTagName('td');\n\n if (tdsArr[i] == undefined) {\n tdsArr[i] = [];\n }\n\n let jMainIter = 0;\n for (var 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 if( i == 0 ) {\n maxColsFull = jMainIter;\n }\n }\n if (j > maxCols) {\n maxCols = j;\n }\n }\n this.columns = maxCols;\n this.maxCols = maxColsFull;\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 let tableColumnWidthAutoFixedCheckbox = document.getElementById( 'wptb-table-column-width-auto-fixed' );\n if( ! tableColumnWidthAutoFixedCheckbox.checked ) {\n tableColumnWidthAutoFixedCheckbox.checked = true;\n }\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 }\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 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[parseInt( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] ) {\n if( td.style.width ) {\n arrayCellsWidthFixedHelper[parseInt( 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[parseInt( td.dataset.xIndex )] = 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 if( arrayCellsWidthFixedHelper[parseInt( td.dataset.xIndex )] ) {\n arrayCellsWidthFixedHelper[parseInt( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthFixedHelper[parseInt( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n } else {\n arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n }\n }\n } else if( arrayCellsWidthAutoHelper[parseInt( td.dataset.xIndex )] ) {\n if( ! td.dataset.wptbFixedWidth ) {\n td.dataset.wptbCssTdAutoWidth = true;\n }\n } else if( arrayCellsWidthFixedHelper[parseInt( 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 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 tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto + tableBorderCommon;\n \n table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;\n if( CellsWidthAutoCount ) {\n table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;\n if( table.mergingСellsHorizontally ) {\n table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed - tableBorderCommon;\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 = null;\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed - tableBorderCommon;\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 = null;\n table.style.minWidth = null;\n table.style.maxWidth = tableTdsSumMaxWidth + 'px';\n }\n } else {\n table.style.maxWidth = null;\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\n table.style.width = null;\n tableTdWidthAuto = '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 \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 let tableColumnHeightAutoFixedCheckbox = document.getElementById( 'wptb-table-row-height-auto-fixed' );\n if( ! tableColumnHeightAutoFixedCheckbox.checked ) {\n tableColumnHeightAutoFixedCheckbox.checked = true;\n }\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 }\n \n table.reconstraction = function() {\n let tds = table.getElementsByTagName( 'td' );\n let wptbAdaptiveTableChoseBlock = document.getElementsByClassName( 'wptb-adaptive-table-chose-block' );\n if( wptbAdaptiveTableChoseBlock.length > 0 ) {\n wptbAdaptiveTableChoseBlock = wptbAdaptiveTableChoseBlock[0];\n }\n table.mergingСellsHorizontally = false;\n table.mergingCellsVertically = false;\n table.dataset.reconstraction = 1;\n wptbAdaptiveTableChoseBlock.style.display = 'block';\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 wptbAdaptiveTableChoseBlock.style.display = 'none';\n table.mergingСellsHorizontally = true;\n forBreak++;\n }\n \n if( tds[i].rowSpan > 1 ) {\n table.dataset.reconstraction = 0;\n wptbAdaptiveTableChoseBlock.style.display = 'none';\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 }\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 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 }\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 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 cellPointer,\n cellsBuffer,\n cell = document.querySelector('.wptb-highlighted'),\n cellStyle = cell.getAttribute('style'),\n pos = c_pos != undefined && typeof c_pos === 'number' ? c_pos : getCoords(cell)[1];\n \n \n \n if( maxAmountOfCells - pos - cell.colSpan + 1 == 1 ) {\n table.addColumnEnd();\n } else {\n let pendingInsertion = false,\n stepsToMove,\n td, bro,\n carriedRowspans = [],\n currentCell;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carriedRowspans.push(0);\n }\n\n for (var i = 0; i < rows.length; i++) {\n cellPointer = 0;\n cellsBuffer = rows[i].getElementsByTagName('td');\n pendingInsertion = false;\n for (var xPosition = 0;\n xPosition < maxAmountOfCells;\n xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (pendingInsertion) {\n 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 if (currentCell && rows[i].contains(currentCell)) {\n bro = currentCell.nextSibling;\n if (bro) {\n rows[i].insertBefore(td.getDOMElement(), bro);\n } else {\n rows[i].appendChild(td.getDOMElement());\n }\n } else {\n rows[i].insertBefore(td.getDOMElement(), cellsBuffer[0]);\n }\n break;\n } else if (carriedRowspans[xPosition] > 0) {\n // If no pending insertion, let's check if no rowspan from upper cells is pending in current position\n if (pos == xPosition) {\n pendingInsertion = true;\n }\n } else {\n currentCell = cellsBuffer[cellPointer++];\n if (currentCell.rowSpan > 1) {\n stepsToMove = currentCell.colSpan;\n for (var k = 0; k < currentCell.colSpan; k++) {\n carriedRowspans[xPosition + k] = currentCell.rowSpan;\n if (xPosition + k == pos) {\n pendingInsertion = true;\n }\n }\n } else if (currentCell.colSpan > 1) {\n stepsToMove = currentCell.colSpan;\n for (var k = 0; k < currentCell.colSpan; k++) {\n if (xPosition + k == pos) {\n pendingInsertion = true;\n }\n }\n } else if (xPosition == pos) {\n pendingInsertion = true;\n }\n }\n }\n\n for (var l = 0; l < maxAmountOfCells; l++) {\n if (carriedRowspans[l] > 0)\n carriedRowspans[l]--;\n }\n\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 let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\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 table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\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 table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\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 td.getDOMElement().setAttribute( 'style', cellStyle );\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n r.appendChild( td.getDOMElement() );\n }\n\n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\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 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 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 table.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n WPTB_Helper.settingsPanelClear();\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n }\n \n table.recalculateIndexes();\n WPTB_Helper.dataTitleColumnSet( table );\n }\n \n undoSelect();\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 table.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n WPTB_Helper.settingsPanelClear();\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n }\n \n table.recalculateIndexes();\n table.tdDefaultWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n }\n \n undoSelect();\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 // 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};","var WPTB_TableStateSaveManager = function() {\n this.tableStateSet = () => {\n // get preview table\n let wptbPreviewTable = document.getElementsByClassName( 'wptb-preview-table' );\n if( wptbPreviewTable.length > 0 ) {\n wptbPreviewTable = wptbPreviewTable[0];\n \n // check if a global array doesn't exist with saved versions of the table \n // them create it\n if( ! 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 + 1 ) {\n window.wptbTableStateSaving = window.wptbTableStateSaving.slice( 0, window.wptbTableStateNumberShow + 1 );\n }\n \n //add new state of table\n let wptbNewPreviewTable = wptbPreviewTable.cloneNode( true );\n let wptbHighlighted = wptbNewPreviewTable.getElementsByClassName( 'wptb-highlighted' );\n for( let i = 0; i < wptbHighlighted.length; i++ ) {\n wptbHighlighted[i].classList.remove( 'wptb-highlighted' );\n }\n let wptbDirectlyhovered = wptbNewPreviewTable.getElementsByClassName( 'wptb-directlyhovered' );\n for( let i = 0; i < wptbDirectlyhovered.length; i++ ) {\n wptbDirectlyhovered[i].classList.remove( 'wptb-directlyhovered' );\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 wptbDlementDatas = document.getElementsByClassName( 'wptb-element-datas' );\n if( wptbDlementDatas.length > 0 ) {\n wptbDlementDatas = wptbDlementDatas.innerHTML;\n } else {\n wptbDlementDatas = '';\n }\n \n let mceContentBodys = wptbNewPreviewTable.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 = wptbNewPreviewTable.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 mceIds = wptbNewPreviewTable.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 window.wptbTableStateSaving.push( [wptbNewPreviewTable, cssForTdsWidthAutoValue, wptbDlementDatas] );\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 ) {\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 ) {\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n } else {\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\n }\n }\n }\n }\n \n this.tableStateGet = ( datawptbUndoredo ) => {\n if( datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length > 1 ) {\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 - 1 ) {\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 // 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 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 } else {\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.innerHTML = '';\n wptbTableSetup.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;\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 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 head.appendChild( cssForTdsWidthAuto );\n }\n }\n \n \n let wptbElementDatas = document.getElementsByClassName( 'wptb-element-datas' );\n let body = document.getElementsByTagName( 'body' );\n if( body.length > 0 ) {\n body = body[0];\n }\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow][2] ) {\n wptbElementDatas.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];\n \n if( wptbElementDatas.length > 0 ) {\n wptbElementDatas = wptbElementDatas[0];\n } else {\n wptbElementDatas = document.createElement( 'div' );\n wptbElementDatas.classList.add( 'wptb-element-datas' );\n body.appendChild( wptbElementDatas );\n }\n } else {\n if( wptbElementDatas.length > 0 ) {\n wptbElementDatas = wptbElementDatas[0];\n body.removeChild( wptbElementDatas );\n }\n }\n\n WPTB_Helper.settingsPanelClear();\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}","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 () {\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( wptbDropHandle.style.display == 'block' ) {\n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n }\n }\n let thisRow = td.parentNode\n if( thisRow.classList.contains( 'wptb-table-head' ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n WPTB_Helper.dataTitleColumnSet( table );\n }\n \n // 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 wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\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+)-(.+)', \"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 new WPTB_ElementOptions( element, index, kindIndexProt );\n WPTB_Helper.elementStartScript( element.getDOMElement() );\n document.counter.increment(element.kind);\n }\n \n node.onmouseenter = function ( event ) {\n if( event.target.classList.contains( 'wptb-moving-mode' ) ) {\n return;\n }\n \n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.addActionField( 1, node );\n \n wptbActionsField.setParameters( node );\n \n node.classList.remove( 'wptb-ondragenter' );\n };\n \n node.onmouseleave = function ( event ) {\n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.leaveFromField( event, node );\n };\n};"]}
|
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_Settings.js","WPTB_Stringifier.js","WPTB_Table.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","Array","isArray","WPTB_Helper","elementControlsStateDelete","externalCssStylesDelete","hasOwnProperty","kind","thisRow","rowIsTop","table","findAncestor","contains","dataTitleColumnSet","wptbActionsField","actionsRemove","wptbTableStateSaveManager","WPTB_TableStateSaveManager","tableStateSet","copy","activeElement","activeElemParent","data","elemProt","tinyMceClear","WPTB_ElementObject","elementControlsStateCopy","getDOMElement","externalCssStylesCopy","insertBefore","nextSibling","elementCopy","cloneNode","applyGenericItemSettings","wptbDocumentEventGenerate","WPTB_innerElementSet","setParameters","btnMove","draggable","ondragstart","wptbElementIconsDirectories","tmplIconsDirectories","wp","template","jsonIconsDirectories","IconsDirectories","JSON","parse","dragImages","getElementIcon","dataTransfer","effectAllowed","setDragImage","setData","style","display","console","log","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","elementsSettingTemplateJs","setAttribute","innerHTML","WPTB_Table","element","querySelector","WPTB_LeftPanel","WPTB_Settings","elementOptionsSet","send","counter","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","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","wptbPhElement","wptbElementTypeClass","wptbTypeElementArr","split","wptbInternalActiveElement","j","wptbInternalActiveElementObj","setCoords","y","x","dataset","yIndex","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","window","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","width","offsetWidth","height","offsetHeight","tableFullStyleObj","tableBorderLeft","tableBorderRight","tableBorderTop","tableBorderBottom","nodeName","toLowerCase","firstChild","lastChild","WPTB_DropHandle","thisElem","e","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","ondragenter","ondragover","preventDefault","ondragleave","ondrop","getData","wptbMovingMode","text","getDOMParentElement","innerElement","innerElementNext","elemKind","undefined","onscroll","localName","indics","types","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","increment","key","nextIndex","kindIndexProt","wpTemplateId","itemHtml","replace","trim","wptbElementMutch","elementClearFromTinyMce","inElems","querySelectorAll","inElemObj","WPTB_ElementOptions","hexToRgb","hex","result","exec","rgbToHex","rgb","toString","slice","isHex","regex","RegExp","test","icon_directory","hostName","location","protocol","hostname","img","src","wptbDropHandles","wptbDropBorderMarkers","linkHttpCheckChange","link","linkArr","linkClean","rows","rowHead","computedStyleRowHead","rowHeadChildren","children","contentsForHeader","tdElements","p","textContent","textAlign","fontSize","color","backgroundColor","thisRowChildren","wptbTitleColumn","wptbTitleColumnFontSize","wptbTitleColumnColor","wptbTitleBackgroundColor","wptbTitleAlign","cls","parentElement","row","parent","getSelectionText","txt","getSelection","selection","createRange","elementOptionsPanelClear","elementOptionsGroup","wpColorPickerCheckChangeForTableStateSaving","originalEvent","wpPickerContainer","irisStripMouseUpStateSaveManager","wpColorPickerClear","attribute","isId","input","newInput","url","href","results","decodeURIComponent","getColumnWidth","cell","xIndexes","cellWidth","getRowHeight","yIndexes","cellHeight","wpColorPickerChange","ui","uiColor","classe","ps","number","affectedEl","ratingStar","span","fill","wptbTextMessageSize","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","ucfirst","str","charAt","toUpperCase","eventName","details","CustomEvent","detail","bubbles","dispatchEvent","elementStartScript","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","elementKind","сontrolsConnectIndic","elementsSettingsTemplateJs","elementsSettings","controlClassesNames","elementSettings","Object","keys","forEach","regularText","keyInfArr","controlClass","push","controls","controlName","control","targetControlValue","targetControlValueGet","oneControlInclude","wptbContrlStacksConfigId","tmplControlsConfig","container","jsonControlsConfigJson","jsonControlsConfig","controlClassName","innerElementCopyIncludeHandler","appearDependOnControl","dependOn","targetControlElementClass","dependOnControlName","dependOnControlElementClass","dependOnControlElement","targetControlElement","controlContainerElem","showHideDependOnControlElement","dependOnControlElementKind","elementSettingValue","controlsStateManager","targetControlClass","controlChangeIndic","targetControls","selectorElement","elementsSettingsTemplatesJs","stringify","name","checked","elementProt","copyElem","infArrProt","infArrCopy","elemProtKind","elemCopyKind","elementSettingsProt","elementSettingsCopy","elementSettingKeyCopy","nameControl","wptbElementDatas","elementContainerClass","elementOptionClassIndic","elementOptionsGroupId","wptbelementOptionClass","wptbelementOptionsContainer","childNodes","elementOptionsGroupChildren","controlScriptsArr","controlappearDependOnControl","controlKey","tmplControlTemplate","elemContainer","elementControlTargetUnicClass","controlTemplate","wptbElementOptionContainer","helperJavascriptElem","helperJavascriptCode","innerText","script","managerExternalCssStyles","elementContainer","selector","cssName","cssValue","head","cssForThisElement","cssText","cssTextArrFirst","pop","selectorExists","cssTextArrSecond","cssTextArrThird","cssNameExists","cssTextArrFourth","splice","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","columns","WPTB_Stringifier","outerHTML","datas_containers","styleObjJson","messagingAreaText","setTimeout","params","title","content","elements_datas","elements_styles","security_code","preview_saving","id","action","wptbTableStateSaving","history","pushState","wptbPreviewTable","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","clickOnFreeSpace","wpcdFixedToolbar","hasAttribute","elementAjax","dataAjaxData","element_name","element_ajax_data","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","wptbElementButtons","wptbTableColumnWidthNumber","wptbTableRowHeightNumber","oninput","addColumnWidth","onchange","highlighted","addRowHeight","controlsChange","inputs","tableTopRowsAsHeader","makeTableResponsive","wptbAdaptiveTable","wptbElement","addRowToTheEnd","addRowToTheStart","addRowBefore","addRowAfter","addColumnEnd","addColumnStart","addColumnBefore","addColumnAfter","deleteColumn","deleteRow","mergeCells","splitCell","wptbBuilderPanel","wptbHeader","selectedCells","multipleCellMode","activateMultipleSelectMode","deactivateMultipleSelectMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","first","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","div","columnTitleMobile","prototype","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","obj","TypeError","prop","call","elems","wptbUndo","tableStateGet","wptbUndoredo","wptbUndoRedoContainer","wptbRedo","shortcodePopupWindow","onbeforeunload","wptbSaveDisabled","previewId","Math","floor","random","newHref","URL","searchParams","set","codeMain","tableColumns","minWidth","maxWidth","innerElements","wptbActionsLength","dataMceBogus","columnNameDivContainer","columnNameDiv","array","wptbTableSetup","maxAmountOfCells","maxAmountOfRows","mark","rowSpan","cs","colSpan","markedCells","noCells","singleCells","multipleCells","cellSettings","position","column","cellHighlighted","wptbTableColumnWidthSlider","tableColumnWidthAutoFixedCheckbox","wptbFixedWidth","wptbTableRowHeightSlider","tableRowHeightAutoFixedCheckbox","wptbFixedHeight","isSquare","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","wptb_preview_table","cellModeBackground","leftScrollPanelCurtain","leftScrollPanelCellSettings","wptbPreviewTableTds","recalculateIndexes","start","trs","maxCols","maxColsFull","tdsArr","jMainIter","z","cleaner","dataXIndex","tableTdsFor","colspan","tableRows","widthIsSet","arrayTdsFromPreviousRow","tdDefaultWidth","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","cssForTdsWidthAutoOld","dataYIndex","rowspan","heightIsSet","arrayTdsPrevious","tableColumnHeightAutoFixedCheckbox","mergingCellsVertically","forBreak","currentTable","currentTableTd","currentTdStyle","firstCell","c_pos","cellStyle","pos","pendingInsertion","bro","currentCell","l","r","aux","from","cellNew","rowChildren","rowChildrenLength","cellRowSpan","rowAfter","cellsColSpan","tableRowsIChildren","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","dimensions","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","Number","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","nextRow","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","onresize","generate","wptbNewPreviewTable","wptbHighlighted","wptbDirectlyhovered","cssForTdsWidthAutoValue","datawptbUndoredo","wptbLeftScrollPanelCellSetting","tableStateClear","classId","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\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 console.log(this);\n }\n\n this.actionsHide();\n };\n\n btnMove.ondragend = ( event ) => {\n WPTB_Helper.elementDragEndClear();\n }\n }\n\n actions.style.display = 'block';\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 = 'block';\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 = 'block';\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 if( ans[2] ) {\n let elementsSettingTemplateJs = document.createElement( 'script' );\n elementsSettingTemplateJs.setAttribute( 'type', 'text/html' );\n elementsSettingTemplateJs.setAttribute( 'class', 'wptb-element-datas' );\n\n elementsSettingTemplateJs.innerHTML = ans[2];\n\n body.appendChild( elementsSettingTemplateJs );\n }\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 \n WPTB_LeftPanel();\n WPTB_Settings();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n \n WPTB_Helper.elementOptionsSet( 'table_setting', element );\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 document.counter = new ElementCounters();\n document.select = new MultipleSelect();\n\n var initializer = WPTB_Initializer();\n settings = WPTB_Settings();\n };\n\n document.addEventListener('DOMContentLoaded', WPTB_Builder);\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 console.log( 'wptb_cell_test' );\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 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 ( parseInt( tdBorderLeftWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderRightWidth, 10 ) / 2 );\n \n let height = parseInt( this.offsetHeight, 10 ) - \n parseInt( tdPaddingTop, 10 ) - \n parseInt( tdPaddingBottom, 10 ) -\n ( parseInt( tdBorderTopWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderBottomWidth, 10 ) / 2 ); \n \n \n let table = WPTB_Helper.findAncestor( this, 'wptb-preview-table' );\n if( table ) {\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 }\n \n return {\n width: parseInt( width ), \n height: parseInt( height )\n };\n }\n\n return this;\n};","var WPTB_DropHandle = function (thisElem, e) {\n \n let wptbDropHandle,\n wptbDropBorderMarker;\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 let 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\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 }\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 } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\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 \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 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', 'wptb-item-javascript-indic' );\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\n node.onclick = function () {\n WPTB_Helper.elementOptionsSet( element.kind, this );\n };\n};","var WPTB_Helper = {\n hexToRgb: function( hex ) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec( hex );\n return result ? 'rgb(' + parseInt( result[1], 16 ) + ',' + parseInt( result[2], 16 ) + ',' + parseInt( result[3], 16 ) + ')' : null;\n },\n rgbToHex: function ( rgb ) {\n var rgb = rgb.match( /^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i );\n\n return ( rgb && rgb.length === 4 ) ? \"#\" +\n ( \"0\" + parseInt( rgb[1],10 ).toString( 16 )).slice( -2 ) +\n ( \"0\" + parseInt( rgb[2],10 ).toString( 16 )).slice( -2 ) +\n ( \"0\" + parseInt( rgb[3],10 ).toString( 16 )).slice( -2 ) : '';\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 ) {\n if ( link ) {\n 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 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 = '';\n thisRowChildren[j].dataset.wptbTitleColumnFontSize = '';\n thisRowChildren[j].dataset.wptbTitleColumnColor = '';\n thisRowChildren[j].dataset.wptbTitleBackgroundColor = '';\n thisRowChildren[j].dataset.wptbTitleAlign = '';\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 ) {\n //let script = element.getElementsByTagName( 'script' );\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n if( infArr && Array.isArray( infArr ) ) {\n let kind = infArr[1];\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 },\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 console.log( containerStylesArrOne );\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 ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\n element.addEventListener( 'element:control:active', function() {\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 = 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+)-(.+)', \"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 for( let i = 0; i < controlClassesNames.length; i++ ) {\n element.addEventListener( 'wptb-control:' + controlClassesNames[i][0], function() {\n let controls = {};\n let controlName = controlClassesNames[i][1];\n let control = document.getElementsByClassName( controlClassesNames[i][0] );\n if( control.length > 0 && controlName ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n controls[controlName] = targetControlValue;\n }\n\n functionHandler( controls, element );\n }, false );\n\n element.сontrolsConnectIndic = true;\n }\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 appearDependOnControl: function( dependOn, targetControlElementClass ) {\n if( Array.isArray( dependOn ) ) {\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\n let dependOnControlElement = document.getElementsByClassName( dependOnControlElementClass );\n\n if( dependOnControlElement.length > 0 ) {\n dependOnControlElement = dependOnControlElement[0];\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 function showHideDependOnControlElement( dependOnControlElementKind ) {\n \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 = JSON.parse( elementsSettings );\n if( elementsSettings && typeof elementsSettings === 'object' && \n ( 'tmpl-wptb-el-datas-' + dependOnControlElementKind ) in elementsSettings ) {\n let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + dependOnControlElementKind];\n if( elementSettings && typeof elementSettings === 'object' && \n ( 'data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName ) in elementSettings ) {\n let elementSettingValue = elementSettings['data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName];\n \n if( elementSettingValue ) {\n if( dependOn[1] && Array.isArray( dependOn[1] ) && \n ( dependOn[1].indexOf( elementSettingValue ) !== -1 ) ) {\n controlContainerElem.style.display = 'block';\n } else if( dependOn[2] && Array.isArray( dependOn[2] ) && \n ( dependOn[2].indexOf( elementSettingValue ) !== -1 ) ) {\n controlContainerElem.style.display = 'none';\n }\n }\n }\n }\n }\n }\n }\n\n showHideDependOnControlElement( infArr[1] );\n\n dependOnControlElement.addEventListener( 'change', function() {\n showHideDependOnControlElement( infArr[1] );\n }, false );\n }\n }\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 = 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 {\n targetControlValue = targetControls[i].value;\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 = 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 = 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 ) {\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 let elementOptionsGroupId;\n let wptbelementOptionClass;\n \n // create a container for inserting controls of this item\n let wptbelementOptionsContainer = document.createElement( 'div' );\n \n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n if( ! infArr && element.classList.contains( 'wptb-preview-table' ) ) {\n let table_id = WPTB_Helper.detectMode();\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\n infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n }\n data = {\n container: '.' + infArr[0]\n };\n\n elementContainerClass = infArr[0];\n elementOptionClassIndic = infArr[1];\n \n if( ! element.classList.contains( 'wptb-preview-table' ) ) {\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 \n wptbelementOptionsContainer.classList.add( 'wptb-element-options', 'wptb-options-' + infArr[1] );\n \n // hide wptb-elements-container and wptb-settings-section\n document.getElementsByClassName( 'wptb-elements-container' )[0].style.display = 'none';\n document.getElementsByClassName( 'wptb-settings-section' )[0].style.display = 'none';\n\n // show element-options-group \n document.getElementById( 'element-options-group' ).style.display = 'block';\n \n elementOptionsGroupId = 'element-options-group';\n wptbelementOptionClass = 'wptb-element-option';\n } else {\n elementOptionsGroupId = 'table-settings-group';\n wptbelementOptionClass = 'wptb-element-option';\n }\n\n let jsonControlsConfigJson = tmplControlsConfig( data );\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\n\n // clear elements from options group\n //document.getElementById( 'element-options-group' ).innerHTML = '';\n elementOptionsGroup = document.getElementById( elementOptionsGroupId );\n let elementOptionsGroupChildren = elementOptionsGroup.children;\n for( let i = 0; i < elementOptionsGroupChildren.length; i++ ) {\n elementOptionsGroup.removeChild( elementOptionsGroupChildren[i] );\n }\n\n \n // insert created container into element-option-group tag\n document.getElementById( elementOptionsGroupId ).appendChild( wptbelementOptionsContainer );\n\n // show created container\n wptbelementOptionsContainer.style.display = 'block';\n\n // array for save all scrips for each controls\n let controlScriptsArr = [];\n\n // array for keep \"appear depend on\" parametrs\n let controlappearDependOnControl = [];\n\n // create controls\n let i = 0;\n Object.keys( jsonControlsConfig ).forEach( function( key ) {\n let data = jsonControlsConfig[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 let controlTemplate = tmplControlTemplate( data );\n\n if( 'appearDependOnControl' in data ) {\n if( Array.isArray( data.appearDependOnControl ) ) {\n controlappearDependOnControl.push( [data.appearDependOnControl, data.elementControlTargetUnicClass] );\n }\n }\n\n //console.log( controlTemplate );\n\n let wptbElementOptionContainer = document.createElement( 'div' );\n wptbElementOptionContainer.classList.add( wptbelementOptionClass, 'wptb-settings-items' );\n\n if( data.customClassForContainer ) {\n wptbElementOptionContainer.classList.add( data.customClassForContainer );\n }\n\n if( data.containerAdditionalStyles ) {\n wptbElementOptionContainer.setAttribute( 'style', data.containerAdditionalStyles );\n }\n\n wptbElementOptionContainer.innerHTML = controlTemplate;\n\n wptbelementOptionsContainer.appendChild( wptbElementOptionContainer );\n\n let helperJavascriptElem = wptbElementOptionContainer.getElementsByTagName( 'wptb-template-script' );\n if( helperJavascriptElem.length > 0 ) {\n helperJavascriptElem = helperJavascriptElem[0];\n let helperJavascriptCode = helperJavascriptElem.innerText;\n wptbElementOptionContainer.removeChild( helperJavascriptElem );\n let script = document.createElement( 'script' );\n script.setAttribute( 'type', 'text/javascript' );\n script.innerHTML = helperJavascriptCode.replace(/\\r|\\n|\\t/g, '').trim();\n controlScriptsArr.push( script );\n }\n\n i++;\n });\n\n // run the scripts of controls\n if( controlScriptsArr.length > 0 ) {\n for( let i = 0; i < controlScriptsArr.length; i++ ) {\n wptbelementOptionsContainer.appendChild( controlScriptsArr[i] );\n }\n }\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:control:active', element );\n },\n // function for create, update css for element\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 // 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 table.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 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 console.log(window.wptbTableStateSaving);\n window.history.pushState( null, null, document.location.href.replace( '#', '' ) + '&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 }\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 }\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 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 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 // function for sending of element ajax request\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","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 let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n //wptbTableStateSaveManager.tableStateClear();\n \n wptbTableStateSaveManager.tableStateSet( true );\n \n WPTB_Table(columns, rows);\n \n wptbTableStateSaveManager.tableStateSet();\n }\n\n};\n","var WPTB_LeftPanel = function () {\n\n var table = document.getElementsByClassName('wptb-preview-table')[0],\n wptbElementButtons = document.getElementsByClassName('wptb-element');\n \n let wptbTableColumnWidthNumber = document.getElementById( 'wptb-table-column-width-number' );\n WPTB_Helper.numberImputSize( wptbTableColumnWidthNumber, 2, 500 );\n \n let wptbTableRowHeightNumber = document.getElementById( 'wptb-table-row-height-number' );\n WPTB_Helper.numberImputSize( wptbTableRowHeightNumber, 2, 200 );\n \n document.getElementById( 'wptb-table-column-width-slider' ).oninput = function () {\n document.getElementById( 'wptb-table-column-width-number' ).value = this.value;\n table.addColumnWidth( this.value );\n };\n \n document.getElementById( 'wptb-table-column-width-slider' ).onchange = function () {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n document.getElementById( 'wptb-table-column-width-number' ).onchange = function () {\n document.getElementById( 'wptb-table-column-width-slider' ).value = this.value;\n table.addColumnWidth( this.value );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n document.getElementById( 'wptb-table-column-width-auto-fixed' ).onchange = function () {\n if( this.checked ) {\n let highlighted = table.querySelector( '.wptb-highlighted' );\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\n table.addColumnWidth( width );\n } else {\n table.addColumnWidth( false, true );\n let highlighted = table.querySelector( '.wptb-highlighted' );\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\n document.getElementById( 'wptb-table-column-width-number' ).value = width;\n document.getElementById( 'wptb-table-column-width-slider' ).value = width;\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementById( 'wptb-table-row-height-slider' ).oninput = function () {\n document.getElementById( 'wptb-table-row-height-number' ).value = this.value;\n table.addRowHeight( this.value );\n };\n \n document.getElementById( 'wptb-table-row-height-slider' ).onchange = function () {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementById( 'wptb-table-row-height-number' ).onchange = function () {\n document.getElementById( 'wptb-table-row-height-slider' ).value = this.value;\n table.addRowHeight( this.value );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n document.getElementById( 'wptb-table-row-height-auto-fixed' ).onchange = function () {\n if( this.checked ) {\n let highlighted = table.querySelector( '.wptb-highlighted' );\n let height = WPTB_Helper.getRowHeight( table, highlighted );\n table.addRowHeight( height );\n } else {\n table.addRowHeight( false, true );\n let highlighted = table.querySelector( '.wptb-highlighted' );\n let height = WPTB_Helper.getRowHeight( table, highlighted );\n document.getElementById( 'wptb-table-row-height-number' ).value = height;\n document.getElementById( 'wptb-table-row-height-slider' ).value = height;\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n function controlsChange( inputs, table ) {\n if( inputs && typeof inputs === 'object' ) {\n if( inputs.hasOwnProperty( 'tableTopRowsAsHeader' ) ) {\n if( inputs.tableTopRowsAsHeader == 'checked' ) {\n let rows = table.rows;\n table.classList.add( 'wptb-table-preview-head' );\n } else if( inputs.tableTopRowsAsHeader == 'unchecked' ) {\n let rows = table.rows;\n table.classList.remove( 'wptb-table-preview-head' );\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 thisRowChildren[j].removeAttribute( 'data-wptb-title-column' );\n thisRowChildren[j].removeAttribute( 'data-wptb-title-column-font-size' );\n thisRowChildren[j].removeAttribute( 'data-wptb-title-column-color' );\n thisRowChildren[j].removeAttribute( 'data-wptb-title-background-color' );\n thisRowChildren[j].removeAttribute( 'data-wptb-title-align' );\n }\n }\n }\n } else if( inputs.hasOwnProperty( 'makeTableResponsive' ) ) {\n if( inputs.makeTableResponsive == 'checked' ) {\n table.dataset.wptbAdaptiveTable = 1;\n } else if( inputs.makeTableResponsive == 'unchecked' ) {\n table.dataset.wptbAdaptiveTable = 0;\n }\n } else if( inputs.hasOwnProperty( 'tableManageCells' ) ) {\n table.toggleTableEditMode();\n }\n } \n }\n\n WPTB_Helper.controlsInclude( table, controlsChange );\n\n for (var i = 0; i < wptbElementButtons.length; i++) {\n wptbElementButtons[i].ondragstart = function (e) {\n e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);\n e.dataTransfer.setData( 'wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement );\n }\n };\n \n if( table ) {\n document.getElementById( 'wptb-table-edit-mode-close' ).onclick = table.toggleTableEditMode;\n document.getElementById( 'wptb-left-scroll-panel-curtain-close' ).onclick = table.toggleTableEditMode;\n document.getElementById('wptb-add-end-row').onclick = table.addRowToTheEnd;\n document.getElementById('wptb-add-start-row').onclick = table.addRowToTheStart;\n document.getElementById('wptb-add-row-before').onclick = table.addRowBefore;\n document.getElementById('wptb-add-row-after').onclick = table.addRowAfter;\n document.getElementById('wptb-add-end-column').onclick = table.addColumnEnd;\n document.getElementById('wptb-add-start-column').onclick = table.addColumnStart;\n document.getElementById('wptb-add-column-before').onclick = table.addColumnBefore;\n document.getElementById('wptb-add-column-after').onclick = table.addColumnAfter;\n document.getElementById('wptb-delete-column').onclick = table.deleteColumn;\n document.getElementById('wptb-delete-row').onclick = table.deleteRow;\n document.getElementById('wptb-merge-cells').onclick = table.mergeCells;\n document.getElementById('wptb-split-cell').onclick = table.splitCell;\n };\n \n document.querySelector( '.wptb-left-panel-extend' ).onclick = function() {\n let wptbContainer = document.querySelector( '.wptb-container' );\n if( wptbContainer ) {\n if ( wptbContainer.classList.contains( 'collapsed' ) ) {\n wptbContainer.classList.remove( 'collapsed' );\n } else {\n wptbContainer.classList.add( 'collapsed' );\n }\n }\n };\n \n // this code hides the \"element parameters\" area \n // when clicked outside this element and its \"tinymce\" toolbar \n let wptbBuilderPanel = document.getElementsByClassName( 'wptb-builder-panel' )[0];\n wptbBuilderPanel.onclick = function( e ) {\n if( ! e.target.classList.contains( 'wptb-ph-element' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-ph-element' ) && \n ! e.target.classList.contains( 'wptb-fixed-toolbar' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-fixed-toolbar' ) ) {\n WPTB_Helper.clickOnFreeSpace();\n } \n };\n \n let wptbHeader = document.getElementsByClassName( 'wptb-header' );\n if( wptbHeader.length > 0 ) wptbHeader = wptbHeader[0];\n wptbHeader.onclick = function() {\n WPTB_Helper.clickOnFreeSpace();\n };\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}","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 elems[i].ondragend = function () {\n WPTB_Helper.elementDragEndClear();\n }\n };\n let table = document.getElementsByClassName( 'wptb-preview-table' );\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 && table.length > 0 ) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n WPTB_Table();\n }\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 && table.length > 0 ) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\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","var WPTB_Stringifier = function ( codeMain ) {\n if ( codeMain ) {\n let code = codeMain.cloneNode( true );\n code.classList.add( 'wptb-table-preview-static-indic' );\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 if ( codeMain.querySelector( 'wptb-table-preview-head' ) ) {\n tds[i].removeAttribute( 'data-x-index' );\n }\n tds[i].removeAttribute( 'data-y-index' );\n tds[i].removeAttribute( 'draggable' );\n tds[i].classList.remove( 'wptb-droppable' );\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 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) {\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 var rs = this.rowSpan,\n cs = this.colSpan,\n markedCells,\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(this),\n row = position[0],\n column = position[1];\n if ( ! document.select.isActivated() ) {\n return;\n }\n if (this.className.match(/wptb-highlighted/)) {\n this.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 this.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 markedCells = document.getElementsByClassName('wptb-highlighted').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 let cellHighlighted = document.querySelector( '.wptb-highlighted' );\n if( cellHighlighted ) {\n let wptbTableColumnWidthSlider = document.getElementById( 'wptb-table-column-width-slider' );\n let wptbTableColumnWidthNumber = document.getElementById( 'wptb-table-column-width-number' );\n let tableColumnWidthAutoFixedCheckbox = document.getElementById( 'wptb-table-column-width-auto-fixed' );\n let width = cellHighlighted.style.width;\n if( width ) {\n wptbTableColumnWidthSlider.value = parseFloat( width, 10 );\n wptbTableColumnWidthNumber.value = parseFloat( width, 10 );\n tableColumnWidthAutoFixedCheckbox.checked = true;\n } else if( cellHighlighted.dataset.wptbFixedWidth ) {\n wptbTableColumnWidthSlider.value = cellHighlighted.dataset.wptbFixedWidth;\n wptbTableColumnWidthNumber.value = cellHighlighted.dataset.wptbFixedWidth;\n tableColumnWidthAutoFixedCheckbox.checked = true;\n } else {\n let cellWidth = WPTB_Helper.getColumnWidth( table, cellHighlighted );\n wptbTableColumnWidthSlider.value = cellWidth;\n wptbTableColumnWidthNumber.value = cellWidth;\n tableColumnWidthAutoFixedCheckbox.checked = false;\n }\n \n \n let wptbTableRowHeightSlider = document.getElementById( 'wptb-table-row-height-slider' );\n let wptbTableRowHeightNumber = document.getElementById( 'wptb-table-row-height-number' );\n let tableRowHeightAutoFixedCheckbox = document.getElementById( 'wptb-table-row-height-auto-fixed' );\n let height = cellHighlighted.style.height;\n if( height ) {\n wptbTableRowHeightSlider.value = parseFloat( height, 10 );\n wptbTableRowHeightNumber.value = parseFloat( height, 10 );\n tableRowHeightAutoFixedCheckbox.checked = true;\n } else if( cellHighlighted.dataset.wptbFixedHeight ) {\n wptbTableRowHeightSlider.value = cellHighlighted.dataset.wptbFixedHeight;\n wptbTableRowHeightNumber.value = cellHighlighted.dataset.wptbFixedHeight;\n tableRowHeightAutoFixedCheckbox.checked = true;\n } else {\n let cellHeight = WPTB_Helper.getRowHeight( table, cellHighlighted );\n wptbTableRowHeightSlider.value = cellHeight;\n wptbTableRowHeightNumber.value = cellHeight;\n tableRowHeightAutoFixedCheckbox.checked = false;\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 /* \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 var 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 (var i = 0; i < array.length; i++) {\n for (var j = 0; j < array[i].length; j++) {\n array[i][j] = 0;\n }\n }\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 };\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 let wptb_preview_table = document.getElementsByClassName( 'wptb-preview-table' );\n\n if (wptb_preview_table.length > 0) {\n table = wptb_preview_table[0];\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 just toggles visibility of cell edit bar, and toggles \n * cell selecting mode.\n */\n\n table.toggleTableEditMode = function () {\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 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 } else {\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 }\n\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\n table.recalculateIndexes = function ( start ) {\n let trs = this.getElementsByTagName('tr'), tds, maxCols = 0, maxColsFull = 0,\n tdsArr = [];\n //let wptbTopRowAsHeader = document.getElementById( 'wptb-top-row-as-header' );\n \n for (var i = 0; i < trs.length; i++) {\n if ( i == 0 ) {\n// if( wptbTopRowAsHeader.checked ) {\n// if( start == undefined ) {\n// this.classList.add( 'wptb-table-preview-head' ); \n// trs[i].classList.add( 'wptb-table-head' )\n// } ;\n// } else {\n// if( start == undefined ) {\n// this.classList.remove( 'wptb-table-preview-head' );\n// trs[i].classList.remove( 'wptb-table-head' );\n// }\n// }\n } else {\n// if (i % 2 == 0) {\n// trs[i].classList.remove( 'wptb-table-head' );\n// } else {\n// trs[i].classList.remove( 'wptb-table-head' );\n// }\n }\n\n tdsArr[i];\n tds = trs[i].getElementsByTagName('td');\n\n if (tdsArr[i] == undefined) {\n tdsArr[i] = [];\n }\n\n let jMainIter = 0;\n for (var 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 if( i == 0 ) {\n maxColsFull = jMainIter;\n }\n }\n if (j > maxCols) {\n maxCols = j;\n }\n }\n this.columns = maxCols;\n this.maxCols = maxColsFull;\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 let tableColumnWidthAutoFixedCheckbox = document.getElementById( 'wptb-table-column-width-auto-fixed' );\n if( ! tableColumnWidthAutoFixedCheckbox.checked ) {\n tableColumnWidthAutoFixedCheckbox.checked = true;\n }\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 }\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 )] = 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 = null;\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 = null;\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 = null;\n tableTdWidthAuto = '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 \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 let tableColumnHeightAutoFixedCheckbox = document.getElementById( 'wptb-table-row-height-auto-fixed' );\n if( ! tableColumnHeightAutoFixedCheckbox.checked ) {\n tableColumnHeightAutoFixedCheckbox.checked = true;\n }\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 }\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 }\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 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 }\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 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 cellPointer,\n cellsBuffer,\n cell = document.querySelector('.wptb-highlighted'),\n cellStyle = cell.getAttribute('style'),\n pos = c_pos != undefined && typeof c_pos === 'number' ? c_pos : getCoords(cell)[1];\n \n \n \n if( maxAmountOfCells - pos - cell.colSpan + 1 == 1 ) {\n table.addColumnEnd();\n } else {\n let pendingInsertion = false,\n stepsToMove,\n td, bro,\n carriedRowspans = [],\n currentCell;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carriedRowspans.push(0);\n }\n\n for (var i = 0; i < rows.length; i++) {\n cellPointer = 0;\n cellsBuffer = rows[i].getElementsByTagName('td');\n pendingInsertion = false;\n for (var xPosition = 0;\n xPosition < maxAmountOfCells;\n xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (pendingInsertion) {\n 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 if (currentCell && rows[i].contains(currentCell)) {\n bro = currentCell.nextSibling;\n if (bro) {\n rows[i].insertBefore(td.getDOMElement(), bro);\n } else {\n rows[i].appendChild(td.getDOMElement());\n }\n } else {\n rows[i].insertBefore(td.getDOMElement(), cellsBuffer[0]);\n }\n break;\n } else if (carriedRowspans[xPosition] > 0) {\n // If no pending insertion, let's check if no rowspan from upper cells is pending in current position\n if (pos == xPosition) {\n pendingInsertion = true;\n }\n } else {\n currentCell = cellsBuffer[cellPointer++];\n if (currentCell.rowSpan > 1) {\n stepsToMove = currentCell.colSpan;\n for (var k = 0; k < currentCell.colSpan; k++) {\n carriedRowspans[xPosition + k] = currentCell.rowSpan;\n if (xPosition + k == pos) {\n pendingInsertion = true;\n }\n }\n } else if (currentCell.colSpan > 1) {\n stepsToMove = currentCell.colSpan;\n for (var k = 0; k < currentCell.colSpan; k++) {\n if (xPosition + k == pos) {\n pendingInsertion = true;\n }\n }\n } else if (xPosition == pos) {\n pendingInsertion = true;\n }\n }\n }\n\n for (var l = 0; l < maxAmountOfCells; l++) {\n if (carriedRowspans[l] > 0)\n carriedRowspans[l]--;\n }\n\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 let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\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 table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\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 table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\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 td.getDOMElement().setAttribute( 'style', cellStyle );\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n r.appendChild( td.getDOMElement() );\n }\n\n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\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 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 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 table.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 }\n } else {\n table.recalculateIndexes();\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n undoSelect();\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 table.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 }\n } else {\n table.recalculateIndexes();\n table.tdDefaultWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n undoSelect();\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 // 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};","var WPTB_TableStateSaveManager = function() {\n this.tableStateSet = ( generate ) => {\n \n if( generate && window.wptbTableStateSaving && Array.isArray( window.wptbTableStateSaving ) ) {\n return;\n }\n \n // get preview table\n let wptbPreviewTable = document.getElementsByClassName( 'wptb-preview-table' );\n if( wptbPreviewTable.length > 0 ) {\n wptbPreviewTable = wptbPreviewTable[0];\n } else {\n wptbPreviewTable = '';\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 wptbNewPreviewTable = '';\n if( wptbPreviewTable ) {\n wptbNewPreviewTable = wptbPreviewTable.cloneNode( true );\n let wptbHighlighted = wptbNewPreviewTable.getElementsByClassName( 'wptb-highlighted' );\n for( let i = 0; i < wptbHighlighted.length; i++ ) {\n wptbHighlighted[i].classList.remove( 'wptb-highlighted' );\n }\n let wptbDirectlyhovered = wptbNewPreviewTable.getElementsByClassName( 'wptb-directlyhovered' );\n for( let i = 0; i < wptbDirectlyhovered.length; i++ ) {\n wptbDirectlyhovered[i].classList.remove( 'wptb-directlyhovered' );\n }\n let mceContentBodys = wptbNewPreviewTable.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 = wptbNewPreviewTable.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 = wptbNewPreviewTable.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 wptbElementDatas = document.getElementsByClassName( 'wptb-element-datas' );\n if( wptbElementDatas.length > 0 ) {\n wptbElementDatas = wptbElementDatas[0];\n wptbElementDatas = wptbElementDatas.innerHTML;\n } else {\n wptbElementDatas = '';\n }\n\n let styleObjJson = WPTB_Helper.elementsStylesConvertToObject();\n\n window.wptbTableStateSaving.push( [wptbNewPreviewTable, cssForTdsWidthAutoValue, wptbElementDatas, styleObjJson] );\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 } else {\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\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 } else {\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.innerHTML = '';\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.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;\n }\n }\n \n if( ! wptbTableSetup.innerHTML ) {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\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 if( window.wptbTableStateSaving[window.wptbTableStateNumberShow] ) {\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 \n \n let body = document.getElementsByTagName( 'body' );\n if( body.length > 0 ) {\n body = body[0];\n }\n \n // add or change or delete script element from the bottom page which have data for several control types\n let wptbElementDatas = document.getElementsByClassName( 'wptb-element-datas' );\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow] && window.wptbTableStateSaving[window.wptbTableStateNumberShow][2] ) {\n \n if( wptbElementDatas.length > 0 ) {\n wptbElementDatas = wptbElementDatas[0];\n } else {\n wptbElementDatas = document.createElement( 'sctipt' );\n wptbElementDatas.classList.add( 'wptb-element-datas' );\n body.appendChild( wptbElementDatas );\n }\n \n wptbElementDatas.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];\n } else {\n if( wptbElementDatas.length > 0 ) {\n wptbElementDatas = wptbElementDatas[0];\n body.removeChild( wptbElementDatas );\n }\n }\n \n // runs function which adds or create or delete CSS in the head for several element settings\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow] ) {\n WPTB_Helper.elementsStylesSetFromObject( window.wptbTableStateSaving[window.wptbTableStateNumberShow][3] );\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 () {\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( wptbDropHandle.style.display == 'block' ) {\n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n }\n }\n \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 wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\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+)-(.+)', \"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 new WPTB_ElementOptions( element, index, kindIndexProt );\n WPTB_Helper.elementStartScript( element.getDOMElement() );\n document.counter.increment(element.kind);\n }\n \n node.onmouseenter = function ( event ) {\n if( event.target.classList.contains( 'wptb-moving-mode' ) ) {\n return;\n }\n \n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.addActionField( 1, node );\n \n wptbActionsField.setParameters( node );\n \n node.classList.remove( 'wptb-ondragenter' );\n };\n \n node.onmouseleave = function ( event ) {\n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.leaveFromField( event, node );\n };\n};"]}
|
inc/admin/js/admin.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},WPTB_ActionsField=function s(){var c=this;this.wptbActions,0!=document.getElementsByClassName("wptb-actions").length&&(this.wptbActions=document.getElementsByClassName("wptb-actions")[0]),this.addActionField=function(e,t){var a=document.getElementsByTagName("body")[0],n=document.getElementsByClassName("wptb-actions");if(0!=n.length){var l=n[0].activeElem;for(l&&l.classList.remove("wptb-directlyhovered");0!=n.length;)n[0].parentNode.removeChild(n[0])}if(1==e){var r=void 0,o=void 0;if(r=document.createElement("span"),o=document.createElement("span"),(n=document.createElement("div")).classList.add("wptb-actions"),r.classList.add("dashicons","dashicons-trash","wptb-delete-action"),o.classList.add("dashicons","dashicons-admin-page","wptb-duplicate-action"),n.appendChild(o),n.appendChild(r),a.appendChild(n),n.activeElem=t,n.type=1,r.onclick=function(e){var t=e.target.parentNode.activeElem,a=t.parentNode;if(t&&t.className.match(/wptb-element-(.+)-(\d+)/i)&&WPTB_Helper.elementControlsStateDelete(t),t&&a.removeChild(t),t&&"object"===(void 0===t?"undefined":_typeof(t))&&t.hasOwnProperty("kind")&&"text"==t.kind){var n=a.parentNode;if(n.classList.contains("wptb-table-head")){var l=WPTB_Helper.findAncestor(n,"wptb-preview-table");WPTB_Helper.dataTitleColumnSet(l)}}(new s).actionsRemove(),(new WPTB_TableStateSaveManager).tableStateSet()},o.onclick=function(e){var t,a=void 0,n=void 0,l=e.target.parentNode.activeElem,r=l.parentNode;if((t=l.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){n=t[1];var o={};o.kind=n,o.elemProt=l,o.tinyMceClear=!0,a=new WPTB_ElementObject(o),WPTB_Helper.elementControlsStateCopy(l,a.getDOMElement()),r.insertBefore(a.getDOMElement(),l.nextSibling)}else{a={};var i=l.cloneNode(!0);i.classList.remove("wptb-directlyhovered"),a.getDOMElement=function(){return i},applyGenericItemSettings(a),r.insertBefore(a.getDOMElement(),l.nextSibling),WPTB_Helper.wptbDocumentEventGenerate("wptb-inner-element:copy",l,a.getDOMElement())}WPTB_innerElementSet(a.getDOMElement()),new s(1,l).setParameters(l),(new WPTB_TableStateSaveManager).tableStateSet()},t.classList.contains("wptb-ph-element")){var i=void 0;(i=document.createElement("span")).classList.add("dashicons","dashicons-move","wptb-move-action"),i.draggable=!0,n.appendChild(i),i.ondragstart=function(e){var t,a=wp.template("wptb-element-icons-directories")({}),n=JSON.parse(a),l=void 0,r=e.target.parentNode.activeElem,o=void 0;if((t=r.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){o=t[1],r.classList.add("wptb-moving-mode"),n&&"object"===(void 0===n?"undefined":_typeof(n))&&n[o]&&(l=WPTB_Helper.getElementIcon(n[o])),e.dataTransfer.effectAllowed="move",e.dataTransfer.setDragImage(l,0,0),e.dataTransfer.setData("node","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptb-moving-mode","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptbElIndic-"+t[1],"wptbElIndic-"+t[1]);var i=e.target.parentNode.activeElem;if("text"==i.kind){var s=i.parentNode.parentNode;if(s.classList.contains("wptb-table-head")){var d=WPTB_Helper.findAncestor(s,"wptb-preview-table");WPTB_Helper.dataTitleColumnSet(d)}}}else c.style.display="none",console.log(c);c.actionsHide()},i.ondragend=function(e){WPTB_Helper.elementDragEndClear()}}n.style.display="block",c.wptbActions=n}},this.setParameters=function(t){if(!c.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length?c.wptbActions=e[0]:c.wptbActions=!1}if(c.wptbActions&&c.wptbActions.classList.contains("wptb-actions")){c.wptbActions.style.display="block";var a=t.getBoundingClientRect(),n=document.getElementsByClassName("wptb-container")[0],l=function(){var e=t.getBoundingClientRect();c.wptbActions.style.top=parseFloat(e.top)-15+"px"};n.removeEventListener("scroll",l,!1),c.wptbActions.style.top=parseFloat(a.top)-15+"px",c.wptbActions.style.left=parseFloat(a.right)-parseFloat(c.wptbActions.clientWidth)+1+"px",c.wptbActions.style.display="block",t.classList.add("wptb-directlyhovered"),n.addEventListener("scroll",l,!1)}},this.leaveFromField=function(e,t,a){if(!c.wptbActions){var n=document.getElementsByClassName("wptb-actions");0<n.length?c.wptbActions=n[0]:c.wptbActions=!1}if(c.wptbActions){if(e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-actions")||e.relatedTarget.classList.contains("wptb-move-action")||e.relatedTarget.classList.contains("wptb-duplicate-action")||e.relatedTarget.classList.contains("wptb-delete-action")))return c.wptbActions||(c.wptbActions=document.getElementsByClassName("wptb-actions")[0]),void(c.wptbActions.onmouseleave=function(e){null!=e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&e.relatedTarget!=c.wptbActions.activeElem&&(WPTB_Helper.findAncestor(e.relatedTarget,"wptb-directlyhovered"),c.wptbActions.activeElem),(new s).leaveFromField(e,e.relatedTarget.parentNode.parentNode),e.target.activeElem.classList.remove("wptb-directlyhovered")});t.classList.remove("wptb-directlyhovered"),c.wptbActions.style.display="none",e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&(c.addActionField(1,e.relatedTarget.parentNode),c.setParameters(e.relatedTarget.parentNode))}},this.actionsRemove=function(){if(!c.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(c.wptbActions=e[0])}c.wptbActions&&c.wptbActions.parentNode.removeChild(c.wptbActions)},this.actionsHide=function(){if(!c.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(c.wptbActions=e[0])}c.wptbActions&&(c.wptbActions.style.opacity=0)}};document.addEventListener("DOMContentLoaded",function(){var e=WPTB_Helper.detectMode();if(e){var l=new XMLHttpRequest,t=ajaxurl+"?action=get_table&id="+e;l.open("GET",t,!0),l.setRequestHeader("Content-type","application/x-www-form-urlencoded"),l.onreadystatechange=function(e){if(4!=this.readyState||200!=this.status);else{var t=JSON.parse(l.responseText);if(document.getElementById("wptb-setup-name").value=t[0],t[1]){document.getElementsByClassName("wptb-table-generator")[0].style.display="none",document.getElementsByClassName("wptb-table-setup")[0].appendChild(WPTB_Parser(t[1]));var a=document.getElementsByTagName("body")[0];if(t[2]){var n=document.createElement("script");n.setAttribute("type","text/html"),n.setAttribute("class","wptb-element-datas"),n.innerHTML=t[2],a.appendChild(n)}WPTB_Table(),WPTB_LeftPanel(),WPTB_Settings(),(new WPTB_TableStateSaveManager).tableStateSet()}else document.getElementsByClassName("wptb-table-generator")[0].style.display="table"}},l.send(null)}else document.getElementsByClassName("wptb-table-generator")[0].style.display="table";document.counter=new ElementCounters,document.select=new MultipleSelect,WPTB_Initializer(),settings=WPTB_Settings()});var WPTB_Cell=function(e,t){if(!t){(t=document.createElement("td")).style.padding=jQuery("#wptb-table-padding-number").val()+"px";var a=jQuery("#wptb-table-inner-border-number").val();""!=a&&0!=parseInt(a)&&(t.style.border=a+"px solid "+jQuery("#wptb-table-border-color").val()),t.classList.add("wptb-droppable","wptb-cell")}t.draggable=!1,e&&(t.onclick=e),WPTB_innerElementSet(t);var o=t.getElementsByClassName("wptb-ph-element");if(0<o.length)for(var n=function(l){o[l].getDOMElement=function(){return o[l]},WPTB_innerElementSet(o[l]);var r=o[l].className.match(/wptb-element-((.+-)\d+)/i);r&&Array.isArray(r)&&function(){var e=r[1].split("-");o[l].kind=e[0],applyGenericItemSettings(o[l],r[1]);var a=o[l].getElementsByClassName("wptb-in-element");if(0<a.length)for(var t=function(e){var t={getDOMElement:function(){return a[e]}};applyGenericItemSettings(t)},n=0;n<a.length;n++)t(n)}()},l=0;l<o.length;l++)n(l);return this.getDOMElement=function(){return t},this.setCoords=function(e,t){var a=this.getDOMElement();a.dataset.yIndex=e,a.dataset.xIndex=t},this.getCoords=function(){var e,t=this.getDOMElement();return e.x=t.dataset.xIndex,e.y=t.dataset.yIndex,e},this.appendElement=function(e){getDOMElement().appendChild(e)},t.getCellDimensions=function(){var e=window.getComputedStyle(this,null),t=e.getPropertyValue("padding-left"),a=e.getPropertyValue("padding-right"),n=e.getPropertyValue("border-left-width"),l=e.getPropertyValue("border-right-width"),r=e.getPropertyValue("padding-top"),o=e.getPropertyValue("padding-bottom"),i=e.getPropertyValue("border-top-width"),s=e.getPropertyValue("border-bottom-width");return{width:parseFloat(this.offsetWidth,10)-parseFloat(t,10)-parseFloat(a,10)-parseFloat(n,10)-parseFloat(l,10),height:parseFloat(this.offsetHeight,10)-parseFloat(r,10)-parseFloat(o,10)-parseFloat(i,10)-parseFloat(s,10)}},this},WPTB_DropHandle=function(i,e){var s=void 0,d=void 0;if(0==document.getElementsByClassName("wptb-drop-handle").length){(s=document.createElement("div")).classList.add("wptb-drop-handle"),(d=document.createElement("div")).classList.add("wptb-drop-border-marker");var t=document.createElement("div"),a=document.createElement("div"),n=document.createElement("div"),l=document.createElement("div");t.classList.add("wptb-drop-border-marker-top"),a.classList.add("wptb-drop-border-marker-right"),n.classList.add("wptb-drop-border-marker-bottom"),l.classList.add("wptb-drop-border-marker-left"),d.appendChild(t),d.appendChild(a),d.appendChild(n),d.appendChild(l);var r=document.getElementsByTagName("body");0<r.length&&(r[0].appendChild(s),r[0].appendChild(d)),s.ondragenter=function(){},s.ondragover=function(e){e.preventDefault()},s.ondragleave=function(){},s.ondrop=function(e){e.preventDefault();var t=void 0;e.dataTransfer.getData("wptbElement")?t=(t=WPTB_Helper.newElementProxy(e.dataTransfer.getData("wptbElement"))).getDOMElement():((t=document.getElementsByClassName(e.dataTransfer.getData("node"))[0]).classList.remove("wptb-moving-mode"),t.classList.remove("wptb-moving-into-same-elem"),t.wptbMovingMode=1);var a=void 0;if("Drop Here"==s.dataset.text)"td"==(i=s.getDOMParentElement()).nodeName.toLowerCase()&&(a=s.getDOMParentElement()).appendChild(t);else{var n=s.getDOMParentElement();if(a=n.parentNode,"Above Element"==s.dataset.text)a.insertBefore(t,n);else if("Below Element"==s.dataset.text){var l=n.nextSibling;a.insertBefore(t,l)}}var r=a.parentNode;if(r.classList.contains("wptb-table-head")){var o=WPTB_Helper.findAncestor(r,"wptb-preview-table");WPTB_Helper.dataTitleColumnSet(o)}t.className.match(/wptb-element-(.+)-(\d+)/i)[1];(e.dataTransfer.getData("wptbElement"),s.style.display="none",d.style.display="none",WPTB_innerElementSet(t),t.classList.contains("wptb-image-container")&&1!=t.wptbMovingMode)||((new WPTB_TableStateSaveManager).tableStateSet(),t.wptbMovingMode)},document.querySelector(".wptb-container").onscroll=function(){s.style.display="none",d.style.display="none"}}else s=document.getElementsByClassName("wptb-drop-handle")[0],d=document.getElementsByClassName("wptb-drop-border-marker")[0];if(!i||"td"!=i.nodeName.toLowerCase()||0==i.getElementsByClassName("wptb-ph-element").length){var o=void 0;if("td"==i.localName?o=i.parentNode:"div"==i.localName&&i.classList.contains("wptb-ph-element")&&(o=i.parentNode.parentNode),o.classList.contains("wptb-table-head")){for(var c=e.dataTransfer.types,m=!1,p=0;p<c.length;p++){var b=c[p].match(/wptbelindic-([a-z]+)/i);if(b&&"text"!=b[1]){m=!0;break}}if(m)return}s.style.width=i.offsetWidth+"px";var u=i.offsetHeight,g=i.getBoundingClientRect(),w=parseFloat(g.left),v=void 0;if(s.style.left=w+"px",-1!=e.dataTransfer.types.indexOf("wptb-moving-mode")){var h=document.getElementsByClassName("wptb-moving-mode")[0];i==h?(s.classList.add("wptb-moving-into-same-elem"),d.classList.add("wptb-moving-into-same-elem")):(s.classList.remove("wptb-moving-into-same-elem"),d.classList.remove("wptb-moving-into-same-elem"))}if(s.getDOMParentElement=function(){return i},s.style.display="block",d.style.display="block","td"!=i.nodeName.toLowerCase()){var f=null==e.offsetY?e.layerY:e.offsetY;v=parseFloat(g.top)-parseFloat(11),s.dataset.text="Above Element",u/2<f&&(v=parseFloat(g.top)+u-1,s.dataset.text="Below Element")}else s.dataset.text="Drop Here",v=parseFloat(g.top)+u/2-5;s.style.top=v+"px",d.style.top=g.top+"px",d.style.left=g.left+"px",wptbDropBorderMarkerTop=d.querySelector(".wptb-drop-border-marker-top"),wptbDropBorderMarkerTop.style.width=parseFloat(i.offsetWidth)-parseFloat(1)+"px",wptbDropBorderMarkerRight=d.querySelector(".wptb-drop-border-marker-right"),wptbDropBorderMarkerRight.style.height=parseFloat(g.bottom)-parseFloat(g.top)-1+"px",wptbDropBorderMarkerRight.style.left=wptbDropBorderMarkerTop.style.width,wptbDropBorderMarkerBottom=d.querySelector(".wptb-drop-border-marker-bottom"),wptbDropBorderMarkerBottom.style.width=wptbDropBorderMarkerTop.style.width,wptbDropBorderMarkerBottom.style.top=wptbDropBorderMarkerRight.style.height,wptbDropBorderMarkerLeft=d.querySelector(".wptb-drop-border-marker-left"),wptbDropBorderMarkerLeft.style.height=wptbDropBorderMarkerRight.style.height}},ElementCounters=function(){var t=[];return t.text=0,t.image=0,t.list=0,t.button=0,this.increment=function(e){e in t&&t[e]++},this.nextIndex=function(e){if(e in t)return t[e]+1},this},WPTB_ElementObject=function(e){var t=void 0,a=void 0,n=void 0;if(e.elemProt){(t=e.elemProt.cloneNode(!0)).classList.remove("wptb-directlyhovered");var l=e.elemProt.className.match(/wptb-element-((.+-)\d+)/i);l&&Array.isArray(l)&&(a=l[1]),n=!0,e.tinyMceClear&&(t=WPTB_Helper.elementClearFromTinyMce(t))}else{a=void 0,n=!1,(t=document.createElement("div")).classList.add("wptb-"+e.kind+"-container","wptb-ph-element","wptb-item-javascript-indic");var r="wptb-"+e.kind+"-content",o=wp.template(r);e.node=t;var i=o(e);i=i.replace(/\r|\n|\t/g,"").trim(),t.innerHTML=i}var s=t.querySelectorAll(".wptb-in-element");if(0<s.length)for(var d=function(e){var t={getDOMElement:function(){return s[e]}};applyGenericItemSettings(t)},c=0;c<s.length;c++)d(c);return window.addEventListener("item:onmouseenter",function(e){},!1),this.kind=e.kind,this.getDOMElement=function(){return t},applyGenericItemSettings(this,a,n),this},WPTB_ElementOptions=function(g,e,t){g.getDOMElement().onclick=function(){for(var e=document.getElementById("element-options-group").childNodes,t=0;t<e.length;t++)e[t].style&&(e[t].style.display="none");var s=this.className.match(/wptb-element-((.+-)\d+)/i),a="wptb-"+g.kind+"-control-stack",n=wp.template(a)({container:"."+s[0]}),d=JSON.parse(n),c=document.createElement("div");c.classList.add("wptb-element-options","wptb-options-"+s[1]);for(var l=document.getElementById("element-options-group"),r=l.children,o=0;o<r.length;o++){var i=new RegExp("wptb-options-"+g.kind+"-(\\d+)","i");r[o].className.match(i)&&l.removeChild(r[o])}document.getElementsByClassName("wptb-elements-container")[0].style.display="none",document.getElementsByClassName("wptb-settings-section")[0].style.display="none",document.getElementById("element-options-group").style.display="block",document.getElementById("element-options-group").appendChild(c),c.style.display="block";var m=[],p=[];if(Object.keys(d).forEach(function(e){var t=d[e];t.controlKey=e;var a=wp.template("wptb-"+t.type+"-control");t.elemContainer=s[0],t.elementControlTargetUnicClass="wptb-el-"+s[1]+"-"+t.controlKey;var n=a(t);"appearDependOn"in t&&Array.isArray(t.appearDependOn)&&p.push([t.appearDependOn,t.elementControlTargetUnicClass]);var l=document.createElement("div");l.classList.add("wptb-element-option","wptb-settings-items"),t.customClassForContainer&&l.classList.add(t.customClassForContainer),t.containerAdditionalStyles&&l.setAttribute("style",t.containerAdditionalStyles),l.innerHTML=n,c.appendChild(l);var r=l.getElementsByTagName("wptb-template-script");if(0<r.length){var o=(r=r[0]).innerText;l.removeChild(r);var i=document.createElement("script");i.setAttribute("type","text/javascript"),i.innerHTML=o.replace(/\r|\n|\t/g,"").trim(),m.push(i)}0}),0<m.length)for(var b=0;b<m.length;b++)c.appendChild(m[b]);for(var u=0;u<p.length;u++)WPTB_Helper.appearDependOn(p[u][0],p[u][1]);WPTB_Helper.wptbDocumentEventGenerate("controlPanel:added:leftPanel")}},WPTB_Helper=(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},{hexToRgb:function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?"rgb("+parseInt(t[1],16)+","+parseInt(t[2],16)+","+parseInt(t[3],16)+")":null},rgbToHex:function(e){return(e=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===e.length?"#"+("0"+parseInt(e[1],10).toString(16)).slice(-2)+("0"+parseInt(e[2],10).toString(16)).slice(-2)+("0"+parseInt(e[3],10).toString(16)).slice(-2):""},getElementIcon:function(e){location.protocol,location.hostname;var t=document.createElement("img");return t.src=e,t},elementDragEndClear:function(){var e=document.getElementsByClassName("wptb-moving-mode");if(0<e.length)for(var t=0;t<e.length;t++)e[t].classList.remove("wptb-moving-mode");var a=document.getElementsByClassName("wptb-drop-handle");if(0<a.length)for(var n=0;n<a.length;n++)a[n].style.display="none";var l=document.getElementsByClassName("wptb-drop-border-marker");if(0<l.length)for(var r=0;r<l.length;r++)l[r].style.display="none"},linkHttpCheckChange:function(e){if(e){if(-1!=e.indexOf("http://")||-1!=e.indexOf("https://"))return e;var t=e.split("/"),a=void 0;return Array.isArray(t)&&0<t.length&&(a=t[t.length-1]),document.location.protocol+"//"+a}return""},dataTitleColumnSet:function(e){for(var t=e.rows,a=t[0],n=getComputedStyle(a),l=a.children,r={},o=0;o<l.length;o++){for(var i=l[o].children,s=0;s<i.length;s++){var d=i[s];if(d.classList.contains("wptb-ph-element"))if("text"==d.className.match(/wptb-element-(.+)-(\d+)/i)[1]){var c=d.querySelector("p"),m=c.textContent,p=c.style.textAlign;r[l[o].dataset.xIndex]=[m,d.style.fontSize,d.style.color,n.backgroundColor,p];break}}r[l[o].dataset.xIndex]||(r[l[o].dataset.xIndex]=["","","",n.backgroundColor,""])}for(var b=1;b<t.length;b++)for(var u=t[b].children,g=0;g<u.length;g++)r[u[g].dataset.xIndex]?(u[g].dataset.wptbTitleColumn=r[u[g].dataset.xIndex][0],u[g].dataset.wptbTitleColumnFontSize=r[u[g].dataset.xIndex][1],u[g].dataset.wptbTitleColumnColor=r[u[g].dataset.xIndex][2],u[g].dataset.wptbTitleBackgroundColor=r[u[g].dataset.xIndex][3],u[g].dataset.wptbTitleAlign=r[u[g].dataset.xIndex][4]):(u[g].dataset.wptbTitleColumn="",u[g].dataset.wptbTitleColumnFontSize="",u[g].dataset.wptbTitleColumnColor="",u[g].dataset.wptbTitleBackgroundColor="",u[g].dataset.wptbTitleAlign="")},findAncestor:function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e},getSelectionText:function(){return window.getSelection?window.getSelection().toString():document.selection.createRange().text},settingsPanelClear:function(){document.getElementById("wptb-adaptive-table-checkbox").checked=!1,document.getElementById("wptb-top-row-as-header").checked=!1,document.getElementById("wptb-table-border-slider").value=0,document.getElementById("wptb-table-border-number").value=0,document.getElementById("wptb-inner-border-check").checked=!1,document.getElementById("wptb-apply-inner-border").classList.remove("visible"),document.getElementById("wptb-table-inner-border-slider").value=1,document.getElementById("wptb-table-inner-border-number").value=1,WPTB_Helper.wpColorPickerClear("wptb-table-border-color",!0),WPTB_Helper.wpColorPickerClear("wptb-table-header-bg",!0),WPTB_Helper.wpColorPickerClear("wptb-even-row-bg",!0),WPTB_Helper.wpColorPickerClear("wptb-odd-row-bg",!0),document.getElementById("wptb-table-cell-slider").value=15,document.getElementById("wptb-table-cell-number").value=15},elementOptionsPanelClear:function(){var e=document.getElementById("element-options-group");e&&(e.innerHTML="")},wpColorPickerCheckChangeForTableStateSaving:function(e){if("external"==e.originalEvent.type)(new WPTB_TableStateSaveManager).tableStateSet();else if(WPTB_Helper.findAncestor(e.target,"wp-picker-container")&&("square"==e.originalEvent.type||"strip"==e.originalEvent.type)){var t=document.getElementsByTagName("body")[0];t.removeEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1),t.addEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1)}},irisStripMouseUpStateSaveManager:function(){(new WPTB_TableStateSaveManager).tableStateSet(),document.getElementsByTagName("body")[0].removeEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1)},wpColorPickerClear:function(e,t){var a=void 0;t?(a=[document.getElementById(e)]).length=1:a=document.getElementsByClassName(e);for(var n=0;n<a.length;n++){var l=WPTB_Helper.findAncestor(a[n],"wp-picker-container");if(l){var r=l.parentNode;r.removeChild(l);var o=document.createElement("input");t?o.setAttribute("id",e):o.classList.add("wptb-element-property",e),o.value="",r.appendChild(o)}}},detectMode:function(){var e=window.location.href,t=new RegExp("[?&]table(=([^&#]*)|&|#|$)").exec(e);return!!t&&(t[2]?decodeURIComponent(t[2].replace(/\+/g," ")):"")},getColumnWidth:function(e,t){for(var a=t.dataset.xIndex,n=e.querySelectorAll('[data-x-index="'+a+'"]'),l=t.getCellDimensions().width,r=0;r<n.length;r++)l>n[r].getCellDimensions().width&&(l=n[r].getCellDimensions().width);return l},getRowHeight:function(e,t){for(var a=t.dataset.yIndex,n=e.querySelectorAll('[data-y-index="'+a+'"]'),l=t.getCellDimensions().height,r=0;r<n.length;r++)l>n[r].getCellDimensions().height&&(l=n[r].getCellDimensions().height);return l},newElementProxy:function(e){if(e)return new WPTB_ElementObject({kind:e})},wpColorPickerChange:function(e,t){var a=void 0;a=t?t.color.toString():"";var n,l,r,o=WPTB_Helper.findAncestor(e.target,"wp-picker-input-wrap").getElementsByClassName("wptb-color-picker")[0];l=(n=o.dataset.element.match(/wptb-options-(.+)-(\d+)/i))[1],r=n[2];var i=document.getElementsByClassName("wptb-element-"+l+"-"+r)[0];if("button"==l)"button-text-color"==o.dataset.type?i.getElementsByClassName("wptb-button")[0].style.color=a:i.getElementsByClassName("wptb-button")[0].style.backgroundColor=a;else if("list"==l){var s=i.querySelectorAll("p");if(0<s.length)for(var d=0;d<s.length;d++)s[d].style.color=a}else if("star_rating"==l){if("star-color"==o.dataset.type)for(var c=i.querySelectorAll("li"),m=0;m<c.length;m++)for(var p=c[m].getElementsByTagName("span"),b=0;b<p.length;b++)p[b].style.fill=a;else if("numeral-rating-color"==o.dataset.type){i.querySelector(".wptb-number-rating").style.color=a}}else i.style.color=a},numberImputSize:function(e,t,a){e.onkeydown=function(){var e=this.value;0==(e=String(e))[0]?this.value="":(e=e.substring(0,t),this.value=e)},e.onkeyup=function(){var e=this.value;parseInt(e,10)>parseInt(a,10)&&(this.value=a),(new WPTB_TableStateSaveManager).tableStateSet()}},ucfirst:function(e){return e.charAt(0).toUpperCase()+e.slice(1)},wptbDocumentEventGenerate:function(e,t,a){if(e&&t){a||(a=!0);var n=new CustomEvent(e,{detail:a,bubbles:!0});t.dispatchEvent(n)}},elementStartScript:function(e){var t=e.className.match(/wptb-element-(.+)-(\d+)/i);if(t&&Array.isArray(t)){var a=t[1];a&&a in WPTB_ElementsScriptsLauncher&&WPTB_ElementsScriptsLauncher[a](e)}},deleteEventHandlers:function(e){if(e){jQuery(e).off();var t=e.children;if(t)for(var a=0;a<t.length;a++)WPTB_Helper.deleteEventHandlers(t[a])}},replaceAll:function(e,t,a){return e.split(t).join(a)},elementClearFromTinyMce:function(e){var t=e.querySelectorAll(".mce-content-body");if(0<t.length)for(var a=0;a<t.length;a++)t[a].classList.remove("mce-content-body");var n=e.querySelectorAll("[data-mce-style]");if(0<n.length)for(var l=0;l<n.length;l++)n[l].removeAttribute("data-mce-style");var r=e.querySelectorAll(".mce-edit-focus");if(0<r.length)for(var o=0;o<r.length;o++)r[o].classList.remove("mce-edit-focus");var i=e.querySelectorAll("[contenteditable]");if(0<i.length)for(var s=0;s<i.length;s++)i[s].removeAttribute("contenteditable");var d=e.querySelectorAll("[spellcheck]");if(0<d.length)for(var c=0;c<d.length;c++)d[c].removeAttribute("spellcheck");var m=e.querySelectorAll("[id^=mce_]");if(0<m.length)for(var p=0;p<m.length;p++)m[p].removeAttribute("id");return e},elementOptionContainerCustomClassSet:function(e,t){if(e&&t){var a=WPTB_Helper.findAncestor(e,"wptb-element-option");a&&a.classList.add(t)}},elementOptionContainerAdditionalStyles:function(e,t){if(e&&t){var a=WPTB_Helper.findAncestor(e,"wptb-element-option"),n=t.split(";");if(a&&n){var l=function(e,t){e&&(containerStyleStrArr=e.split(":"),containerStyleStrArr&&Array.isArray(containerStyleStrArr)&&(t.style[containerStyleStrArr[0]]=containerStyleStrArr[1]))};if(n&&Array.isArray(n))for(var r=0;r<n.length;r++)console.log(n),n[r]&&l(n[r],a);else l(n,a)}}},controlsInclude:function(s,d){s&&"object"===(void 0===s?"undefined":_typeof(s))&&"function"==typeof d&&s.addEventListener("click",function(){var l=s.className.match(/wptb-element-(.+)-(\d+)/i),o=void 0;if(l&&Array.isArray(l)&&(o=l[1]),!s.hasOwnProperty("сontrolsConnectIndic")||!0!==s.сontrolsConnectIndic&&o){var i=document.getElementsByClassName("wptb-element-datas");0<i.length&&function(){var e=(i=i[0]).innerHTML,r=[];if(e&&(e=JSON.parse(e))&&"object"===(void 0===e?"undefined":_typeof(e))&&"tmpl-wptb-element-datas-"+l[1]+"-"+l[2]in e){var t=e["tmpl-wptb-element-datas-"+l[1]+"-"+l[2]];t&&"object"===(void 0===t?"undefined":_typeof(t))&&Object.keys(t).forEach(function(e){var t=new RegExp("data-wptb-el-"+o+"-(\\d+)-(.+)","i"),a=e.match(t);if(a&&Array.isArray(a)){var n=e.replace("data-","");r.push([n,a[2]])}})}for(var a=function(l){s.addEventListener("wptb-control:"+r[l][0],function(){var e={},t=r[l][1],a=document.getElementsByClassName(r[l][0]);if(0<a.length&&t){var n=WPTB_Helper.targetControlValueGet(a);e[t]=n}d(e,s)},!1),s.сontrolsConnectIndic=!0},n=0;n<r.length;n++)a(n)}()}},!1)},oneControlInclude:function(n,l,e){if(!n||"object"!==(void 0===n?"undefined":_typeof(n))||"function"!=typeof l||"string"!=typeof e)return!1;var t=n.className.match(/wptb-element-((.+-)\d+)/i);if(t&&Array.isArray(t)){var a="wptb-"+t[1].split("-")[0]+"-control-stack",r=wp.template(a)({container:"."+t[0]}),o=JSON.parse(r);if(o&&"object"===(void 0===o?"undefined":_typeof(o))&&o.hasOwnProperty(e)){var i="wptb-el-"+t[1]+"-"+e;n.addEventListener("wptb-control:"+i,function(e){var t=document.getElementsByClassName(i);if(0<t.length){var a=WPTB_Helper.targetControlValueGet(t);l(a,n)}},!1)}}},innerElementCopyIncludeHandler:function(a,n){a&&"object"===(void 0===a?"undefined":_typeof(a))&&"function"==typeof n&&a.addEventListener("wptb-inner-element:copy",function(e){var t=e.detail;t&&(WPTB_Helper.elementClearFromTinyMce(t),n(t,a))},!1)},appearDependOn:function(r,e){if(Array.isArray(r)){var o=r[0],t=e.match(/wptb-el-((.+-)\d+)-(.+)/i);if(t&&Array.isArray(t)){var a=t[3],n=e.replace(a,o),l=document.getElementsByClassName(n);if(0<l.length){l=l[0];var i=document.getElementsByClassName(e);if(0<i.length){i=i[0];var s=WPTB_Helper.findAncestor(i,"wptb-element-option");if(s){var d=function(e){var t=document.getElementsByClassName("wptb-element-datas");if(0<t.length){var a=(t=t[0]).innerHTML;if(a&&(a=JSON.parse(a))&&"object"===(void 0===a?"undefined":_typeof(a))&&"tmpl-wptb-element-datas-"+e in a){var n=a["tmpl-wptb-element-datas-"+e];if(n&&"object"===(void 0===n?"undefined":_typeof(n))&&"data-wptb-el-"+e+"-"+o in n){var l=n["data-wptb-el-"+e+"-"+o];l&&(r[1]&&Array.isArray(r[1])&&-1!==r[1].indexOf(l)?s.style.display="block":r[2]&&Array.isArray(r[2])&&-1!==r[2].indexOf(l)&&(s.style.display="none"))}}}};d(t[1]),l.addEventListener("change",function(){d(t[1])},!1)}}}}}},controlsStateManager:function(e,t){var a=document.getElementsByClassName(e);if(0<a.length){var n=e.match(/wptb-el-((.+-)\d+)-(.+)/i);if(n&&Array.isArray(n))if(document.querySelector(".wptb-element-"+n[1])){var l=void 0,r={},o=void 0;if(0==(l=document.getElementsByClassName("wptb-element-datas")).length||""==l[0].innerHTML){var i=WPTB_Helper.targetControlValueGet(a);r["data-"+e]=i,(o={})["tmpl-wptb-element-datas-"+n[1]]=r,o=JSON.stringify(o),0==l.length?((l=document.createElement("script")).setAttribute("type","text/html"),l.setAttribute("class","wptb-element-datas")):l=l[0],l.innerHTML=o,document.getElementsByTagName("body")[0].appendChild(l)}else if((o=(l=l[0]).innerHTML)&&(o=JSON.parse(o))&&"object"===(void 0===o?"undefined":_typeof(o)))if(t){var s=WPTB_Helper.targetControlValueGet(a);"tmpl-wptb-element-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-element-datas-"+n[1]])||(o["tmpl-wptb-element-datas-"+n[1]]={}),o["tmpl-wptb-element-datas-"+n[1]]["data-"+e]=s,l.innerHTML=JSON.stringify(o)}else if("tmpl-wptb-element-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-element-datas-"+n[1]])&&"data-"+e in o["tmpl-wptb-element-datas-"+n[1]]){if("tmpl-wptb-element-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-element-datas-"+n[1]])&&"data-"+e in o["tmpl-wptb-element-datas-"+n[1]])for(var d=0;d<a.length;d++)if("checkbox"==a[d].type){var c=void 0;"checked"==(c=a[d].name?o["tmpl-wptb-element-datas-"+n[1]]["data-"+e][a[d].name]:o["tmpl-wptb-element-datas-"+n[1]]["data-"+e])?a[d].checked=!0:"unchecked"==c&&(a[d].checked=!1)}else a[d].value=o["tmpl-wptb-element-datas-"+n[1]]["data-"+e]}else{var m=WPTB_Helper.targetControlValueGet(a);"tmpl-wptb-element-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-element-datas-"+n[1]])||(o["tmpl-wptb-element-datas-"+n[1]]={}),o["tmpl-wptb-element-datas-"+n[1]]["data-"+e]=m,l.innerHTML=JSON.stringify(o)}}}},targetControlValueGet:function(e){for(var t=void 0,a=0;a<e.length;a++)"checkbox"==e[a].type&&e[a].name?(t||(t={}),1==e[a].checked?t[e[a].name]="checked":t[e[a].name]="unchecked"):t="checkbox"==e[a].type?1==e[a].checked?"checked":"unchecked":e[a].value;return t},elementControlsStateCopy:function(e,t){if(e&&t){var a=e.className.match(/wptb-element-((.+-)\d+)/i),n=t.className.match(/wptb-element-((.+-)\d+)/i);if(a&&Array.isArray(a)&&n&&Array.isArray(n)){var l=a[1],r=n[1],o=document.getElementsByClassName("wptb-element-datas");if(0<o.length){var i=(o=o[0]).innerHTML;if(i&&(i=JSON.parse(i))&&"object"===(void 0===i?"undefined":_typeof(i))){var s=i["tmpl-wptb-element-datas-"+l];if(s&&"object"===(void 0===s?"undefined":_typeof(s))){var d={};Object.keys(s).forEach(function(e){var t=s[e],a=e.replace(l,r);d[a]=t}),0<Object.keys(d).length&&(i["tmpl-wptb-element-datas-"+r]=d,i=JSON.stringify(i),o.innerHTML=i)}}}}}},elementControlsStateDelete:function(e){var t=e.className.match(/wptb-element-(.+)-(\d+)/i),a=document.getElementsByTagName("body")[0],n=a.getElementsByClassName("wptb-element-datas");if(t&&Array.isArray(t)&&0<n.length){var l=(n=n[0]).innerHTML;l&&(l=JSON.parse(l))&&"object"===(void 0===l?"undefined":_typeof(l))&&"tmpl-wptb-element-datas-"+t[1]+"-"+t[2]in l&&(delete l["tmpl-wptb-element-datas-"+t[1]+"-"+t[2]],0==Object.keys(l).length?a.removeChild(n):(l=JSON.stringify(l),n.innerHTML=l))}}}),WPTB_Initializer=function(){var e=document.body;columnsDecrementButton=e.getElementsByClassName("wptb-input-number-decrement")[0],columnsIncrementButton=e.getElementsByClassName("wptb-input-number-increment")[0],rowsDecrementButton=e.getElementsByClassName("wptb-input-number-decrement")[1],rowsIncrementButton=e.getElementsByClassName("wptb-input-number-increment")[1],columnsInput=document.getElementById("wptb-columns-number"),rowsInput=document.getElementById("wptb-rows-number"),columnsDecrementButton.onclick=function(){1<columnsInput.value&&columnsInput.value--},columnsIncrementButton.onclick=function(){columnsInput.value<30&&columnsInput.value++},rowsDecrementButton.onclick=function(){1<rowsInput.value&&rowsInput.value--},rowsIncrementButton.onclick=function(){rowsInput.value<30&&rowsInput.value++},document.getElementById("wptb-generate-table").onclick=function(){var e=document.getElementById("wptb-columns-number").value,t=document.getElementById("wptb-rows-number").value;WPTB_Table(e,t),(new WPTB_TableStateSaveManager).tableStateSet()}},WPTB_LeftPanel=function(){var e,t,a,n,r=document.getElementsByClassName("wptb-preview-table")[0],l=document.getElementsByClassName("wptb-element");function o(e,t){if(!(3<t)&&r){var a=r.getElementsByTagName("tr");if(a.length>t){var n=a[t].style.backgroundColor,l=document.getElementById(e);l&&n&&(l.value=WPTB_Helper.rgbToHex(n))}}}function i(e){for(var t=r.getElementsByTagName("td"),a=0;a<t.length;a++)t[a].style.borderWidth=document.querySelector("#wptb-table-inner-border-number").value+"px",t[a].style.borderStyle="solid"}function s(e){for(var t=r.getElementsByTagName("td"),a=0;a<t.length;a++)t[a].style.padding=e+"px"}function d(e){r.style.borderWidth=e+"px",r.style.borderStyle="solid"}o("wptb-even-row-bg",1),jQuery("#wptb-even-row-bg").wpColorPicker({change:function(e,t){for(var a=r.getElementsByTagName("tr"),n=1;n<a.length;n+=2)a[n].style.backgroundColor=t.color.toString();WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving(e)},clear:function(){for(var e=r.getElementsByTagName("tr"),t=1;t<e.length;t+=2){e[t].style.backgroundColor="";for(var a=e[t].getElementsByTagName("td"),n=0;n<a.length;n++)a[n].style.backgroundColor=""}(new WPTB_TableStateSaveManager).tableStateSet()}}),o("wptb-odd-row-bg",2),jQuery("#wptb-odd-row-bg").wpColorPicker({change:function(e,t){for(var a=r.getElementsByTagName("tr"),n=2;n<a.length;n+=2)a[n].style.backgroundColor=t.color.toString();WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving(e)},clear:function(){for(var e=r.getElementsByTagName("tr"),t=2;t<e.length;t+=2){e[t].style.backgroundColor="";for(var a=e[t].getElementsByTagName("td"),n=0;n<a.length;n++)a[n].style.backgroundColor=""}(new WPTB_TableStateSaveManager).tableStateSet()}}),o("wptb-table-header-bg",0),jQuery("#wptb-table-header-bg").wpColorPicker({change:function(e,t){r.getElementsByTagName("tr")[0].style.backgroundColor=t.color.toString(),(new WPTB_TableStateSaveManager).tableStateSet()},clear:function(){var e=r.getElementsByTagName("tr")[0];e.style.backgroundColor="";for(var t=e.getElementsByTagName("td"),a=0;a<t.length;a++)t[a].style.backgroundColor="";WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving(event)}}),e=r,t=document.getElementById("wptb-adaptive-table-checkbox"),e&&e.dataset.wptbAdaptiveTable&&"1"==e.dataset.wptbAdaptiveTable?t.checked=!0:t.checked=!1,a=r,n=document.getElementById("wptb-top-row-as-header"),a&&a.classList.contains("wptb-table-preview-head")?n.checked=!0:n.checked=!1,function(){var e=document.getElementsByClassName("wptb-preview-table");if(0<e.length){var t=e[0].style.borderColor;if(t){var a=document.getElementById("wptb-table-border-color");a&&(a.value=WPTB_Helper.rgbToHex(t))}var n=e[0].style.borderWidth;if(n){var l=document.getElementById("wptb-table-border-slider"),r=document.getElementById("wptb-table-border-number");l&&(l.value=parseInt(n)),r&&(r.value=parseInt(n))}var o=e[0].querySelector("td").style.borderWidth;if(o){var i=document.getElementById("wptb-inner-border-check"),s=document.getElementById("wptb-apply-inner-border");if(o&&0<parseInt(o)){if(i&&(i.checked=!0,s)){s.classList.add("visible");var d=document.getElementById("wptb-table-inner-border-slider"),c=document.getElementById("wptb-table-inner-border-number");d.value=parseInt(o),c.value=parseInt(o)}}else i.checked=!1}(n&&0<parseInt(n)||o&&0<parseInt(o))&&(document.getElementById("wptb-table-border-color-set-area").style.display="")}}(),jQuery("#wptb-table-border-color").wpColorPicker({change:function(e,t){var a=r.getElementsByTagName("td");r.style.border=document.querySelector("#wptb-table-border-number").value+"px solid "+t.color.toString();for(var n=0;n<a.length;n++){var l=document.querySelector("#wptb-table-inner-border-number").value;document.getElementById("wptb-inner-border-check").checked&&(a[n].style.border=(0!=l?l:1)+"px solid "+t.color.toString())}WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving(e)},clear:function(){var e=r.getElementsByTagName("td");r.style.borderColor="";for(var t=0;t<e.length;t++)e[t].style.borderColor="";(new WPTB_TableStateSaveManager).tableStateSet()}}),function(){var e=document.getElementsByClassName("wptb-preview-table");if(0<e.length){var t=e[0].querySelector("td");if(t){var a=t.style.padding;if(a){var n=document.getElementById("wptb-table-cell-slider"),l=document.getElementById("wptb-table-cell-number");n&&(n.value=parseInt(a)),l&&(l.value=parseInt(a))}}}}();var c=document.getElementById("wptb-table-border-number");WPTB_Helper.numberImputSize(c,1,50);var m=document.getElementById("wptb-table-inner-border-number");WPTB_Helper.numberImputSize(m,1,50);var p=document.getElementById("wptb-table-cell-number");WPTB_Helper.numberImputSize(p,1,50);var b=document.getElementById("wptb-table-column-width-number");WPTB_Helper.numberImputSize(b,2,500);var u=document.getElementById("wptb-table-row-height-number");WPTB_Helper.numberImputSize(u,2,200),document.getElementById("wptb-table-cell-slider").oninput=function(){document.getElementById("wptb-table-cell-number").value=this.value,s(this.value),r.tdDefaultWidth()},document.getElementById("wptb-table-cell-slider").onchange=function(){(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-cell-number").onchange=function(){document.getElementById("wptb-table-cell-slider").value=this.value,s(this.value),r.tdDefaultWidth(),(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-border-slider").oninput=function(){document.getElementById("wptb-table-border-number").value=this.value,d(this.value),r.tdDefaultWidth();var e=document.getElementById("wptb-inner-border-check").checked,t=document.getElementById("wptb-table-border-color-set-area");0==this.value&&0==e?t.style.display="none":t.style.display=""},document.getElementById("wptb-table-border-slider").onchange=function(){(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-border-number").onchange=function(){document.getElementById("wptb-table-border-slider").value=this.value,d(this.value),r.tdDefaultWidth(),(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-inner-border-slider").oninput=function(){document.getElementById("wptb-table-inner-border-number").value=this.value,i(this.value),r.tdDefaultWidth()},document.getElementById("wptb-table-inner-border-slider").onchange=function(){(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-inner-border-number").onchange=function(){document.getElementById("wptb-table-inner-border-slider").value=this.value,i(this.value),r.tdDefaultWidth(),(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-inner-border-check").onchange=function(){if(r){var e=this.checked?"checked":"unchecked";!function(e){var t=null!=document.querySelector("#wptb-table-border-color").value?document.querySelector("#wptb-table-border-color").value:"rgb(0,0,0)";0!=document.querySelector("#wptb-table-inner-border-slider").value&&0!=document.querySelector("#wptb-table-inner-border-number").value||(document.querySelector("#wptb-table-inner-border-slider").value=1,document.querySelector("#wptb-table-inner-border-number").value=1);var a=document.querySelector("#wptb-table-inner-border-slider").value+"px",n=document.getElementsByClassName("wptb-preview-table");if(0<n.length)if("checked"==e){document.getElementById("wptb-apply-inner-border").style.marginBottom="0px";for(var l=n[0].getElementsByTagName("td"),r=0;r<l.length;r++)l[r].style.border=a+" solid "+t;document.getElementById("wptb-apply-inner-border").classList.add("visible")}else for(document.getElementById("wptb-apply-inner-border").classList.remove("visible"),l=n[0].getElementsByTagName("td"),r=0;r<l.length;r++)l[r].style.border="0px solid "+t,l[r].style.border=null}(e);var t=document.getElementById("wptb-table-border-slider").value,a=document.getElementById("wptb-table-border-color-set-area");a.style.display="unchecked"==e&&0==t?"none":"",(new WPTB_TableStateSaveManager).tableStateSet()}},document.getElementById("wptb-table-column-width-slider").oninput=function(){document.getElementById("wptb-table-column-width-number").value=this.value,r.addColumnWidth(this.value)},document.getElementById("wptb-table-column-width-slider").onchange=function(){(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-column-width-number").onchange=function(){document.getElementById("wptb-table-column-width-slider").value=this.value,r.addColumnWidth(this.value),(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-column-width-auto-fixed").onchange=function(){if(this.checked){var e=r.querySelector(".wptb-highlighted"),t=WPTB_Helper.getColumnWidth(r,e);r.addColumnWidth(t)}else{r.addColumnWidth(!1,!0);var a=r.querySelector(".wptb-highlighted"),n=WPTB_Helper.getColumnWidth(r,a);document.getElementById("wptb-table-column-width-number").value=n,document.getElementById("wptb-table-column-width-slider").value=n}(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-row-height-slider").oninput=function(){document.getElementById("wptb-table-row-height-number").value=this.value,r.addRowHeight(this.value)},document.getElementById("wptb-table-row-height-slider").onchange=function(){(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-row-height-number").onchange=function(){document.getElementById("wptb-table-row-height-slider").value=this.value,r.addRowHeight(this.value),(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-table-row-height-auto-fixed").onchange=function(){if(this.checked){var e=r.querySelector(".wptb-highlighted"),t=WPTB_Helper.getRowHeight(r,e);r.addRowHeight(t)}else{r.addRowHeight(!1,!0);var a=r.querySelector(".wptb-highlighted"),n=WPTB_Helper.getRowHeight(r,a);document.getElementById("wptb-table-row-height-number").value=n,document.getElementById("wptb-table-row-height-slider").value=n}(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-adaptive-table-checkbox").onchange=function(){this.checked?r.dataset.wptbAdaptiveTable=1:r.dataset.wptbAdaptiveTable=0,(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementById("wptb-top-row-as-header").onchange=function(){!function(e,t){if(t.checked)WPTB_Helper.dataTitleColumnSet(e),e.classList.add("wptb-table-preview-head"),e.rows[0].classList.add("wptb-table-head");else{var a=e.rows;e.classList.remove("wptb-table-preview-head"),a[0].classList.remove("wptb-table-head");for(var n=1;n<a.length;n++)for(var l=a[n].children,r=0;r<l.length;r++)l[r].removeAttribute("data-wptb-title-column"),l[r].removeAttribute("data-wptb-title-column-font-size"),l[r].removeAttribute("data-wptb-title-column-color"),l[r].removeAttribute("data-wptb-title-background-color"),l[r].removeAttribute("data-wptb-title-align")}}(r,this),(new WPTB_TableStateSaveManager).tableStateSet()};for(var g=0;g<l.length;g++)l[g].ondragstart=function(e){e.dataTransfer.setData("wptbElement",this.dataset.wptbElement),e.dataTransfer.setData("wptbElIndic-"+this.dataset.wptbElement,"wptbElIndic-"+this.dataset.wptbElement)};r&&(document.getElementById("wptb-activate-cell-management-mode").onclick=r.toggleTableEditMode,document.getElementById("wptb-table-edit-mode-close").onclick=r.toggleTableEditMode,document.getElementById("wptb-left-scroll-panel-curtain-close").onclick=r.toggleTableEditMode,document.getElementById("wptb-add-end-row").onclick=r.addRowToTheEnd,document.getElementById("wptb-add-start-row").onclick=r.addRowToTheStart,document.getElementById("wptb-add-row-before").onclick=r.addRowBefore,document.getElementById("wptb-add-row-after").onclick=r.addRowAfter,document.getElementById("wptb-add-end-column").onclick=r.addColumnEnd,document.getElementById("wptb-add-start-column").onclick=r.addColumnStart,document.getElementById("wptb-add-column-before").onclick=r.addColumnBefore,document.getElementById("wptb-add-column-after").onclick=r.addColumnAfter,document.getElementById("wptb-delete-column").onclick=r.deleteColumn,document.getElementById("wptb-delete-row").onclick=r.deleteRow,document.getElementById("wptb-merge-cells").onclick=r.mergeCells,document.getElementById("wptb-split-cell").onclick=r.splitCell),document.querySelector(".wptb-left-panel-extend").onclick=function(){var e=document.querySelector(".wptb-container");e&&(e.classList.contains("collapsed")?e.classList.remove("collapsed"):e.classList.add("collapsed"))},document.getElementsByClassName("wptb-builder-panel")[0].onclick=function(e){e.target.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.target,"wptb-ph-element")||e.target.classList.contains("wptb-fixed-toolbar")||WPTB_Helper.findAncestor(e.target,"wptb-fixed-toolbar")||v()};var w=document.getElementsByClassName("wptb-header");function v(){document.getElementsByClassName("wptb-elements-container")[0].style.display="table",document.getElementsByClassName("wptb-settings-section")[0].style.display="block",document.getElementById("element-options-group").style.display="none";var e=document.getElementById("wpcd_fixed_toolbar");e.hasAttribute("data-toolbar-active-id")&&document.getElementById(e.getAttribute("data-toolbar-active-id")).classList.remove("toolbar-active")}0<w.length&&(w=w[0]),w.onclick=function(){v()},document.querySelector(".wptb-panel-left").addEventListener("click",function(e){e.target.classList.contains("wptb-exit-options")&&v()})},MultipleSelect=function(){var l=[],a=!1;return this.activateMultipleSelectMode=function(){l=[];for(var e=document.getElementsByClassName("wptb-preview-table")[0].getElementsByTagName("td"),t=0;t<e.length;t++)e[t].classList.remove("wptb-highlighted");a=!0},this.deactivateMultipleSelectMode=function(){a=!1},this.isActivated=function(){return a},this.pushSelectedCell=function(e){a&&(l.push(e),e.classList.add("wptb-highlighted"))},this.selectedCells=function(){return l},this.flushSelectedCells=function(){l=[]},this.getFirst=function(){for(var e,t=1e3,a=1e3,n=l.length-1;0<=n;n--)t>=l[n].dataset.xIndex&&a>=l[n].dataset.yIndex&&(e=l[n],t=l[n].dataset.xIndex,a=l[n].dataset.yIndex);return e},this.getLast=function(){for(var e,t=-1,a=-1,n=l.length-1;0<=n;n--)t<=l[n].dataset.xIndex&&a<=l[n].dataset.yIndex&&(e=l[n],t=l[n].dataset.xIndex,a=l[n].dataset.yIndex);return e},this.removeAllButFirst=function(){for(var e=this.getFirst(),t=1;t<l.length;t++)l[t].classList.add("wptb-fused-cell-"+e.dataset.xIndex+"-"+e.dataset.yIndex)},this};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var WPTB_Parser=function(e){var t=document.createElement("div");t.innerHTML=e;for(var a=t.children[0],n=[].concat(_toConsumableArray(a.querySelectorAll(".wptb-column-title-mobile-container"))),l=0;l<n.length;l++){n[l].parentNode.removeChild(n[l])}for(var r=a.querySelectorAll("td"),o=0;o<r.length;o++)r[o].classList.add("wptb-droppable"),r[o].classList.remove("wptb-column-title-mobile-not-elements");return a};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};Object.keys||(Object.keys=function(){"use strict";var l=Object.prototype.hasOwnProperty,r=!{toString:null}.propertyIsEnumerable("toString"),o=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],i=o.length;return function(e){if("object"!==(void 0===e?"undefined":_typeof(e))&&("function"!=typeof e||null===e))throw new TypeError("Object.keys called on non-object");var t,a,n=[];for(t in e)l.call(e,t)&&n.push(t);if(r)for(a=0;a<i;a++)l.call(e,o[a])&&n.push(o[a]);return n}}());var WPTB_Settings=function(){for(var e=document.getElementsByClassName("wptb-element"),t=0;t<e.length;t++)e[t].ondragstart=function(e){e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("wptbElement",e.target.dataset.wptbElement),e.dataTransfer.setData("wptbElIndic-"+e.target.dataset.wptbElement,"wptbElIndic-"+e.target.dataset.wptbElement)},e[t].ondragend=function(){WPTB_Helper.elementDragEndClear()};var a=new WPTB_TableStateSaveManager,n=document.getElementsByClassName("wptb-undo");0<n.length&&((n=n[0]).onclick=function(e){if(!this.classList.contains("wptb-undoredo-disabled")){a.tableStateGet(this.dataset.wptbUndoredo);var t=document.getElementsByClassName("wptb-undo-redo-container");0<t.length&&((t=t[0]).onmouseleave=function(e){e.target.onmouseleave="",WPTB_Table()})}});var l=document.getElementsByClassName("wptb-redo");0<l.length&&((l=l[0]).onclick=function(e){if(!this.classList.contains("wptb-undoredo-disabled")){a.tableStateGet(this.dataset.wptbUndoredo);var t=document.getElementsByClassName("wptb-undo-redo-container");0<t.length&&((t=t[0]).onmouseleave=function(e){e.target.onmouseleave="",WPTB_Table()})}});var r=document.getElementsByClassName("wptb-popup-window-modal")[0];document.getElementsByClassName("wptb-embed-btn")[0].onclick=function(){this.classList.contains("wptb-button-disable")||r.classList.add("wptb-popup-show")},window.onbeforeunload=function(e){return 0==document.getElementsByClassName("wptb-save-disabled").length||null},document.getElementsByClassName("wptb-popup-dark-area")[0].onclick=function(){r.classList.remove("wptb-popup-show")},document.getElementsByClassName("wptb-popup-window-close-icon")[0].onclick=function(){r.classList.remove("wptb-popup-show")},document.getElementsByClassName("wptb-preview-btn")[0].onclick=function(e){this.classList.contains("wptb-button-disable")&&e.preventDefault()},document.getElementsByClassName("wptb-save-btn")[0].onclick=function(r){if((r.target.dataset.wptbTableStateNumberSave||0!=window.wptbTableStateNumberShow)&&window.wptbTableStateNumberShow!=r.target.dataset.wptbTableStateNumberSave){var e=document.querySelector(".wptb-edit-bar");if(e&&e.classList.contains("visible"))document.getElementsByClassName("wptb-preview-table")[0].toggleTableEditMode();var o=new XMLHttpRequest,t=(wptb_admin_object?wptb_admin_object.ajaxurl:ajaxurl)+"?action=save_table",i=document.getElementById("wptb-setup-name").value.trim(),s=void 0,a=void 0,n=void 0;a=0<(a=document.getElementsByClassName("wptb-preview-table")).length?(a=WPTB_Stringifier(a[0])).outerHTML:"",n="";var l=document.getElementsByClassName("wptb-element-datas");if(0<l.length&&l[0].innerHTML&&(n=l[0].innerHTML),""===i||""===a){var d="";return""===i&&(d+="You must assign a name to the table before saving it.</br>"),""===a&&(d+="Table wasn't created"),(s=document.getElementById("wptb-messaging-area")).innerHTML='<div class="wptb-error wptb-message">Error: '+d+"</div>",s.classList.add("wptb-warning"),void setTimeout(function(){s.removeChild(s.firstChild)},4e3)}var c={title:i,content:a,elements_datas:n,security_code:wptb_admin_object.security_code};((rs=WPTB_Helper.detectMode())||(rs=document.wptbId))&&(c.id=rs),c=JSON.stringify(c),o.open("POST",t,!0),o.setRequestHeader("Content-type","application/json; charset=utf-8"),o.onreadystatechange=function(e){if(4==this.readyState&&200==this.status){var t=JSON.parse(o.responseText);if(s=document.getElementById("wptb-messaging-area"),"saved"==t[0]){document.wptbId=t[1],s.innerHTML='<div class="wptb-success wptb-message">Table "'+i+'" was successfully saved.</div>',document.getElementsByClassName("wptb-embed-btn")[0].classList.remove("wptb-button-disable"),document.getElementById("wptb-embed-shortcode").value="[wptb id="+t[1]+"]";var a=document.getElementsByClassName("wptb-preview-btn");if(0<a.length){(a=a[0]).classList.remove("wptb-button-disable");var n=a.dataset.previewHref;n=n.replace("empty",t[1]),a.setAttribute("href",n)}}else if("edited"==t[0]){s.innerHTML='<div class="wptb-success wptb-message">Table "'+i+'" was successfully updated.</div>',r.target.dataset.wptbTableStateNumberSave=window.wptbTableStateNumberShow;var l=document.getElementsByClassName("wptb-save-btn");0<l.length&&(l=l[0]).classList.add("wptb-save-disabled")}else s.innerHTML='<div class="wptb-error wptb-message">Safety problems</div>';s.classList.add("wptb-success"),setTimeout(function(){s.removeChild(s.firstChild)},4e3)}},o.send(c)}}},WPTB_Stringifier=function(e){if(e){var t=e.cloneNode(!0);t.classList.add("wptb-table-preview-static-indic"),t.dataset.tableColumns=e.columns,t.style.width=null,t.style.minWidth=null,t.style.maxWidth=null;var a=t.getElementsByTagName("td");if(0<a.length)for(var n=0;n<a.length;n++){e.querySelector("wptb-table-preview-head")&&a[n].removeAttribute("data-x-index"),a[n].removeAttribute("data-y-index"),a[n].removeAttribute("draggable"),a[n].classList.remove("wptb-droppable");var l=a[n].getElementsByClassName("wptb-ph-element");if(0<l.length)for(var r=0;r<l.length;r++){var o=l[r].querySelectorAll(".mce-content-body");if(0<o.length)for(var i=0;i<o.length;i++)o[i].classList.remove("mce-content-body");var s=l[r].querySelectorAll("[data-mce-style]");if(0<s.length)for(var d=0;d<s.length;d++)s[d].removeAttribute("data-mce-style");var c=l[r].querySelectorAll("[contenteditable]");if(0<c.length)for(var m=0;m<c.length;m++)c[m].removeAttribute("contenteditable");var p=l[r].querySelectorAll("[spellcheck]");if(0<p.length)for(var b=0;b<p.length;b++)p[b].removeAttribute("spellcheck");var u=l[r].querySelectorAll("[id^=mce_]");if(0<u.length)for(var g=0;g<u.length;g++)u[g].removeAttribute("id");for(var w=l[r].querySelectorAll(".wptb-actions"),v=w.length;0<v&&w[0]&&w[0].parentNode;)w[0].parentNode.removeChild(w[0]),v--}if(a[n].hasAttribute("data-wptb-title-column")){var h=document.createElement("div"),f=document.createElement("div");h.classList.add("wptb-column-title-mobile-container"),f.classList.add("wptb-column-title-mobile"),f.dataset.wptbTitleColumn=a[n].dataset.wptbTitleColumn,f.setAttribute("style","font-size:"+a[n].dataset.wptbTitleColumnFontSize+"; \n color:"+a[n].dataset.wptbTitleColumnColor+"; background-color:"+a[n].dataset.wptbTitleBackgroundColor+"; text-align:"+a[n].dataset.wptbTitleAlign+";"),f.style.padding=a[n].style.padding,0==a[n].children.length&&a[n].classList.add("wptb-column-title-mobile-not-elements"),h.appendChild(f),a[n].insertBefore(h,a[n].firstChild)}}return t}},array=(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},[]),WPTB_Table=function(e,t){var P,a,n,v,l=document.getElementsByClassName("wptb-settings-items"),y=document.getElementsByClassName("wptb-table-setup")[0],S=function(e){var t,a=this.rowSpan,n=this.colSpan,l=document.getElementsByClassName("wptb-no-cell-action"),r=document.getElementsByClassName("wptb-single-action"),o=document.getElementsByClassName("wptb-multiple-select-action"),i=document.getElementById("wptb-left-scroll-panel-cell-settings"),s=T(this),d=s[0],c=s[1];if(document.select.isActivated()){if(this.className.match(/wptb-highlighted/)){this.classList.remove("wptb-highlighted");for(var m=0;m<a;m++)for(var p=0;p<n;p++)array[d+m][c+p]=0}else{this.classList.add("wptb-highlighted");for(m=0;m<a;m++)for(p=0;p<n;p++)array[d+m][c+p]=1}if(0===(t=document.getElementsByClassName("wptb-highlighted").length)){for(m=0;m<o.length;m++)o[m].classList.remove("visible"),o[m].setAttribute("disabled","disabled");for(m=0;m<l.length;m++)l[m].classList.add("visible"),l[m].removeAttribute("disabled");for(m=0;m<r.length;m++)r[m].classList.remove("visible"),r[m].setAttribute("disabled","disabled");i.classList.remove("visible")}else if(1===t){for(m=0;m<o.length;m++)o[m].classList.remove("visible"),o[m].setAttribute("disabled","disabled");for(m=0;m<l.length;m++)l[m].classList.remove("visible"),l[m].setAttribute("disabled","disabled");for(m=0;m<r.length;m++)r[m].classList.add("visible"),r[m].removeAttribute("disabled");var b=document.querySelector(".wptb-highlighted");if(b){var u=document.getElementById("wptb-table-column-width-slider"),g=document.getElementById("wptb-table-column-width-number"),w=document.getElementById("wptb-table-column-width-auto-fixed"),v=b.style.width;if(v)u.value=parseFloat(v,10),g.value=parseFloat(v,10),w.checked=!0;else if(b.dataset.wptbFixedWidth)u.value=b.dataset.wptbFixedWidth,g.value=b.dataset.wptbFixedWidth,w.checked=!0;else{var h=WPTB_Helper.getColumnWidth(P,b);u.value=h,g.value=h,w.checked=!1}var f=document.getElementById("wptb-table-row-height-slider"),y=document.getElementById("wptb-table-row-height-number"),S=document.getElementById("wptb-table-row-height-auto-fixed"),B=b.style.height;if(B)f.value=parseFloat(B,10),y.value=parseFloat(B,10),S.checked=!0;else if(b.dataset.wptbFixedHeight)f.value=b.dataset.wptbFixedHeight,y.value=b.dataset.wptbFixedHeight,S.checked=!0;else{var E=WPTB_Helper.getRowHeight(P,b);f.value=E,y.value=E,S.checked=!1}}i.classList.add("visible")}else{for(m=0;m<o.length;m++)P.isSquare(array)?(o[m].classList.add("visible"),o[m].removeAttribute("disabled")):(o[m].classList.remove("visible"),o[m].setAttribute("disabled","disabled"));for(m=0;m<l.length;m++)l[m].classList.remove("visible"),l[m].setAttribute("disabled","disabled");for(m=0;m<r.length;m++)r[m].classList.remove("visible"),r[m].setAttribute("disabled","disabled");i.classList.remove("visible")}}},B=function(e){for(var t=0;t<e.length;t++){for(var a=0;a<e[t].length;a++)" "+e[t][a];"\n"}P.isSquare(e)},E=function(){for(var e=document.getElementsByClassName("wptb-no-cell-action"),t=document.getElementsByClassName("wptb-single-action"),a=document.getElementsByClassName("wptb-multiple-select-action"),n=document.getElementById("wptb-left-scroll-panel-cell-settings"),l=P.getElementsByClassName("wptb-highlighted");l.length;)l[0].classList.remove("wptb-highlighted");n.classList.remove("visible");for(var r=0;r<array.length;r++)for(var o=0;o<array[r].length;o++)array[r][o]=0;for(r=0;r<a.length;r++)a[r].classList.remove("visible"),a[r].setAttribute("disabled","disabled");for(r=0;r<e.length;r++)e[r].classList.add("visible"),e[r].removeAttribute("disabled");for(r=0;r<t.length;r++)t[r].classList.remove("visible"),t[r].setAttribute("disabled","disabled")},T=function(e){for(var t=[],a=0;a<v;a++)t[a]=0;for(a=0;a<P.rows.length;a++)for(var n=P.rows[a].getElementsByTagName("td"),l=cellPointer=0;l<v;l+=stepsToMove)if(stepsToMove=1,t[l])t[l]--;else{var r=n[cellPointer++];if(r==e)return[a,l];if(1<r.rowSpan){for(var o=0;o<r.colSpan;o++)t[l+o]=r.rowSpan-1;stepsToMove=r.colSpan}else 1<r.colSpan&&(stepsToMove=r.colSpan)}};if(jQuery("#wptb-table-header-bg").val(""),jQuery("#wptb-even-row-bg").val(""),jQuery("#wptb-odd-row-bg").val(""),jQuery("#wptb-table-border-color").val(""),jQuery("#wptb-table-inner-border-number,#wptb-table-inner-border-slider").val("0"),jQuery("#wptb-table-border-number,#wptb-table-border-slider").val("0"),jQuery("#wptb-table-padding-number,#wptb-table-padding-slider").val("15"),e||t){for(var r=0;r<l.length;r++)"wptb-apply-inner-border"!==l[r].id&&l[r].classList.add("visible");(P=document.createElement("table")).classList.add("wptb-preview-table"),P.dataset.reconstraction=1,P.dataset.wptbAdaptiveTable=1;for(r=0;r<t;r++){(a=P.insertRow(-1)).classList.add("wptb-row");for(var g=0;g<e;g++)(n=new WPTB_Cell(S)).setCoords(r,g),a.appendChild(n.getDOMElement())}}else{var o=document.getElementsByClassName("wptb-preview-table");if(0<o.length){var i=(P=o[0]).getElementsByTagName("td");if(0<i.length)for(var s=0;s<i.length;s++)WPTB_Cell(S,i[s])}}P.toggleTableEditMode=function(){var e=document.getElementsByClassName("wptb-edit-bar"),t=document.getElementById("wptb-cell_mode_background"),a=document.getElementById("wptb-left-scroll-panel-curtain"),n=document.getElementById("wptb-left-scroll-panel-cell-settings"),l=document.getElementsByClassName("wptb-preview-table");if(0<l.length&&(l=l[0]),0<e.length)for(var r=0;r<e.length;r++)if(e[r].classList.contains("visible")){document.select.deactivateMultipleSelectMode(),e[r].classList.remove("visible"),t.classList.remove("visible"),a.classList.remove("visible"),n.classList.remove("visible"),l.parentNode.classList.remove("wptb-preview-table-manage-cells");var o=l.getElementsByTagName("td");if(0<o.length)for(var i=0;i<o.length;i++)o[i].classList.remove("wptb-highlighted")}else document.select.activateMultipleSelectMode(),e[r].classList.add("visible"),t.classList.add("visible"),a.classList.add("visible"),l.parentNode.classList.add("wptb-preview-table-manage-cells")},P.recalculateIndexes=function(e){for(var t=this.getElementsByTagName("tr"),a=void 0,n=0,l=0,r=[],o=document.getElementById("wptb-top-row-as-header"),i=0;i<t.length;i++){0==i?(null==e&&(t[i].style.backgroundColor=jQuery("#wptb-table-header-bg").val()),o.checked?null==e&&(this.classList.add("wptb-table-preview-head"),t[i].classList.add("wptb-table-head")):null==e&&(this.classList.remove("wptb-table-preview-head"),t[i].classList.remove("wptb-table-head"))):(i%2==0?null==e&&(t[i].style.backgroundColor=jQuery("#wptb-odd-row-bg").val()):null==e&&(t[i].style.backgroundColor=jQuery("#wptb-even-row-bg").val()),t[i].classList.remove("wptb-table-head")),r[i],a=t[i].getElementsByTagName("td"),null==r[i]&&(r[i]=[]);for(var s=0,d=0;d<a.length;d++){if(null!=r[i][d])for(var c=0;c<100;c++){if(null==r[i][s]){r[i][s]=a[d],a[d].dataset.xIndex=s;break}s++}else r[i][d]=a[d],a[d].dataset.xIndex=s;if(a[d].dataset.yIndex=i,1<a[d].colSpan)for(var m=1;m<a[d].colSpan;m++)s++,r[i][s]="tdDummy";if(1<a[d].rowSpan)for(var p=1;p<a[d].rowSpan;p++){null==r[i+p]&&(r[i+p]=[]);for(var b=0;b<a[d].colSpan;b++)r[i+p][s-a[d].colSpan+1+b]="tdDummy"}s++,0==i&&(l=s)}n<d&&(n=d)}this.columns=n,this.maxCols=l},P.addColumnWidth=function(p,b){var e=P.getElementsByClassName("wptb-highlighted");if(0<e.length){for(var t=0;t<e.length;t++){var a=e[t].dataset.xIndex;a&&function e(t,a){for(var n=P.rows,l=!1,r=[],o=0;o<n.length;o++)for(var i=n[o].children,s=0;s<i.length;s++){var d=i[s];if(d.dataset.xIndex==t){if(p)if(d.colSpan==a){d.style.width=p+"px",d.removeAttribute("data-wptb-fixed-width"),l=!0;var c=document.getElementById("wptb-table-column-width-auto-fixed");c.checked||(c.checked=!0)}else d.style.width=null,d.dataset.wptbFixedWidth=p,o!=n.length-1||l||e(t,a+1);else if(b)d.style.width=null,d.removeAttribute("data-wptb-fixed-width");else if(d.dataset.wptbFixedWidth)d.colSpan==a&&(d.style.width=d.dataset.wptbFixedWidth+"px",d.removeAttribute("data-wptb-fixed-width"));else if(d.style.width){for(var m=0;m<r.length;m++)r[m].style.width=d.style.width;r=[]}else r.push(d);break}}}(a,1)}P.tdDefaultWidth()}},P.tdDefaultWidth=function(){for(var e,t=P.rows,a=0,n=0,l=document.getElementsByClassName("wptb-table-setup")[0].offsetWidth,r=[],o=[],i=0,s=0,d="",c=0;c<t.length;c++)for(var m=t[c].children,p=0;p<m.length;p++){var b=m[p];if(r[parseInt(b.dataset.xIndex)]||o[parseInt(b.dataset.xIndex)])o[parseInt(b.dataset.xIndex)]?b.dataset.wptbFixedWidth||(b.dataset.wptbCssTdAutoWidth=!0):r[parseInt(b.dataset.xIndex)]&&b.removeAttribute("data-wptb-css-td-auto-width");else if(b.style.width?(r[parseInt(b.dataset.xIndex)]=parseFloat(b.style.width),b.removeAttribute("data-wptb-css-td-auto-width")):b.dataset.wptbFixedWidth||(o[parseInt(b.dataset.xIndex)]=100,b.dataset.wptbCssTdAutoWidth=!0),window.getComputedStyle(b,null)){var u=window.getComputedStyle(b,null),g=u.getPropertyValue("padding-left"),w=u.getPropertyValue("padding-right");i=parseFloat(g,10)+parseFloat(w,10);var v=u.getPropertyValue("border-left-width"),h=u.getPropertyValue("border-right-width");s=parseFloat(v,10)+parseFloat(h,10),r[parseInt(b.dataset.xIndex)]?(r[parseInt(b.dataset.xIndex)]+=i,r[parseInt(b.dataset.xIndex)]+=s):(o[parseInt(b.dataset.xIndex)]+=i,o[parseInt(b.dataset.xIndex)]+=s)}}for(var f=0;f<r.length;f++)r[f]&&(a+=r[f]);for(var y=0,S=0;S<o.length;S++)o[S]&&(n+=o[S],y++);var B=window.getComputedStyle(P,null),E=B.getPropertyValue("border-left-width"),T=B.getPropertyValue("border-right-width"),C=parseFloat(E,10)+parseFloat(T,10);e=a+n+C,P.dataset.wptbTableTdsSumMaxWidth=e,y?(P.dataset.wptbCellsWidthAutoCount=y,P.mergingСellsHorizontally?P.dataset.wptbFixedWidthSize=a-C:P.removeAttribute("data-wptb-fixed-width-size")):(P.removeAttribute("data-wptb-fixed-width-size"),P.removeAttribute("data-wptb-cells-width-auto-count"));var N=!1,I=void 0;e<l?y?(P.style.minWidth="100%",P.mergingСellsHorizontally?(I=(I=(l-a-C)/y)-i-s,N=!(P.style.width=null)):P.style.width="100%"):(P.style.width=null,P.style.minWidth=null,P.style.maxWidth=e+"px"):(P.style.maxWidth=null,P.style.minWidth=e+"px",I="100",N=!(P.style.width=null));var x=document.head;if(x){var A=x.querySelector('style[data-wptb-td-auto-width="true"]');A&&x.removeChild(A)}N&&((d=document.createElement("style")).setAttribute("data-wptb-td-auto-width",!0),d.innerHTML="[data-wptb-css-td-auto-width=true]{width:"+I+"px}",x&&x.appendChild(d))},P.addRowHeight=function(p,b){var e=P.getElementsByClassName("wptb-highlighted");if(0<e.length)for(var t=0;t<e.length;t++){var a=e[t].dataset.yIndex;a&&function e(t,a){for(var n=P.rows,l=!1,r=[],o=0;o<n.length;o++)for(var i=n[o].children,s=0;s<i.length;s++){var d=i[s];if(d.dataset.yIndex==t)if(p){if(d.rowSpan==a){d.style.height=p+"px",d.removeAttribute("data-wptb-fixed-heidht"),l=!0;var c=document.getElementById("wptb-table-row-height-auto-fixed");c.checked||(c.checked=!0);continue}d.style.height=null,d.dataset.wptbFixedHeight=p,s!=i.length-1||l||e(t,a+1)}else if(b)d.style.height=null,d.removeAttribute("data-wptb-fixed-heidht");else if(d.dataset.wptbFixedHeight)(d.rowSpan=a)&&(d.style.height=d.dataset.wptbFixedHeight+"px",d.removeAttribute("data-wptb-fixed-width"));else if(d.style.height){for(var m=0;m<r.length;m++)r[m].style.height=d.style.height;r=[]}else r.push(d)}}(a,1)}},P.reconstraction=function(){var e=P.getElementsByTagName("td"),t=document.getElementsByClassName("wptb-adaptive-table-chose-block");0<t.length&&(t=t[0]),P.mergingСellsHorizontally=!1,P.mergingCellsVertically=!1,P.dataset.reconstraction=1,t.style.display="block";for(var a=0,n=0;n<e.length&&(1<e[n].colSpan&&(P.dataset.reconstraction=0,t.style.display="none",P.mergingСellsHorizontally=!0,a++),1<e[n].rowSpan&&(P.dataset.reconstraction=0,t.style.display="none",P.mergingCellsVertically=!0,a++),2!=a);n++);},P.addColumnEnd=function(){var e=void 0,t=document.getElementsByClassName("wptb-preview-table"),a=void 0,n=void 0;0<t.length&&(a=t[0].querySelector("td")),a&&(n=a.getAttribute("style"));for(var l=0;l<P.rows.length;l++)e=new WPTB_Cell(S),n&&(e.getDOMElement().setAttribute("style",n),e.getDOMElement().style.width=null,e.getDOMElement().style.height=null),P.rows[l].appendChild(e.getDOMElement()),array[l].push(0);v++,P.recalculateIndexes(),P.tdDefaultWidth(),P.addRowHeight(),WPTB_Helper.dataTitleColumnSet(P),E(),(new WPTB_TableStateSaveManager).tableStateSet()},P.addColumnStart=function(){var e=void 0,t=void 0,a=document.getElementsByClassName("wptb-preview-table"),n=void 0,l=void 0;0<a.length&&(n=a[0].querySelector("td")),n&&(l=n.getAttribute("style"));for(var r=0;r<P.rows.length;r++)e=new WPTB_Cell(S),l&&(e.getDOMElement().setAttribute("style",l),e.getDOMElement().style.width=null,e.getDOMElement().style.height=null),(t=P.rows[r].getElementsByTagName("td")[0])?P.rows[r].insertBefore(e.getDOMElement(),t):P.rows[r].appendChild(e.getDOMElement()),array[r].push(0);v++,P.recalculateIndexes(),P.tdDefaultWidth(),P.addRowHeight(),WPTB_Helper.dataTitleColumnSet(P),E(),(new WPTB_TableStateSaveManager).tableStateSet()},P.addColumnAfter=function(e){var t=P.rows,a=void 0,n=void 0,l=document.querySelector(".wptb-highlighted"),r=l.getAttribute("style"),o=null!=e&&"number"==typeof e?e:T(l)[1];if(v-o-l.colSpan+1==1)P.addColumnEnd();else{for(var i=!1,s=void 0,d=void 0,c=void 0,m=[],p=void 0,b=0;b<v;b++)m.push(0);for(b=0;b<t.length;b++){a=0,n=t[b].getElementsByTagName("td"),i=!1;for(var u=0;u<v;u+=s){if(s=1,i){d=new WPTB_Cell(S),r&&(d.getDOMElement().setAttribute("style",r),d.getDOMElement().style.width=null,d.getDOMElement().style.height=null),p&&t[b].contains(p)?(c=p.nextSibling)?t[b].insertBefore(d.getDOMElement(),c):t[b].appendChild(d.getDOMElement()):t[b].insertBefore(d.getDOMElement(),n[0]);break}if(0<m[u])o==u&&(i=!0);else if(1<(p=n[a++]).rowSpan){s=p.colSpan;for(var g=0;g<p.colSpan;g++)m[u+g]=p.rowSpan,u+g==o&&(i=!0)}else if(1<p.colSpan){s=p.colSpan;for(g=0;g<p.colSpan;g++)u+g==o&&(i=!0)}else u==o&&(i=!0)}for(var w=0;w<v;w++)0<m[w]&&m[w]--}for(b=0;b<array.length;b++)array[b].push(0);v++,B(array),P.recalculateIndexes(),P.addColumnWidth(),P.addRowHeight(),WPTB_Helper.dataTitleColumnSet(P),E(),(new WPTB_TableStateSaveManager).tableStateSet()}},P.addColumnBefore=function(){var e=document.querySelector(".wptb-highlighted"),t=T(e)[1];0===t?P.addColumnStart():P.addColumnAfter(t-1)},P.addRowToTheEnd=function(){var e=P.insertRow(-1),t=void 0,a=void 0,n=document.getElementsByClassName("wptb-preview-table");if(e.classList.add("wptb-row"),0<n.length){n=n[0];for(var l=0;l<v;l++){t=new WPTB_Cell(S);var r=n.querySelector('[data-x-index="'+l+'"]');if(r){var o=r.getAttribute("style");t.getDOMElement().setAttribute("style",o),t.getDOMElement().style.height=null}e.appendChild(t.getDOMElement())}a=Array.from(array[0]),array.push(a),B(array),P.recalculateIndexes(),P.addColumnWidth(),WPTB_Helper.dataTitleColumnSet(P),E(),(new WPTB_TableStateSaveManager).tableStateSet()}},P.addRowToTheStart=function(){var e=P.insertRow(0),t=void 0,a=void 0,n=document.getElementsByClassName("wptb-preview-table");if(e.classList.add("wptb-row"),0<n.length){n=n[0];for(var l=0;l<v;l++){t=new WPTB_Cell(S);var r=n.querySelector('[data-x-index="'+l+'"]');if(r){var o=r.getAttribute("style");t.getDOMElement().setAttribute("style",o),t.getDOMElement().style.height=null}e.appendChild(t.getDOMElement())}a=Array.from(array[0]),array.push(a),B(array),P.recalculateIndexes(),P.addColumnWidth(),WPTB_Helper.dataTitleColumnSet(P),E(),(new WPTB_TableStateSaveManager).tableStateSet()}},P.addRowBefore=function(){for(var e=document.querySelector(".wptb-highlighted"),t=e.getAttribute("style"),a=T(e)[0],n=void 0,l=a-1;0<=l;l--){var r=P.rows[l].children,o=r.length;if(0<o)for(var i=0;i<o;i++)if(1==r[i].rowSpan){a=l,n=!0;break}if(n)break}0===a?P.addRowToTheStart():P.addRowAfter(a,t)},P.addRowAfter=function(e,t){var a,n=void 0;if(null!=e&&"number"==typeof e||null!=t)n=e;else{var l=document.querySelector(".wptb-highlighted");t=l.getAttribute("style"),n=(e=T(l)[0])+l.rowSpan-1}var r=0;if(n<P.rows.length-1){for(var o=0;o<=n;o++){var i=P.rows[o].children,s=i.length;if(0<s)for(var d=0;d<s;d++){n<i[d].rowSpan-1+o&&i[d].rowSpan++}}var c=P.rows[n+1].children,m=c.length;if(0<m)for(var p=0;p<m;p++)r+=c[p].colSpan}else r=array[0].length;var b=P.insertRow(n+1);for(b.classList.add("wptb-row"),g=0;g<r;g++){var u=new WPTB_Cell(S);u.getDOMElement().setAttribute("style",t),u.getDOMElement().style.width=null,u.getDOMElement().style.height=null,b.appendChild(u.getDOMElement())}a=Array.from(array[0]),array.push(a),B(array),P.recalculateIndexes(),P.addColumnWidth(),WPTB_Helper.dataTitleColumnSet(P),E(),(new WPTB_TableStateSaveManager).tableStateSet()},P.isSquare=function(e){for(var t,a,n=-1,l=-1,r=-1,o=-1,i=0,s=0;s<e.length;s++)for(var d=0;d<e[s].length;d++)1==e[s][d]&&((d<l||-1==l)&&(l=d),(s<n||-1==n)&&(n=s));for(s=e.length-1;-1<s;s--)for(d=e[s].length-1;-1<d;d--)1==e[s][d]&&(o<d&&(o=d),r<s&&(r=s));for(s=n;s<r;s++)for(d=l;d<o;d++)if(0==e[s][d]||null==e[s][d])return!1;for(s=0;s<e.length;s++)for(d=0;d<e[s].length;d++)1==e[s][d]&&i++;return(t=r-n+1)*(a=o-l+1)===i&&[t,a]},P.mergeCells=function(){for(var e=P.isSquare(array),t=e[0],a=e[1],n=document.querySelector(".wptb-highlighted"),l=[].slice.call(document.getElementsByClassName("wptb-highlighted"),1),r=[],o=0;o<l.length;o++){var i=l[o].getElementsByClassName("wptb-ph-element");if(0<i.length)for(var s=i.length,d=0;d<s;d++)r.push(i[d]);l[o].parentNode.removeChild(l[o])}if(0<r.length)for(var c=0;c<r.length;c++)n.appendChild(r[c]);n.colSpan=a,n.rowSpan=t,P.recalculateIndexes(),P.reconstraction();var m=n.style.width,p=n.dataset.wptbFixedWidth;m?P.addColumnWidth(parseFloat(m,10)):p?P.addColumnWidth():P.addColumnWidth(!1,!0);var b=n.style.height,u=n.dataset.wptbFixedHeight;b?P.addRowHeight(parseFloat(b,10)):u?P.addRowHeight():P.addRowHeight(!1,!0),WPTB_Helper.dataTitleColumnSet(P),E(),(new WPTB_TableStateSaveManager).tableStateSet()},P.splitCell=function(){var e=document.getElementsByClassName("wptb-highlighted")[0],t=e.rowSpan,a=e.colSpan,n=e.getAttribute("style"),l=T(e)[0],r=P.rows[l],o=e.dataset.xIndex;e.rowSpan=1;for(var i=e.colSpan=1;i<a;i++){var s=new WPTB_Cell(S);s.getDOMElement().setAttribute("style",n),s.getDOMElement().classList.add("wptb-highlighted"),e.nextSibling?r.insertBefore(s.getDOMElement(),e.nextSibling):r.appendChild(s.getDOMElement())}if(1<t)for(var d=1;d<t;d++){var c=void 0,m=P.rows[l+d],p=m.children,b=p.length;if(0<b)for(var u=0;u<b;u++)if(Number(p[u].dataset.xIndex)>Number(o)){c=p[u];break}for(var g=0;g<a;g++){var w=new WPTB_Cell(S);w.getDOMElement().setAttribute("style",n),null!=c?m.insertBefore(w.getDOMElement(),c):m.appendChild(w.getDOMElement())}}P.recalculateIndexes(),P.reconstraction(),P.addColumnWidth(),P.addRowHeight(),WPTB_Helper.dataTitleColumnSet(P),E(),(new WPTB_TableStateSaveManager).tableStateSet()},P.findRowspannedCells=function(e){var t,a=[];if(actualPoints=function(e){for(var t=P.rows[e].getElementsByTagName("td"),a=0,n=0;n<t.length;n++)a+=t[n].colSpan;return a}(e),actualPoints===v)return[];t=v-actualPoints;for(var n=e-1;0<=n&&t;n--){var l=P.rows[n].getElementsByTagName("td");for(n=0;n<l.length;n++)1<l[n].rowSpan&&(a.push(l[n]),t-=l[n].colSpan)}return a},P.addLackingCells=function(){for(var e=[],t=0;t<P.rows.length;t++)e.push(0);for(t=0;t<P.rows.length;t++)for(var a=P.rows[t].getElementsByTagName("td"),n=0;n<a.length;n++)if(1<a[n].rowSpan)for(var l=1;l<a[n].rowSpan;l++)e[t+l]++;for(t=0;t<P.rows.length;t++){a=P.rows[t].getElementsByTagName("td");var r=0;for(n=0;n<a.length;n++)r+=a[n].colSpan;r+=e[t],difference=v-r;for(n=0;n<difference;n++){var o=new WPTB_Cell(S);P.rows[t].appendChild(o.getDOMElement())}}},P.deleteRow=function(){var e=document.querySelector(".wptb-highlighted"),t=e.getAttribute("style"),a=e.rowSpan,n=T(e)[0],l=void 0;null==a&&(a=1);for(var r=0;r<a;r++){var o=P.rows[n].children,i=P.rows[n+1],s=void 0,d=void 0,c=[];if(null!=i){d=(s=i.children).length;for(var m=0;m<o.length;m++)if(1<o[m].rowSpan){var p=new WPTB_Cell(S);p.getDOMElement().setAttribute("style",t),p.getDOMElement().colSpan=o[m].colSpan,p.getDOMElement().rowSpan=o[m].rowSpan-1;for(var b=void 0,u=0;u<d;u++)if(Number(s[u].dataset.xIndex)>Number(o[m].dataset.xIndex)){b=s[u];break}b?c.push([p,b]):c.push([p])}if(0<c.length)for(var g=0;g<c.length;g++)null!=c[g][1]?i.insertBefore(c[g][0].getDOMElement(),c[g][1]):i.appendChild(c[g][0].getDOMElement())}var w=P.rows;if(0<w.length)for(var v=0;v<n;v++){var h=w[v].children;if(0<h.length)for(var f=0;f<h.length;f++)h[f].rowSpan-1>=n-v&&h[f].rowSpan--}l=Array.from(array[0]),array.pop(l),B(array),P.getElementsByTagName("tbody")[0].removeChild(P.rows[n]),0==P.rows.length&&(P.toggleTableEditMode(),y.innerHTML="",WPTB_Helper.settingsPanelClear(),document.getElementsByClassName("wptb-table-generator")[0].style.display="table"),P.recalculateIndexes(),WPTB_Helper.dataTitleColumnSet(P)}E(),(new WPTB_TableStateSaveManager).tableStateSet()},P.deleteColumn=function(){for(var e=document.querySelector(".wptb-highlighted"),t=e.dataset.xIndex,a=e.colSpan,n=0;n<a;n++){for(var l=0;l<P.rows.length;l++){var r=P.rows[l].children,o=r.length;if(0<o)for(var i=o-1;0<=i;i--){if(Number(r[i].dataset.xIndex)==Number(t)){1<r[i].colSpan?r[i].colSpan--:P.rows[l].removeChild(r[i]);break}if(Number(r[i].dataset.xIndex)<Number(t)&&Number(r[i].dataset.xIndex)+Number(r[i].colSpan-1)>=t){1<r[i].colSpan&&r[i].colSpan--;break}}}for(var s=0;s<P.rows.length;s++)null!=array[s]&&array[s].pop();v--,0==P.querySelectorAll("td").length&&(P.toggleTableEditMode(),y.innerHTML="",WPTB_Helper.settingsPanelClear(),document.getElementsByClassName("wptb-table-generator")[0].style.display="table"),P.recalculateIndexes(),P.tdDefaultWidth(),WPTB_Helper.dataTitleColumnSet(P)}E(),(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementsByClassName("wptb-table-generator")[0].style.display="none",array=function(){for(var e=[],t=[],a=0;a<P.rows.length;a++){for(var n=P.rows[a].getElementsByTagName("td"),l=0,r=0;r<n.length;r++)l+=n[r].colSpan;e.push(l)}v=Math.max.apply(null,e);var o=P.rows.length;for(a=0;a<o;a++)for(t[a]=[],r=0;r<v;r++)t[a].push(0);return B(t),t}(),E(),B(array),y.appendChild(P),P.recalculateIndexes(!0),P.reconstraction(),P.tdDefaultWidth(),y.onresize=function(){P.tdDefaultWidth()},WPTB_LeftPanel()},WPTB_TableStateSaveManager=function(){this.tableStateSet=function(){var e=document.getElementsByClassName("wptb-preview-table");if(0<e.length){e=e[0],window.wptbTableStateSaving||(window.wptbTableStateSaving=[]),window.wptbTableStateSaving.length>window.wptbTableStateNumberShow+1&&(window.wptbTableStateSaving=window.wptbTableStateSaving.slice(0,window.wptbTableStateNumberShow+1));for(var t=e.cloneNode(!0),a=t.getElementsByClassName("wptb-highlighted"),n=0;n<a.length;n++)a[n].classList.remove("wptb-highlighted");for(var l=t.getElementsByClassName("wptb-directlyhovered"),r=0;r<l.length;r++)l[r].classList.remove("wptb-directlyhovered");var o="",i=document.head;if(i){var s=i.querySelector('style[data-wptb-td-auto-width="true"]');s&&(o=s.innerHTML)}var d=document.getElementsByClassName("wptb-element-datas");d=0<d.length?d.innerHTML:"";var c=t.querySelectorAll(".mce-content-body");if(0<c.length)for(var m=0;m<c.length;m++)c[m].classList.remove("mce-content-body");var p=t.querySelectorAll("[data-mce-style]");if(0<p.length)for(var b=0;b<p.length;b++)p[b].removeAttribute("data-mce-style");var u=t.querySelectorAll("[id^=mce_]");if(0<u.length)for(var g=0;g<u.length;g++)u[g].removeAttribute("id");if(window.wptbTableStateSaving.push([t,o,d]),window.wptbTableStateNumberShow=window.wptbTableStateSaving.length-1,1<window.wptbTableStateSaving.length){var w=document.getElementsByClassName("wptb-undo");0<w.length&&(w=w[0]).classList.remove("wptb-undoredo-disabled")}var v=document.getElementsByClassName("wptb-redo");0<v.length&&(v=v[0]).classList.add("wptb-undoredo-disabled");var h=document.getElementsByClassName("wptb-save-btn");0<h.length&&(!(h=h[0]).dataset.wptbTableStateNumberSave&&0==window.wptbTableStateNumberShow||window.wptbTableStateNumberShow==h.dataset.wptbTableStateNumberSave?h.classList.add("wptb-save-disabled"):h.classList.remove("wptb-save-disabled"))}},this.tableStateGet=function(e){if(e&&window.wptbTableStateSaving&&1<window.wptbTableStateSaving.length){if("undo"==e){if(!(0<window.wptbTableStateNumberShow))return!1;window.wptbTableStateNumberShow--}else if("redo"==e){if(!(window.wptbTableStateNumberShow<window.wptbTableStateSaving.length-1))return!1;window.wptbTableStateNumberShow++}var t=document.getElementsByClassName("wptb-undo");0<t.length&&(t=t[0]),0==window.wptbTableStateNumberShow?t&&t.classList.add("wptb-undoredo-disabled"):0<window.wptbTableStateNumberShow&&t&&t.classList.remove("wptb-undoredo-disabled");var a=document.getElementsByClassName("wptb-redo");0<a.length&&(a=a[0]),window.wptbTableStateNumberShow==window.wptbTableStateSaving.length-1?a&&a.classList.add("wptb-undoredo-disabled"):window.wptbTableStateNumberShow<window.wptbTableStateSaving.length-1&&a&&a.classList.remove("wptb-undoredo-disabled");var n=document.getElementsByClassName("wptb-save-btn");0<n.length&&(!(n=n[0]).dataset.wptbTableStateNumberSave&&0==window.wptbTableStateNumberShow||window.wptbTableStateNumberShow==n.dataset.wptbTableStateNumberSave?n.classList.add("wptb-save-disabled"):n.classList.remove("wptb-save-disabled"));var l=document.getElementsByClassName("wptb-table-setup");if(0<l.length){if((l=l[0]).innerHTML="",l.innerHTML=window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML,window.wptbTableStateSaving[window.wptbTableStateNumberShow][1]){var r=document.createElement("style");r.setAttribute("data-wptb-td-auto-width",!0),r.innerHTML=window.wptbTableStateSaving[window.wptbTableStateNumberShow][1];var o=document.head;if(o){var i=o.querySelector('style[data-wptb-td-auto-width="true"]');i&&o.removeChild(i),o.appendChild(r)}}var s=document.getElementsByClassName("wptb-element-datas"),d=document.getElementsByTagName("body");0<d.length&&(d=d[0]),window.wptbTableStateSaving[window.wptbTableStateNumberShow][2]?(s.innerHTML=window.wptbTableStateSaving[window.wptbTableStateNumberShow][2],0<s.length?s=s[0]:((s=document.createElement("div")).classList.add("wptb-element-datas"),d.appendChild(s))):0<s.length&&(s=s[0],d.removeChild(s)),WPTB_Helper.settingsPanelClear(),WPTB_Helper.elementOptionsPanelClear(),WPTB_LeftPanel();var c=document.getElementById("wptb-left-scroll-panel-cell-settings");c&&c.classList.remove("visible")}}}},WPTB_innerElementSet=function c(t){t.ondragenter=function(e){-1==e.dataTransfer.types.indexOf("wptbelement")&&-1==e.dataTransfer.types.indexOf("wptb-moving-mode")||(WPTB_DropHandle(this,e),t.classList.add("wptb-ondragenter"))},t.ondragover=function(e){e.preventDefault(),WPTB_DropHandle(this,e)},t.ondragleave=function(){},t.ondrop=function(e){this.classList.remove("wptb-ondragenter");var t=void 0,a=void 0;if(e.preventDefault(),e.stopPropagation(),e.dataTransfer.getData("wptbElement")||e.dataTransfer.getData("node")){var n=void 0,l=void 0;if(0<document.getElementsByClassName("wptb-drop-handle").length&&(n=document.getElementsByClassName("wptb-drop-handle")[0]),0<document.getElementsByClassName("wptb-drop-border-marker").length&&(l=document.getElementsByClassName("wptb-drop-border-marker")[0]),t=e.dataTransfer.getData("wptbElement")?(t=WPTB_Helper.newElementProxy(e.dataTransfer.getData("wptbElement"))).getDOMElement():(a=e.dataTransfer.getData("node"),document.getElementsByClassName(a)[0]),"block"==n.style.display){var r=void 0;if("Drop Here"==n.dataset.text)(r=n.getDOMParentElement()).appendChild(t);else{var o=n.getDOMParentElement();if(r=o.parentNode,"Above Element"==n.dataset.text)r.insertBefore(t,o);else if("Below Element"==n.dataset.text){var i=o.nextSibling;r.insertBefore(t,i)}}var s=r.parentNode;if(s.classList.contains("wptb-table-head")){var d=WPTB_Helper.findAncestor(s,"wptb-preview-table");WPTB_Helper.dataTitleColumnSet(d)}t.className.match(/wptb-element-(.+)-(\d+)/i)[1];if(e.dataTransfer.getData("wptbElement"),n.style.display="none",l.style.display="none",c(t),!t.classList.contains("wptb-image-container")||t.classList.contains("wptb-moving-mode"))t.classList.remove("wptb-moving-mode"),(new WPTB_TableStateSaveManager).tableStateSet();return!0}}},t.onmouseover=function(e){t.classList.remove("wptb-ondragenter")}};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var applyGenericItemSettings=function(e,t){var a,n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],l=e.getDOMElement();if(l.classList.contains("wptb-ph-element")){if(null==t||1==n){a=document.counter.nextIndex(e.kind);for(var r=document.getElementsByClassName("wptb-ph-element"),o=[],i=0;i<r.length;i++){var s=new RegExp("wptb-element-"+e.kind+"-(\\d+)","i"),d=r[i].className.match(s);d&&o.push(d[1])}if(0<o.length)a=Math.max.apply(Math,o)+1;else a=1;if(n)for(var c=[].concat(_toConsumableArray(l.attributes)),m=0;m<c.length;m++)if(c[m]&&"object"===_typeof(c[m])&&c[m].nodeName){var p=new RegExp("data-wptb-el-"+e.kind+"-(\\d+)-(.+)","i"),b=c[m].nodeName.match(p);if(b&&Array.isArray(b)){var u=c[m].nodeName.replace(e.kind+"-"+b[1],e.kind+"-"+a),g=c[m].nodeValue;l.removeAttribute(c[m].nodeName),l.setAttribute(u,g)}}}else if(t&&!n){var w=t.split("-");a=w[w.length-1]}var v=l.className.match(/wptb-element-(.+)-(\d+)/i);v&&l.classList.remove(v[0]),l.classList.contains("wptb-ph-element")||l.classList.add("wptb-ph-element"),l.classList.contains("wptb-element-"+e.kind+"-"+a)||l.classList.add("wptb-element-"+e.kind+"-"+a),new WPTB_ElementOptions(e,a,t),WPTB_Helper.elementStartScript(e.getDOMElement()),document.counter.increment(e.kind)}l.onmouseenter=function(e){if(!e.target.classList.contains("wptb-moving-mode")){var t=new WPTB_ActionsField;t.addActionField(1,l),t.setParameters(l),l.classList.remove("wptb-ondragenter")}},l.onmouseleave=function(e){(new WPTB_ActionsField).leaveFromField(e,l)}};
|
1 |
+
var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},WPTB_ActionsField=function i(){var p=this;this.wptbActions,0!=document.getElementsByClassName("wptb-actions").length&&(this.wptbActions=document.getElementsByClassName("wptb-actions")[0]),this.addActionField=function(e,t){var a=document.getElementsByTagName("body")[0],n=document.getElementsByClassName("wptb-actions");if(0!=n.length){var l=n[0].activeElem;for(l&&l.classList.remove("wptb-directlyhovered");0!=n.length;)n[0].parentNode.removeChild(n[0])}if(1==e){var r=void 0,o=void 0;if(r=document.createElement("span"),o=document.createElement("span"),(n=document.createElement("div")).classList.add("wptb-actions"),r.classList.add("dashicons","dashicons-trash","wptb-delete-action"),o.classList.add("dashicons","dashicons-admin-page","wptb-duplicate-action"),n.appendChild(o),n.appendChild(r),a.appendChild(n),n.activeElem=t,n.type=1,r.onclick=function(e){var t=e.target.parentNode.activeElem,a=t.parentNode,n=t.className.match(/wptb-element-(.+)-(\d+)/i);if(t&&n&&Array.isArray(n)&&(WPTB_Helper.elementControlsStateDelete(t),WPTB_Helper.externalCssStylesDelete(n[0])),t&&a.removeChild(t),t&&"object"===(void 0===t?"undefined":_typeof(t))&&t.hasOwnProperty("kind")&&"text"==t.kind){var l=a.parentNode;if(WPTB_Helper.rowIsTop(l)){var r=WPTB_Helper.findAncestor(l,"wptb-preview-table");r.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(r)}}(new i).actionsRemove(),(new WPTB_TableStateSaveManager).tableStateSet()},o.onclick=function(e){var t,a=void 0,n=void 0,l=e.target.parentNode.activeElem,r=l.parentNode;if((t=l.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){n=t[1];var o={};o.kind=n,o.elemProt=l,o.tinyMceClear=!0,a=new WPTB_ElementObject(o),WPTB_Helper.elementControlsStateCopy(l,a.getDOMElement()),WPTB_Helper.externalCssStylesCopy(l,a.getDOMElement()),r.insertBefore(a.getDOMElement(),l.nextSibling)}else{a={};var s=l.cloneNode(!0);s.classList.remove("wptb-directlyhovered"),a.getDOMElement=function(){return s},applyGenericItemSettings(a),r.insertBefore(a.getDOMElement(),l.nextSibling),WPTB_Helper.wptbDocumentEventGenerate("wptb-inner-element:copy",l,a.getDOMElement())}WPTB_innerElementSet(a.getDOMElement()),new i(1,l).setParameters(l),(new WPTB_TableStateSaveManager).tableStateSet()},t.classList.contains("wptb-ph-element")){var s=void 0;(s=document.createElement("span")).classList.add("dashicons","dashicons-move","wptb-move-action"),s.draggable=!0,n.appendChild(s),s.ondragstart=function(e){var t,a=wp.template("wptb-element-icons-directories")({}),n=JSON.parse(a),l=void 0,r=e.target.parentNode.activeElem,o=void 0;if((t=r.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){o=t[1],r.classList.add("wptb-moving-mode"),n&&"object"===(void 0===n?"undefined":_typeof(n))&&n[o]&&(l=WPTB_Helper.getElementIcon(n[o])),e.dataTransfer.effectAllowed="move",e.dataTransfer.setDragImage(l,0,0),e.dataTransfer.setData("node","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptb-moving-mode","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptbElIndic-"+t[1],"wptbElIndic-"+t[1]);var s=e.target.parentNode.activeElem;if("text"==s.kind){var i=s.parentNode.parentNode;if(WPTB_Helper.rowIsTop(i)){var d=WPTB_Helper.findAncestor(i,"wptb-preview-table");d.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(d)}}}else p.style.display="none",console.log(p);p.actionsHide()},s.ondragend=function(e){WPTB_Helper.elementDragEndClear()}}n.style.display="block",p.wptbActions=n}},this.setParameters=function(t){if(!p.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length?p.wptbActions=e[0]:p.wptbActions=!1}if(p.wptbActions&&p.wptbActions.classList.contains("wptb-actions")){p.wptbActions.style.display="block";var a=t.getBoundingClientRect(),n=document.getElementsByClassName("wptb-container")[0],l=function(){var e=t.getBoundingClientRect();p.wptbActions.style.top=parseFloat(e.top)-15+"px"};n.removeEventListener("scroll",l,!1),p.wptbActions.style.top=parseFloat(a.top)-15+"px",p.wptbActions.style.left=parseFloat(a.right)-parseFloat(p.wptbActions.clientWidth)+1+"px",p.wptbActions.style.display="block",t.classList.add("wptb-directlyhovered"),n.addEventListener("scroll",l,!1)}},this.leaveFromField=function(e,t,a){if(!p.wptbActions){var n=document.getElementsByClassName("wptb-actions");0<n.length?p.wptbActions=n[0]:p.wptbActions=!1}if(p.wptbActions){if(e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-actions")||e.relatedTarget.classList.contains("wptb-move-action")||e.relatedTarget.classList.contains("wptb-duplicate-action")||e.relatedTarget.classList.contains("wptb-delete-action")))return p.wptbActions||(p.wptbActions=document.getElementsByClassName("wptb-actions")[0]),void(p.wptbActions.onmouseleave=function(e){null!=e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&e.relatedTarget!=p.wptbActions.activeElem&&(WPTB_Helper.findAncestor(e.relatedTarget,"wptb-directlyhovered"),p.wptbActions.activeElem),(new i).leaveFromField(e,e.relatedTarget.parentNode.parentNode),e.target.activeElem.classList.remove("wptb-directlyhovered")});t.classList.remove("wptb-directlyhovered"),p.wptbActions.style.display="none",e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&(p.addActionField(1,e.relatedTarget.parentNode),p.setParameters(e.relatedTarget.parentNode))}},this.actionsRemove=function(){if(!p.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(p.wptbActions=e[0])}p.wptbActions&&p.wptbActions.parentNode.removeChild(p.wptbActions)},this.actionsHide=function(){if(!p.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(p.wptbActions=e[0])}p.wptbActions&&(p.wptbActions.style.opacity=0)}};document.addEventListener("DOMContentLoaded",function(){var r=WPTB_Helper.detectMode();if(r){var o=new XMLHttpRequest,e=ajaxurl+"?action=get_table&id="+r;o.open("GET",e,!0),o.setRequestHeader("Content-type","application/x-www-form-urlencoded"),o.onreadystatechange=function(e){if(4!=this.readyState||200!=this.status);else{var t=JSON.parse(o.responseText);if(document.getElementById("wptb-setup-name").value=t[0],t[1]){document.getElementsByClassName("wptb-table-generator")[0].style.display="none",document.getElementsByClassName("wptb-table-setup")[0].appendChild(WPTB_Parser(t[1]));var a=document.getElementsByTagName("body")[0];if(t[2]){var n=document.createElement("script");n.setAttribute("type","text/html"),n.setAttribute("class","wptb-element-datas"),n.innerHTML=t[2],a.appendChild(n)}WPTB_Table();var l=document.querySelector(".wptb-preview-table");l&&(l.className.match(/wptb-element-((.+-)\d+)/i)||l.classList.add("wptb-element-main-table_setting-"+r)),WPTB_LeftPanel(),WPTB_Settings(),(new WPTB_TableStateSaveManager).tableStateSet(),WPTB_Helper.elementOptionsSet("table_setting",l)}else document.getElementsByClassName("wptb-table-generator")[0].style.display="table"}},o.send(null)}else document.getElementsByClassName("wptb-table-generator")[0].style.display="table";document.counter=new ElementCounters,document.select=new MultipleSelect,WPTB_Initializer(),settings=WPTB_Settings()});var WPTB_Cell=function(e,a){if(!a){(a=document.createElement("td")).style.padding=jQuery("#wptb-table-padding-number").val()+"px";var t=jQuery("#wptb-table-inner-border-number").val();""!=t&&0!=parseInt(t)&&(a.style.border=t+"px solid "+jQuery("#wptb-table-border-color").val()),a.classList.add("wptb-droppable","wptb-cell"),console.log("wptb_cell_test")}a.draggable=!1,e&&(a.onclick=e),a.ondblclick=function(e){if(e.stopPropagation(),!WPTB_Helper.findAncestor(a,"wptb-preview-table-manage-cells")&&e.target==e.currentTarget){WPTB_Helper.wptbDocumentEventGenerate("table:cell:dblclick",e.target);var t=WPTB_Helper.newElementProxy("text");t=t.getDOMElement(),a.appendChild(t),WPTB_innerElementSet(t)}},WPTB_innerElementSet(a);var o=a.getElementsByClassName("wptb-ph-element");if(0<o.length)for(var n=function(l){o[l].getDOMElement=function(){return o[l]},WPTB_innerElementSet(o[l]);var r=o[l].className.match(/wptb-element-((.+-)\d+)/i);r&&Array.isArray(r)&&function(){var e=r[1].split("-");o[l].kind=e[0],applyGenericItemSettings(o[l],r[1]);var a=o[l].getElementsByClassName("wptb-in-element");if(0<a.length)for(var t=function(e){var t={getDOMElement:function(){return a[e]}};applyGenericItemSettings(t)},n=0;n<a.length;n++)t(n)}()},l=0;l<o.length;l++)n(l);return this.getDOMElement=function(){return a},this.setCoords=function(e,t){var a=this.getDOMElement();a.dataset.yIndex=e,a.dataset.xIndex=t},this.getCoords=function(){var e,t=this.getDOMElement();return e.x=t.dataset.xIndex,e.y=t.dataset.yIndex,e},this.appendElement=function(e){getDOMElement().appendChild(e)},a.getCellDimensions=function(){var e=window.getComputedStyle(this,null),t=e.getPropertyValue("padding-left"),a=e.getPropertyValue("padding-right"),n=e.getPropertyValue("border-left-width"),l=e.getPropertyValue("border-right-width"),r=e.getPropertyValue("padding-top"),o=e.getPropertyValue("padding-bottom"),s=e.getPropertyValue("border-top-width"),i=e.getPropertyValue("border-bottom-width"),d=parseInt(this.offsetWidth,10)-parseInt(t,10)-parseInt(a,10)-parseInt(n,10)/2-parseInt(l,10)/2,p=parseInt(this.offsetHeight,10)-parseInt(r,10)-parseInt(o,10)-parseInt(s,10)/2-parseInt(i,10)/2,c=WPTB_Helper.findAncestor(this,"wptb-preview-table");if(c){var m=window.getComputedStyle(c,null),b=m.getPropertyValue("border-left-width"),u=m.getPropertyValue("border-right-width"),w=m.getPropertyValue("border-top-width"),g=m.getPropertyValue("border-bottom-width"),v=this.parentNode;if(v&&"tr"===v.nodeName.toLowerCase()){v.firstChild&&v.firstChild.dataset.xIndex===this.dataset.xIndex&&parseInt(b,10)>parseInt(n,10)&&(d+=-(parseInt(b,10)-parseInt(n,10))/2),v.lastChild&&v.lastChild.dataset.xIndex===this.dataset.xIndex&&parseInt(u,10)>parseInt(l,10)&&(d+=-(parseInt(u,10)-parseInt(l,10))/2);var h=v.parentNode;h&&"body"===h.nodeName.toLowerCase()&&(h.firstChild&&h.firstChild.firstChild.dataset.yIndex===this.dataset.yIndex&&parseInt(w,10)>parseInt(s,10)&&(p+=(parseInt(w,10)-parseInt(s,10))/2),h.lastChild&&h.lastChild.firstChild.dataset.yIndex===this.dataset.yIndex&&parseInt(g,10)>parseInt(i,10)&&(p+=(parseInt(g,10)-parseInt(i,10))/2))}}return{width:parseInt(d),height:parseInt(p)}},this},WPTB_DropHandle=function(s,e){var i=void 0,d=void 0;if(0==document.getElementsByClassName("wptb-drop-handle").length){(i=document.createElement("div")).classList.add("wptb-drop-handle"),(d=document.createElement("div")).classList.add("wptb-drop-border-marker");var t=document.createElement("div"),a=document.createElement("div"),n=document.createElement("div"),l=document.createElement("div");t.classList.add("wptb-drop-border-marker-top"),a.classList.add("wptb-drop-border-marker-right"),n.classList.add("wptb-drop-border-marker-bottom"),l.classList.add("wptb-drop-border-marker-left"),d.appendChild(t),d.appendChild(a),d.appendChild(n),d.appendChild(l);var r=document.getElementsByTagName("body");0<r.length&&(r[0].appendChild(i),r[0].appendChild(d)),i.ondragenter=function(){},i.ondragover=function(e){e.preventDefault()},i.ondragleave=function(){},i.ondrop=function(e){e.preventDefault();var t=void 0;e.dataTransfer.getData("wptbElement")?t=(t=WPTB_Helper.newElementProxy(e.dataTransfer.getData("wptbElement"))).getDOMElement():((t=document.getElementsByClassName(e.dataTransfer.getData("node"))[0]).classList.remove("wptb-moving-mode"),t.classList.remove("wptb-moving-into-same-elem"),t.wptbMovingMode=1);var a=void 0;if("Drop Here"==i.dataset.text)"td"==(s=i.getDOMParentElement()).nodeName.toLowerCase()&&(a=i.getDOMParentElement()).appendChild(t);else{var n=i.getDOMParentElement();if(a=n.parentNode,"Above Element"==i.dataset.text)a.insertBefore(t,n);else if("Below Element"==i.dataset.text){var l=n.nextSibling;a.insertBefore(t,l)}}var r=a.parentNode;if(WPTB_Helper.rowIsTop(r)){var o=WPTB_Helper.findAncestor(r,"wptb-preview-table");o.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(o)}t.className.match(/wptb-element-(.+)-(\d+)/i)[1];(e.dataTransfer.getData("wptbElement"),i.style.display="none",d.style.display="none",WPTB_innerElementSet(t),t.classList.contains("wptb-image-container")&&1!=t.wptbMovingMode)||((new WPTB_TableStateSaveManager).tableStateSet(),t.wptbMovingMode)},document.querySelector(".wptb-container").onscroll=function(){i.style.display="none",d.style.display="none"}}else i=document.getElementsByClassName("wptb-drop-handle")[0],d=document.getElementsByClassName("wptb-drop-border-marker")[0];if(!s||"td"!=s.nodeName.toLowerCase()||0==s.getElementsByClassName("wptb-ph-element").length){var o=void 0;if("td"==s.localName?o=s.parentNode:"div"==s.localName&&s.classList.contains("wptb-ph-element")&&(o=s.parentNode.parentNode),WPTB_Helper.rowIsTop(o))if(WPTB_Helper.findAncestor(o,"wptb-preview-table").classList.contains("wptb-table-prev
|