Version Description
- FIX: Multiple Table Responsiveness issue.
- IMPROVEMENTS: Major Code improvements. Restructured table settings, element settings.
- Tested with WordPress 5.3.
Download this release
Release Info
Developer | imtiazrayhan |
Plugin | WP Table Builder – WordPress Table Plugin |
Version | 1.1.2 |
Comparing to | |
See all releases |
Code changes from version 1.1.1 to 1.1.2
- inc/admin/class-admin-menu.php +9 -6
- inc/admin/class-tables.php +12 -4
- inc/admin/class-wptb-listing.php +8 -5
- inc/admin/css/admin.css +148 -31
- inc/admin/element-classes/base/element-base-object.php +217 -0
- inc/admin/element-classes/controls/base-control.php +75 -0
- inc/admin/element-classes/controls/control-alignment.php +185 -0
- inc/admin/element-classes/controls/control-change-attribute.php +197 -0
- inc/admin/element-classes/controls/control-checkbox.php +156 -0
- inc/admin/element-classes/controls/control-color.php +124 -0
- inc/admin/element-classes/controls/control-number.php +133 -0
- inc/admin/element-classes/controls/control-section-header.php +72 -0
- inc/admin/element-classes/controls/control-select.php +141 -0
- inc/admin/element-classes/controls/control-size.php +162 -0
- inc/admin/element-classes/controls/control-text.php +113 -0
- inc/admin/element-classes/controls/control-textarea.php +123 -0
- inc/admin/element-classes/controls/control-toggle.php +125 -0
- inc/admin/element-classes/controls/control-url.php +157 -0
- inc/admin/element-classes/element-scripts/button-element.js +154 -0
- inc/admin/element-classes/element-scripts/image-element.js +126 -0
- inc/admin/element-classes/element-scripts/list-element.js +244 -0
- inc/admin/element-classes/element-scripts/star-rating-element.js +242 -0
- inc/admin/element-classes/element-scripts/text-element.js +77 -0
- inc/admin/element-classes/elements/button-element.php +186 -0
- inc/admin/element-classes/elements/image-element.php +160 -0
- inc/admin/element-classes/elements/list-element.php +209 -0
- inc/admin/element-classes/elements/star-rating-element.php +251 -0
- inc/admin/element-classes/elements/text-element.php +139 -0
- inc/admin/element-classes/managers/controls-manager.php +268 -0
- inc/admin/element-classes/managers/elements-manager.php +169 -0
- inc/admin/js/admin.js +983 -2112
- inc/admin/js/admin.js.map +1 -1
inc/admin/class-admin-menu.php
CHANGED
@@ -35,7 +35,7 @@ class Admin_Menu {
|
|
35 |
'post_title' => '',
|
36 |
'post_content' => '',
|
37 |
'post_type' => 'wptb-tables',
|
38 |
-
'
|
39 |
]);
|
40 |
wp_die( json_encode( ['created',$id] ) );
|
41 |
}
|
@@ -50,9 +50,10 @@ class Admin_Menu {
|
|
50 |
'post_title' => sanitize_text_field( $params->title ),
|
51 |
'post_content' => '',
|
52 |
'post_type' => 'wptb-tables',
|
53 |
-
'
|
54 |
]);
|
55 |
-
add_post_meta( $id, '_wptb_content_', $params->content );
|
|
|
56 |
wp_die( json_encode( ['saved',$id] ) );
|
57 |
} else {
|
58 |
wp_update_post([
|
@@ -60,9 +61,10 @@ class Admin_Menu {
|
|
60 |
'post_title' => sanitize_text_field( $params->title ),
|
61 |
'post_content' => '',
|
62 |
'post_type' => 'wptb-tables',
|
63 |
-
'
|
64 |
]);
|
65 |
update_post_meta( absint( $params->id ), '_wptb_content_', $params->content );
|
|
|
66 |
wp_die( json_encode( ['edited',''] ) );
|
67 |
}
|
68 |
} else {
|
@@ -72,10 +74,11 @@ class Admin_Menu {
|
|
72 |
|
73 |
public function get_table() {
|
74 |
$post = get_post( absint( $_REQUEST['id'] ) );
|
75 |
-
$
|
|
|
76 |
$name = $post->post_title;
|
77 |
//$html = json_decode( $html );
|
78 |
-
die( json_encode( [$name, $
|
79 |
}
|
80 |
|
81 |
|
35 |
'post_title' => '',
|
36 |
'post_content' => '',
|
37 |
'post_type' => 'wptb-tables',
|
38 |
+
'post_status' => 'draft'
|
39 |
]);
|
40 |
wp_die( json_encode( ['created',$id] ) );
|
41 |
}
|
50 |
'post_title' => sanitize_text_field( $params->title ),
|
51 |
'post_content' => '',
|
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 |
wp_die( json_encode( ['saved',$id] ) );
|
58 |
} else {
|
59 |
wp_update_post([
|
61 |
'post_title' => sanitize_text_field( $params->title ),
|
62 |
'post_content' => '',
|
63 |
'post_type' => 'wptb-tables',
|
64 |
+
'post_status' => 'draft'
|
65 |
]);
|
66 |
update_post_meta( absint( $params->id ), '_wptb_content_', $params->content );
|
67 |
+
update_post_meta( absint( $params->id ), '_wptb_table_elements_datas_', $params->elements_datas );
|
68 |
wp_die( json_encode( ['edited',''] ) );
|
69 |
}
|
70 |
} else {
|
74 |
|
75 |
public function get_table() {
|
76 |
$post = get_post( absint( $_REQUEST['id'] ) );
|
77 |
+
$table_html = get_post_meta( absint( $_REQUEST['id'] ) , '_wptb_content_', true );
|
78 |
+
$elements_datas = get_post_meta( absint( $_REQUEST['id'] ) , '_wptb_table_elements_datas_', true );
|
79 |
$name = $post->post_title;
|
80 |
//$html = json_decode( $html );
|
81 |
+
die( json_encode( [$name, $table_html, $elements_datas] ) );
|
82 |
}
|
83 |
|
84 |
|
inc/admin/class-tables.php
CHANGED
@@ -21,10 +21,9 @@ class Tables {
|
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
public function __construct() {
|
24 |
-
|
25 |
// Register wptb-tables custom post type
|
26 |
$this->register_cpt();
|
27 |
-
// Add the custom columns to the book post type:
|
28 |
add_filter( 'manage_wptb-tables_posts_columns', [ $this,'addHeader' ] );
|
29 |
add_filter( 'post_row_actions', [ $this,'customizeActions'], 10, 2 );
|
30 |
add_action( 'manage_wptb-tables_posts_custom_column' , [ $this,'addContent' ], 10, 2 );
|
@@ -68,7 +67,7 @@ class Tables {
|
|
68 |
|
69 |
}
|
70 |
}
|
71 |
-
|
72 |
/**
|
73 |
* Registers the custom post type to be used for table.
|
74 |
*
|
@@ -104,7 +103,16 @@ class Tables {
|
|
104 |
//$uniqueSequence = 't'.substr( md5(time()),0,8 );
|
105 |
$html = get_post_meta( $args['id'] , '_wptb_content_', true );
|
106 |
//$html = json_decode( $html );
|
107 |
-
$html = '<div class="wptb-table-container"><div class="wptb-table-container-matrix">' . $html . '</div></div>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
return ( $html );
|
109 |
}
|
110 |
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
public function __construct() {
|
|
|
24 |
// Register wptb-tables custom post type
|
25 |
$this->register_cpt();
|
26 |
+
// Add the custom columns to the book post type:
|
27 |
add_filter( 'manage_wptb-tables_posts_columns', [ $this,'addHeader' ] );
|
28 |
add_filter( 'post_row_actions', [ $this,'customizeActions'], 10, 2 );
|
29 |
add_action( 'manage_wptb-tables_posts_custom_column' , [ $this,'addContent' ], 10, 2 );
|
67 |
|
68 |
}
|
69 |
}
|
70 |
+
|
71 |
/**
|
72 |
* Registers the custom post type to be used for table.
|
73 |
*
|
103 |
//$uniqueSequence = 't'.substr( md5(time()),0,8 );
|
104 |
$html = get_post_meta( $args['id'] , '_wptb_content_', true );
|
105 |
//$html = json_decode( $html );
|
106 |
+
$html = '<div class="wptb-table-container wptb-table-' . $args['id'] . '"><div class="wptb-table-container-matrix">' . $html . '</div></div>';
|
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[0].classList.remove( "wptb-table-preview-static-indic" );'
|
113 |
+
. ' wptbPreviewTable[0].style.display = "none";'
|
114 |
+
. '}'
|
115 |
+
. '</script>';
|
116 |
return ( $html );
|
117 |
}
|
118 |
|
inc/admin/class-wptb-listing.php
CHANGED
@@ -54,18 +54,21 @@ class WPTB_Listing extends \WP_List_Table{
|
|
54 |
'post_title' => sanitize_text_field( $post->post_title ),
|
55 |
'post_content' => '',
|
56 |
'post_type' => 'wptb-tables',
|
57 |
-
'
|
58 |
]);
|
59 |
-
$
|
|
|
60 |
|
61 |
-
$
|
|
|
62 |
|
63 |
-
if( $id_new && $
|
64 |
wp_update_post([
|
65 |
'ID' => $id_new,
|
66 |
'post_title' => str_replace( ' (ID #'.$id.')', '', get_the_title( $id_new ) . ' (ID #' . $id_new . ')' ),
|
67 |
'post_content' => '',
|
68 |
-
'post_type' => 'wptb-tables'
|
|
|
69 |
]);
|
70 |
return true;
|
71 |
}
|
54 |
'post_title' => sanitize_text_field( $post->post_title ),
|
55 |
'post_content' => '',
|
56 |
'post_type' => 'wptb-tables',
|
57 |
+
'post_status' => 'draft'
|
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([
|
67 |
'ID' => $id_new,
|
68 |
'post_title' => str_replace( ' (ID #'.$id.')', '', get_the_title( $id_new ) . ' (ID #' . $id_new . ')' ),
|
69 |
'post_content' => '',
|
70 |
+
'post_type' => 'wptb-tables',
|
71 |
+
'post_status' => 'draft'
|
72 |
]);
|
73 |
return true;
|
74 |
}
|
inc/admin/css/admin.css
CHANGED
@@ -53,7 +53,7 @@ body>img {
|
|
53 |
padding: 0;
|
54 |
border-bottom: 1px solid #ccc;
|
55 |
position: fixed;
|
56 |
-
z-index:
|
57 |
display: block;
|
58 |
top: 0;
|
59 |
left: 0;
|
@@ -722,26 +722,26 @@ input[type="range"]::-ms-thumb {
|
|
722 |
/* W3C */
|
723 |
}
|
724 |
|
725 |
-
.wptb-
|
726 |
display: inline-block;
|
727 |
width: 95%;
|
728 |
padding: 25px 0 10px 0;
|
729 |
}
|
730 |
|
731 |
-
.wptb-
|
732 |
display: none;
|
733 |
}
|
734 |
|
735 |
-
.wptb-
|
736 |
-webkit-transform: translateX(20px);
|
737 |
transform: translateX(20px);
|
738 |
}
|
739 |
|
740 |
-
.wptb-
|
741 |
background: #3B7EC0;
|
742 |
}
|
743 |
|
744 |
-
.wptb-
|
745 |
float: right;
|
746 |
padding: 2px;
|
747 |
width: 40px;
|
@@ -754,7 +754,7 @@ input[type="range"]::-ms-thumb {
|
|
754 |
box-sizing: initial;
|
755 |
}
|
756 |
|
757 |
-
.wptb-
|
758 |
content: " ";
|
759 |
display: block;
|
760 |
width: 20px;
|
@@ -766,19 +766,19 @@ input[type="range"]::-ms-thumb {
|
|
766 |
transition: .25s;
|
767 |
}
|
768 |
|
769 |
-
.wptb-
|
770 |
-webkit-transform: translateX(50px);
|
771 |
transform: translateX(50px);
|
772 |
}
|
773 |
|
774 |
-
.wptb-
|
775 |
float: left;
|
776 |
width: 100px;
|
777 |
border-radius: 5px;
|
778 |
height: 25px;
|
779 |
}
|
780 |
|
781 |
-
.wptb-
|
782 |
width: 50px;
|
783 |
height: 25px;
|
784 |
border-radius: 5px;
|
@@ -786,6 +786,62 @@ input[type="range"]::-ms-thumb {
|
|
786 |
transform: translateX(0px);
|
787 |
}
|
788 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
789 |
.wptb-column-fixed,
|
790 |
.wptb-column-auto {
|
791 |
position: absolute;
|
@@ -907,6 +963,18 @@ ul.wptb-tabs {
|
|
907 |
cursor: move;
|
908 |
}
|
909 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
910 |
.wptb-element p {
|
911 |
margin: 0;
|
912 |
font-size: 15px;
|
@@ -1531,7 +1599,7 @@ table.wptb-table {
|
|
1531 |
width: 100%;
|
1532 |
}
|
1533 |
|
1534 |
-
.wptb-list-
|
1535 |
list-style: none;
|
1536 |
margin: 0px;
|
1537 |
}
|
@@ -1545,7 +1613,7 @@ table.wptb-table {
|
|
1545 |
line-height: 30px;
|
1546 |
}
|
1547 |
|
1548 |
-
.wptb-list-
|
1549 |
content: attr(data-list-style-type-index);
|
1550 |
display: inline-block;
|
1551 |
line-height: 30px;
|
@@ -1555,23 +1623,23 @@ table.wptb-table {
|
|
1555 |
cursor: text;
|
1556 |
}
|
1557 |
|
1558 |
-
.wptb-list-
|
1559 |
padding-right: 10px;
|
1560 |
}
|
1561 |
|
1562 |
-
.wptb-list-
|
1563 |
content: '\25CF';
|
1564 |
}
|
1565 |
|
1566 |
-
.wptb-list-
|
1567 |
content: '\25CB';
|
1568 |
}
|
1569 |
|
1570 |
-
.wptb-list-
|
1571 |
content: '\25A0';
|
1572 |
}
|
1573 |
|
1574 |
-
.wptb-list-
|
1575 |
content: '';
|
1576 |
padding-right: 0px;
|
1577 |
}
|
@@ -1582,7 +1650,7 @@ table.wptb-table {
|
|
1582 |
/*width: 100%;*/
|
1583 |
}
|
1584 |
|
1585 |
-
.wptb-droppable.wptb-cell .wptb-list-
|
1586 |
display: block;
|
1587 |
}
|
1588 |
|
@@ -1591,12 +1659,12 @@ table.wptb-table {
|
|
1591 |
width: 100%;
|
1592 |
}
|
1593 |
|
1594 |
-
.wptb-droppable.wptb-cell .wptb-list-
|
1595 |
display: list-item;
|
1596 |
border: none !important;
|
1597 |
}
|
1598 |
|
1599 |
-
.wptb-droppable.wptb-cell .wptb-list-
|
1600 |
content: "";
|
1601 |
display: inline-block;
|
1602 |
position: absolute;
|
@@ -1607,7 +1675,7 @@ table.wptb-table {
|
|
1607 |
border: 1px solid #1ea5e5 !important;
|
1608 |
}
|
1609 |
|
1610 |
-
.wptb-list-
|
1611 |
/*padding-left: 20px;*/
|
1612 |
}
|
1613 |
|
@@ -1846,46 +1914,46 @@ td[class*="wptb-fused-cell"] {
|
|
1846 |
display: none !important;
|
1847 |
}
|
1848 |
|
1849 |
-
.wptb-size-
|
1850 |
border-radius: .2rem;
|
1851 |
padding: .35rem .6rem;
|
1852 |
max-width: 100%;
|
1853 |
}
|
1854 |
|
1855 |
-
.wptb-size-
|
1856 |
font-size: .875rem;
|
1857 |
line-height: 1.5;
|
1858 |
}
|
1859 |
|
1860 |
-
.wptb-size-
|
1861 |
border-radius: .3rem;
|
1862 |
padding: .475rem .85rem;
|
1863 |
max-width: 100%;
|
1864 |
}
|
1865 |
|
1866 |
-
.wptb-size-
|
1867 |
font-size: 1.125rem;
|
1868 |
line-height: 1.5;
|
1869 |
}
|
1870 |
|
1871 |
-
.wptb-size-
|
1872 |
border-radius: .3rem;
|
1873 |
padding: .6rem 1.2rem;
|
1874 |
max-width: 100%;
|
1875 |
}
|
1876 |
|
1877 |
-
.wptb-size-
|
1878 |
font-size: 1.25rem;
|
1879 |
line-height: 1.5;
|
1880 |
}
|
1881 |
|
1882 |
-
.wptb-size-
|
1883 |
border-radius: .4rem;
|
1884 |
padding: .8rem 1.35rem;
|
1885 |
max-width: 100%;
|
1886 |
}
|
1887 |
|
1888 |
-
.wptb-size-
|
1889 |
font-size: 1.35rem;
|
1890 |
line-height: 1.5;
|
1891 |
}
|
@@ -2073,6 +2141,10 @@ td[class*="wptb-fused-cell"] {
|
|
2073 |
display: none;
|
2074 |
}
|
2075 |
|
|
|
|
|
|
|
|
|
2076 |
|
2077 |
/*.wptb-rating-stars-box ul > li.wptb-rating-star.wptb-rating-star-hover {
|
2078 |
color:#FF912C;
|
@@ -2108,12 +2180,12 @@ td[class*="wptb-fused-cell"] {
|
|
2108 |
color: inherit;
|
2109 |
}*/
|
2110 |
|
2111 |
-
.wptb-
|
2112 |
text-align: center;
|
2113 |
font-size: 20px;
|
2114 |
}
|
2115 |
|
2116 |
-
.wptb-
|
2117 |
vertical-align: top;
|
2118 |
display: inline-block;
|
2119 |
color: #888;
|
@@ -2405,4 +2477,49 @@ td[class*="wptb-fused-cell"] {
|
|
2405 |
background: #fff;
|
2406 |
box-shadow: inset 0px 0px 20px 4px rgba(0, 0, 0, 0.15);
|
2407 |
cursor: default;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2408 |
}
|
53 |
padding: 0;
|
54 |
border-bottom: 1px solid #ccc;
|
55 |
position: fixed;
|
56 |
+
z-index: 100102;
|
57 |
display: block;
|
58 |
top: 0;
|
59 |
left: 0;
|
722 |
/* W3C */
|
723 |
}
|
724 |
|
725 |
+
.wptb-toggle {
|
726 |
display: inline-block;
|
727 |
width: 95%;
|
728 |
padding: 25px 0 10px 0;
|
729 |
}
|
730 |
|
731 |
+
.wptb-toggle input {
|
732 |
display: none;
|
733 |
}
|
734 |
|
735 |
+
.wptb-toggle input:checked+i::after {
|
736 |
-webkit-transform: translateX(20px);
|
737 |
transform: translateX(20px);
|
738 |
}
|
739 |
|
740 |
+
.wptb-toggle input:checked+i {
|
741 |
background: #3B7EC0;
|
742 |
}
|
743 |
|
744 |
+
.wptb-toggle i {
|
745 |
float: right;
|
746 |
padding: 2px;
|
747 |
width: 40px;
|
754 |
box-sizing: initial;
|
755 |
}
|
756 |
|
757 |
+
.wptb-toggle i::after {
|
758 |
content: " ";
|
759 |
display: block;
|
760 |
width: 20px;
|
766 |
transition: .25s;
|
767 |
}
|
768 |
|
769 |
+
.wptb-toggle.wptb-column-width-fix-auto input:checked+i::after {
|
770 |
-webkit-transform: translateX(50px);
|
771 |
transform: translateX(50px);
|
772 |
}
|
773 |
|
774 |
+
.wptb-toggle.wptb-column-width-fix-auto i {
|
775 |
float: left;
|
776 |
width: 100px;
|
777 |
border-radius: 5px;
|
778 |
height: 25px;
|
779 |
}
|
780 |
|
781 |
+
.wptb-toggle.wptb-column-width-fix-auto i:after {
|
782 |
width: 50px;
|
783 |
height: 25px;
|
784 |
border-radius: 5px;
|
786 |
transform: translateX(0px);
|
787 |
}
|
788 |
|
789 |
+
.wptb-checkbox {
|
790 |
+
display: block;
|
791 |
+
user-select: none;
|
792 |
+
padding-top: 3px;
|
793 |
+
padding-bottom: 3px;
|
794 |
+
}
|
795 |
+
|
796 |
+
.wptb-checkbox span {
|
797 |
+
vertical-align: middle;
|
798 |
+
}
|
799 |
+
|
800 |
+
.wptb-checkbox input[type="checkbox"] {
|
801 |
+
opacity: 0;
|
802 |
+
height: 0;
|
803 |
+
width: 0;
|
804 |
+
display: none;
|
805 |
+
}
|
806 |
+
|
807 |
+
.wptb-checkbox-checkmark {
|
808 |
+
height: 25px;
|
809 |
+
width: 25px;
|
810 |
+
background-color: #d8d9db;
|
811 |
+
display: inline-block;
|
812 |
+
position: relative;
|
813 |
+
border-radius: 3px;
|
814 |
+
margin-left: 5px;
|
815 |
+
}
|
816 |
+
|
817 |
+
.wptb-checkbox:hover input[type="checkbox"] ~ .wptb-checkbox-checkmark {
|
818 |
+
background-color: #6EA4D8;
|
819 |
+
}
|
820 |
+
|
821 |
+
.wptb-checkbox input[type="checkbox"]:checked ~ .wptb-checkbox-checkmark {
|
822 |
+
background-color: #3B7EC0;
|
823 |
+
}
|
824 |
+
|
825 |
+
.wptb-checkbox-checkmark:after {
|
826 |
+
content: "";
|
827 |
+
position: absolute;
|
828 |
+
display: none;
|
829 |
+
}
|
830 |
+
|
831 |
+
.wptb-checkbox input[type="checkbox"]:checked ~ .wptb-checkbox-checkmark:after {
|
832 |
+
display: block;
|
833 |
+
}
|
834 |
+
|
835 |
+
.wptb-checkbox .wptb-checkbox-checkmark:after {
|
836 |
+
left: 10px;
|
837 |
+
top: 7px;
|
838 |
+
width: 6px;
|
839 |
+
height: 11px;
|
840 |
+
border: solid #fff;
|
841 |
+
border-width: 0 2px 2px 0;
|
842 |
+
transform: rotate(45deg);
|
843 |
+
}
|
844 |
+
|
845 |
.wptb-column-fixed,
|
846 |
.wptb-column-auto {
|
847 |
position: absolute;
|
963 |
cursor: move;
|
964 |
}
|
965 |
|
966 |
+
.wptb-element:nth-child(odd) {
|
967 |
+
width: 47.5%;
|
968 |
+
float: left;
|
969 |
+
margin: 6px 0 -4px 6px;
|
970 |
+
}
|
971 |
+
|
972 |
+
.wptb-element:nth-child(even) {
|
973 |
+
width: 47.5%;
|
974 |
+
float: right;
|
975 |
+
margin: 6px 5px -4px 0;
|
976 |
+
}
|
977 |
+
|
978 |
.wptb-element p {
|
979 |
margin: 0;
|
980 |
font-size: 15px;
|
1599 |
width: 100%;
|
1600 |
}
|
1601 |
|
1602 |
+
.wptb-list-container ul li {
|
1603 |
list-style: none;
|
1604 |
margin: 0px;
|
1605 |
}
|
1613 |
line-height: 30px;
|
1614 |
}
|
1615 |
|
1616 |
+
.wptb-list-container ul li>div>p::before {
|
1617 |
content: attr(data-list-style-type-index);
|
1618 |
display: inline-block;
|
1619 |
line-height: 30px;
|
1623 |
cursor: text;
|
1624 |
}
|
1625 |
|
1626 |
+
.wptb-list-container ul li>div>p::before {
|
1627 |
padding-right: 10px;
|
1628 |
}
|
1629 |
|
1630 |
+
.wptb-list-container ul li>div>p.wptb-list-style-type-disc::before {
|
1631 |
content: '\25CF';
|
1632 |
}
|
1633 |
|
1634 |
+
.wptb-list-container ul li>div>p.wptb-list-style-type-circle::before {
|
1635 |
content: '\25CB';
|
1636 |
}
|
1637 |
|
1638 |
+
.wptb-list-container ul li>div>p.wptb-list-style-type-square::before {
|
1639 |
content: '\25A0';
|
1640 |
}
|
1641 |
|
1642 |
+
.wptb-list-container ul li>div>p.wptb-list-style-type-none::before {
|
1643 |
content: '';
|
1644 |
padding-right: 0px;
|
1645 |
}
|
1650 |
/*width: 100%;*/
|
1651 |
}
|
1652 |
|
1653 |
+
.wptb-droppable.wptb-cell .wptb-list-container.wptb-directlyhovered {
|
1654 |
display: block;
|
1655 |
}
|
1656 |
|
1659 |
width: 100%;
|
1660 |
}
|
1661 |
|
1662 |
+
.wptb-droppable.wptb-cell .wptb-list-container.wptb-directlyhovered .wptb-directlyhovered {
|
1663 |
display: list-item;
|
1664 |
border: none !important;
|
1665 |
}
|
1666 |
|
1667 |
+
.wptb-droppable.wptb-cell .wptb-list-container.wptb-directlyhovered .wptb-directlyhovered:before {
|
1668 |
content: "";
|
1669 |
display: inline-block;
|
1670 |
position: absolute;
|
1675 |
border: 1px solid #1ea5e5 !important;
|
1676 |
}
|
1677 |
|
1678 |
+
.wptb-list-container {
|
1679 |
/*padding-left: 20px;*/
|
1680 |
}
|
1681 |
|
1914 |
display: none !important;
|
1915 |
}
|
1916 |
|
1917 |
+
.wptb-size-s .wptb-button {
|
1918 |
border-radius: .2rem;
|
1919 |
padding: .35rem .6rem;
|
1920 |
max-width: 100%;
|
1921 |
}
|
1922 |
|
1923 |
+
.wptb-size-s .wptb-button p {
|
1924 |
font-size: .875rem;
|
1925 |
line-height: 1.5;
|
1926 |
}
|
1927 |
|
1928 |
+
.wptb-size-m .wptb-button {
|
1929 |
border-radius: .3rem;
|
1930 |
padding: .475rem .85rem;
|
1931 |
max-width: 100%;
|
1932 |
}
|
1933 |
|
1934 |
+
.wptb-size-m .wptb-button p {
|
1935 |
font-size: 1.125rem;
|
1936 |
line-height: 1.5;
|
1937 |
}
|
1938 |
|
1939 |
+
.wptb-size-l .wptb-button {
|
1940 |
border-radius: .3rem;
|
1941 |
padding: .6rem 1.2rem;
|
1942 |
max-width: 100%;
|
1943 |
}
|
1944 |
|
1945 |
+
.wptb-size-l .wptb-button p {
|
1946 |
font-size: 1.25rem;
|
1947 |
line-height: 1.5;
|
1948 |
}
|
1949 |
|
1950 |
+
.wptb-size-xl .wptb-button {
|
1951 |
border-radius: .4rem;
|
1952 |
padding: .8rem 1.35rem;
|
1953 |
max-width: 100%;
|
1954 |
}
|
1955 |
|
1956 |
+
.wptb-size-xl .wptb-button p {
|
1957 |
font-size: 1.35rem;
|
1958 |
line-height: 1.5;
|
1959 |
}
|
2141 |
display: none;
|
2142 |
}
|
2143 |
|
2144 |
+
.wptb-rating-stars-box ul > li.wptb-rating-star span svg {
|
2145 |
+
display: block;
|
2146 |
+
}
|
2147 |
+
|
2148 |
|
2149 |
/*.wptb-rating-stars-box ul > li.wptb-rating-star.wptb-rating-star-hover {
|
2150 |
color:#FF912C;
|
2180 |
color: inherit;
|
2181 |
}*/
|
2182 |
|
2183 |
+
.wptb-number-rating-box {
|
2184 |
text-align: center;
|
2185 |
font-size: 20px;
|
2186 |
}
|
2187 |
|
2188 |
+
.wptb-number-rating-box>div {
|
2189 |
vertical-align: top;
|
2190 |
display: inline-block;
|
2191 |
color: #888;
|
2477 |
background: #fff;
|
2478 |
box-shadow: inset 0px 0px 20px 4px rgba(0, 0, 0, 0.15);
|
2479 |
cursor: default;
|
2480 |
+
}
|
2481 |
+
|
2482 |
+
|
2483 |
+
|
2484 |
+
/*
|
2485 |
+
** classes with justify-content styles
|
2486 |
+
*/
|
2487 |
+
|
2488 |
+
.wptb-justify-content-left {
|
2489 |
+
justify-content: left;
|
2490 |
+
}
|
2491 |
+
.wptb-justify-content-center {
|
2492 |
+
justify-content: center;
|
2493 |
+
}
|
2494 |
+
.wptb-justify-content-right {
|
2495 |
+
justify-content: right;
|
2496 |
+
}
|
2497 |
+
|
2498 |
+
|
2499 |
+
/*
|
2500 |
+
** classes with float styles
|
2501 |
+
*/
|
2502 |
+
|
2503 |
+
.wptb-float-left {
|
2504 |
+
float: left;
|
2505 |
+
}
|
2506 |
+
.wptb-float-center {
|
2507 |
+
float: none;
|
2508 |
+
}
|
2509 |
+
.wptb-float-right {
|
2510 |
+
float: right;
|
2511 |
+
}
|
2512 |
+
|
2513 |
+
/*
|
2514 |
+
** classes with text-align styles
|
2515 |
+
*/
|
2516 |
+
|
2517 |
+
.wptb-text-align-left {
|
2518 |
+
text-align: left;
|
2519 |
+
}
|
2520 |
+
.wptb-text-align-center {
|
2521 |
+
text-align: center;
|
2522 |
+
}
|
2523 |
+
.wptb-text-align-right {
|
2524 |
+
text-align: right;
|
2525 |
}
|
inc/admin/element-classes/base/element-base-object.php
ADDED
@@ -0,0 +1,217 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
|
6 |
+
// If this file is called directly, abort.
|
7 |
+
if ( ! defined( 'WPINC' ) ) {
|
8 |
+
die;
|
9 |
+
}
|
10 |
+
|
11 |
+
|
12 |
+
/**
|
13 |
+
* WP Table Builder element base.
|
14 |
+
*
|
15 |
+
* An abstract class to register new WP Table Builder elements.
|
16 |
+
*
|
17 |
+
* This abstract class must be extended in order to register new elements.
|
18 |
+
*
|
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.
|
68 |
+
*
|
69 |
+
* Retrieve directory item icon.
|
70 |
+
*
|
71 |
+
* @since 1.1.2
|
72 |
+
* @access public
|
73 |
+
*
|
74 |
+
* @return string Directory Item icon.
|
75 |
+
*/
|
76 |
+
abstract public function get_directory_icon();
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Get url icon.
|
80 |
+
*
|
81 |
+
* Return url icon.
|
82 |
+
*
|
83 |
+
* @since 1.1.2
|
84 |
+
* @access public
|
85 |
+
*
|
86 |
+
* @return string Url Item icon.
|
87 |
+
*/
|
88 |
+
abstract public function get_url_icon();
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Include file with js script for element
|
92 |
+
*
|
93 |
+
* @since 1.1.2
|
94 |
+
* @access protected
|
95 |
+
*/
|
96 |
+
public function element_script() {}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Get stack.
|
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 |
+
*
|
167 |
+
* @since 1.1.2
|
168 |
+
* @access protected
|
169 |
+
*/
|
170 |
+
protected function _content_template() {}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Output element template and script.
|
174 |
+
*
|
175 |
+
* Used to generate the element template on the editor.
|
176 |
+
*
|
177 |
+
* @since 1.1.2
|
178 |
+
* @access public
|
179 |
+
*/
|
180 |
+
public function output_template() {
|
181 |
+
ob_start();
|
182 |
+
|
183 |
+
$this->_content_template();
|
184 |
+
|
185 |
+
$template_content = ob_get_clean();
|
186 |
+
|
187 |
+
if ( empty( $template_content ) ) {
|
188 |
+
return;
|
189 |
+
}
|
190 |
+
|
191 |
+
?>
|
192 |
+
<script type="text/html" id="tmpl-wptb-<?php echo esc_attr( $this->get_name() ); ?>-content">
|
193 |
+
<?php echo $template_content; ?>
|
194 |
+
</script>
|
195 |
+
|
196 |
+
<?php
|
197 |
+
}
|
198 |
+
|
199 |
+
/**
|
200 |
+
* Output element script.
|
201 |
+
*
|
202 |
+
* @since 1.1.2
|
203 |
+
* @access public
|
204 |
+
*/
|
205 |
+
public function output_scripts() {
|
206 |
+
$directory_sctipt = $this->element_script();
|
207 |
+
if( $directory_sctipt && file_exists( $directory_sctipt ) ) {
|
208 |
+
?>
|
209 |
+
<script type="text/javascript">
|
210 |
+
WPTB_ElementsScriptsLauncher['<?php echo $this->get_name(); ?>'] = function( element ) {
|
211 |
+
<?php include $directory_sctipt; ?>
|
212 |
+
}
|
213 |
+
</script>
|
214 |
+
<?php
|
215 |
+
}
|
216 |
+
}
|
217 |
+
}
|
inc/admin/element-classes/controls/base-control.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 base control.
|
11 |
+
*
|
12 |
+
* An abstract class for creating new controls in the panel.
|
13 |
+
*
|
14 |
+
* @since 1.1.2
|
15 |
+
* @abstract
|
16 |
+
*/
|
17 |
+
abstract class Base_Control {
|
18 |
+
/**
|
19 |
+
* Get control type.
|
20 |
+
*
|
21 |
+
* Return the control type.
|
22 |
+
*
|
23 |
+
* @since 1.1.2
|
24 |
+
* @access public
|
25 |
+
* @abstract
|
26 |
+
*/
|
27 |
+
abstract public function get_type();
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Enqueue 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 |
+
* Control content template.
|
41 |
+
*
|
42 |
+
* Used to generate the control HTML in the editor using wp js template
|
43 |
+
*
|
44 |
+
* @since 1.1.2
|
45 |
+
* @access public
|
46 |
+
* @abstract
|
47 |
+
*/
|
48 |
+
abstract public function content_template();
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Output element template.
|
52 |
+
*
|
53 |
+
* Used to generate the element template on the editor.
|
54 |
+
*
|
55 |
+
* @since 1.1.2
|
56 |
+
* @access public
|
57 |
+
*/
|
58 |
+
public function output_template() {
|
59 |
+
ob_start();
|
60 |
+
|
61 |
+
$this->content_template();
|
62 |
+
|
63 |
+
$template_content = ob_get_clean();
|
64 |
+
|
65 |
+
if ( empty( $template_content ) ) {
|
66 |
+
return;
|
67 |
+
}
|
68 |
+
|
69 |
+
?>
|
70 |
+
<script type="text/html" id="tmpl-wptb-<?php echo esc_attr( $this->get_type() ); ?>-control">
|
71 |
+
<?php echo $template_content; ?>
|
72 |
+
</script>
|
73 |
+
<?php
|
74 |
+
}
|
75 |
+
}
|
inc/admin/element-classes/controls/control-alignment.php
ADDED
@@ -0,0 +1,185 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Controls;
|
3 |
+
use WP_Table_Builder as NS;
|
4 |
+
// If this file is called directly, abort.
|
5 |
+
if ( ! defined( 'WPINC' ) ) {
|
6 |
+
die;
|
7 |
+
}
|
8 |
+
|
9 |
+
/**
|
10 |
+
* WP Table Builder "alignment" control.
|
11 |
+
*
|
12 |
+
* A control class for creating "alignment" control.
|
13 |
+
* When this control adds to element there is opportunity to point css type (for example text-align, float ...)
|
14 |
+
* witch will be necessary to use for element alignment.
|
15 |
+
*
|
16 |
+
* @since 1.1.2
|
17 |
+
*/
|
18 |
+
class Control_Alignment extends Base_Control {
|
19 |
+
/**
|
20 |
+
* Get control type.
|
21 |
+
*
|
22 |
+
* @since 1.1.2
|
23 |
+
* @access public
|
24 |
+
*
|
25 |
+
* @return string Control type.
|
26 |
+
*/
|
27 |
+
public function get_type() {
|
28 |
+
return 'alignment';
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Enqueue "alignment" control scripts and styles.
|
33 |
+
*
|
34 |
+
* Used to register and enqueue custom scripts and styles
|
35 |
+
* used by the "alignment" control.
|
36 |
+
*
|
37 |
+
* @since 1.1.2
|
38 |
+
* @access public
|
39 |
+
*/
|
40 |
+
public function enqueue() {
|
41 |
+
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Render "alignment" control output in the editor.
|
46 |
+
*
|
47 |
+
* Used to generate the control HTML in the editor wp js template
|
48 |
+
*
|
49 |
+
* @since 1.1.2
|
50 |
+
* @access public
|
51 |
+
*/
|
52 |
+
public function content_template() {
|
53 |
+
?>
|
54 |
+
<#
|
55 |
+
let label,
|
56 |
+
selector,
|
57 |
+
selected0,
|
58 |
+
selected1,
|
59 |
+
selected2,
|
60 |
+
styleAlignment,
|
61 |
+
left,
|
62 |
+
center,
|
63 |
+
right,
|
64 |
+
dataElement,
|
65 |
+
targetAddClass;
|
66 |
+
|
67 |
+
if( data.label ) {
|
68 |
+
label = data.label;
|
69 |
+
}
|
70 |
+
|
71 |
+
if( 'selected' in data ) {
|
72 |
+
if( data.selected == 0 ) {
|
73 |
+
selected0 = 'selected';
|
74 |
+
} else if( data.selected == 1 ) {
|
75 |
+
selected1 = 'selected';
|
76 |
+
} else if( data.selected == 2 ) {
|
77 |
+
selected2 = 'selected';
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
for ( let prop in data.selectors ) {
|
82 |
+
selector = prop;
|
83 |
+
styleAlignment = data.selectors[prop];
|
84 |
+
}
|
85 |
+
|
86 |
+
if( styleAlignment == 'text-align' ) {
|
87 |
+
left = 'left';
|
88 |
+
center = 'center';
|
89 |
+
right = 'right';
|
90 |
+
} else if( styleAlignment == 'justify-content' ) {
|
91 |
+
left = 'flex-start';
|
92 |
+
center = 'center';
|
93 |
+
right = 'flex-end';
|
94 |
+
} else if( styleAlignment == 'float' ) {
|
95 |
+
left = 'left';
|
96 |
+
center = 'none';
|
97 |
+
right = 'right';
|
98 |
+
}
|
99 |
+
|
100 |
+
targetAddClass = data.elementControlTargetUnicClass;
|
101 |
+
#>
|
102 |
+
<?php
|
103 |
+
ob_start();
|
104 |
+
require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/left_align.php';
|
105 |
+
$left_align_image_svg = ob_get_clean();
|
106 |
+
|
107 |
+
ob_start();
|
108 |
+
require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/center_align.php';
|
109 |
+
$center_align_image_svg = ob_get_clean();
|
110 |
+
|
111 |
+
ob_start();
|
112 |
+
require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/right_align.php';
|
113 |
+
$right_align_image_svg = ob_get_clean();
|
114 |
+
?>
|
115 |
+
<div class="wptb-settings-item-header">
|
116 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
117 |
+
</div>
|
118 |
+
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 0px; padding-top: 23px;">
|
119 |
+
<ul>
|
120 |
+
<li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher
|
121 |
+
{{{selected0}}} {{{targetAddClass}}}" data-alignment-value="{{{left}}}">
|
122 |
+
<?php echo $left_align_image_svg; ?>
|
123 |
+
</li>
|
124 |
+
<li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher
|
125 |
+
{{{selected1}}} {{{targetAddClass}}}" data-alignment-value="{{{center}}}">
|
126 |
+
<?php echo $center_align_image_svg; ?>
|
127 |
+
</li>
|
128 |
+
<li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher
|
129 |
+
{{{selected2}}} {{{targetAddClass}}}" data-alignment-value="{{{right}}}">
|
130 |
+
<?php echo $right_align_image_svg; ?>
|
131 |
+
</li>
|
132 |
+
</ul>
|
133 |
+
</div>
|
134 |
+
|
135 |
+
<wptb-template-script>
|
136 |
+
( function() {
|
137 |
+
let buttons = document.getElementsByClassName( '{{{targetAddClass}}}' );
|
138 |
+
let selectorEl = document.querySelectorAll( '{{{selector}}}' );
|
139 |
+
let selectedButtonAlignment;
|
140 |
+
if( selectorEl.length && '{{{styleAlignment}}}' ) {
|
141 |
+
for( let i = 0; i < selectorEl.length; i++ ) {
|
142 |
+
if( i === 0 ) {
|
143 |
+
selectedButtonAlignment = selectorEl[i].style['{{{styleAlignment}}}'];
|
144 |
+
}
|
145 |
+
|
146 |
+
if( i > 0 && selectedButtonAlignment != selectorEl[i].style['{{{styleAlignment}}}'] ) {
|
147 |
+
selectedButtonAlignment = false;
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
}
|
152 |
+
for ( var i = 0; i < buttons.length; i++ ) {
|
153 |
+
if( selectedButtonAlignment ) {
|
154 |
+
buttons[i].classList.remove( 'selected' );
|
155 |
+
|
156 |
+
if( selectedButtonAlignment == buttons[i].dataset.alignmentValue ) {
|
157 |
+
buttons[i].classList.add( 'selected' );
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
+
buttons[i].onclick = function () {
|
162 |
+
let selectorEl = document.querySelectorAll( '{{{selector}}}' );
|
163 |
+
if( selectorEl.length && '{{{styleAlignment}}}' ) {
|
164 |
+
let buttonDataAlignment = this.dataset.alignmentValue;
|
165 |
+
|
166 |
+
for( let i = 0; i < selectorEl.length; i++ ) {
|
167 |
+
selectorEl[i].style['{{{styleAlignment}}}'] = buttonDataAlignment;
|
168 |
+
}
|
169 |
+
|
170 |
+
var b = this.parentNode.getElementsByClassName( 'wptb-btn-size-btn' );
|
171 |
+
for ( let i = 0; i < b.length; i++ ) {
|
172 |
+
b[i].classList.remove( 'selected' );
|
173 |
+
}
|
174 |
+
this.classList.add( 'selected' );
|
175 |
+
|
176 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
177 |
+
wptbTableStateSaveManager.tableStateSet();
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
} )();
|
182 |
+
</wptb-template-script>
|
183 |
+
<?php
|
184 |
+
}
|
185 |
+
}
|
inc/admin/element-classes/controls/control-change-attribute.php
ADDED
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 "change attribute" control.
|
11 |
+
*
|
12 |
+
* A control class for creating "change attribute" control to add and then change attribute.
|
13 |
+
* When this control adds to element there is opportunity to point type attribute ( id, class ... )
|
14 |
+
* and part of name this abbtibute.
|
15 |
+
*
|
16 |
+
* @since 1.1.2
|
17 |
+
*/
|
18 |
+
class Control_Change_Attribute extends Base_Control {
|
19 |
+
/**
|
20 |
+
* Get control type.
|
21 |
+
*
|
22 |
+
* @since 1.1.2
|
23 |
+
* @access public
|
24 |
+
*
|
25 |
+
* @return string Control type.
|
26 |
+
*/
|
27 |
+
public function get_type() {
|
28 |
+
return 'change_attribute';
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Enqueue change attribute control scripts and styles.
|
33 |
+
*
|
34 |
+
* Used to register and enqueue custom scripts and styles
|
35 |
+
* used by the change attribute control.
|
36 |
+
*
|
37 |
+
* @since 1.1.2
|
38 |
+
* @access public
|
39 |
+
*/
|
40 |
+
public function enqueue() {
|
41 |
+
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Render change attribute control output in the editor.
|
46 |
+
*
|
47 |
+
* Used to generate the control HTML in the editor wp js template
|
48 |
+
*
|
49 |
+
* @since 1.1.2
|
50 |
+
* @access public
|
51 |
+
*/
|
52 |
+
public function content_template() {
|
53 |
+
?>
|
54 |
+
<#
|
55 |
+
let label,
|
56 |
+
selector,
|
57 |
+
attributeAndTitle,
|
58 |
+
attribute,
|
59 |
+
attributeName,
|
60 |
+
buttonDataNames,
|
61 |
+
buttonViews = [],
|
62 |
+
targetAddClass;
|
63 |
+
|
64 |
+
if( data.label ) {
|
65 |
+
label = data.label;
|
66 |
+
}
|
67 |
+
|
68 |
+
for ( let prop in data.selectors ) {
|
69 |
+
selector = prop;
|
70 |
+
attributeAndTitle = data.selectors[prop];
|
71 |
+
}
|
72 |
+
|
73 |
+
if( attributeAndTitle ) {
|
74 |
+
let attributeAndTitleArr = attributeAndTitle.split( ':' );
|
75 |
+
attribute = attributeAndTitleArr[0].trim();
|
76 |
+
attributeName = attributeAndTitleArr[1].trim();
|
77 |
+
}
|
78 |
+
|
79 |
+
if( data.buttonDataNames ) {
|
80 |
+
buttonDataNames = data.buttonDataNames;
|
81 |
+
}
|
82 |
+
|
83 |
+
if( data.buttonViews ) {
|
84 |
+
buttonViews = data.buttonViews;
|
85 |
+
}
|
86 |
+
|
87 |
+
let selectorArr = selector.replace( '.', '' ).split( ' ' );
|
88 |
+
var infArr = selectorArr[0].match(/wptb-element-((.+-)\d+)/i);
|
89 |
+
let dataElement = 'wptb-options-' + infArr[1];
|
90 |
+
|
91 |
+
targetAddClass = data.elementControlTargetUnicClass;
|
92 |
+
#>
|
93 |
+
|
94 |
+
<div class="wptb-settings-item-header">
|
95 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
96 |
+
</div>
|
97 |
+
<# if( buttonDataNames && Array.isArray( buttonDataNames ) ) { #>
|
98 |
+
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 0px; padding-top: 23px;">
|
99 |
+
<ul>
|
100 |
+
<# let selected,
|
101 |
+
selectedI;
|
102 |
+
if( data.numberSelectedButtonDefault &&
|
103 |
+
data.numberSelectedButtonDefault >= 0 &&
|
104 |
+
data.numberSelectedButtonDefault < buttonDataNames.length ) {
|
105 |
+
selectedI = data.numberSelectedButtonDefault;
|
106 |
+
} else {
|
107 |
+
selectedI = 1;
|
108 |
+
}
|
109 |
+
for( let i = 0; i < buttonDataNames.length; i++ ) {
|
110 |
+
if( i == selectedI ) {
|
111 |
+
selected = 'selected';
|
112 |
+
} else {
|
113 |
+
selected = '';
|
114 |
+
}
|
115 |
+
#>
|
116 |
+
<li class="wptb-btn-size-btn wptb-element-property wptb-btn-size-switcher
|
117 |
+
{{{selected}}} {{{targetAddClass}}}" data-name="{{{buttonDataNames[i]}}}" >
|
118 |
+
{{{buttonViews[i]}}}
|
119 |
+
</li>
|
120 |
+
<# } #>
|
121 |
+
</ul>
|
122 |
+
</div>
|
123 |
+
|
124 |
+
<wptb-template-script>
|
125 |
+
( function() {
|
126 |
+
let buttons = document.getElementsByClassName( '{{{targetAddClass}}}' );
|
127 |
+
let selectorEl = document.querySelector( '{{{selector}}}' );
|
128 |
+
let selectedButtonName;
|
129 |
+
if( selectorEl ) {
|
130 |
+
let regex = new RegExp('wptb-{{{attributeName}}}-([a-z]+)', "i");
|
131 |
+
let infArr = selectorEl.className.match( regex );
|
132 |
+
if( infArr && Array.isArray( infArr ) ) {
|
133 |
+
selectedButtonName = infArr[1];
|
134 |
+
}
|
135 |
+
}
|
136 |
+
for ( var i = 0; i < buttons.length; i++ ) {
|
137 |
+
if( selectedButtonName ) {
|
138 |
+
buttons[i].classList.remove( 'selected' );
|
139 |
+
|
140 |
+
if( selectedButtonName == buttons[i].dataset.name ) {
|
141 |
+
buttons[i].classList.add( 'selected' );
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
buttons[i].onclick = function () {
|
146 |
+
var buttonDataName = this.dataset.name,
|
147 |
+
buttonDataNames = '{{{buttonDataNames}}}'.split( ',' ),
|
148 |
+
selectorEl = document.querySelector( '{{{selector}}}' );
|
149 |
+
let attributeTitlesNew = '';
|
150 |
+
let attributesCollection;
|
151 |
+
if( buttonDataNames && Array.isArray( buttonDataNames ) ) {
|
152 |
+
attributesCollection = buttonDataNames.map( function( name ) {
|
153 |
+
return 'wptb-{{{attributeName}}}-' + name;
|
154 |
+
});
|
155 |
+
}
|
156 |
+
|
157 |
+
if( selectorEl && '{{{attribute}}}' && '{{{attributeName}}}' ) {
|
158 |
+
|
159 |
+
let attributeTitles = selectorEl.getAttribute( '{{{attribute}}}' );
|
160 |
+
|
161 |
+
if( attributeTitles ) {
|
162 |
+
let attributeTitlesArr = attributeTitles.split( ' ' );
|
163 |
+
|
164 |
+
if( attributeTitlesArr.length > 0 ) {
|
165 |
+
for( let i = 0; i < attributeTitlesArr.length; i++ ) {
|
166 |
+
if( attributeTitlesArr[i] && ! attributesCollection.includes( attributeTitlesArr[i] ) ) {
|
167 |
+
attributeTitlesNew += attributeTitlesArr[i] + ' ';
|
168 |
+
}
|
169 |
+
}
|
170 |
+
}
|
171 |
+
|
172 |
+
}
|
173 |
+
|
174 |
+
attributeTitlesNew += 'wptb-{{{attributeName}}}-' + buttonDataName;
|
175 |
+
selectorEl.removeAttribute( '{{{attribute}}}' );
|
176 |
+
|
177 |
+
if( attributeTitlesNew ) {
|
178 |
+
selectorEl.setAttribute( '{{{attribute}}}', attributeTitlesNew );
|
179 |
+
}
|
180 |
+
|
181 |
+
var b = this.parentNode.getElementsByClassName( 'wptb-btn-size-btn' );
|
182 |
+
for ( let i = 0; i < b.length; i++ ) {
|
183 |
+
b[i].classList.remove( 'selected' );
|
184 |
+
}
|
185 |
+
this.classList.add( 'selected' );
|
186 |
+
|
187 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
188 |
+
wptbTableStateSaveManager.tableStateSet();
|
189 |
+
}
|
190 |
+
}
|
191 |
+
}
|
192 |
+
} )();
|
193 |
+
</wptb-template-script>
|
194 |
+
<# } #>
|
195 |
+
<?php
|
196 |
+
}
|
197 |
+
}
|
inc/admin/element-classes/controls/control-checkbox.php
ADDED
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 "Checkbox" control.
|
11 |
+
*
|
12 |
+
* A control class for creating "checkbox" control object
|
13 |
+
*
|
14 |
+
* @since 1.1.2
|
15 |
+
*/
|
16 |
+
class Control_Checkbox extends Base_Control {
|
17 |
+
/**
|
18 |
+
* Get "Checkbox" 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 'checkbox';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Enqueue "checkbox" 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 "checkbox" 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 |
+
checkboxes = [],
|
54 |
+
selectedDefault,
|
55 |
+
targetInputAddClass;
|
56 |
+
|
57 |
+
if( data.label ) {
|
58 |
+
label = data.label;
|
59 |
+
}
|
60 |
+
|
61 |
+
if( data.checkboxes ) {
|
62 |
+
checkboxes = data.checkboxes;
|
63 |
+
}
|
64 |
+
|
65 |
+
if( data.selectedDefault ) {
|
66 |
+
selectedDefault = data.selectedDefault;
|
67 |
+
}
|
68 |
+
|
69 |
+
if( data.elemContainer ) {
|
70 |
+
elemContainer = data.elemContainer;
|
71 |
+
}
|
72 |
+
|
73 |
+
targetInputAddClass = data.elementControlTargetUnicClass;
|
74 |
+
#>
|
75 |
+
|
76 |
+
<div class="wptb-settings-row wptb-settings-middle-xs">
|
77 |
+
<span style="font-size: 16px">{{{label}}}</span>
|
78 |
+
<div class="wptb-control-checkboxes-{{{targetInputAddClass}}}" style="padding-top: 10px; padding-left: 10px; font-size: 16px; width: 100%;">
|
79 |
+
<#
|
80 |
+
if( checkboxes && Array.isArray( checkboxes ) ) {
|
81 |
+
let name,
|
82 |
+
nameInput,
|
83 |
+
checked;
|
84 |
+
for( let i = 0; i < checkboxes.length; i++ ) {
|
85 |
+
if( checkboxes[i][0] ) {
|
86 |
+
name = checkboxes[i][0];
|
87 |
+
}
|
88 |
+
|
89 |
+
if( checkboxes[i][1] ) {
|
90 |
+
nameInput = WPTB_Helper.replaceAll( checkboxes[i][1], ' ', '' );
|
91 |
+
} else if( checkboxes[i][0] ) {
|
92 |
+
nameInput = WPTB_Helper.replaceAll( checkboxes[i][0], ' ', '' );
|
93 |
+
}
|
94 |
+
|
95 |
+
if( checkboxes[i][2] && checkboxes[i][2] === 'on' ) {
|
96 |
+
checked = 'checked';
|
97 |
+
} else {
|
98 |
+
checked = '';
|
99 |
+
}
|
100 |
+
|
101 |
+
let targetInputAddClassCheckbox = targetInputAddClass + nameInput;
|
102 |
+
#>
|
103 |
+
<div style="width: 100%">
|
104 |
+
<label class="wptb-checkbox">
|
105 |
+
<span>{{{name}}}</span>
|
106 |
+
<input class="wptb-element-property {{{targetInputAddClass}}}" type="checkbox" name="{{{nameInput}}}" data-element="{{{elemContainer}}}" {{{checked}}}>
|
107 |
+
<span class="wptb-checkbox-checkmark"></span>
|
108 |
+
</label>
|
109 |
+
</div>
|
110 |
+
<#
|
111 |
+
}
|
112 |
+
}
|
113 |
+
#>
|
114 |
+
</div>
|
115 |
+
</div>
|
116 |
+
|
117 |
+
<wptb-template-script>
|
118 |
+
( function() {
|
119 |
+
let control = document.getElementsByClassName( 'wptb-control-checkboxes-{{{targetInputAddClass}}}' );
|
120 |
+
if( control.length > 0 ) {
|
121 |
+
control = control[0];
|
122 |
+
let targetInputs = control.getElementsByTagName( 'input' );
|
123 |
+
for( let i = 0; i < targetInputs.length; i++ ) {
|
124 |
+
let dataSelectorElement = targetInputs[i].dataset.element;
|
125 |
+
let targetInputAddClassCheckbox = '{{{targetInputAddClass}}}' + targetInputs[i].name;
|
126 |
+
if( dataSelectorElement ) {
|
127 |
+
let selectorElement = document.querySelector( '.' + dataSelectorElement );
|
128 |
+
if( selectorElement ) {
|
129 |
+
targetInputs[i].onchange = function( event ) {
|
130 |
+
let details;
|
131 |
+
|
132 |
+
if( targetInputs[i].checked == true ) {
|
133 |
+
details = {value: 'checked'};
|
134 |
+
} else {
|
135 |
+
details = {value: 'unchecked'};
|
136 |
+
}
|
137 |
+
|
138 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement, details );
|
139 |
+
|
140 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}', true );
|
141 |
+
|
142 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
143 |
+
wptbTableStateSaveManager.tableStateSet();
|
144 |
+
};
|
145 |
+
|
146 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}' );
|
147 |
+
}
|
148 |
+
}
|
149 |
+
}
|
150 |
+
}
|
151 |
+
} )();
|
152 |
+
</wptb-template-script>
|
153 |
+
|
154 |
+
<?php
|
155 |
+
}
|
156 |
+
}
|
inc/admin/element-classes/controls/control-color.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-number.php
ADDED
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 "number" control.
|
11 |
+
*
|
12 |
+
* A control class for creating "number" control.
|
13 |
+
*
|
14 |
+
* @since 1.1.2
|
15 |
+
*/
|
16 |
+
class Control_Number extends Base_Control {
|
17 |
+
/**
|
18 |
+
* Get number 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 'number';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Enqueue number control scripts and styles.
|
31 |
+
*
|
32 |
+
* Used to register and enqueue custom scripts and styles used by the number
|
33 |
+
* control.
|
34 |
+
*
|
35 |
+
* @since 1.1.2
|
36 |
+
* @access public
|
37 |
+
*/
|
38 |
+
public function enqueue() {
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Render number control output in the editor.
|
44 |
+
*
|
45 |
+
* Used to generate the control HTML in the editor wp js template
|
46 |
+
*
|
47 |
+
* @since 1.1.2
|
48 |
+
* @access public
|
49 |
+
*/
|
50 |
+
public function content_template() {
|
51 |
+
?>
|
52 |
+
<#
|
53 |
+
let label,
|
54 |
+
min,
|
55 |
+
max,
|
56 |
+
defaultValue,
|
57 |
+
dimension,
|
58 |
+
elemContainer,
|
59 |
+
targetInputAddClass = '';
|
60 |
+
|
61 |
+
if( data.label ) {
|
62 |
+
label = data.label;
|
63 |
+
}
|
64 |
+
|
65 |
+
if( data.min ) {
|
66 |
+
min = data.min;
|
67 |
+
}
|
68 |
+
|
69 |
+
if( data.max ) {
|
70 |
+
max = data.max;
|
71 |
+
}
|
72 |
+
|
73 |
+
if( data.defaultValue ) {
|
74 |
+
defaultValue = data.defaultValue;
|
75 |
+
}
|
76 |
+
|
77 |
+
if( data.dimension ) {
|
78 |
+
dimension = data.dimension;
|
79 |
+
}
|
80 |
+
|
81 |
+
if( data.elemContainer ) {
|
82 |
+
elemContainer = data.elemContainer;
|
83 |
+
}
|
84 |
+
|
85 |
+
targetInputAddClass = data.elementControlTargetUnicClass;
|
86 |
+
#>
|
87 |
+
|
88 |
+
<div class='wptb-settings-item-header' >
|
89 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
90 |
+
</div>
|
91 |
+
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 12px; padding-top: 23px;">
|
92 |
+
<div class="wptb-settings-col-xs-8">
|
93 |
+
<input class="wptb-number wptb-element-property {{{targetInputAddClass}}}"
|
94 |
+
type="number" min="{{{min}}}" max="{{{max}}}"
|
95 |
+
step="1" placeholder="{{{defaultValue}}}" data-element="{{{elemContainer}}}" value="{{{defaultValue}}}">
|
96 |
+
<span class="wptb-input-px">{{{dimension}}}</span>
|
97 |
+
</div>
|
98 |
+
</div>
|
99 |
+
|
100 |
+
<wptb-template-script>
|
101 |
+
( function() {
|
102 |
+
let targetInputs = document.getElementsByClassName( '{{{targetInputAddClass}}}' );
|
103 |
+
if( targetInputs.length > 0 ) {
|
104 |
+
targetInput = targetInputs[0];
|
105 |
+
let dataSelectorElement = targetInput.dataset.element;
|
106 |
+
if( dataSelectorElement ) {
|
107 |
+
let selectorElement = document.querySelector( '.' + dataSelectorElement );
|
108 |
+
if( selectorElement ) {
|
109 |
+
targetInput.oninput = function( event ) {
|
110 |
+
if( parseInt( this.value ) < parseInt( '{{{min}}}' ) ) {
|
111 |
+
this.value = parseInt( '{{{min}}}' );
|
112 |
+
} else if( parseInt( this.value ) > parseInt( '{{{max}}}' ) ) {
|
113 |
+
this.value = parseInt ( '{{{max}}}' );
|
114 |
+
}
|
115 |
+
|
116 |
+
let details = {value: this.value};
|
117 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement, details );
|
118 |
+
|
119 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}', true );
|
120 |
+
|
121 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
122 |
+
wptbTableStateSaveManager.tableStateSet();
|
123 |
+
};
|
124 |
+
|
125 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}' );
|
126 |
+
}
|
127 |
+
}
|
128 |
+
}
|
129 |
+
} )();
|
130 |
+
</wptb-template-script>
|
131 |
+
<?php
|
132 |
+
}
|
133 |
+
}
|
inc/admin/element-classes/controls/control-section-header.php
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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/controls/control-select.php
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 href control.
|
11 |
+
*
|
12 |
+
* A control class for creating href control for to add href attribute to tag
|
13 |
+
* and also to set attributes target and rel="nofollow".
|
14 |
+
*
|
15 |
+
* @since 1.1.2
|
16 |
+
*/
|
17 |
+
class Control_Select 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 'select';
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Enqueue href control scripts and styles.
|
32 |
+
*
|
33 |
+
* Used to register and enqueue custom scripts and styles used by the href
|
34 |
+
* control.
|
35 |
+
*
|
36 |
+
* @since 1.1.2
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
public function enqueue() {
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Render href 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 |
+
options = [],
|
56 |
+
selectedDefault,
|
57 |
+
targetSelectAddClass;
|
58 |
+
|
59 |
+
if( data.label ) {
|
60 |
+
label = data.label;
|
61 |
+
}
|
62 |
+
|
63 |
+
if( data.options ) {
|
64 |
+
options = data.options;
|
65 |
+
}
|
66 |
+
|
67 |
+
if( data.selectedDefault ) {
|
68 |
+
selectedDefault = data.selectedDefault;
|
69 |
+
}
|
70 |
+
|
71 |
+
if( data.elemContainer ) {
|
72 |
+
elemContainer = data.elemContainer;
|
73 |
+
}
|
74 |
+
|
75 |
+
targetSelectAddClass = data.elementControlTargetUnicClass;
|
76 |
+
#>
|
77 |
+
|
78 |
+
<div class="wptb-settings-item-header">
|
79 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
80 |
+
</div>
|
81 |
+
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 15px; padding-top: 25px;">
|
82 |
+
<select class="wptb-element-property {{{targetSelectAddClass}}}" data-element="{{{elemContainer}}}">
|
83 |
+
<#
|
84 |
+
if( options && Array.isArray( options ) ) {
|
85 |
+
let name,
|
86 |
+
value,
|
87 |
+
selected;
|
88 |
+
for( let i = 0; i < options.length; i++ ) {
|
89 |
+
if( options[i][0] ) {
|
90 |
+
name = options[i][0];
|
91 |
+
}
|
92 |
+
|
93 |
+
if( options[i][1] ) {
|
94 |
+
value = options[i][1];
|
95 |
+
} else if( option[i][0] ) {
|
96 |
+
value = options[i][0];
|
97 |
+
}
|
98 |
+
|
99 |
+
if( selectedDefault && selectedDefault == i ) {
|
100 |
+
selected = 'selected';
|
101 |
+
} else {
|
102 |
+
selected = '';
|
103 |
+
}
|
104 |
+
#>
|
105 |
+
<option value="{{{value}}}" {{{selected}}}>{{{name}}}</option>
|
106 |
+
<#
|
107 |
+
}
|
108 |
+
}
|
109 |
+
#>
|
110 |
+
</select>
|
111 |
+
</div>
|
112 |
+
|
113 |
+
<wptb-template-script>
|
114 |
+
( function() {
|
115 |
+
let targetSelects = document.getElementsByClassName( '{{{targetSelectAddClass}}}' );
|
116 |
+
if( targetSelects.length > 0 ) {
|
117 |
+
targetSelect = targetSelects[0];
|
118 |
+
let dataSelectorElement = targetSelect.dataset.element;
|
119 |
+
if( dataSelectorElement ) {
|
120 |
+
let selectorElement = document.querySelector( '.' + dataSelectorElement );
|
121 |
+
if( selectorElement ) {
|
122 |
+
targetSelect.onchange = function( event ) {
|
123 |
+
let details = {value: this.value};
|
124 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetSelectAddClass}}}', selectorElement, details );
|
125 |
+
|
126 |
+
WPTB_Helper.controlsStateManager( '{{{targetSelectAddClass}}}', true );
|
127 |
+
|
128 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
129 |
+
wptbTableStateSaveManager.tableStateSet();
|
130 |
+
};
|
131 |
+
|
132 |
+
WPTB_Helper.controlsStateManager( '{{{targetSelectAddClass}}}' );
|
133 |
+
}
|
134 |
+
}
|
135 |
+
}
|
136 |
+
} )();
|
137 |
+
</wptb-template-script>
|
138 |
+
|
139 |
+
<?php
|
140 |
+
}
|
141 |
+
}
|
inc/admin/element-classes/controls/control-size.php
ADDED
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 size control.
|
11 |
+
*
|
12 |
+
* A control class for creating size control objects
|
13 |
+
* for showing size field on the left panel. This fiels set css value for html tag.
|
14 |
+
* When this control adds for element, there is opportunity to point css type (width or fontSize ...)
|
15 |
+
* and also to point dimension of value
|
16 |
+
*
|
17 |
+
* @since 1.1.2
|
18 |
+
*/
|
19 |
+
class Control_Size extends Base_Control {
|
20 |
+
/**
|
21 |
+
* Get size control type.
|
22 |
+
*
|
23 |
+
* @since 1.1.2
|
24 |
+
* @access public
|
25 |
+
*
|
26 |
+
* @return string Control type.
|
27 |
+
*/
|
28 |
+
public function get_type() {
|
29 |
+
return 'size';
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Enqueue size control scripts and styles.
|
34 |
+
*
|
35 |
+
* Used to register and enqueue custom scripts and styles used by the size
|
36 |
+
* control.
|
37 |
+
*
|
38 |
+
* @since 1.1.2
|
39 |
+
* @access public
|
40 |
+
*/
|
41 |
+
public function enqueue() {
|
42 |
+
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Render size control output in the editor.
|
47 |
+
*
|
48 |
+
* Used to generate the control HTML in the editor wp js template
|
49 |
+
*
|
50 |
+
* @since 1.1.2
|
51 |
+
* @access public
|
52 |
+
*/
|
53 |
+
public function content_template() {
|
54 |
+
?>
|
55 |
+
<#
|
56 |
+
let selector,
|
57 |
+
cssSetting,
|
58 |
+
label,
|
59 |
+
max,
|
60 |
+
min,
|
61 |
+
defaultValue,
|
62 |
+
dimension;
|
63 |
+
|
64 |
+
if( data.selectors && typeof data.selectors === 'object' ) {
|
65 |
+
for ( let prop in data.selectors ) {
|
66 |
+
selector = prop;
|
67 |
+
cssSetting = data.selectors[prop];
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
if( data.label ) {
|
72 |
+
label = data.label;
|
73 |
+
}
|
74 |
+
if( data.max ) {
|
75 |
+
max = data.max;
|
76 |
+
} else {
|
77 |
+
max = 100;
|
78 |
+
}
|
79 |
+
if( data.min ) {
|
80 |
+
min = data.min;
|
81 |
+
} else {
|
82 |
+
min = 10;
|
83 |
+
}
|
84 |
+
if( data.defaultValue ) {
|
85 |
+
defaultValue = data.defaultValue;
|
86 |
+
} else {
|
87 |
+
defaultValue = 15;
|
88 |
+
}
|
89 |
+
if( data.dimension ) {
|
90 |
+
dimension = data.dimension;
|
91 |
+
} else {
|
92 |
+
dimension = 'px';
|
93 |
+
}
|
94 |
+
|
95 |
+
targetInputAddClass = data.elementControlTargetUnicClass;
|
96 |
+
#>
|
97 |
+
|
98 |
+
<div class='wptb-settings-item-header' >
|
99 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
100 |
+
</div>
|
101 |
+
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 12px; padding-top: 23px;">
|
102 |
+
<div class="wptb-settings-col-xs-8">
|
103 |
+
<input data-type="size" class="wptb-element-property wptb-size-slider {{{targetInputAddClass}}}"
|
104 |
+
type="range" min="{{{min}}}" max="{{{max}}}" step="1" value="{{{defaultValue}}}">
|
105 |
+
</div>
|
106 |
+
<div class="wptb-settings-col-xs-4">
|
107 |
+
<input id="wptb-size-number" data-type="size"
|
108 |
+
class="wptb-size-number wptb-number-input wptb-element-property {{{targetInputAddClass}}}"
|
109 |
+
type="number" min="{{{min}}}" max="{{{max}}}" step="1" placeholder="{{{defaultValue}}}" pattern="[0-9]*">
|
110 |
+
<span class="wptb-input-px">{{{dimension}}}</span>
|
111 |
+
</div>
|
112 |
+
</div>
|
113 |
+
|
114 |
+
<wptb-template-script>
|
115 |
+
( function() {
|
116 |
+
if( '{{{selector}}}' ) {
|
117 |
+
let selectorElement = document.querySelector( '{{{selector}}}' );
|
118 |
+
let targetInputs = document.getElementsByClassName( '{{{targetInputAddClass}}}' );
|
119 |
+
|
120 |
+
for( let i = 0; i < targetInputs.length; i++ ) {
|
121 |
+
let cssSetting = '{{{cssSetting}}}';
|
122 |
+
let cssSettingArr = cssSetting.split( ',' );
|
123 |
+
|
124 |
+
let targetInputsCss = selectorElement.style[cssSettingArr[0]];
|
125 |
+
if( targetInputsCss ) {
|
126 |
+
targetInputs[i].value = parseInt( targetInputsCss );
|
127 |
+
}
|
128 |
+
if( targetInputs[i].classList.contains( 'wptb-size-slider' ) ) {
|
129 |
+
targetInputs[i].oninput = function ( event ) {
|
130 |
+
if( event.target == this ) {
|
131 |
+
this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].value = this.value;
|
132 |
+
}
|
133 |
+
|
134 |
+
let selectorElements = document.querySelectorAll( '{{{selector}}}' );
|
135 |
+
if( selectorElements.length > 0 ) {
|
136 |
+
for( let i = 0; i < selectorElements.length; i++ ) {
|
137 |
+
for( let j = 0; j < cssSettingArr.length; j++ ) {
|
138 |
+
selectorElements[i].style[cssSettingArr[j]] = this.value + '{{{dimension}}}';
|
139 |
+
}
|
140 |
+
}
|
141 |
+
};
|
142 |
+
|
143 |
+
event.target.onmouseup = function() {
|
144 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
145 |
+
wptbTableStateSaveManager.tableStateSet();
|
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 |
+
}
|
154 |
+
}
|
155 |
+
}
|
156 |
+
}
|
157 |
+
} )();
|
158 |
+
</wptb-template-script>
|
159 |
+
|
160 |
+
<?php
|
161 |
+
}
|
162 |
+
}
|
inc/admin/element-classes/controls/control-text.php
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 "text" control.
|
11 |
+
*
|
12 |
+
* A control class for creating "text" control.
|
13 |
+
*
|
14 |
+
* @since 1.1.2
|
15 |
+
*/
|
16 |
+
class Control_Text extends Base_Control {
|
17 |
+
/**
|
18 |
+
* Get text 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 'text';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Enqueue text control scripts and styles.
|
31 |
+
*
|
32 |
+
* Used to register and enqueue custom scripts and styles used by the text
|
33 |
+
* control.
|
34 |
+
*
|
35 |
+
* @since 1.1.2
|
36 |
+
* @access public
|
37 |
+
*/
|
38 |
+
public function enqueue() {
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Render text control output in the editor.
|
44 |
+
*
|
45 |
+
* Used to generate the control HTML in the editor wp js template
|
46 |
+
*
|
47 |
+
* @since 1.1.2
|
48 |
+
* @access public
|
49 |
+
*/
|
50 |
+
public function content_template() {
|
51 |
+
?>
|
52 |
+
<#
|
53 |
+
let label,
|
54 |
+
placeholder,
|
55 |
+
elemContainer,
|
56 |
+
targetInputAddClass = '';
|
57 |
+
|
58 |
+
if( data.label ) {
|
59 |
+
label = data.label;
|
60 |
+
}
|
61 |
+
|
62 |
+
if( data.placeholder ) {
|
63 |
+
placeholder = data.placeholder;
|
64 |
+
}
|
65 |
+
|
66 |
+
if( data.elemContainer ) {
|
67 |
+
elemContainer = data.elemContainer;
|
68 |
+
}
|
69 |
+
|
70 |
+
targetInputAddClass = data.elementControlTargetUnicClass;
|
71 |
+
#>
|
72 |
+
|
73 |
+
<div class='wptb-settings-item-header' >
|
74 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
75 |
+
</div>
|
76 |
+
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 12px; padding-top: 23px;">
|
77 |
+
<div class="wptb-settings-col-xs-8">
|
78 |
+
<input class="wptb-number wptb-element-property {{{targetInputAddClass}}}"
|
79 |
+
type="text" data-element="{{{elemContainer}}}" placeholder="{{{placeholder}}}">
|
80 |
+
</div>
|
81 |
+
</div>
|
82 |
+
|
83 |
+
<wptb-template-script>
|
84 |
+
( function() {
|
85 |
+
let targetInputs = document.getElementsByClassName( '{{{targetInputAddClass}}}' );
|
86 |
+
if( targetInputs.length > 0 ) {
|
87 |
+
targetInput = targetInputs[0];
|
88 |
+
let dataSelectorElement = targetInput.dataset.element;
|
89 |
+
if( dataSelectorElement ) {
|
90 |
+
let selectorElement = document.querySelector( '.' + dataSelectorElement );
|
91 |
+
if( selectorElement ) {
|
92 |
+
targetInput.oninput = function( event ) {
|
93 |
+
let details = {value: this.value};
|
94 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetInputAddClass}}}', selectorElement, details );
|
95 |
+
|
96 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}', true );
|
97 |
+
};
|
98 |
+
|
99 |
+
targetInput.onchange = function( event ) {
|
100 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
101 |
+
wptbTableStateSaveManager.tableStateSet();
|
102 |
+
};
|
103 |
+
|
104 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}' );
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
108 |
+
} )();
|
109 |
+
</wptb-template-script>
|
110 |
+
|
111 |
+
<?php
|
112 |
+
}
|
113 |
+
}
|
inc/admin/element-classes/controls/control-textarea.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 "textarea" control.
|
11 |
+
*
|
12 |
+
* A control class for creating "textarea" control.
|
13 |
+
*
|
14 |
+
* @since 1.1.2
|
15 |
+
*/
|
16 |
+
class Control_Textarea extends Base_Control {
|
17 |
+
/**
|
18 |
+
* Get textarea 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 'textarea';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Enqueue textarea control scripts and styles.
|
31 |
+
*
|
32 |
+
* Used to register and enqueue custom scripts and styles used by the textarea
|
33 |
+
* control.
|
34 |
+
*
|
35 |
+
* @since 1.1.2
|
36 |
+
* @access public
|
37 |
+
*/
|
38 |
+
public function enqueue() {
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Render textarea control output in the editor.
|
44 |
+
*
|
45 |
+
* Used to generate the control HTML in the editor wp js template
|
46 |
+
*
|
47 |
+
* @since 1.1.2
|
48 |
+
* @access public
|
49 |
+
*/
|
50 |
+
public function content_template() {
|
51 |
+
?>
|
52 |
+
<#
|
53 |
+
let label,
|
54 |
+
placeholder,
|
55 |
+
rows,
|
56 |
+
cols,
|
57 |
+
elemContainer,
|
58 |
+
targetTextareaAddClass = '';
|
59 |
+
|
60 |
+
if( data.label ) {
|
61 |
+
label = data.label;
|
62 |
+
}
|
63 |
+
|
64 |
+
if( data.rows ) {
|
65 |
+
rows = data.rows;
|
66 |
+
}
|
67 |
+
|
68 |
+
if( data.cols ) {
|
69 |
+
cols = data.cols;
|
70 |
+
}
|
71 |
+
|
72 |
+
if( data.placeholder ) {
|
73 |
+
placeholder = data.placeholder;
|
74 |
+
}
|
75 |
+
|
76 |
+
if( data.elemContainer ) {
|
77 |
+
elemContainer = data.elemContainer;
|
78 |
+
}
|
79 |
+
|
80 |
+
targetTextareaAddClass = data.elementControlTargetUnicClass;
|
81 |
+
#>
|
82 |
+
|
83 |
+
<div class='wptb-settings-item-header' >
|
84 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
85 |
+
</div>
|
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%"></textarea>
|
90 |
+
</div>
|
91 |
+
</div>
|
92 |
+
|
93 |
+
<wptb-template-script>
|
94 |
+
( function() {
|
95 |
+
let targetTextarea = document.getElementsByClassName( '{{{targetTextareaAddClass}}}' );
|
96 |
+
if( targetTextarea.length > 0 ) {
|
97 |
+
targetTextarea = targetTextarea[0];
|
98 |
+
let dataSelectorElement = targetTextarea.dataset.element;
|
99 |
+
if( dataSelectorElement ) {
|
100 |
+
let selectorElement = document.querySelector( '.' + dataSelectorElement );
|
101 |
+
if( selectorElement ) {
|
102 |
+
targetTextarea.oninput = function( event ) {
|
103 |
+
let details = {value: this.value};
|
104 |
+
WPTB_Helper.wptbDocumentEventGenerate( 'wptb-control:{{{targetTextareaAddClass}}}', selectorElement, details );
|
105 |
+
|
106 |
+
WPTB_Helper.controlsStateManager( '{{{targetTextareaAddClass}}}', true );
|
107 |
+
};
|
108 |
+
|
109 |
+
targetTextarea.onchange = function( event ) {
|
110 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
111 |
+
wptbTableStateSaveManager.tableStateSet();
|
112 |
+
};
|
113 |
+
|
114 |
+
WPTB_Helper.controlsStateManager( '{{{targetTextareaAddClass}}}' );
|
115 |
+
}
|
116 |
+
}
|
117 |
+
}
|
118 |
+
} )();
|
119 |
+
</wptb-template-script>
|
120 |
+
|
121 |
+
<?php
|
122 |
+
}
|
123 |
+
}
|
inc/admin/element-classes/controls/control-toggle.php
ADDED
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 "Toggle" control.
|
11 |
+
*
|
12 |
+
* A control class for creating "enable-disable" control object
|
13 |
+
*
|
14 |
+
* @since 1.1.2
|
15 |
+
*/
|
16 |
+
class Control_Toggle extends Base_Control {
|
17 |
+
/**
|
18 |
+
* Get "Toggle" 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 'toggle';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Enqueue "toggle" 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 "toggle" 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 selector,
|
53 |
+
cssSetting,
|
54 |
+
elemContainer,
|
55 |
+
label,
|
56 |
+
selectors = [],
|
57 |
+
selectorsJson;
|
58 |
+
|
59 |
+
if( data.elemContainer ) {
|
60 |
+
elemContainer = data.elemContainer;
|
61 |
+
}
|
62 |
+
|
63 |
+
if( data.label ) {
|
64 |
+
label = data.label;
|
65 |
+
}
|
66 |
+
|
67 |
+
let i = 0;
|
68 |
+
for ( let prop in data.selectors ) {
|
69 |
+
selectors[i] = [];
|
70 |
+
selectors[i][0] = prop;
|
71 |
+
selectors[i][1] = data.selectors[prop];
|
72 |
+
i++;
|
73 |
+
}
|
74 |
+
|
75 |
+
if( selectors && Array.isArray( selectors ) ) {
|
76 |
+
selectorsJson = JSON.stringify( selectors );
|
77 |
+
}
|
78 |
+
|
79 |
+
targetInputAddClass = data.elementControlTargetUnicClass;
|
80 |
+
#>
|
81 |
+
|
82 |
+
<div class="wptb-settings-row wptb-settings-middle-xs">
|
83 |
+
<label class="wptb-toggle">
|
84 |
+
<span style="font-size: 16px">{{{label}}}</span>
|
85 |
+
<input class="wptb-element-property {{{targetInputAddClass}}}" type="checkbox" data-element="{{{elemContainer}}}">
|
86 |
+
<i></i>
|
87 |
+
</label>
|
88 |
+
</div>
|
89 |
+
|
90 |
+
<wptb-template-script>
|
91 |
+
( function() {
|
92 |
+
let targetInputs = document.getElementsByClassName( '{{{targetInputAddClass}}}' );
|
93 |
+
if( targetInputs.length > 0 ) {
|
94 |
+
targetInput = targetInputs[0];
|
95 |
+
let dataSelectorElement = targetInput.dataset.element;
|
96 |
+
if( dataSelectorElement ) {
|
97 |
+
let selectorElement = document.querySelector( '.' + dataSelectorElement );
|
98 |
+
if( selectorElement ) {
|
99 |
+
targetInput.onchange = function( event ) {
|
100 |
+
let details;
|
101 |
+
|
102 |
+
if( targetInput.checked == true ) {
|
103 |
+
details = {value: 'checked'};
|
104 |
+
} else {
|
105 |
+
details = {value: 'unchecked'};
|
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();
|
113 |
+
wptbTableStateSaveManager.tableStateSet();
|
114 |
+
};
|
115 |
+
|
116 |
+
WPTB_Helper.controlsStateManager( '{{{targetInputAddClass}}}' );
|
117 |
+
}
|
118 |
+
}
|
119 |
+
}
|
120 |
+
} )();
|
121 |
+
</wptb-template-script>
|
122 |
+
|
123 |
+
<?php
|
124 |
+
}
|
125 |
+
}
|
inc/admin/element-classes/controls/control-url.php
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 url control.
|
11 |
+
*
|
12 |
+
* A control class for creating url control for to add tag "a" with href attribute
|
13 |
+
* and also to set attributes target and rel="nofollow".
|
14 |
+
*
|
15 |
+
* @since 1.1.2
|
16 |
+
*/
|
17 |
+
class Control_Url 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 'url';
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Enqueue url control scripts and styles.
|
32 |
+
*
|
33 |
+
* Used to register and enqueue custom scripts and styles used by the url
|
34 |
+
* control.
|
35 |
+
*
|
36 |
+
* @since 1.1.2
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
public function enqueue() {
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Render url 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 |
+
dataElement;
|
57 |
+
|
58 |
+
if( data.label ) {
|
59 |
+
label = data.label;
|
60 |
+
}
|
61 |
+
|
62 |
+
if( data.selector ) {
|
63 |
+
selector = data.selector;
|
64 |
+
}
|
65 |
+
|
66 |
+
if( selector ) {
|
67 |
+
let selectorArr = selector.replace( '.', '' ).split( ' ' );
|
68 |
+
let infArr = selectorArr[0].match( /wptb-element-((.+-)\d+)/i );
|
69 |
+
let dataElement = 'wptb-options-' + infArr[1];
|
70 |
+
}
|
71 |
+
|
72 |
+
targetInputAddClass = data.elementControlTargetUnicClass;
|
73 |
+
let postfixIdFor = targetInputAddClass.replace( 'wptb-el', '' ).toLowerCase();
|
74 |
+
#>
|
75 |
+
|
76 |
+
<div class="wptb-settings-item-header">
|
77 |
+
<p class="wptb-settings-item-title">{{{label}}}</p>
|
78 |
+
</div>
|
79 |
+
<div class="wptb-settings-row wptb-settings-middle-xs" style="padding-bottom: 10px">
|
80 |
+
<div class="wptb-settings-col-xs-8" style="margin: 15px 0;">
|
81 |
+
<input type="text" data-type="element-link" placeholder="Insert Link Here"
|
82 |
+
class="wptb-element-property {{{targetInputAddClass}}}" data-element="{{{dataElement}}}">
|
83 |
+
</div>
|
84 |
+
<div class="wptb-settings-col-xs-8">
|
85 |
+
<input type="checkbox" data-type="element-link-target" id="element-link-target{{{postfixIdFor}}}"
|
86 |
+
class="wptb-element-property {{{targetInputAddClass}}}" data-element="{{{dataElement}}}">
|
87 |
+
<label for="element-link-target{{{postfixIdFor}}}">Open Link in New Tab</label>
|
88 |
+
</div>
|
89 |
+
<div class="wptb-settings-col-xs-8">
|
90 |
+
<input type="checkbox" data-type="element-link-nofollow" id="element-link-nofollow{{{postfixIdFor}}}"
|
91 |
+
class="wptb-element-property {{{targetInputAddClass}}}" data-element="{{{dataElement}}}">
|
92 |
+
<label for="element-link-nofollow{{{postfixIdFor}}}">Nofollow Link</label>
|
93 |
+
</div>
|
94 |
+
</div>
|
95 |
+
|
96 |
+
<wptb-template-script>
|
97 |
+
( function() {
|
98 |
+
let selectorElement = document.querySelector( '{{{selector}}}' );
|
99 |
+
let targetInputs = document.getElementsByClassName( '{{{targetInputAddClass}}}' );
|
100 |
+
for( let i = 0; i < targetInputs.length; i++ ) {
|
101 |
+
if( targetInputs[i].dataset.type == 'element-link' ) {
|
102 |
+
let href = selectorElement.getAttribute( 'href' );
|
103 |
+
targetInputs[i].value = href;
|
104 |
+
|
105 |
+
targetInputs[i].onchange = function() {
|
106 |
+
if ( this.value ) {
|
107 |
+
selectorElement.href = WPTB_Helper.linkHttpCheckChange( this.value );
|
108 |
+
} else {
|
109 |
+
selectorElement.removeAttribute( 'href' );
|
110 |
+
}
|
111 |
+
|
112 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
113 |
+
wptbTableStateSaveManager.tableStateSet();
|
114 |
+
}
|
115 |
+
} else if( targetInputs[i].dataset.type == 'element-link-target' ) {
|
116 |
+
let linkTarget = selectorElement.getAttribute( 'target' );
|
117 |
+
if( ! linkTarget || linkTarget == '_self' ) {
|
118 |
+
targetInputs[i].checked = false;
|
119 |
+
} else if( linkTarget == '_blank' ) {
|
120 |
+
targetInputs[i].checked = true;
|
121 |
+
}
|
122 |
+
|
123 |
+
targetInputs[i].onchange = function() {
|
124 |
+
if (this.checked == true) {
|
125 |
+
selectorElement.target = '_blank';
|
126 |
+
} else {
|
127 |
+
selectorElement.target = '_self';
|
128 |
+
}
|
129 |
+
|
130 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
131 |
+
wptbTableStateSaveManager.tableStateSet();
|
132 |
+
}
|
133 |
+
} else if( targetInputs[i].dataset.type == 'element-link-nofollow' ) {
|
134 |
+
let linkRel = selectorElement.getAttribute( 'rel' );
|
135 |
+
if( linkRel && linkRel == 'nofollow' ) {
|
136 |
+
targetInputs[i].checked = true;
|
137 |
+
} else {
|
138 |
+
targetInputs[i].checked = false;
|
139 |
+
}
|
140 |
+
targetInputs[i].onchange = function() {
|
141 |
+
if ( this.checked == true ) {
|
142 |
+
selectorElement.rel = 'nofollow';
|
143 |
+
} else {
|
144 |
+
selectorElement.removeAttribute( 'rel' );
|
145 |
+
}
|
146 |
+
|
147 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
148 |
+
wptbTableStateSaveManager.tableStateSet();
|
149 |
+
}
|
150 |
+
}
|
151 |
+
}
|
152 |
+
} )();
|
153 |
+
</wptb-template-script>
|
154 |
+
|
155 |
+
<?php
|
156 |
+
}
|
157 |
+
}
|
inc/admin/element-classes/element-scripts/button-element.js
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
let a = element.querySelector( 'a' );
|
2 |
+
let target = a.querySelector( 'div' );
|
3 |
+
a.onclick = function( e ) {
|
4 |
+
e.preventDefault();
|
5 |
+
};
|
6 |
+
if( target ) {
|
7 |
+
tinyMCE.init({
|
8 |
+
target: target,
|
9 |
+
inline: true,
|
10 |
+
plugins: "link",
|
11 |
+
dialog_type: "modal",
|
12 |
+
theme: 'modern',
|
13 |
+
menubar: false,
|
14 |
+
fixed_toolbar_container: '#wpcd_fixed_toolbar',
|
15 |
+
toolbar: 'bold italic strikethrough',
|
16 |
+
setup : function(ed) {
|
17 |
+
ed.on( 'keydown', function(e) {
|
18 |
+
if (e.keyCode == 13) {
|
19 |
+
e.preventDefault();
|
20 |
+
}
|
21 |
+
|
22 |
+
let p = e.target.querySelector( 'p' );
|
23 |
+
let pText = p.innerHTML.replace( /\s+/g, ' ' ).trim();
|
24 |
+
pText = pText.replace( / /g, '').trim();
|
25 |
+
|
26 |
+
if( ! window.buttonElemPTextKeyDown ) {
|
27 |
+
window.buttonElemPTextKeyDown = pText;
|
28 |
+
}
|
29 |
+
});
|
30 |
+
|
31 |
+
ed.on( 'keyup', function(e) {
|
32 |
+
let p = e.target.querySelector( 'p' );
|
33 |
+
let pText = p.innerHTML.replace( /\s+/g, ' ' ).trim();
|
34 |
+
pText = pText.replace( / /g, '').trim();
|
35 |
+
if( pText !== window.buttonElemPTextKeyDown ) {
|
36 |
+
e.target.onblur = function() {
|
37 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
38 |
+
wptbTableStateSaveManager.tableStateSet();
|
39 |
+
|
40 |
+
window.buttonElemPTextKeyDown = '';
|
41 |
+
e.target.onblur = '';
|
42 |
+
}
|
43 |
+
} else {
|
44 |
+
e.target.onblur = '';
|
45 |
+
}
|
46 |
+
});
|
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 &&
|
54 |
+
window.currentEditor.bodyElement.style.display != 'none') {
|
55 |
+
document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';
|
56 |
+
document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';
|
57 |
+
document.getElementById('wpcd_fixed_toolbar').style.top = '100px';
|
58 |
+
} else {
|
59 |
+
document.getElementById('wpcd_fixed_toolbar').style.position = 'static';
|
60 |
+
delete document.getElementById('wpcd_fixed_toolbar').style.right;
|
61 |
+
delete document.getElementById('wpcd_fixed_toolbar').style.top;
|
62 |
+
}
|
63 |
+
});
|
64 |
+
}
|
65 |
+
});
|
66 |
+
}
|
67 |
+
|
68 |
+
//function textControlsChange( inputs, element ) {
|
69 |
+
// if( inputs && typeof inputs === 'object' ) {
|
70 |
+
// if( inputs.hasOwnProperty( 'button-id' ) ) {
|
71 |
+
// let buttonIdValue = inputs['button-id'];
|
72 |
+
// let a = element.getElementsByTagName( 'a' );
|
73 |
+
// if( a.length > 0 ) {
|
74 |
+
// a = a[0];
|
75 |
+
// a.setAttribute( 'id', buttonIdValue );
|
76 |
+
// }
|
77 |
+
// }
|
78 |
+
// }
|
79 |
+
//}
|
80 |
+
//
|
81 |
+
//WPTB_Helper.controlsInclude( element, textControlsChange );
|
82 |
+
|
83 |
+
function textControlChange2( controlValue, element ) {
|
84 |
+
let a = element.getElementsByTagName( 'a' );
|
85 |
+
if( a.length > 0 ) {
|
86 |
+
a = a[0];
|
87 |
+
a.setAttribute( 'id', controlValue );
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
let controlName = 'button-id';
|
92 |
+
WPTB_Helper.oneControlInclude( element, textControlChange2, controlName );
|
93 |
+
|
94 |
+
// for old elements which were before the change of structure of the plugin
|
95 |
+
let infArr = element.className.match( /wptb-size-([A-Z]+)/i );
|
96 |
+
if( infArr && Array.isArray( infArr ) ) {
|
97 |
+
let wptbSize = infArr[0],
|
98 |
+
wptbSizeNew = wptbSize.toLowerCase();
|
99 |
+
|
100 |
+
element.classList.remove( wptbSize );
|
101 |
+
|
102 |
+
let wptbButtonWrapper = element.querySelector( '.wptb-button-wrapper' );
|
103 |
+
if( wptbButtonWrapper ) {
|
104 |
+
wptbButtonWrapper.classList.add( wptbSizeNew );
|
105 |
+
}
|
106 |
+
}
|
107 |
+
|
108 |
+
let infArrEl = element.className.match( /wptb-element-((.+-)\d+)/i );
|
109 |
+
let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );
|
110 |
+
let elementsSettings;
|
111 |
+
let elementSettings;
|
112 |
+
if( elementsSettingsTemplateJs.length > 0 ) {
|
113 |
+
elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];
|
114 |
+
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
115 |
+
if( elementsSettings ) {
|
116 |
+
elementsSettings = JSON.parse( elementsSettings );
|
117 |
+
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-element-datas-' + infArrEl[1] ) in elementsSettings ) {
|
118 |
+
elementSettings = elementsSettings['tmpl-wptb-element-datas-' + infArrEl[1]];
|
119 |
+
}
|
120 |
+
}
|
121 |
+
} else {
|
122 |
+
elementsSettingsTemplateJs = document.createElement( 'script' );
|
123 |
+
elementsSettingsTemplateJs.setAttribute( 'type', 'text/html' );
|
124 |
+
elementsSettingsTemplateJs.setAttribute( 'class', 'wptb-element-datas' );
|
125 |
+
let body = document.getElementsByTagName('body')[0];
|
126 |
+
body.appendChild( elementsSettingsTemplateJs );
|
127 |
+
}
|
128 |
+
|
129 |
+
|
130 |
+
|
131 |
+
if( ! elementSettings ) {
|
132 |
+
if( ! elementsSettings || typeof elementsSettings !== 'object' ) {
|
133 |
+
elementsSettings = {};
|
134 |
+
}
|
135 |
+
|
136 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArrEl[1]] = {};
|
137 |
+
let buttonId;
|
138 |
+
let a = element.getElementsByTagName( 'a' );
|
139 |
+
if( a.length > 0 ) {
|
140 |
+
a = a[0];
|
141 |
+
|
142 |
+
if( a.hasAttribute( 'id' ) ) {
|
143 |
+
buttonId = a.getAttribute( 'id' );
|
144 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArrEl[1]]['data-wptb-el-' + infArrEl[1] + '-button-id'] = buttonId;
|
145 |
+
} else {
|
146 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArrEl[1]]['data-wptb-el-' + infArrEl[1] + '-button-id'] = '';
|
147 |
+
}
|
148 |
+
|
149 |
+
if( elementsSettings ) {
|
150 |
+
elementsSettings = JSON.stringify( elementsSettings );
|
151 |
+
elementsSettingsTemplateJs.innerHTML = elementsSettings;
|
152 |
+
}
|
153 |
+
}
|
154 |
+
}
|
inc/admin/element-classes/element-scripts/image-element.js
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
let a = element.getElementsByTagName( 'a' );
|
2 |
+
if( a.length > 0 ) {
|
3 |
+
a = a[0];
|
4 |
+
}
|
5 |
+
a.onclick = function( e ) {
|
6 |
+
e.preventDefault();
|
7 |
+
};
|
8 |
+
|
9 |
+
let img = element.getElementsByTagName( 'img' );
|
10 |
+
if( img.length > 0 ) {
|
11 |
+
img = img[0];
|
12 |
+
}
|
13 |
+
|
14 |
+
let src;
|
15 |
+
if( img.src ) {
|
16 |
+
src = img.src;
|
17 |
+
}
|
18 |
+
|
19 |
+
file_frame = wp.media.frames.file_frame = wp.media({
|
20 |
+
title: 'Select a image to upload',
|
21 |
+
button: {
|
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 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
41 |
+
wptbTableStateSaveManager.tableStateSet();
|
42 |
+
};
|
43 |
+
|
44 |
+
file_frame.on( 'select', function() {
|
45 |
+
attachment = file_frame.state().props.toJSON();
|
46 |
+
imageSetting( img, attachment );
|
47 |
+
});
|
48 |
+
|
49 |
+
file_frame.on( 'insert', function () {
|
50 |
+
attachment = file_frame.state().get( 'selection' ).first().toJSON();
|
51 |
+
imageSetting( img, attachment );
|
52 |
+
});
|
53 |
+
|
54 |
+
if ( src == undefined ) {
|
55 |
+
file_frame.open();
|
56 |
+
file_frame.menuItemVisibility( 'gallery', 'hide' );
|
57 |
+
file_frame.menuItemVisibility( 'playlist', 'hide' ),
|
58 |
+
file_frame.menuItemVisibility( 'video-playlist', 'hide' ),
|
59 |
+
file_frame.menuItemVisibility( 'audio-playlist', 'hide' )
|
60 |
+
} else {
|
61 |
+
img.src = src;
|
62 |
+
}
|
63 |
+
|
64 |
+
function controlsChange( inputs, element ) {
|
65 |
+
if( inputs && typeof inputs === 'object' ) {
|
66 |
+
if( inputs.hasOwnProperty( 'imageAlternativeText' ) ) {
|
67 |
+
let imageAltValue = inputs['imageAlternativeText'];
|
68 |
+
let img = element.getElementsByTagName( 'img' );
|
69 |
+
if( img.length > 0 ) {
|
70 |
+
img = img[0];
|
71 |
+
img.setAttribute( 'alt', imageAltValue );
|
72 |
+
}
|
73 |
+
}
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
WPTB_Helper.controlsInclude( element, controlsChange );
|
78 |
+
|
79 |
+
|
80 |
+
let infArrEl = element.className.match( /wptb-element-((.+-)\d+)/i );
|
81 |
+
let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );
|
82 |
+
let elementsSettings;
|
83 |
+
let elementSettings;
|
84 |
+
if( elementsSettingsTemplateJs.length > 0 ) {
|
85 |
+
elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];
|
86 |
+
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
87 |
+
if( elementsSettings ) {
|
88 |
+
elementsSettings = JSON.parse( elementsSettings );
|
89 |
+
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-element-datas-' + infArrEl[1] ) in elementsSettings ) {
|
90 |
+
elementSettings = elementsSettings['tmpl-wptb-element-datas-' + infArrEl[1]];
|
91 |
+
}
|
92 |
+
}
|
93 |
+
} else {
|
94 |
+
elementsSettingsTemplateJs = document.createElement( 'script' );
|
95 |
+
elementsSettingsTemplateJs.setAttribute( 'type', 'text/html' );
|
96 |
+
elementsSettingsTemplateJs.setAttribute( 'class', 'wptb-element-datas' );
|
97 |
+
let body = document.getElementsByTagName('body')[0];
|
98 |
+
body.appendChild( elementsSettingsTemplateJs );
|
99 |
+
}
|
100 |
+
|
101 |
+
if( ! elementSettings ) {
|
102 |
+
if( ! elementsSettings || typeof elementsSettings !== 'object' ) {
|
103 |
+
elementsSettings = {};
|
104 |
+
}
|
105 |
+
|
106 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArrEl[1]] = {};
|
107 |
+
let imageAltText;
|
108 |
+
let img = element.getElementsByTagName( 'img' );
|
109 |
+
if( img.length > 0 ) {
|
110 |
+
img = img[0];
|
111 |
+
|
112 |
+
if( img.hasAttribute( 'alt' ) ) {
|
113 |
+
imageAltText = img.getAttribute( 'alt' );
|
114 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArrEl[1]]['data-wptb-el-' + infArrEl[1] + '-imageAlternativeText'] = imageAltText;
|
115 |
+
} else {
|
116 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArrEl[1]]['data-wptb-el-' + infArrEl[1] + '-imageAlternativeText'] = '';
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
|
121 |
+
|
122 |
+
if( elementsSettings ) {
|
123 |
+
elementsSettings = JSON.stringify( elementsSettings );
|
124 |
+
elementsSettingsTemplateJs.innerHTML = elementsSettings;
|
125 |
+
}
|
126 |
+
}
|
inc/admin/element-classes/element-scripts/list-element.js
ADDED
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
let lis = element.getElementsByTagName( 'li' );
|
2 |
+
if( lis.length > 0 ) {
|
3 |
+
for( let i = 0; i < lis.length; i++ ) {
|
4 |
+
lis[i].classList.add( 'wptb-in-element' );
|
5 |
+
|
6 |
+
let listItemContent = lis[i].getElementsByClassName( 'wptb-list-item-content' );
|
7 |
+
if( listItemContent.length > 0 ) {
|
8 |
+
listItemsTinyMceInit( listItemContent[0] );
|
9 |
+
}
|
10 |
+
}
|
11 |
+
}
|
12 |
+
|
13 |
+
|
14 |
+
function listItemsRecalculateIndex ( ulElem ) {
|
15 |
+
let par = ulElem.querySelectorAll( 'p' );
|
16 |
+
if ( par.length > 0 ) {
|
17 |
+
for ( let i = 0; i < par.length; i++ ) {
|
18 |
+
par[i].dataset.listStyleTypeIndex = Number( i ) + 1 + '.';
|
19 |
+
}
|
20 |
+
}
|
21 |
+
}
|
22 |
+
|
23 |
+
let ulElem = element.getElementsByTagName( 'ul' );
|
24 |
+
if( ulElem.length > 0 ) {
|
25 |
+
ulElem = ulElem[0];
|
26 |
+
listItemsRecalculateIndex( ulElem );
|
27 |
+
}
|
28 |
+
|
29 |
+
function listItemsTinyMceInit( listItem ) {
|
30 |
+
tinyMCE.init({
|
31 |
+
target: listItem,
|
32 |
+
inline: true,
|
33 |
+
plugins: "link, paste",
|
34 |
+
dialog_type: "modal",
|
35 |
+
theme: 'modern',
|
36 |
+
menubar: false,
|
37 |
+
fixed_toolbar_container: '#wpcd_fixed_toolbar',
|
38 |
+
paste_as_text: true,
|
39 |
+
toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',
|
40 |
+
setup: function( ed ) {
|
41 |
+
ed.on( 'keydown', function( e ) {
|
42 |
+
let article = e.target.parentNode;
|
43 |
+
if ( e.keyCode == 13 ) {
|
44 |
+
e.preventDefault();
|
45 |
+
|
46 |
+
if( article ) {
|
47 |
+
let duplicate = {};
|
48 |
+
let elementCopy = article.cloneNode( true );
|
49 |
+
duplicate.getDOMElement = function() {
|
50 |
+
return elementCopy;
|
51 |
+
}
|
52 |
+
|
53 |
+
applyGenericItemSettings( duplicate );
|
54 |
+
e.target.querySelector( 'p' ).innerText = 'New List Item';
|
55 |
+
article.parentNode.insertBefore( elementCopy, article );
|
56 |
+
elementCopy.classList.remove( 'wptb-directlyhovered' );
|
57 |
+
article.classList.remove( 'wptb-directlyhovered' );
|
58 |
+
WPTB_Helper.elementClearFromTinyMce( elementCopy );
|
59 |
+
|
60 |
+
let listItemContent = elementCopy.getElementsByClassName( 'wptb-list-item-content' );
|
61 |
+
if( listItemContent.length > 0 ) {
|
62 |
+
listItemsTinyMceInit( listItemContent[0] );
|
63 |
+
}
|
64 |
+
|
65 |
+
listItemsRecalculateIndex( article.parentNode );
|
66 |
+
|
67 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
68 |
+
wptbTableStateSaveManager.tableStateSet();
|
69 |
+
}
|
70 |
+
} else {
|
71 |
+
let p = e.target.querySelector( 'p' );
|
72 |
+
let pText = p.innerHTML.replace(/<[^>]+>/g, '');
|
73 |
+
pText = pText.replace( /\s+/g, ' ' ).trim();
|
74 |
+
pText = pText.replace( / /g, '').trim();
|
75 |
+
|
76 |
+
if ( e.keyCode == '8' || e.keyCode == '46' ) {
|
77 |
+
if( pText == '' ) {
|
78 |
+
e.preventDefault();
|
79 |
+
e.target.querySelector( 'p' ).innerText = '\n';
|
80 |
+
} else {
|
81 |
+
let selectedText = WPTB_Helper.getSelectionText();
|
82 |
+
selectedText = selectedText.replace( /\s+/g, ' ' ).trim();
|
83 |
+
selectedText = selectedText.replace( / /g, '' ).trim();
|
84 |
+
if( selectedText == pText ) {
|
85 |
+
e.preventDefault();
|
86 |
+
e.target.querySelector( 'p' ).innerText = '\n';
|
87 |
+
}
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
if( ! window.listItemPTextKeyDown ) {
|
92 |
+
window.listItemPTextKeyDown = pText;
|
93 |
+
}
|
94 |
+
}
|
95 |
+
});
|
96 |
+
ed.on( 'keyup', function( e ) {
|
97 |
+
if ( e.keyCode != 13 ) {
|
98 |
+
let p = e.target.querySelector( 'p' );
|
99 |
+
let pText = p.innerHTML.replace(/<[^>]+>/g, '');
|
100 |
+
pText = pText.replace( /\s+/g, ' ' ).trim();
|
101 |
+
pText = pText.replace( / /g, '').trim();
|
102 |
+
if( pText !== window.listItemPTextKeyDown ) {
|
103 |
+
e.target.onblur = function() {
|
104 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
105 |
+
wptbTableStateSaveManager.tableStateSet();
|
106 |
+
|
107 |
+
window.listItemPTextKeyDown = '';
|
108 |
+
e.target.onblur = '';
|
109 |
+
}
|
110 |
+
} else {
|
111 |
+
e.target.onblur = '';
|
112 |
+
}
|
113 |
+
}
|
114 |
+
});
|
115 |
+
},
|
116 |
+
init_instance_callback: function (editor) {
|
117 |
+
window.currentEditor = editor;
|
118 |
+
editor.on('focus', function (e) {
|
119 |
+
var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;
|
120 |
+
if (window.currentEditor &&
|
121 |
+
document.getElementById('wptb_builder').scrollTop >= 55 &&
|
122 |
+
window.currentEditor.bodyElement.style.display != 'none') {
|
123 |
+
document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';
|
124 |
+
document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';
|
125 |
+
document.getElementById('wpcd_fixed_toolbar').style.top = '100px';
|
126 |
+
} else {
|
127 |
+
document.getElementById('wpcd_fixed_toolbar').style.position = 'static';
|
128 |
+
delete document.getElementById('wpcd_fixed_toolbar').style.right;
|
129 |
+
delete document.getElementById('wpcd_fixed_toolbar').style.top;
|
130 |
+
}
|
131 |
+
});
|
132 |
+
}
|
133 |
+
});
|
134 |
+
}
|
135 |
+
|
136 |
+
function liCopyHandler( li, element ) {
|
137 |
+
let ulElem = element.getElementsByTagName( 'ul' );
|
138 |
+
if( ulElem.length > 0 ) {
|
139 |
+
ulElem = ulElem[0];
|
140 |
+
listItemsRecalculateIndex( ulElem );
|
141 |
+
}
|
142 |
+
|
143 |
+
if( li ) {
|
144 |
+
let listItemContent = li.getElementsByClassName( 'wptb-list-item-content' );
|
145 |
+
if( listItemContent.length > 0 ) {
|
146 |
+
listItemsTinyMceInit( listItemContent[0] );
|
147 |
+
}
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
WPTB_Helper.innerElementCopyIncludeHandler( element, liCopyHandler );
|
152 |
+
|
153 |
+
function selectControlsChange( selects, element ) {
|
154 |
+
if( selects && typeof selects === 'object' ) {
|
155 |
+
let listItem = element.querySelectorAll( 'li' );
|
156 |
+
|
157 |
+
if( selects.hasOwnProperty( 'select1' ) ) {
|
158 |
+
if( selects.select1 == 'numbered' ) {
|
159 |
+
for ( let i = 0; i < listItem.length; i++ ) {
|
160 |
+
let p = listItem[i].querySelector( 'p' );
|
161 |
+
p.removeAttribute ( 'class' );
|
162 |
+
}
|
163 |
+
} else if( selects.select1 == 'unordered' ) {
|
164 |
+
for ( let i = 0; i < listItem.length; i++ ) {
|
165 |
+
let p = listItem[i].querySelector( 'p' );
|
166 |
+
p.removeAttribute ( 'class' );
|
167 |
+
p.classList.add( 'wptb-list-style-type-disc' );
|
168 |
+
}
|
169 |
+
}
|
170 |
+
}
|
171 |
+
|
172 |
+
if( selects.hasOwnProperty( 'select2' ) && selects.select2 ) {
|
173 |
+
for ( let i = 0; i < listItem.length; i++) {
|
174 |
+
let p = listItem[i].querySelector( 'p' );
|
175 |
+
p.removeAttribute ( 'class' );
|
176 |
+
p.classList.add( 'wptb-list-style-type-' + selects.select2.toLowerCase() );
|
177 |
+
}
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
WPTB_Helper.controlsInclude( element, selectControlsChange );
|
183 |
+
|
184 |
+
|
185 |
+
// for old elements which were before the change of structure of the plugin
|
186 |
+
if( element.classList.contains( 'wptb-list-item-container' ) ) {
|
187 |
+
element.classList.add( 'wptb-list-container' );
|
188 |
+
}
|
189 |
+
|
190 |
+
let infArr = element.className.match( /wptb-element-((.+-)\d+)/i );
|
191 |
+
let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );
|
192 |
+
let elementsSettings;
|
193 |
+
let elementSettings;
|
194 |
+
if( elementsSettingsTemplateJs.length > 0 ) {
|
195 |
+
elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];
|
196 |
+
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
197 |
+
if( elementsSettings ) {
|
198 |
+
elementsSettings = JSON.parse( elementsSettings );
|
199 |
+
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-element-datas-' + infArr[1] ) in elementsSettings ) {
|
200 |
+
elementSettings = elementsSettings['tmpl-wptb-element-datas-' + infArr[1]];
|
201 |
+
}
|
202 |
+
}
|
203 |
+
} else {
|
204 |
+
elementsSettingsTemplateJs = document.createElement( 'script' );
|
205 |
+
elementsSettingsTemplateJs.setAttribute( 'type', 'text/html' );
|
206 |
+
elementsSettingsTemplateJs.setAttribute( 'class', 'wptb-element-datas' );
|
207 |
+
let body = document.getElementsByTagName('body')[0];
|
208 |
+
body.appendChild( elementsSettingsTemplateJs );
|
209 |
+
}
|
210 |
+
|
211 |
+
if( ! elementSettings ) {
|
212 |
+
|
213 |
+
let listItems = element.querySelectorAll( 'li' );
|
214 |
+
for( let i = 0; i < listItems.length; i++ ) {
|
215 |
+
let listItem = listItems[i];
|
216 |
+
let p = listItem.querySelector( 'p' );
|
217 |
+
if( p ) {
|
218 |
+
if( infArr && Array.isArray( infArr ) ) {
|
219 |
+
if( ! elementsSettings || typeof elementsSettings !== 'object' ) {
|
220 |
+
elementsSettings = {};
|
221 |
+
}
|
222 |
+
|
223 |
+
elementsSettings['tmpl-wptb-element-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-element-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-select1'] = 'unordered';
|
229 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-select2'] = listType;
|
230 |
+
} else {
|
231 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-select1'] = 'numbered';
|
232 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-select2'] = 'disc';
|
233 |
+
}
|
234 |
+
|
235 |
+
if( elementsSettings ) {
|
236 |
+
elementsSettings = JSON.stringify( elementsSettings );
|
237 |
+
elementsSettingsTemplateJs.innerHTML = elementsSettings;
|
238 |
+
}
|
239 |
+
}
|
240 |
+
|
241 |
+
break;
|
242 |
+
}
|
243 |
+
}
|
244 |
+
}
|
inc/admin/element-classes/element-scripts/star-rating-element.js
ADDED
@@ -0,0 +1,242 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
function controlsChange( inputs, element ) {
|
2 |
+
if( inputs && typeof inputs === 'object' ) {
|
3 |
+
if( inputs.hasOwnProperty( 'starCount' ) ) {
|
4 |
+
let inputValue = inputs.starCount;
|
5 |
+
|
6 |
+
let starRatings = element.querySelectorAll( 'li' );
|
7 |
+
|
8 |
+
let starRatingsCount = starRatings.length;
|
9 |
+
|
10 |
+
if( inputValue > starRatingsCount ) {
|
11 |
+
let difference = inputValue - starRatingsCount;
|
12 |
+
let starRatingsLast = starRatings[starRatings.length - 1];
|
13 |
+
|
14 |
+
let parent = starRatingsLast.parentNode;
|
15 |
+
for( let i = 0; i < difference; i++ ){
|
16 |
+
let newStarRating = starRatingsLast.cloneNode( true );
|
17 |
+
newStarRating.removeAttribute( 'class' );
|
18 |
+
newStarRating.setAttribute( 'class', 'wptb-rating-star' );
|
19 |
+
newStarRating.dataset.value = parseInt(starRatingsLast.dataset.value) + i + 1;
|
20 |
+
starRatingEventHandlersAdd( newStarRating );
|
21 |
+
parent.appendChild( newStarRating );
|
22 |
+
}
|
23 |
+
} else if( inputValue < starRatingsCount ) {
|
24 |
+
if( inputValue <= 0 ) inputValue = 1;
|
25 |
+
let difference = parseInt( starRatingsCount ) - parseInt( inputValue );
|
26 |
+
|
27 |
+
if( inputValue == 0 ) {
|
28 |
+
difference--;
|
29 |
+
starRatings[0].removeAttribute( 'class' );
|
30 |
+
starRatings[0].setAttribute( 'class', 'wptb-rating-star' );
|
31 |
+
starRatings[0].style.display = 'none';
|
32 |
+
}
|
33 |
+
|
34 |
+
let starRatingLength = starRatings.length;
|
35 |
+
for( i = 0; i < difference; i++ ) {
|
36 |
+
starRatings[0].parentNode.removeChild( starRatings[starRatingLength - i - 1] );
|
37 |
+
}
|
38 |
+
} else if( inputValue == starRatingsCount && starRatingsCount == 1 ) {
|
39 |
+
starRatings[0].style.display = 'inline-block';
|
40 |
+
}
|
41 |
+
|
42 |
+
starRatingNumberRatingChenge( element );
|
43 |
+
} else if( inputs.hasOwnProperty( 'numberRatingShowHide' ) ) {
|
44 |
+
let wptbNumberRatingBox = element.querySelector( '.wptb-number-rating-box' );
|
45 |
+
if( wptbNumberRatingBox ) {
|
46 |
+
let inputValue = inputs['numberRatingShowHide'];
|
47 |
+
if( inputValue == 'checked' ) {
|
48 |
+
wptbNumberRatingBox.style.display = 'block';
|
49 |
+
} else if( inputValue == 'unchecked' ) {
|
50 |
+
wptbNumberRatingBox.style.display = 'none';
|
51 |
+
}
|
52 |
+
}
|
53 |
+
}
|
54 |
+
}
|
55 |
+
}
|
56 |
+
|
57 |
+
WPTB_Helper.controlsInclude( element, controlsChange );
|
58 |
+
|
59 |
+
//WPTB_Helper.controlsInclude( element, onOffControlsChange );
|
60 |
+
|
61 |
+
let ratingStars = element.getElementsByClassName( 'wptb-rating-star' );
|
62 |
+
for ( let i = 0; i < ratingStars.length; i++ ) {
|
63 |
+
let ratingStar = ratingStars[i];
|
64 |
+
|
65 |
+
|
66 |
+
starRatingEventHandlersAdd( ratingStar );
|
67 |
+
|
68 |
+
let ritingStarZeroSet = ratingStar.querySelector( '.wptb-rating-star-zero-set' );
|
69 |
+
if( ritingStarZeroSet ) {
|
70 |
+
ritingStarZeroSet.onclick = function( event ) {
|
71 |
+
let ulStarList = WPTB_Helper.findAncestor( event.target, 'wptb-rating-stars-list' );
|
72 |
+
if( ulStarList ) {
|
73 |
+
let children = ulStarList.children;
|
74 |
+
for( let i = 0; i < children.length; i++ ) {
|
75 |
+
children[i].classList.remove( 'wptb-rating-star-selected-full' );
|
76 |
+
children[i].classList.remove( 'wptb-rating-star-selected-half' );
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
function starRatingSelectHoverSet( event ) {
|
84 |
+
let starRating;
|
85 |
+
if( ! event.target.classList.contains( 'wptb-rating-star' ) ) {
|
86 |
+
starRating = WPTB_Helper.findAncestor( event.target, 'wptb-rating-star' );
|
87 |
+
} else {
|
88 |
+
starRating = event.target;
|
89 |
+
}
|
90 |
+
|
91 |
+
let onStar = parseInt( starRating.dataset.value, 10 );
|
92 |
+
|
93 |
+
let children = starRating.parentNode.children;
|
94 |
+
if( event.type == "mouseover" ) {
|
95 |
+
for( let j = 0; j < children.length; j++ ) {
|
96 |
+
if( j < onStar ) {
|
97 |
+
if( j == onStar - 1 ) {
|
98 |
+
if ( event.target.classList.contains( 'wptb-rating-star-left-signal-part' ) ) {
|
99 |
+
children[j].classList.add( 'wptb-rating-star-hover-half' );
|
100 |
+
children[j].classList.remove( 'wptb-rating-star-hover-full' );
|
101 |
+
} else if( event.target.classList.contains( 'wptb-rating-star-right-signal-part' ) ) {
|
102 |
+
children[j].classList.add( 'wptb-rating-star-hover-full' );
|
103 |
+
children[j].classList.remove( 'wptb-rating-star-hover-half' );
|
104 |
+
}
|
105 |
+
} else {
|
106 |
+
children[j].classList.add( 'wptb-rating-star-hover-full' );
|
107 |
+
children[j].classList.remove( 'wptb-rating-star-hover-half' );
|
108 |
+
}
|
109 |
+
} else {
|
110 |
+
children[j].classList.remove( 'wptb-rating-star-hover-full' );
|
111 |
+
children[j].classList.remove( 'wptb-rating-star-hover-half' );
|
112 |
+
}
|
113 |
+
}
|
114 |
+
} else if ( event.type == "click" ) {
|
115 |
+
for( let j = 0; j < children.length; j++ ) {
|
116 |
+
if( j < onStar ) {
|
117 |
+
if( j == onStar - 1 ) {
|
118 |
+
if ( event.target.classList.contains( 'wptb-rating-star-left-signal-part' ) ) {
|
119 |
+
children[j].classList.add( 'wptb-rating-star-selected-half' );
|
120 |
+
children[j].classList.remove( 'wptb-rating-star-selected-full' );
|
121 |
+
} else if( event.target.classList.contains( 'wptb-rating-star-right-signal-part' ) ) {
|
122 |
+
children[j].classList.add( 'wptb-rating-star-selected-full' );
|
123 |
+
children[j].classList.remove( 'wptb-rating-star-selected-half' );
|
124 |
+
}
|
125 |
+
} else {
|
126 |
+
children[j].classList.add( 'wptb-rating-star-selected-full' );
|
127 |
+
children[j].classList.remove( 'wptb-rating-star-selected-half' );
|
128 |
+
}
|
129 |
+
} else {
|
130 |
+
children[j].classList.remove( 'wptb-rating-star-selected-full' );
|
131 |
+
children[j].classList.remove( 'wptb-rating-star-selected-half' );
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
};
|
136 |
+
|
137 |
+
function starRatingEventHandlersAdd( ratingStar ) {
|
138 |
+
ratingStar.onmouseover = function( event ) {
|
139 |
+
event.stopPropagation();
|
140 |
+
starRatingSelectHoverSet( event );
|
141 |
+
};
|
142 |
+
|
143 |
+
ratingStar.onmouseout = function() {
|
144 |
+
let children = this.parentNode.children;
|
145 |
+
for( let j = 0; j < children.length; j++ ) {
|
146 |
+
children[j].classList.remove( 'wptb-rating-star-hover-half' );
|
147 |
+
children[j].classList.remove( 'wptb-rating-star-hover-full' );
|
148 |
+
}
|
149 |
+
};
|
150 |
+
|
151 |
+
ratingStar.onclick = function( event ) {
|
152 |
+
event.stopPropagation();
|
153 |
+
starRatingSelectHoverSet( event );
|
154 |
+
|
155 |
+
let wptbStarRatingContainer = WPTB_Helper.findAncestor( event.target, 'wptb-star_rating-container' );
|
156 |
+
|
157 |
+
starRatingNumberRatingChenge( wptbStarRatingContainer );
|
158 |
+
|
159 |
+
let wptbActionsField = new WPTB_ActionsField( 1, wptbStarRatingContainer );
|
160 |
+
|
161 |
+
wptbActionsField.setParameters( wptbStarRatingContainer );
|
162 |
+
|
163 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
164 |
+
wptbTableStateSaveManager.tableStateSet();
|
165 |
+
};
|
166 |
+
};
|
167 |
+
|
168 |
+
function starRatingNumberRatingChenge( starRatingContainer ) {
|
169 |
+
let ratingNumber = starRatingContainer.getElementsByClassName( 'wptb-rating-star-selected-full' ).length;
|
170 |
+
if( starRatingContainer.getElementsByClassName( 'wptb-rating-star-selected-half' ).length > 0 ) {
|
171 |
+
ratingNumber = parseInt( ratingNumber ) + 0.5;
|
172 |
+
}
|
173 |
+
|
174 |
+
let wptbNumberRatingCommon = starRatingContainer.querySelectorAll( 'li' );
|
175 |
+
let wptbNumberRatingCommonVal = wptbNumberRatingCommon.length;
|
176 |
+
let wptbNumberRating = starRatingContainer.querySelector( '.wptb-number-rating' );
|
177 |
+
if( wptbNumberRatingCommonVal == 1 && wptbNumberRatingCommon[0].style.display == 'none' ) {
|
178 |
+
wptbNumberRating.innerHTML = '';
|
179 |
+
return;
|
180 |
+
}
|
181 |
+
|
182 |
+
wptbNumberRating.innerHTML = ratingNumber + '/' + wptbNumberRatingCommonVal;
|
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;
|
189 |
+
let elementSettings;
|
190 |
+
if( elementsSettingsTemplateJs.length > 0 ) {
|
191 |
+
elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];
|
192 |
+
elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
193 |
+
if( elementsSettings ) {
|
194 |
+
elementsSettings = JSON.parse( elementsSettings );
|
195 |
+
if( typeof elementsSettings === 'object' && ( 'tmpl-wptb-element-datas-' + infArr[1] ) in elementsSettings ) {
|
196 |
+
elementSettings = elementsSettings['tmpl-wptb-element-datas-' + infArr[1]];
|
197 |
+
}
|
198 |
+
}
|
199 |
+
} else {
|
200 |
+
elementsSettingsTemplateJs = document.createElement( 'script' );
|
201 |
+
elementsSettingsTemplateJs.setAttribute( 'type', 'text/html' );
|
202 |
+
elementsSettingsTemplateJs.setAttribute( 'class', 'wptb-element-datas' );
|
203 |
+
let body = document.getElementsByTagName('body')[0];
|
204 |
+
body.appendChild( elementsSettingsTemplateJs );
|
205 |
+
}
|
206 |
+
|
207 |
+
|
208 |
+
|
209 |
+
if( ! elementSettings ) {
|
210 |
+
if( ! elementsSettings || typeof elementsSettings !== 'object' ) {
|
211 |
+
elementsSettings = {};
|
212 |
+
}
|
213 |
+
|
214 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] = {};
|
215 |
+
|
216 |
+
let listItems = element.querySelectorAll( 'li' );
|
217 |
+
let listItemsNumber = listItems.length;
|
218 |
+
if( listItemsNumber > 0 ) {
|
219 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-starCount'] = listItemsNumber;
|
220 |
+
}
|
221 |
+
|
222 |
+
let wptbSuccessBox = element.querySelector( '.wptb-success-box' );
|
223 |
+
if( wptbSuccessBox ) {
|
224 |
+
wptbSuccessBox.classList.add( 'wptb-number-rating-box' );
|
225 |
+
wptbTextMessage = wptbSuccessBox.querySelector( '.wptb-text-message' );
|
226 |
+
|
227 |
+
if( wptbTextMessage ) {
|
228 |
+
wptbTextMessage.classList.add( 'wptb-number-rating' );
|
229 |
+
}
|
230 |
+
|
231 |
+
if( wptbSuccessBox.style.display == 'block' ) {
|
232 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-numberRatingShowHide'] = 'checked';
|
233 |
+
} else if( wptbSuccessBox.style.display == 'none' ) {
|
234 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-wptb-el-' + infArr[1] + '-numberRatingShowHide'] = 'unchecked';
|
235 |
+
}
|
236 |
+
}
|
237 |
+
|
238 |
+
if( elementsSettings ) {
|
239 |
+
elementsSettings = JSON.stringify( elementsSettings );
|
240 |
+
elementsSettingsTemplateJs.innerHTML = elementsSettings;
|
241 |
+
}
|
242 |
+
}
|
inc/admin/element-classes/element-scripts/text-element.js
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
tinyMCE.init({
|
2 |
+
target: element.childNodes[0],
|
3 |
+
inline: true,
|
4 |
+
plugins: "link, paste",
|
5 |
+
dialog_type: "modal",
|
6 |
+
theme: 'modern',
|
7 |
+
menubar: false,
|
8 |
+
force_br_newlines : false,
|
9 |
+
force_p_newlines : false,
|
10 |
+
forced_root_block : '',
|
11 |
+
fixed_toolbar_container: '#wpcd_fixed_toolbar',
|
12 |
+
paste_as_text: true,
|
13 |
+
toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',
|
14 |
+
setup : function( ed ) {
|
15 |
+
ed.on( 'change', function(e) {
|
16 |
+
let row = WPTB_Helper.findAncestor( element, 'wptb-row' );
|
17 |
+
if( row.classList.contains( 'wptb-table-head' ) ) {
|
18 |
+
let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );
|
19 |
+
WPTB_Helper.dataTitleColumnSet( table );
|
20 |
+
}
|
21 |
+
});
|
22 |
+
console.log("12345");
|
23 |
+
ed.on( 'keydown', function( e ) {
|
24 |
+
let p = e.target.querySelector( 'p' );
|
25 |
+
let pText = p.innerHTML.replace( /\s+/g, ' ' ).trim();
|
26 |
+
pText = pText.replace( / /g, '').trim();
|
27 |
+
|
28 |
+
if( ! window.textElemPTextKeyDown ) {
|
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();
|
35 |
+
pText = pText.replace( / /g, '').trim();
|
36 |
+
if( pText !== window.textElemPTextKeyDown ) {
|
37 |
+
e.target.onblur = function() {
|
38 |
+
let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
39 |
+
wptbTableStateSaveManager.tableStateSet();
|
40 |
+
|
41 |
+
window.textElemPTextKeyDown = '';
|
42 |
+
e.target.onblur = '';
|
43 |
+
}
|
44 |
+
} else {
|
45 |
+
e.target.onblur = '';
|
46 |
+
}
|
47 |
+
});
|
48 |
+
|
49 |
+
},
|
50 |
+
init_instance_callback: function (editor) {
|
51 |
+
window.currentEditor = editor;
|
52 |
+
editor.on('focus', function (e) {
|
53 |
+
var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;
|
54 |
+
if (window.currentEditor &&
|
55 |
+
document.getElementById('wptb_builder').scrollTop >= 55 &&
|
56 |
+
window.currentEditor.bodyElement.style.display != 'none') {
|
57 |
+
document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';
|
58 |
+
document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';
|
59 |
+
document.getElementById('wpcd_fixed_toolbar').style.top = '100px';
|
60 |
+
} else {
|
61 |
+
document.getElementById('wpcd_fixed_toolbar').style.position = 'static';
|
62 |
+
delete document.getElementById('wpcd_fixed_toolbar').style.right;
|
63 |
+
delete document.getElementById('wpcd_fixed_toolbar').style.top;
|
64 |
+
}
|
65 |
+
});
|
66 |
+
}
|
67 |
+
});
|
68 |
+
|
69 |
+
var observer = new MutationObserver( function( mutations ) {
|
70 |
+
let row = WPTB_Helper.findAncestor( element, 'wptb-row' );
|
71 |
+
if( row.classList.contains( 'wptb-table-head' ) ) {
|
72 |
+
let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );
|
73 |
+
WPTB_Helper.dataTitleColumnSet( table );
|
74 |
+
}
|
75 |
+
});
|
76 |
+
var config = { attributes: true, attributeFilter: ['style'] };
|
77 |
+
observer.observe( element, config );
|
inc/admin/element-classes/elements/button-element.php
ADDED
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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\Element_Classes\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 Button_Element extends Element_Base_Object {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Get element name.
|
17 |
+
*
|
18 |
+
* Retrieve button 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 'button';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get element title.
|
31 |
+
*
|
32 |
+
* Retrieve button editor element.
|
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( 'Button', 'wp-table-builder' );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get directory icon.
|
45 |
+
*
|
46 |
+
* Return directory button editor 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 wp_normalize_path ( NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/button.svg' );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Get url icon.
|
59 |
+
*
|
60 |
+
* Return url button 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/button.svg' );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Include file with js script for element button
|
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/button-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' => __( 'Button Options', 'wp_table_builder' ),
|
95 |
+
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
]
|
97 |
+
);
|
98 |
+
|
99 |
+
$this->add_control(
|
100 |
+
'buttonSizeCheckbox',
|
101 |
+
[
|
102 |
+
'label' => __( 'Button Size', 'wp_table_builder' ),
|
103 |
+
'type' => Controls_Manager::CHANGE_ATTRIBUTE,
|
104 |
+
'selectors' => [
|
105 |
+
'{{{data.container}}} .wptb-button-wrapper' => 'class: size',
|
106 |
+
],
|
107 |
+
'numberSelectedButtonDefault' => '1',
|
108 |
+
'buttonDataNames' => ['s', 'm', 'l', 'xl'],
|
109 |
+
'buttonViews' => ['S', 'M', 'L', 'XL']
|
110 |
+
]
|
111 |
+
);
|
112 |
+
|
113 |
+
$this->add_control(
|
114 |
+
'textColor',
|
115 |
+
[
|
116 |
+
'label' => __( 'Button Text Color', 'wp_table_builder' ),
|
117 |
+
'type' => Controls_Manager::COLOR,
|
118 |
+
'selectors' => [
|
119 |
+
'{{{data.container}}} .wptb-button-wrapper a div' => 'color',
|
120 |
+
]
|
121 |
+
]
|
122 |
+
);
|
123 |
+
|
124 |
+
$this->add_control(
|
125 |
+
'buttonColor',
|
126 |
+
[
|
127 |
+
'label' => __( 'Button Color', 'wp_table_builder' ),
|
128 |
+
'type' => Controls_Manager::COLOR,
|
129 |
+
'selectors' => [
|
130 |
+
'{{{data.container}}} .wptb-button-wrapper a div' => 'backgroundColor',
|
131 |
+
]
|
132 |
+
]
|
133 |
+
);
|
134 |
+
|
135 |
+
$this->add_control(
|
136 |
+
'buttonLink',
|
137 |
+
[
|
138 |
+
'label' => __( 'Button Link', 'wp_table_builder' ),
|
139 |
+
'type' => Controls_Manager::URL,
|
140 |
+
'selector' => '{{{data.container}}} .wptb-button-wrapper a'
|
141 |
+
]
|
142 |
+
);
|
143 |
+
|
144 |
+
$this->add_control(
|
145 |
+
'buttonAlignmentCheckbox',
|
146 |
+
[
|
147 |
+
'label' => __( 'Button Alignment', 'wp_table_builder' ),
|
148 |
+
'type' => Controls_Manager::ALIGNMENT,
|
149 |
+
'selected' => 1,
|
150 |
+
'selectors' => [
|
151 |
+
'{{{data.container}}} .wptb-button-wrapper' => 'justify-content',
|
152 |
+
]
|
153 |
+
]
|
154 |
+
);
|
155 |
+
|
156 |
+
$this->add_control(
|
157 |
+
'button-id',
|
158 |
+
[
|
159 |
+
'label' => __( 'Button Id', 'wp_table_builder' ),
|
160 |
+
'type' => Controls_Manager::TEXT,
|
161 |
+
'placeholder' => __( 'Insert Button ID Here', 'wp_table_builder' ),
|
162 |
+
]
|
163 |
+
);
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Render text editor element output in the editor.
|
168 |
+
*
|
169 |
+
* Written as a wp js template and used to generate the live preview.
|
170 |
+
*
|
171 |
+
* @since 1.1.2
|
172 |
+
* @access protected
|
173 |
+
*/
|
174 |
+
protected function _content_template() {
|
175 |
+
?>
|
176 |
+
<div class="wptb-button-wrapper wptb-size-m">
|
177 |
+
<a>
|
178 |
+
<div class="wptb-button"
|
179 |
+
style="position: relative;">
|
180 |
+
<p>Button Text</p>
|
181 |
+
</div>
|
182 |
+
</a>
|
183 |
+
</div>
|
184 |
+
<?php
|
185 |
+
}
|
186 |
+
}
|
inc/admin/element-classes/elements/image-element.php
ADDED
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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\Element_Classes\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 Image_Element extends Element_Base_Object {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Get element name.
|
17 |
+
*
|
18 |
+
* Retrieve image 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 'image';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get element image.
|
31 |
+
*
|
32 |
+
* Retrieve image editor element.
|
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( 'Image', 'wp-table-builder' );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get directory icon.
|
45 |
+
*
|
46 |
+
* Retrieve directory image 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/image.svg'; ;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Get url icon.
|
59 |
+
*
|
60 |
+
* Return url image 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/image.svg' );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Include file with js script for element image
|
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/image-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' => __( 'Image Options', 'wp_table_builder' ),
|
95 |
+
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
]
|
97 |
+
);
|
98 |
+
|
99 |
+
$this->add_control(
|
100 |
+
'imageAlignmentCheckbox',
|
101 |
+
[
|
102 |
+
'label' => __( 'Image Alignment', 'wp_table_builder' ),
|
103 |
+
'type' => Controls_Manager::ALIGNMENT,
|
104 |
+
'selected' => 1,
|
105 |
+
'selectors' => [
|
106 |
+
'{{{data.container}}} .wptb-image-wrapper a' => 'float',
|
107 |
+
]
|
108 |
+
]
|
109 |
+
);
|
110 |
+
|
111 |
+
$this->add_control(
|
112 |
+
'imageSize',
|
113 |
+
[
|
114 |
+
'label' => __( 'Image Size', 'wp_table_builder' ),
|
115 |
+
'type' => Controls_Manager::SIZE,
|
116 |
+
'selectors' => [
|
117 |
+
'{{{data.container}}} .wptb-image-wrapper a' => 'width',
|
118 |
+
],
|
119 |
+
'min' => 10,
|
120 |
+
'max' => 100,
|
121 |
+
'defaultValue' => 100,
|
122 |
+
'dimension' => '%'
|
123 |
+
]
|
124 |
+
);
|
125 |
+
|
126 |
+
$this->add_control(
|
127 |
+
'imageLink',
|
128 |
+
[
|
129 |
+
'label' => __( 'Image Link', 'wp_table_builder' ),
|
130 |
+
'type' => Controls_Manager::URL,
|
131 |
+
'selector' => '{{{data.container}}} .wptb-image-wrapper a'
|
132 |
+
]
|
133 |
+
);
|
134 |
+
|
135 |
+
$this->add_control(
|
136 |
+
'imageAlternativeText',
|
137 |
+
[
|
138 |
+
'label' => __( 'Image Alternative Text', 'wp_table_builder' ),
|
139 |
+
'type' => Controls_Manager::TEXT,
|
140 |
+
'placeholder' => __( 'Image Alt Text', 'wp_table_builder' ),
|
141 |
+
]
|
142 |
+
);
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Render text editor element output in the editor.
|
147 |
+
*
|
148 |
+
* Written as a wp js template and used to generate the live preview.
|
149 |
+
*
|
150 |
+
* @since 1.1.2
|
151 |
+
* @access protected
|
152 |
+
*/
|
153 |
+
protected function _content_template() {
|
154 |
+
?>
|
155 |
+
<div class="wptb-image-wrapper">
|
156 |
+
<a style="display: block;"><img></a>
|
157 |
+
</div>
|
158 |
+
<?php
|
159 |
+
}
|
160 |
+
}
|
inc/admin/element-classes/elements/list-element.php
ADDED
@@ -0,0 +1,209 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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\Element_Classes\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 List_Element extends Element_Base_Object {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Get element name.
|
17 |
+
*
|
18 |
+
* Retrieve list 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 'list';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get element title.
|
31 |
+
*
|
32 |
+
* Retrieve button editor element.
|
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( 'List', 'wp-table-builder' );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get directory icon.
|
45 |
+
*
|
46 |
+
* Retrieve directory list-item 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/list.svg'; ;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Get url icon.
|
59 |
+
*
|
60 |
+
* Return url list-item 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/list.svg' );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Include file with js script for element list
|
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/list-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' => __( 'List Options', 'wp_table_builder' ),
|
95 |
+
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
]
|
97 |
+
);
|
98 |
+
|
99 |
+
$this->add_control(
|
100 |
+
'select1',
|
101 |
+
[
|
102 |
+
'label' => __( 'List Type', 'wp_table_builder' ),
|
103 |
+
'type' => Controls_Manager::SELECT,
|
104 |
+
'options' => [
|
105 |
+
['Ordered', 'numbered'],
|
106 |
+
['Unordered', 'unordered']
|
107 |
+
],
|
108 |
+
'selectedDefault' => 0,
|
109 |
+
]
|
110 |
+
);
|
111 |
+
|
112 |
+
$this->add_control(
|
113 |
+
'select2',
|
114 |
+
[
|
115 |
+
'label' => __( 'List Icon', 'wp_table_builder' ),
|
116 |
+
'type' => Controls_Manager::SELECT,
|
117 |
+
'options' => [
|
118 |
+
['Circle', 'circle'],
|
119 |
+
['Square', 'square'],
|
120 |
+
['Disc', 'disc'],
|
121 |
+
['None', 'none']
|
122 |
+
],
|
123 |
+
'selectedDefault' => 2,
|
124 |
+
'appearDependOn' => ['select1', ['unordered'], ['numbered']]
|
125 |
+
]
|
126 |
+
);
|
127 |
+
|
128 |
+
// $this->add_control(
|
129 |
+
// 'checkbox',
|
130 |
+
// [
|
131 |
+
// 'label' => __( 'Checkbox Test', 'wp_table_builder' ),
|
132 |
+
// 'type' => Controls_Manager::CHECKBOX,
|
133 |
+
// 'checkboxes' => [
|
134 |
+
// ['Name 1', 'value 1', 'on'],
|
135 |
+
// ['Name 2', 'value 2', 'off'],
|
136 |
+
// ['Name 3', 'value 3', 'on']
|
137 |
+
// ],
|
138 |
+
// 'appearDependOn' => ['select1', ['unordered'], ['numbered']]
|
139 |
+
// ]
|
140 |
+
// );
|
141 |
+
//
|
142 |
+
// $this->add_control(
|
143 |
+
// 'textarea',
|
144 |
+
// [
|
145 |
+
// 'label' => __( 'Textarea Test', 'wp_table_builder' ),
|
146 |
+
// 'type' => Controls_Manager::TEXTAREA,
|
147 |
+
// 'placeholder' => __( 'Insert Button ID Here', 'wp_table_builder' ),
|
148 |
+
// 'rows' => 5,
|
149 |
+
// 'appearDependOn' => ['select1', ['unordered'], ['numbered']]
|
150 |
+
// ]
|
151 |
+
// );
|
152 |
+
|
153 |
+
$this->add_control(
|
154 |
+
'listColor',
|
155 |
+
[
|
156 |
+
'label' => __( 'List Font Color', 'wp_table_builder' ),
|
157 |
+
'type' => Controls_Manager::COLOR,
|
158 |
+
'selectors' => [
|
159 |
+
'{{{data.container}}} ul li p' => 'color',
|
160 |
+
]
|
161 |
+
]
|
162 |
+
);
|
163 |
+
|
164 |
+
$this->add_control(
|
165 |
+
'listAlignment',
|
166 |
+
[
|
167 |
+
'label' => __( 'List Alignment', 'wp_table_builder' ),
|
168 |
+
'type' => Controls_Manager::ALIGNMENT,
|
169 |
+
'selected' => 0,
|
170 |
+
'selectors' => [
|
171 |
+
'{{{data.container}}} ul li p' => 'text-align',
|
172 |
+
]
|
173 |
+
]
|
174 |
+
);
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Render text editor element output in the editor.
|
179 |
+
*
|
180 |
+
* Written as a wp js template and used to generate the live preview.
|
181 |
+
*
|
182 |
+
* @since 1.1.2
|
183 |
+
* @access protected
|
184 |
+
*/
|
185 |
+
protected function _content_template() {
|
186 |
+
?>
|
187 |
+
<ul>
|
188 |
+
<li class="wptb-in-element">
|
189 |
+
<div class="wptb-list-item-content"
|
190 |
+
style="position: relative;" spellcheck="false" contenteditable="true">
|
191 |
+
<p data-list-style-type-index="1."><?php esc_html_e( 'List Item 1', 'wp-table-builder' ); ?></p>
|
192 |
+
</div>
|
193 |
+
</li>
|
194 |
+
<li class="wptb-in-element">
|
195 |
+
<div class="wptb-list-item-content"
|
196 |
+
style="position: relative;" spellcheck="false" contenteditable="true">
|
197 |
+
<p data-list-style-type-index="2."><?php esc_html_e( 'List Item 2', 'wp-table-builder' ); ?></p>
|
198 |
+
</div>
|
199 |
+
</li>
|
200 |
+
<li class="wptb-in-element">
|
201 |
+
<div class="wptb-list-item-content"
|
202 |
+
style="position: relative;" spellcheck="false" contenteditable="true">
|
203 |
+
<p data-list-style-type-index="3."><?php esc_html_e( 'List Item 3', 'wp-table-builder' ); ?></p>
|
204 |
+
</div>
|
205 |
+
</li>
|
206 |
+
</ul>
|
207 |
+
<?php
|
208 |
+
}
|
209 |
+
}
|
inc/admin/element-classes/elements/star-rating-element.php
ADDED
@@ -0,0 +1,251 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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\Element_Classes\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 Star_Rating_Element extends Element_Base_Object {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Get element name.
|
17 |
+
*
|
18 |
+
* Retrieve button 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 'star_rating';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get element button.
|
31 |
+
*
|
32 |
+
* Retrieve button editor element.
|
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( 'Star Rating', 'wp-table-builder' );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get directory icon.
|
45 |
+
*
|
46 |
+
* Retrieve directory star-rating 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/half-filled-rating-star.svg'; ;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Get url icon.
|
59 |
+
*
|
60 |
+
* Return url star-rating 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/half-filled-rating-star.svg' );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Include file with js script for element star rating
|
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/star-rating-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' => __( 'Star Rating Options', 'wp_table_builder' ),
|
95 |
+
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
]
|
97 |
+
);
|
98 |
+
|
99 |
+
$this->add_control(
|
100 |
+
'starRatingSize',
|
101 |
+
[
|
102 |
+
'label' => __( 'Star Size', 'wp_table_builder' ),
|
103 |
+
'type' => Controls_Manager::SIZE,
|
104 |
+
'selectors' => [
|
105 |
+
'{{{data.container}}} .wptb-rating-star' => ['width', 'height'],
|
106 |
+
],
|
107 |
+
'min' => 10,
|
108 |
+
'max' => 50,
|
109 |
+
'defaultValue' => 20,
|
110 |
+
'dimension' => 'px'
|
111 |
+
]
|
112 |
+
);
|
113 |
+
|
114 |
+
$this->add_control(
|
115 |
+
'starColor',
|
116 |
+
[
|
117 |
+
'label' => __( 'Star Color', 'wp_table_builder' ),
|
118 |
+
'type' => Controls_Manager::COLOR,
|
119 |
+
'selectors' => [
|
120 |
+
'{{{data.container}}} .wptb-rating-star span svg' => 'fill',
|
121 |
+
]
|
122 |
+
]
|
123 |
+
);
|
124 |
+
|
125 |
+
$this->add_control(
|
126 |
+
'starCount',
|
127 |
+
[
|
128 |
+
'label' => __( 'Star Count', 'wp_table_builder' ),
|
129 |
+
'type' => Controls_Manager::NUMBER,
|
130 |
+
'min' => 1,
|
131 |
+
'max' => 10,
|
132 |
+
'defaultValue' => 5,
|
133 |
+
]
|
134 |
+
);
|
135 |
+
|
136 |
+
$this->add_control(
|
137 |
+
'ratingAlignmentCheckbox',
|
138 |
+
[
|
139 |
+
'label' => __( 'Rating Alignment', 'wp_table_builder' ),
|
140 |
+
'type' => Controls_Manager::ALIGNMENT,
|
141 |
+
'selected' => 1,
|
142 |
+
'selectors' => [
|
143 |
+
'{{{data.container}}}' => 'text-align',
|
144 |
+
]
|
145 |
+
]
|
146 |
+
);
|
147 |
+
|
148 |
+
$this->add_control(
|
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 |
+
|
160 |
+
$this->add_control(
|
161 |
+
'numberRatingSize',
|
162 |
+
[
|
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,
|
170 |
+
'defaultValue' => 25,
|
171 |
+
'dimension' => 'px',
|
172 |
+
'customClassForContainer' => 'wptb-numeral-star-rating-option',
|
173 |
+
'containerAdditionalStyles' => 'display:none;',
|
174 |
+
'appearDependOn' => ['numberRatingShowHide', ['checked'], ['unchecked']]
|
175 |
+
]
|
176 |
+
);
|
177 |
+
|
178 |
+
$this->add_control(
|
179 |
+
'numberRatingColor',
|
180 |
+
[
|
181 |
+
'label' => __( 'Font Color', 'wp_table_builder' ),
|
182 |
+
'type' => Controls_Manager::COLOR,
|
183 |
+
'selectors' => [
|
184 |
+
'{{{data.container}}} .wptb-number-rating' => 'color',
|
185 |
+
],
|
186 |
+
'customClassForContainer' => 'wptb-numeral-star-rating-option',
|
187 |
+
'containerAdditionalStyles' => 'display:none;',
|
188 |
+
'appearDependOn' => ['numberRatingShowHide', ['checked'], ['unchecked']]
|
189 |
+
]
|
190 |
+
);
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Render text editor element output in the editor.
|
195 |
+
*
|
196 |
+
* Written as a wp js template and used to generate the live preview.
|
197 |
+
*
|
198 |
+
* @since 1.1.2
|
199 |
+
* @access protected
|
200 |
+
*/
|
201 |
+
protected function _content_template() {
|
202 |
+
?>
|
203 |
+
<div class="wptb-rating-stars-box">
|
204 |
+
<?php
|
205 |
+
|
206 |
+
$countStarts = 5;
|
207 |
+
|
208 |
+
ob_start();
|
209 |
+
require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/filled-rating-star-small.php';
|
210 |
+
$filled_rating_star_html = ob_get_clean();
|
211 |
+
|
212 |
+
|
213 |
+
ob_start();
|
214 |
+
require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/not-filled-rating-star-small.php';
|
215 |
+
$not_filled_rating_star_html = ob_get_clean();
|
216 |
+
|
217 |
+
|
218 |
+
ob_start();
|
219 |
+
require NS\WP_TABLE_BUILDER_DIR . 'inc/admin/views/builder/icons/half-filled-rating-star-small.php';
|
220 |
+
$half_filled_rating_star_html = ob_get_clean();
|
221 |
+
|
222 |
+
$rating_star_list = '<ul class="wptb-rating-stars-list">';
|
223 |
+
|
224 |
+
$rating_star = '';
|
225 |
+
for( $i = 0; $i < $countStarts; $i++ ) {
|
226 |
+
$rating_star .= '<li class="wptb-rating-star" style="width:20px;" data-value="' . ( $i + 1 ) . '">';
|
227 |
+
$rating_star_zero_set = '';
|
228 |
+
if( $i == 0 ) {
|
229 |
+
$rating_star_zero_set = '<span class="wptb-rating-star-zero-set"></span>';
|
230 |
+
}
|
231 |
+
|
232 |
+
$rating_star .= '<span class="wptb-rating-star-left-signal-part">' . $ratingStarZeroSet . '</span>'
|
233 |
+
. '<span class="wptb-filled-rating-star">' . $filled_rating_star_html . '</span>'
|
234 |
+
. '<span class="wptb-not-filled-rating-star">' . $not_filled_rating_star_html . '</span>'
|
235 |
+
. '<span class="wptb-half-filled-rating-star">' . $half_filled_rating_star_html . '</span>'
|
236 |
+
. '<span class="wptb-rating-star-right-signal-part"></span>';
|
237 |
+
$rating_star .= '</li>';
|
238 |
+
}
|
239 |
+
$rating_star_list .= $rating_star . '</ul>';
|
240 |
+
|
241 |
+
echo $rating_star_list;
|
242 |
+
|
243 |
+
?>
|
244 |
+
</ul>
|
245 |
+
<div class="wptb-number-rating-box" style="display: none;">
|
246 |
+
<div class="wptb-number-rating" style="font-size: 25px;">0/<?php echo $countStarts; ?></div>
|
247 |
+
</div>
|
248 |
+
</div>
|
249 |
+
<?php
|
250 |
+
}
|
251 |
+
}
|
inc/admin/element-classes/elements/text-element.php
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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\Element_Classes\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 Text_Element extends Element_Base_Object {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Get element name.
|
17 |
+
*
|
18 |
+
* Retrieve text 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 'text';
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get element title.
|
31 |
+
*
|
32 |
+
* Retrieve text 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( 'Text', 'wp-table-builder' );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Get directory icon.
|
45 |
+
*
|
46 |
+
* Return directory text 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/text.svg'; ;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Get url icon.
|
59 |
+
*
|
60 |
+
* Return url text 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/text.svg' );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Include file with js script for element text
|
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/text-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' => __( 'Text Options', 'wp_table_builder' ),
|
95 |
+
'type' => Controls_Manager::SECTION_HEADER,
|
96 |
+
]
|
97 |
+
);
|
98 |
+
|
99 |
+
$this->add_control(
|
100 |
+
'color',
|
101 |
+
[
|
102 |
+
'label' => __( 'Font Color', 'wp_table_builder' ),
|
103 |
+
'type' => Controls_Manager::COLOR,
|
104 |
+
'selectors' => [
|
105 |
+
'{{{data.container}}}' => 'color',
|
106 |
+
]
|
107 |
+
]
|
108 |
+
);
|
109 |
+
|
110 |
+
$this->add_control(
|
111 |
+
'size',
|
112 |
+
[
|
113 |
+
'label' => __( 'Font Size', 'wp_table_builder' ),
|
114 |
+
'type' => Controls_Manager::SIZE,
|
115 |
+
'selectors' => [
|
116 |
+
'{{{data.container}}}' => 'fontSize',
|
117 |
+
],
|
118 |
+
'min' => 10,
|
119 |
+
'max' => 50,
|
120 |
+
'defaultValue' => 15,
|
121 |
+
'dimension' => 'px'
|
122 |
+
]
|
123 |
+
);
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Render text editor element output in the editor.
|
128 |
+
*
|
129 |
+
* Written as a wp js template and used to generate the live preview.
|
130 |
+
*
|
131 |
+
* @since 1.1.2
|
132 |
+
* @access protected
|
133 |
+
*/
|
134 |
+
protected function _content_template() {
|
135 |
+
?>
|
136 |
+
<div><p>Text</p></div>
|
137 |
+
<?php
|
138 |
+
}
|
139 |
+
}
|
inc/admin/element-classes/managers/controls-manager.php
ADDED
@@ -0,0 +1,268 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Managers;
|
3 |
+
use WP_Table_Builder\Inc\Admin\Element_Classes\Controls\Base_Control as Base_Control;
|
4 |
+
use WP_Table_Builder\Inc\Admin\Element_Classes\Base\Element_Base_Object as Element_Base_Object;
|
5 |
+
|
6 |
+
// If this file is called directly, abort.
|
7 |
+
if ( ! defined( 'WPINC' ) ) {
|
8 |
+
die;
|
9 |
+
}
|
10 |
+
|
11 |
+
/**
|
12 |
+
* WP Table Builder Controls Manager.
|
13 |
+
*
|
14 |
+
* WP Table Builder control manager handler class is responsible for registering and
|
15 |
+
* initializing all the supported controls.
|
16 |
+
*
|
17 |
+
* @since 1.1.2
|
18 |
+
*/
|
19 |
+
class Controls_Manager {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Size control.
|
23 |
+
*/
|
24 |
+
const SIZE = 'size';
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Color control.
|
28 |
+
*/
|
29 |
+
const COLOR = 'color';
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Section Header control.
|
33 |
+
*/
|
34 |
+
const SECTION_HEADER = 'section_header';
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Change Attribute control.
|
38 |
+
*/
|
39 |
+
const CHANGE_ATTRIBUTE = 'change_attribute';
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Alignment control.
|
43 |
+
*/
|
44 |
+
const ALIGNMENT = 'alignment';
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Href control.
|
48 |
+
*/
|
49 |
+
const URL = 'url';
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Adding text control.
|
53 |
+
*/
|
54 |
+
const TEXT = 'text';
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Adding number control.
|
58 |
+
*/
|
59 |
+
const NUMBER = 'number';
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Adding on toggle control.
|
63 |
+
*/
|
64 |
+
const TOGGLE = 'toggle';
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Adding select control.
|
68 |
+
*/
|
69 |
+
const SELECT = 'select';
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Adding checkbox control.
|
73 |
+
*/
|
74 |
+
const CHECKBOX = 'checkbox';
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Adding textarea control.
|
78 |
+
*/
|
79 |
+
const TEXTAREA = 'textarea';
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Controls.
|
83 |
+
*
|
84 |
+
* Holds the list of all the controls. Default is `null`.
|
85 |
+
*
|
86 |
+
* @since 1.1.2
|
87 |
+
* @access private
|
88 |
+
*
|
89 |
+
* @var Base_Control[]
|
90 |
+
*/
|
91 |
+
private $controls = null;
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Control stacks.
|
95 |
+
*
|
96 |
+
* Holds the list of all the control stacks. Default is `null`.
|
97 |
+
*
|
98 |
+
* @since 1.1.2
|
99 |
+
* @access private
|
100 |
+
*
|
101 |
+
* @var array
|
102 |
+
*/
|
103 |
+
private $stacks = null;
|
104 |
+
|
105 |
+
public static function get_controls_names() {
|
106 |
+
return [
|
107 |
+
self::COLOR,
|
108 |
+
self::SIZE,
|
109 |
+
self::SECTION_HEADER,
|
110 |
+
self::CHANGE_ATTRIBUTE,
|
111 |
+
self::ALIGNMENT,
|
112 |
+
self::URL,
|
113 |
+
self::TEXT,
|
114 |
+
self::NUMBER,
|
115 |
+
self::TOGGLE,
|
116 |
+
self::SELECT,
|
117 |
+
self::CHECKBOX,
|
118 |
+
self::TEXTAREA
|
119 |
+
];
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Add control to stack.
|
124 |
+
*
|
125 |
+
* This method adds a new control to the stack.
|
126 |
+
*
|
127 |
+
* @since 1.1.2
|
128 |
+
* @access public
|
129 |
+
*
|
130 |
+
* @param Element_Base_Object $item Item stack.
|
131 |
+
* @param string $control_id Control ID.
|
132 |
+
* @param array $control_data Control data.
|
133 |
+
*
|
134 |
+
* @return bool True if control added, False otherwise.
|
135 |
+
*/
|
136 |
+
public function add_control_to_stack( Element_Base_Object $item, $control_id, $control_data ) {
|
137 |
+
|
138 |
+
$control_data['name'] = $control_id;
|
139 |
+
|
140 |
+
$control_type_instance = $this->get_control( $control_data['type'] );
|
141 |
+
|
142 |
+
if ( ! $control_type_instance ) {
|
143 |
+
_doing_it_wrong( sprintf( '%1$s::%2$s', __CLASS__, __FUNCTION__ ), sprintf( 'Control type "%s" not found.', $control_data['type'] ), '1.0.0' );
|
144 |
+
return false;
|
145 |
+
}
|
146 |
+
|
147 |
+
$stack_id = $item->get_unique_name();
|
148 |
+
|
149 |
+
if ( isset( $this->stacks[ $stack_id ][ $control_id ] ) ) {
|
150 |
+
_doing_it_wrong( sprintf( '%1$s::%2$s', __CLASS__, __FUNCTION__ ), sprintf( 'Cannot redeclare control with same name "%s".', $control_id ), '1.0.0' );
|
151 |
+
|
152 |
+
return false;
|
153 |
+
}
|
154 |
+
|
155 |
+
$this->stacks[ $stack_id ][ $control_id ] = $control_data;
|
156 |
+
|
157 |
+
return true;
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Register controls.
|
162 |
+
*
|
163 |
+
* This method creates a list of all the supported controls by requiring the
|
164 |
+
* control files and initializing each one of them.
|
165 |
+
*
|
166 |
+
* The list of supported controls includes the regular controls
|
167 |
+
*
|
168 |
+
* @since 1.1.2
|
169 |
+
* @access private
|
170 |
+
*/
|
171 |
+
private function register_controls() {
|
172 |
+
$this->controls = [];
|
173 |
+
|
174 |
+
foreach ( self::get_controls_names() as $control_id ) {
|
175 |
+
$control_class_id = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $control_id ) ) );
|
176 |
+
$class_name = '\WP_Table_Builder\Inc\Admin\Element_Classes\Controls\Control_' . $control_class_id;
|
177 |
+
if( class_exists( $class_name ) ) {
|
178 |
+
$this->register_control_object( $control_id, new $class_name() );
|
179 |
+
}
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Register control object.
|
185 |
+
*
|
186 |
+
* This method adds a new control to the controls list.
|
187 |
+
*
|
188 |
+
* @since 1.1.2
|
189 |
+
* @access public
|
190 |
+
*
|
191 |
+
* @param string $control_id Control ID.
|
192 |
+
* @param Base_Control $control_instance Control instance, usually the
|
193 |
+
* current instance.
|
194 |
+
*/
|
195 |
+
public function register_control_object( $control_id, Base_Control $control_instance ) {
|
196 |
+
$this->controls[ $control_id ] = $control_instance;
|
197 |
+
}
|
198 |
+
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Get controls.
|
202 |
+
*
|
203 |
+
* Returns the controls list from the current instance.
|
204 |
+
*
|
205 |
+
* @since 1.1.2
|
206 |
+
* @access public
|
207 |
+
*
|
208 |
+
* @return Base_Control[] Controls list.
|
209 |
+
*/
|
210 |
+
public function get_controls() {
|
211 |
+
if ( null === $this->controls ) {
|
212 |
+
$this->register_controls();
|
213 |
+
}
|
214 |
+
|
215 |
+
return $this->controls;
|
216 |
+
}
|
217 |
+
|
218 |
+
/**
|
219 |
+
* Get control.
|
220 |
+
*
|
221 |
+
* Returns a specific control from the current controls instance.
|
222 |
+
*
|
223 |
+
* @since 1.1.2
|
224 |
+
* @access public
|
225 |
+
*
|
226 |
+
* @param string $control_id Control ID.
|
227 |
+
*
|
228 |
+
* @return Base_Control Control instance, or False otherwise.
|
229 |
+
*/
|
230 |
+
public function get_control( $control_id ) {
|
231 |
+
$controls = $this->get_controls();
|
232 |
+
|
233 |
+
return isset( $controls[ $control_id ] ) ? $controls[ $control_id ] : false;
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* Render controls.
|
238 |
+
*
|
239 |
+
* Generate the final HTML for all the registered controls using the element
|
240 |
+
* template.
|
241 |
+
*
|
242 |
+
* @since 1.1.2
|
243 |
+
* @access public
|
244 |
+
*/
|
245 |
+
public function output_controls_templates() {
|
246 |
+
foreach ( $this->get_controls() as $control ) {
|
247 |
+
$control->output_template();
|
248 |
+
}
|
249 |
+
}
|
250 |
+
|
251 |
+
/**
|
252 |
+
* Render element content js templates.
|
253 |
+
*
|
254 |
+
* @since 1.1.2
|
255 |
+
* @access public
|
256 |
+
*/
|
257 |
+
public function output_control_stacks() {
|
258 |
+
if( ! is_null( $this->stacks ) && is_array( $this->stacks ) ) {
|
259 |
+
foreach( $this->stacks as $key => $value ):
|
260 |
+
?>
|
261 |
+
<script type="text/html" id="tmpl-wptb-<?php echo $key; ?>-control-stack">
|
262 |
+
<?php echo json_encode( $value ); ?>
|
263 |
+
</script>
|
264 |
+
<?php
|
265 |
+
endforeach;
|
266 |
+
}
|
267 |
+
}
|
268 |
+
}
|
inc/admin/element-classes/managers/elements-manager.php
ADDED
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace WP_Table_Builder\Inc\Admin\Element_Classes\Managers;
|
3 |
+
|
4 |
+
// If this file is called directly, abort.
|
5 |
+
if ( ! defined( 'WPINC' ) ) {
|
6 |
+
die;
|
7 |
+
}
|
8 |
+
|
9 |
+
/**
|
10 |
+
* WP Table Builder Elements manager.
|
11 |
+
*
|
12 |
+
* WP Table Builder elements manager handler class is responsible for registering and
|
13 |
+
* initializing all the supported WP Table Builder elements.
|
14 |
+
*
|
15 |
+
* @since 1.1.2
|
16 |
+
*/
|
17 |
+
class Elements_Manager {
|
18 |
+
/**
|
19 |
+
* Elements objects.
|
20 |
+
*
|
21 |
+
* Holds the list of all the element objects.
|
22 |
+
*
|
23 |
+
* @since 1.1.2
|
24 |
+
* @access private
|
25 |
+
*
|
26 |
+
* @var WPTB_Element_Base_Object[]
|
27 |
+
*/
|
28 |
+
private $_element_objects = null;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Init Elements.
|
32 |
+
*
|
33 |
+
* Initialize WP Table Builder Elements manager. Include all the the elements files.
|
34 |
+
*
|
35 |
+
* @since 1.1.2
|
36 |
+
* @access private
|
37 |
+
*/
|
38 |
+
private function element_elements() {
|
39 |
+
$build_elements_filename = [
|
40 |
+
'text',
|
41 |
+
'button',
|
42 |
+
'image',
|
43 |
+
'list',
|
44 |
+
'star_rating'
|
45 |
+
];
|
46 |
+
|
47 |
+
$this->_element_objects = [];
|
48 |
+
|
49 |
+
foreach ( $build_elements_filename as $element_filename ) {
|
50 |
+
$class_name = ucfirst( $element_filename ) . '_Element';
|
51 |
+
|
52 |
+
$class_name = '\WP_Table_Builder\Inc\Admin\Element_Classes\Elements\\' . $class_name;
|
53 |
+
|
54 |
+
$object = new $class_name();
|
55 |
+
|
56 |
+
$this->register_element_object( $object );
|
57 |
+
|
58 |
+
$object->init_controls();
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Register element object.
|
64 |
+
*
|
65 |
+
* Add a new element object to the list of registered element objects.
|
66 |
+
*
|
67 |
+
* @since 1.1.2
|
68 |
+
* @access public
|
69 |
+
*
|
70 |
+
* @param WPTB_Element_Base_Object $element WP Table Builder element.
|
71 |
+
*
|
72 |
+
* @return true True if the element was registered.
|
73 |
+
*/
|
74 |
+
public function register_element_object( $element ) {
|
75 |
+
$this->_element_objects[ $element->get_name() ] = $element;
|
76 |
+
|
77 |
+
return true;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Get element objects.
|
82 |
+
*
|
83 |
+
* Returns the registered element objects list.
|
84 |
+
*
|
85 |
+
* @since 1.1.2
|
86 |
+
* @access public
|
87 |
+
*
|
88 |
+
* @param string $element_name Optional. Element name. Default is null.
|
89 |
+
*
|
90 |
+
* @return WPTB_Element_Base_Object|WPTB_Element_Base_Object[]|null Registered element objects.
|
91 |
+
*/
|
92 |
+
public function get_element_objects( $element_name = null ) {
|
93 |
+
if ( is_null( $this->_element_objects ) ) {
|
94 |
+
$this->element_elements();
|
95 |
+
}
|
96 |
+
|
97 |
+
if ( null !== $element_name ) {
|
98 |
+
return isset( $this->_element_objects[ $element_name ] ) ? $this->_element_objects[ $element_name ] : null;
|
99 |
+
}
|
100 |
+
return $this->_element_objects;
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Render Elements content.
|
105 |
+
*
|
106 |
+
* @since 1.1.2
|
107 |
+
* @access public
|
108 |
+
*/
|
109 |
+
public function output_elements_templates() {
|
110 |
+
foreach ( $this->get_element_objects() as $element ) {
|
111 |
+
$element->output_template();
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Render Elements scripts.
|
117 |
+
*
|
118 |
+
* @since 1.1.2
|
119 |
+
* @access public
|
120 |
+
*/
|
121 |
+
public function output_elements_scripts() {
|
122 |
+
?>
|
123 |
+
<script type="text/javascript">
|
124 |
+
var WPTB_ElementsScriptsLauncher = {};
|
125 |
+
</script>
|
126 |
+
<?php
|
127 |
+
foreach ( $this->get_element_objects() as $element ) {
|
128 |
+
$element->output_scripts();
|
129 |
+
}
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Render Elements content.
|
134 |
+
*
|
135 |
+
* @since 1.1.2
|
136 |
+
* @access public
|
137 |
+
*/
|
138 |
+
|
139 |
+
public function output_directories_icons() {
|
140 |
+
$directories_icons = array();
|
141 |
+
foreach ( $this->get_element_objects() as $element ) {
|
142 |
+
$directories_icons[$element->get_name()] = $element->get_url_icon();
|
143 |
+
}
|
144 |
+
?>
|
145 |
+
<script type="text/html" id="tmpl-wptb-element-icons-directories">
|
146 |
+
<?php echo json_encode( $directories_icons ); ?>
|
147 |
+
</script>
|
148 |
+
|
149 |
+
// code javascript for for preloading icons
|
150 |
+
<script type="text/javascript">
|
151 |
+
( function() {
|
152 |
+
window.onload = function() {
|
153 |
+
let wptbElementIconsDirectories = 'wptb-element-icons-directories';
|
154 |
+
let tmplIconsDirectories = wp.template( wptbElementIconsDirectories );
|
155 |
+
let data = {};
|
156 |
+
let jsonIconsDirectories = tmplIconsDirectories( data );
|
157 |
+
let IconsDirectories = JSON.parse( jsonIconsDirectories );
|
158 |
+
|
159 |
+
if( IconsDirectories && typeof IconsDirectories === 'object' ) {
|
160 |
+
for ( let key in IconsDirectories ) {
|
161 |
+
let imageItem = WPTB_Helper.getElementIcon( IconsDirectories[key] );
|
162 |
+
}
|
163 |
+
}
|
164 |
+
};
|
165 |
+
} )();
|
166 |
+
</script>
|
167 |
+
<?php
|
168 |
+
}
|
169 |
+
}
|
inc/admin/js/admin.js
CHANGED
@@ -1,3 +1,5 @@
|
|
|
|
|
|
1 |
var WPTB_ActionsField = function WPTB_ActionsField() {
|
2 |
var _this = this;
|
3 |
|
@@ -25,20 +27,17 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
25 |
if (actionType == 1) {
|
26 |
|
27 |
var btnDelete = void 0,
|
28 |
-
btnCopy = void 0
|
29 |
-
btnMove = void 0;
|
30 |
|
31 |
-
btnDelete = document.createElement('span'), btnCopy = document.createElement('span'),
|
32 |
|
33 |
actions.classList.add('wptb-actions');
|
34 |
btnDelete.classList.add('dashicons', 'dashicons-trash', 'wptb-delete-action');
|
35 |
btnCopy.classList.add('dashicons', 'dashicons-admin-page', 'wptb-duplicate-action');
|
36 |
-
btnMove.classList.add("dashicons", "dashicons-move", 'wptb-move-action');
|
37 |
-
btnMove.draggable = true;
|
38 |
|
39 |
-
actions.appendChild(btnMove);
|
40 |
actions.appendChild(btnCopy);
|
41 |
actions.appendChild(btnDelete);
|
|
|
42 |
body.appendChild(actions);
|
43 |
|
44 |
actions.activeElem = thisNode;
|
@@ -48,9 +47,16 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
48 |
btnDelete.onclick = function (event) {
|
49 |
var act = event.target.parentNode.activeElem,
|
50 |
el = act.parentNode;
|
51 |
-
el.removeChild(act);
|
52 |
|
53 |
-
if (act
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
var thisRow = el.parentNode;
|
55 |
if (thisRow.classList.contains('wptb-table-head')) {
|
56 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
@@ -59,8 +65,8 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
59 |
}
|
60 |
|
61 |
var wptbActionsField = new WPTB_ActionsField();
|
62 |
-
|
63 |
wptbActionsField.actionsRemove();
|
|
|
64 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
65 |
wptbTableStateSaveManager.tableStateSet();
|
66 |
};
|
@@ -70,152 +76,98 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
70 |
infArr = void 0,
|
71 |
type = void 0;
|
72 |
var activeElement = event.target.parentNode.activeElem;
|
73 |
-
var activeElementClone = activeElement.cloneNode(true);
|
74 |
-
activeElementClone.classList.remove('wptb-directlyhovered');
|
75 |
-
infArr = activeElement.className.match(/wptb-element-(.+)-(\d+)/i);
|
76 |
-
type = infArr[1];
|
77 |
var td = activeElement.parentNode;
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
td.insertBefore(copy.getDOMElement(), activeElement.nextSibling);
|
89 |
-
} else if (type == 'text') {
|
90 |
-
copy = new WPTB_Text(activeElementClone.childNodes[0].innerHTML, activeElementClone);
|
91 |
|
92 |
td.insertBefore(copy.getDOMElement(), activeElement.nextSibling);
|
93 |
-
} else
|
94 |
-
copy =
|
|
|
|
|
95 |
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
|
100 |
-
copy
|
101 |
|
102 |
td.insertBefore(copy.getDOMElement(), activeElement.nextSibling);
|
103 |
-
} else if (type = 'star_rating') {
|
104 |
-
copy = new WPTB_StarRating(activeElementClone);
|
105 |
|
106 |
-
|
107 |
}
|
108 |
|
109 |
WPTB_innerElementSet(copy.getDOMElement());
|
110 |
|
111 |
var wptbActionsField = new WPTB_ActionsField(1, activeElement);
|
112 |
-
|
113 |
wptbActionsField.setParameters(activeElement);
|
114 |
|
115 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
116 |
wptbTableStateSaveManager.tableStateSet();
|
117 |
};
|
118 |
|
119 |
-
|
120 |
-
var
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
//actions.style.right = '-' + parseFloat( thisNode.offsetWidth ) + 'px';
|
147 |
-
actions.style.display = 'block';
|
148 |
-
|
149 |
-
_this.wptbActions = actions;
|
150 |
-
} else if (actionType == 2) {
|
151 |
-
var _btnDelete = void 0,
|
152 |
-
_btnCopy = void 0,
|
153 |
-
previous = void 0,
|
154 |
-
i = void 0;
|
155 |
-
|
156 |
-
_btnDelete = document.createElement('span'), _btnCopy = document.createElement('span'), actions = document.createElement('span');
|
157 |
-
|
158 |
-
actions.classList.add('wptb-actions');
|
159 |
-
_btnDelete.classList.add('dashicons', 'dashicons-trash', 'wptb-delete-action');
|
160 |
-
_btnCopy.classList.add('dashicons', 'dashicons-admin-page', 'wptb-duplicate-action');
|
161 |
|
162 |
-
|
163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
|
165 |
-
|
|
|
166 |
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
}
|
171 |
|
172 |
-
actions.type = 2;
|
173 |
-
|
174 |
-
_btnDelete.onclick = function (event) {
|
175 |
-
var action = event.target.parentNode,
|
176 |
-
item = action.activeElem,
|
177 |
-
parent = item.parentNode;
|
178 |
-
var wptbActionsField = new WPTB_ActionsField(4);
|
179 |
-
wptbActionsField.actionsRemove();
|
180 |
-
parent.removeChild(item);
|
181 |
-
WPTB_Helper.listItemsRecalculateIndex(parent);
|
182 |
-
|
183 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
184 |
-
wptbTableStateSaveManager.tableStateSet();
|
185 |
-
};
|
186 |
-
|
187 |
-
_btnCopy.onclick = function (event) {
|
188 |
-
var coordinatesElement = thisNode.getBoundingClientRect();
|
189 |
-
var coordinatesElementTopBegin = coordinatesElement.top;
|
190 |
-
|
191 |
-
var listItem = event.target.parentNode.activeElem,
|
192 |
-
content = listItem.querySelector('.wptb-list-item-content'),
|
193 |
-
html = content.innerHTML;
|
194 |
-
var duplicate = new WPTB_ListItem(html, listItem, true);
|
195 |
-
listItem.parentNode.insertBefore(duplicate.getDOMElement(), thisNode.nextSibling);
|
196 |
-
WPTB_Helper.listItemsTinyMceInit(duplicate.getDOMElement().firstChild);
|
197 |
-
|
198 |
-
var divcontent = thisNode.getElementsByClassName('wptb-list-item-content');
|
199 |
-
if (divcontent.length > 0) {
|
200 |
-
divcontent = divcontent[0];
|
201 |
-
}
|
202 |
-
setTimeout(function () {
|
203 |
-
divcontent.innerHTML = html;
|
204 |
-
WPTB_Helper.listItemsRecalculateIndex(listItem.parentNode);
|
205 |
-
}, 5);
|
206 |
-
|
207 |
-
coordinatesElement = thisNode.getBoundingClientRect();
|
208 |
-
var coordinatesElementTopEnd = coordinatesElement.top;
|
209 |
-
|
210 |
-
if (coordinatesElementTopBegin != coordinatesElementTopEnd) {
|
211 |
-
var wptbActionsField = new WPTB_ActionsField(2, thisNode);
|
212 |
-
wptbActionsField.setParameters(thisNode);
|
213 |
-
}
|
214 |
-
|
215 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
216 |
-
wptbTableStateSaveManager.tableStateSet();
|
217 |
-
};
|
218 |
-
|
219 |
actions.style.display = 'block';
|
220 |
|
221 |
_this.wptbActions = actions;
|
@@ -223,15 +175,20 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
223 |
};
|
224 |
|
225 |
this.setParameters = function (thisNode) {
|
|
|
226 |
if (!_this.wptbActions) {
|
227 |
var actions = document.getElementsByClassName('wptb-actions');
|
228 |
if (actions.length > 0) {
|
229 |
_this.wptbActions = actions[0];
|
|
|
|
|
230 |
}
|
231 |
}
|
232 |
|
233 |
-
if (_this.wptbActions) {
|
234 |
_this.wptbActions.style.display = 'block';
|
|
|
|
|
235 |
}
|
236 |
|
237 |
var coordinatesElement = thisNode.getBoundingClientRect();
|
@@ -246,81 +203,63 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
246 |
_this.wptbActions.style.top = parseFloat(coordinatesElement.top) - 15 + 'px';
|
247 |
_this.wptbActions.style.left = parseFloat(coordinatesElement.right) - parseFloat(_this.wptbActions.clientWidth) + 1 + 'px';
|
248 |
|
249 |
-
// let wptbBorderMarkerTop = this.wptbBorderMarker.querySelector( '.wptb-border-marker-top' );
|
250 |
-
// wptbBorderMarkerTop.style.width = ( parseFloat( thisNode.offsetWidth ) + 3 ) + 'px';
|
251 |
-
//
|
252 |
-
// let wptbBorderMarkerRight = this.wptbBorderMarker.querySelector( '.wptb-border-marker-right' );
|
253 |
-
// wptbBorderMarkerRight.style.height = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) + 4 ) + 'px';
|
254 |
-
// wptbBorderMarkerRight.style.left = ( parseFloat( thisNode.offsetWidth ) + 3 ) + 'px';
|
255 |
-
//
|
256 |
-
// let wptbBorderMarkerBottom = this.wptbBorderMarker.querySelector( '.wptb-border-marker-bottom' );
|
257 |
-
// wptbBorderMarkerBottom.style.width = wptbBorderMarkerTop.style.width;
|
258 |
-
// wptbBorderMarkerBottom.style.top = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) + 3 ) + 'px';;
|
259 |
-
//
|
260 |
-
// let wptbBorderMarkerLeft = this.wptbBorderMarker.querySelector( '.wptb-border-marker-left' );
|
261 |
-
//
|
262 |
-
|
263 |
-
//this.wptbBorderMarker.style.display = 'block';
|
264 |
_this.wptbActions.style.display = 'block';
|
265 |
thisNode.classList.add('wptb-directlyhovered');
|
266 |
|
267 |
wptbContainer.addEventListener('scroll', correctTop, false);
|
268 |
};
|
269 |
|
270 |
-
// if( actionType == 1 || actionType == 2 ) {
|
271 |
-
// this.setParameters( thisNode );
|
272 |
-
// }
|
273 |
-
// } else {
|
274 |
-
// this.wptbActions.style.display = 'block';
|
275 |
-
// thisNode.classList.add( 'wptb-directlyhovered' );
|
276 |
-
// }
|
277 |
-
|
278 |
this.leaveFromField = function (event, node, actionType) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
279 |
if (event.relatedTarget) {
|
280 |
if (event.relatedTarget.classList.contains('wptb-actions') || event.relatedTarget.classList.contains('wptb-move-action') || event.relatedTarget.classList.contains('wptb-duplicate-action') || event.relatedTarget.classList.contains('wptb-delete-action')) {
|
281 |
if (!_this.wptbActions) {
|
282 |
_this.wptbActions = document.getElementsByClassName('wptb-actions')[0];
|
283 |
}
|
284 |
_this.wptbActions.onmouseleave = function (event) {
|
285 |
-
if (event.relatedTarget != null && event.relatedTarget != _this.wptbActions.activeElem && WPTB_Helper.findAncestor(event.relatedTarget, 'wptb-directlyhovered') != _this.wptbActions.activeElem) {
|
286 |
-
|
287 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
288 |
|
289 |
-
|
290 |
-
var wptbActionsField = new WPTB_ActionsField();
|
291 |
|
292 |
-
|
293 |
|
294 |
-
|
295 |
-
}
|
296 |
-
} else {
|
297 |
-
return;
|
298 |
-
}
|
299 |
};
|
300 |
|
301 |
return;
|
302 |
}
|
303 |
-
// else if( event.relatedTarget.classList.contains( 'wptb-drop-handle' ) ) {
|
304 |
-
// let wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' );
|
305 |
-
// if( wptbDropHandle.length > 0 ) {
|
306 |
-
// wptbDropHandle = wptbDropHandle[0];
|
307 |
-
// wptbDropHandle.onmouseleave
|
308 |
-
// }
|
309 |
-
// }
|
310 |
}
|
311 |
|
312 |
node.classList.remove('wptb-directlyhovered');
|
313 |
_this.wptbActions.style.display = 'none';
|
314 |
|
315 |
-
if (
|
316 |
-
if (event.relatedTarget) {
|
317 |
-
|
318 |
-
//let wptbActionsField = new WPTB_ActionsField();
|
319 |
-
|
320 |
-
_this.addActionField(1, event.relatedTarget.parentNode);
|
321 |
|
322 |
-
|
323 |
-
}
|
324 |
}
|
325 |
}
|
326 |
};
|
@@ -368,6 +307,19 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
368 |
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';
|
369 |
var wptbTableSetupEl = document.getElementsByClassName('wptb-table-setup')[0];
|
370 |
wptbTableSetupEl.appendChild(WPTB_Parser(ans[1]));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
371 |
WPTB_Table();
|
372 |
WPTB_LeftPanel();
|
373 |
WPTB_Settings();
|
@@ -394,89 +346,6 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
|
|
394 |
|
395 |
document.addEventListener('DOMContentLoaded', WPTB_Builder);
|
396 |
})();
|
397 |
-
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); } }
|
398 |
-
|
399 |
-
var WPTB_Button = function WPTB_Button(text, DOMElementProt) {
|
400 |
-
|
401 |
-
var DOMElement = document.createElement('div'),
|
402 |
-
elButton = document.createElement('div'),
|
403 |
-
el_B = document.createElement('a'),
|
404 |
-
el_BDiv = document.createElement('div'),
|
405 |
-
el_BDivP = document.createElement('p'),
|
406 |
-
kindIndexProt = undefined,
|
407 |
-
copy = false;
|
408 |
-
|
409 |
-
DOMElement.classList.add('wptb-button-container', 'wptb-size-M', 'wptb-');
|
410 |
-
elButton.classList.add('wptb-button-wrapper');
|
411 |
-
el_BDiv.classList.add('wptb-button');
|
412 |
-
el_BDivP.innerHTML = text != undefined ? text : 'Button Text';
|
413 |
-
|
414 |
-
// Creation of a new button when copying to avoid errors when assigning new event handlers.
|
415 |
-
if (DOMElementProt) {
|
416 |
-
var wptbElementMutch = DOMElementProt.className.match(/wptb-element-((.+-)\d+)/i);
|
417 |
-
if (wptbElementMutch && Array.isArray(wptbElementMutch)) {
|
418 |
-
kindIndexProt = wptbElementMutch[1];
|
419 |
-
copy = true;
|
420 |
-
};
|
421 |
-
var attributesContainer = [].concat(_toConsumableArray(DOMElementProt.attributes));
|
422 |
-
if (attributesContainer.length > 0) {
|
423 |
-
for (var i = 0; i < attributesContainer.length; i++) {
|
424 |
-
DOMElement.setAttribute(attributesContainer[i].name, attributesContainer[i].value);
|
425 |
-
}
|
426 |
-
}
|
427 |
-
|
428 |
-
var wptbButtonWrapper = DOMElementProt.querySelector('.wptb-button-wrapper');
|
429 |
-
if (wptbButtonWrapper) {
|
430 |
-
var wptbButtonWrapAttributes = [].concat(_toConsumableArray(wptbButtonWrapper.attributes));
|
431 |
-
if (wptbButtonWrapAttributes.length > 0) {
|
432 |
-
for (var _i = 0; _i < wptbButtonWrapAttributes.length; _i++) {
|
433 |
-
if (wptbButtonWrapAttributes[_i].name == 'style') {
|
434 |
-
elButton.setAttribute(wptbButtonWrapAttributes[_i].name, wptbButtonWrapAttributes[_i].value);
|
435 |
-
}
|
436 |
-
}
|
437 |
-
}
|
438 |
-
}
|
439 |
-
|
440 |
-
var wptbButtonA = DOMElementProt.querySelector('a');
|
441 |
-
if (wptbButtonA) {
|
442 |
-
var wptbButtonAttributes = [].concat(_toConsumableArray(wptbButtonA.attributes));
|
443 |
-
if (wptbButtonAttributes.length > 0) {
|
444 |
-
for (var _i2 = 0; _i2 < wptbButtonAttributes.length; _i2++) {
|
445 |
-
if (wptbButtonAttributes[_i2].name == 'style' || wptbButtonAttributes[_i2].name == 'href' || wptbButtonAttributes[_i2].name == 'target') {
|
446 |
-
el_B.setAttribute(wptbButtonAttributes[_i2].name, wptbButtonAttributes[_i2].value);
|
447 |
-
}
|
448 |
-
}
|
449 |
-
}
|
450 |
-
}
|
451 |
-
|
452 |
-
var wptbButton = DOMElementProt.querySelector('.wptb-button');
|
453 |
-
if (wptbButton) {
|
454 |
-
var wptbButtonAttributes = [].concat(_toConsumableArray(wptbButton.attributes));
|
455 |
-
if (wptbButtonAttributes.length > 0) {
|
456 |
-
for (var _i3 = 0; _i3 < wptbButtonAttributes.length; _i3++) {
|
457 |
-
if (wptbButtonAttributes[_i3].name == 'style') {
|
458 |
-
el_BDiv.setAttribute(wptbButtonAttributes[_i3].name, wptbButtonAttributes[_i3].value);
|
459 |
-
}
|
460 |
-
}
|
461 |
-
}
|
462 |
-
}
|
463 |
-
}
|
464 |
-
|
465 |
-
elButton.appendChild(el_B);
|
466 |
-
el_B.appendChild(el_BDiv);
|
467 |
-
el_BDiv.appendChild(el_BDivP);
|
468 |
-
DOMElement.appendChild(elButton);
|
469 |
-
|
470 |
-
this.kind = 'button';
|
471 |
-
|
472 |
-
this.getDOMElement = function () {
|
473 |
-
return DOMElement;
|
474 |
-
};
|
475 |
-
|
476 |
-
applyGenericItemSettings(this, kindIndexProt, copy);
|
477 |
-
|
478 |
-
return this;
|
479 |
-
};
|
480 |
var WPTB_Cell = function WPTB_Cell(callback, DOMElement) {
|
481 |
|
482 |
function highlightRow(td) {
|
@@ -542,15 +411,6 @@ var WPTB_Cell = function WPTB_Cell(callback, DOMElement) {
|
|
542 |
|
543 |
if (wptbPhElement.length > 0) {
|
544 |
var _loop = function _loop(i) {
|
545 |
-
|
546 |
-
var wptbSpaceBetween = DOMElement.getElementsByClassName('wptb-space-between');
|
547 |
-
|
548 |
-
if (wptbSpaceBetween.length > 0) {
|
549 |
-
for (var j = 0; j < wptbSpaceBetween.length; j++) {
|
550 |
-
WPTB_Space(wptbSpaceBetween[j]);
|
551 |
-
}
|
552 |
-
}
|
553 |
-
|
554 |
wptbPhElement[i].getDOMElement = function () {
|
555 |
return wptbPhElement[i];
|
556 |
};
|
@@ -559,17 +419,26 @@ var WPTB_Cell = function WPTB_Cell(callback, DOMElement) {
|
|
559 |
|
560 |
var wptbElementTypeClass = wptbPhElement[i].className.match(/wptb-element-((.+-)\d+)/i);
|
561 |
if (wptbElementTypeClass && Array.isArray(wptbElementTypeClass)) {
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
var
|
567 |
-
if (
|
568 |
-
|
569 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
570 |
}
|
571 |
}
|
572 |
-
}
|
573 |
}
|
574 |
};
|
575 |
|
@@ -705,11 +574,17 @@ var WPTB_DropHandle = function WPTB_DropHandle(thisElem, e) {
|
|
705 |
WPTB_Helper.dataTitleColumnSet(table);
|
706 |
}
|
707 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
708 |
wptbDropHandle.style.display = 'none';
|
709 |
wptbDropBorderMarker.style.display = 'none';
|
710 |
|
711 |
WPTB_innerElementSet(element);
|
712 |
-
console.log(element);
|
713 |
if (!element.classList.contains('wptb-image-container') || element.wptbMovingMode == 1) {
|
714 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
715 |
wptbTableStateSaveManager.tableStateSet();
|
@@ -829,1045 +704,244 @@ var ElementCounters = function ElementCounters() {
|
|
829 |
|
830 |
return this;
|
831 |
};
|
832 |
-
var
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
833 |
|
834 |
-
|
835 |
-
|
|
|
|
|
836 |
|
837 |
-
|
838 |
-
|
839 |
-
|
|
|
|
|
|
|
|
|
840 |
|
841 |
-
|
|
|
842 |
|
843 |
-
|
844 |
-
|
|
|
845 |
}
|
846 |
|
847 |
-
|
848 |
-
|
|
|
849 |
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
wptbButtonA = void 0,
|
855 |
-
wptbButton = void 0,
|
856 |
-
wptbSize = void 0;
|
857 |
-
|
858 |
-
if (affectedEl) {
|
859 |
-
wptbSize = affectedEl.className.match(/wptb-size-([a-z]+)/i);
|
860 |
-
}
|
861 |
|
862 |
-
|
863 |
-
|
|
|
|
|
864 |
|
865 |
-
|
866 |
-
|
867 |
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
|
874 |
-
|
875 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
876 |
|
877 |
-
|
|
|
|
|
878 |
|
879 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
880 |
}
|
|
|
881 |
|
882 |
-
|
883 |
-
|
|
|
884 |
|
885 |
-
|
886 |
-
|
887 |
-
selectOptionVal = 'left';
|
888 |
-
} else if (buttonAlignment == 'center' || !buttonAlignment) {
|
889 |
-
selectOptionVal = 'center';
|
890 |
-
} else if (buttonAlignment == 'flex-end') {
|
891 |
-
selectOptionVal = 'right';
|
892 |
-
}
|
893 |
|
894 |
-
|
|
|
895 |
|
896 |
-
|
897 |
-
|
898 |
|
899 |
-
|
900 |
-
|
901 |
-
}
|
902 |
-
}
|
903 |
-
}
|
904 |
|
905 |
-
|
906 |
-
|
907 |
-
buttonLinkTarget = wptbButtonA[0].getAttribute('target'),
|
908 |
-
buttonId = wptbButtonA[0].getAttribute('id'),
|
909 |
-
buttonHrefInput = prop.querySelector('input[data-type="button-link"]'),
|
910 |
-
buttonLinkTargetInput = prop.querySelector('input[data-type="button-link-target"]'),
|
911 |
-
buttonLinkTargetInputId = buttonLinkTargetInput.getAttribute('id'),
|
912 |
-
buttonLinkTargetInputLabel = buttonLinkTargetInput.parentNode.getElementsByTagName('label')[0],
|
913 |
-
buttotIdInput = prop.querySelector('input[data-type="button-id"]');
|
914 |
|
915 |
-
|
916 |
-
|
917 |
-
|
|
|
|
|
918 |
|
919 |
-
|
|
|
920 |
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
|
925 |
-
|
|
|
|
|
|
|
926 |
}
|
927 |
|
928 |
-
|
929 |
-
var buttonTextColor = wptbButton[0].style.color,
|
930 |
-
buttonColor = wptbButton[0].style.backgroundColor,
|
931 |
-
buttonTextColorInput = prop.querySelector('input[data-type="button-text-color"]'),
|
932 |
-
buttonBackgroundColorInput = prop.querySelector('input[data-type="button-color"]');
|
933 |
|
934 |
-
|
|
|
935 |
|
936 |
-
|
|
|
937 |
}
|
938 |
-
} else if (element.kind == 'image') {
|
939 |
-
var _affectedEl = document.getElementsByClassName('wptb-element-' + kindIndexProt);
|
940 |
-
if (_affectedEl.length > 0) {
|
941 |
-
var elementsA = _affectedEl[0].getElementsByTagName('a');
|
942 |
-
if (elementsA.length > 0) {
|
943 |
-
var a = elementsA[0];
|
944 |
-
|
945 |
-
if (a) {
|
946 |
-
// set select according to the alignment of the image
|
947 |
-
var imgAlign = void 0;
|
948 |
-
if (a.style.float == 'none' || !a.style.float) {
|
949 |
-
imgAlign = 'center';
|
950 |
-
} else {
|
951 |
-
imgAlign = a.style.float;
|
952 |
-
}
|
953 |
-
var imageAlignmentSelect = prop.getElementsByClassName('wptb-image-alignment-btn');
|
954 |
-
|
955 |
-
for (var i = 0; i < imageAlignmentSelect.length; i++) {
|
956 |
-
imageAlignmentSelect[i].classList.remove('selected');
|
957 |
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
}
|
962 |
|
963 |
-
|
964 |
-
e.preventDefault();
|
965 |
-
};
|
966 |
|
967 |
-
|
968 |
-
var imageLinkHref = a.getAttribute('href'),
|
969 |
-
inputImageLink = prop.querySelector('input[data-type="image-link"]');
|
970 |
-
if (imageLinkHref) {
|
971 |
-
inputImageLink.value = imageLinkHref;
|
972 |
-
}
|
973 |
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
|
|
|
|
|
|
|
|
|
|
979 |
|
980 |
-
|
|
|
981 |
|
982 |
-
|
983 |
-
|
|
|
|
|
|
|
|
|
984 |
|
985 |
-
|
986 |
-
|
987 |
-
|
|
|
988 |
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
imageWidthInputNumber = prop.querySelector('input[type="number"][data-type="image-size"]');
|
994 |
|
995 |
-
|
996 |
-
|
997 |
-
|
|
|
|
|
|
|
|
|
998 |
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1004 |
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
}
|
1010 |
-
}
|
1011 |
-
var _affectedEl2 = document.getElementsByClassName('wptb-element-' + kindIndexProt);
|
1012 |
-
if (_affectedEl2.length > 0) {
|
1013 |
-
var elementFontSize = _affectedEl2[0].style.fontSize,
|
1014 |
-
elementTextColor = _affectedEl2[0].style.color;
|
1015 |
-
var textFontSizeInputRange = prop.querySelector('input[type="range"][data-type="font-size"]'),
|
1016 |
-
textFontSizeInputNumber = prop.querySelector('input[type="number"][data-type="font-size"]'),
|
1017 |
-
textColorInput = prop.querySelector('input[type="text"][data-type="color"]');
|
1018 |
-
|
1019 |
-
textFontSizeInputRange.value = parseInt(elementFontSize) ? parseInt(elementFontSize) : 10;
|
1020 |
-
textFontSizeInputNumber.value = parseInt(elementFontSize) ? parseInt(elementFontSize) : 10;
|
1021 |
-
textColorInput.value = WPTB_Helper.rgbToHex(elementTextColor);
|
1022 |
-
}
|
1023 |
-
} else if (element.kind == 'list') {
|
1024 |
-
var elementList = document.getElementsByClassName('wptb-element-' + kindIndexProt);
|
1025 |
-
if (elementList.length > 0) {
|
1026 |
-
var elementListColor = elementList[0].querySelector('p').style.color;
|
1027 |
-
var listColorInput = prop.querySelector('input[type="text"][data-type="list-text-color"]');
|
1028 |
-
listColorInput.value = WPTB_Helper.rgbToHex(elementListColor);
|
1029 |
-
|
1030 |
-
var elementListItem = elementList[0].querySelectorAll('li');
|
1031 |
-
if (elementListItem.length > 0) {
|
1032 |
-
var listItemP = elementListItem[0].querySelector('p');
|
1033 |
-
var listItemPClasses = listItemP.classList;
|
1034 |
-
//listItemPClasses = [...listItemPClasses];
|
1035 |
-
if (listItemPClasses.length > 0) {
|
1036 |
-
var elementListClassSelect = prop.querySelector('select[data-type="list-class"]');
|
1037 |
-
if (elementListClassSelect) {
|
1038 |
-
elementListClassSelect.value = 'unordered';
|
1039 |
-
|
1040 |
-
var listIconSelectLabel = elementListClassSelect.parentNode.nextSibling;
|
1041 |
-
for (var _i = 0; _i < 10; _i++) {
|
1042 |
-
if (listIconSelectLabel.nodeType == '1') {
|
1043 |
-
break;
|
1044 |
-
} else {
|
1045 |
-
listIconSelectLabel = listIconSelectLabel.nextSibling;
|
1046 |
-
}
|
1047 |
-
}
|
1048 |
-
if (listIconSelectLabel) {
|
1049 |
-
var listIconSelectLabelId = listIconSelectLabel.getAttribute('id');
|
1050 |
-
listIconSelectLabel.setAttribute('id', listIconSelectLabelId + '-' + kindIndexProt);
|
1051 |
-
listIconSelectLabel.style.display = 'flex';
|
1052 |
-
}
|
1053 |
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
}
|
1069 |
-
}
|
1070 |
}
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
}
|
1084 |
-
}
|
1085 |
-
|
1086 |
-
var listItemPTextAlignLeftCount = 0,
|
1087 |
-
listItemPTextAlignCenterCount = 0,
|
1088 |
-
listItemPTextAlignRightCount = 0;
|
1089 |
-
|
1090 |
-
if (listItemPTextAlignArr.length > 0) {
|
1091 |
-
for (var _i3 = 0; _i3 < listItemPTextAlignArr.length; _i3++) {
|
1092 |
-
if (listItemPTextAlignArr[_i3]) {
|
1093 |
-
if (listItemPTextAlignArr[_i3] == 'left') {
|
1094 |
-
listItemPTextAlignLeftCount++;
|
1095 |
-
} else if (listItemPTextAlignArr[_i3] == 'center') {
|
1096 |
-
listItemPTextAlignCenterCount++;
|
1097 |
-
} else if (listItemPTextAlignArr[_i3] == 'right') {
|
1098 |
-
listItemPTextAlignRightCount++;
|
1099 |
-
}
|
1100 |
-
}
|
1101 |
-
}
|
1102 |
-
}
|
1103 |
-
|
1104 |
-
var elementListAlignmentSelect = prop.getElementsByClassName('wptb-list-alignment-btn'),
|
1105 |
-
maxListItemTAlLeftC = Math.max(listItemPTextAlignLeftCount, listItemPTextAlignCenterCount, listItemPTextAlignRightCount);
|
1106 |
-
var wptbListAlignmentValue = void 0;
|
1107 |
-
if (listItemPTextAlignLeftCount == maxListItemTAlLeftC) {
|
1108 |
-
wptbListAlignmentValue = 'left';
|
1109 |
-
} else if (listItemPTextAlignCenterCount == maxListItemTAlLeftC) {
|
1110 |
-
wptbListAlignmentValue = 'center';
|
1111 |
-
} else if (listItemPTextAlignRightCount == maxListItemTAlLeftC) {
|
1112 |
-
wptbListAlignmentValue = 'right';
|
1113 |
-
}
|
1114 |
-
|
1115 |
-
for (var i = 0; i < elementListAlignmentSelect.length; i++) {
|
1116 |
-
elementListAlignmentSelect[i].classList.remove('selected');
|
1117 |
-
|
1118 |
-
if (elementListAlignmentSelect[i].getAttribute('data-list_alignment') == wptbListAlignmentValue) {
|
1119 |
-
elementListAlignmentSelect[i].classList.add('selected');
|
1120 |
-
}
|
1121 |
-
}
|
1122 |
-
}
|
1123 |
-
}
|
1124 |
-
} else if (element.kind == 'star_rating') {
|
1125 |
-
var _affectedEl3 = document.getElementsByClassName('wptb-element-' + kindIndexProt),
|
1126 |
-
wptbRatingAlignment = void 0;
|
1127 |
-
if (_affectedEl3.length > 0) {
|
1128 |
-
_affectedEl3 = _affectedEl3[0];
|
1129 |
-
var ratingStar = _affectedEl3.querySelector('li');
|
1130 |
-
if (ratingStar) {
|
1131 |
-
var ratingStarSize = ratingStar.style.width;
|
1132 |
-
var starSizeInputRange = prop.querySelector('input[type="range"][data-type="star-size"]'),
|
1133 |
-
starSizeInputNumber = prop.querySelector('input[type="number"][data-type="star-size"]');
|
1134 |
-
|
1135 |
-
starSizeInputRange.value = parseInt(ratingStarSize) ? parseInt(ratingStarSize) : 10;
|
1136 |
-
starSizeInputNumber.value = parseInt(ratingStarSize) ? parseInt(ratingStarSize) : 10;
|
1137 |
-
|
1138 |
-
if (ratingStar.querySelector('span')) {
|
1139 |
-
var starColorInput = prop.querySelector('input[type="text"][data-type="star-color"]'),
|
1140 |
-
ratingStarColor = ratingStar.querySelector('span').style.fill;
|
1141 |
-
starColorInput.value = WPTB_Helper.rgbToHex(ratingStarColor);
|
1142 |
-
}
|
1143 |
-
}
|
1144 |
-
|
1145 |
-
var ratingStars = _affectedEl3.querySelectorAll('li');
|
1146 |
-
var starsCountInputNumber = prop.querySelector('input[type="number"][data-type="stars-count"]');
|
1147 |
-
if (ratingStars.length == 1 && ratingStars[0].style.display == 'none') {
|
1148 |
-
starsCountInputNumber.value = 0;
|
1149 |
-
} else {
|
1150 |
-
starsCountInputNumber.value = ratingStars.length;
|
1151 |
-
}
|
1152 |
-
|
1153 |
-
// Rating default/saved alignment from icons in left panel
|
1154 |
-
if (_affectedEl3) {
|
1155 |
-
wptbRatingAlignment = _affectedEl3.style.textAlign;
|
1156 |
-
}
|
1157 |
-
|
1158 |
-
if (wptbRatingAlignment) {
|
1159 |
-
var b = prop.getElementsByClassName('wptb-rating-alignment-btn');
|
1160 |
-
|
1161 |
-
for (var i = 0; i < b.length; i++) {
|
1162 |
-
b[i].classList.remove('selected');
|
1163 |
-
|
1164 |
-
if (b[i].getAttribute('data-star_alignment') == wptbRatingAlignment) {
|
1165 |
-
b[i].classList.add('selected');
|
1166 |
-
}
|
1167 |
-
}
|
1168 |
-
}
|
1169 |
-
|
1170 |
-
var successBox = _affectedEl3.querySelector('.wptb-success-box');
|
1171 |
-
if (successBox) {
|
1172 |
-
var showNumberRatingCheckbox = prop.querySelector('input[type="checkbox"][data-type="show-number-rating"]');
|
1173 |
-
if (successBox.style.display == 'block') {
|
1174 |
-
showNumberRatingCheckbox.checked = true;
|
1175 |
-
var numeralRatingOptionContainers = prop.getElementsByClassName('wptb-numeral-rating-option-container');
|
1176 |
-
for (var _i4 = 0; _i4 < numeralRatingOptionContainers.length; _i4++) {
|
1177 |
-
numeralRatingOptionContainers[_i4].style.display = 'block';
|
1178 |
-
}
|
1179 |
-
} else {
|
1180 |
-
showNumberRatingCheckbox.checked = false;
|
1181 |
-
}
|
1182 |
-
|
1183 |
-
var wptbTextMessage = successBox.querySelector('.wptb-text-message');
|
1184 |
-
if (wptbTextMessage) {
|
1185 |
-
var numberRatingSize = wptbTextMessage.style.fontSize;
|
1186 |
-
var numberRatingColor = wptbTextMessage.style.color;
|
1187 |
-
|
1188 |
-
var numberSizeInputRange = prop.querySelector('input[type="range"][data-type="numeral-rating-size"]'),
|
1189 |
-
numberSizeInputNumber = prop.querySelector('input[type="number"][data-type="numeral-rating-size"]'),
|
1190 |
-
numberColorInput = prop.querySelector('input[type="text"][data-type="numeral-rating-color"]');
|
1191 |
-
|
1192 |
-
numberSizeInputRange.value = parseInt(numberRatingSize) ? parseInt(numberRatingSize) : 10;
|
1193 |
-
numberSizeInputNumber.value = parseInt(numberRatingSize) ? parseInt(numberRatingSize) : 10;
|
1194 |
-
numberColorInput.value = WPTB_Helper.rgbToHex(numberRatingColor);
|
1195 |
-
}
|
1196 |
-
}
|
1197 |
-
}
|
1198 |
-
}
|
1199 |
-
}
|
1200 |
-
|
1201 |
-
node.onclick = function () {
|
1202 |
-
var infArr = this.className.match(/wptb-element-((.+-)\d+)/i),
|
1203 |
-
optionsClass = '.wptb-' + infArr[2] + 'options' + '.wptb-options-' + infArr[1];
|
1204 |
-
|
1205 |
-
document.getElementsByClassName('wptb-elements-container')[0].style.display = 'none';
|
1206 |
-
document.getElementsByClassName('wptb-settings-section')[0].style.display = 'none';
|
1207 |
-
document.getElementById("element-options-group").style.display = 'block';
|
1208 |
-
|
1209 |
-
var children = document.getElementById("element-options-group").childNodes;
|
1210 |
-
for (var i = 0; i < children.length; i++) {
|
1211 |
-
if (children[i].style) children[i].style.display = 'none';
|
1212 |
-
}
|
1213 |
-
|
1214 |
-
document.querySelector(optionsClass).style.display = 'block';
|
1215 |
-
|
1216 |
-
//var listStyleType, textAlign;
|
1217 |
-
|
1218 |
-
// switch (element.kind) {
|
1219 |
-
|
1220 |
-
// case 'text':
|
1221 |
-
// jQuery(prop).find('[data-type=color]').wpColorPicker({ defaultColor: node.style.color });
|
1222 |
-
// prop.querySelector('[type=number][data-type=font-size]').value
|
1223 |
-
// = prop.querySelector('[type=range][data-type=font-size]').value
|
1224 |
-
// = node.style.fontSize.substring(0, node.style.fontSize.length - 2);
|
1225 |
-
// break;
|
1226 |
-
// case 'list':
|
1227 |
-
// textAlign = node.querySelector('li p').style.textAlign;
|
1228 |
-
// listStyleType = node.querySelector('li').style.listStyleType;
|
1229 |
-
// if ( prop.querySelector( 'select[data-type=list-class]' ) ) {
|
1230 |
-
// console.log(textAlign);
|
1231 |
-
// console.log(listStyleType);
|
1232 |
-
// console.log(listStyleType);
|
1233 |
-
// console.log(prop);
|
1234 |
-
// prop.querySelector('select[data-type=list-class]').selectedIndex = ( listStyleType == 'decimal' ? 0 : 1 );
|
1235 |
-
// }
|
1236 |
-
// if ( prop.querySelector('select[data-type=list-style-type]') ) {
|
1237 |
-
// prop.querySelector('select[data-type=list-style-type]').selectedIndex = (listStyleType == 'circle' ? 0 : (listStyleType == 'square' ? 1 : 2));
|
1238 |
-
// }
|
1239 |
-
// if ( prop.querySelector('select[data-type=list-alignment]') ) {
|
1240 |
-
// prop.querySelector('select[data-type=list-alignment]').selectedIndex = (textAlign == 'left' ? 0 : (textAlign == 'center' ? 1 : 2));
|
1241 |
-
// }
|
1242 |
-
// break;
|
1243 |
-
// case 'image':
|
1244 |
-
// break;
|
1245 |
-
// case 'button':
|
1246 |
-
// jQuery(prop).find('[data-type=button-color]').wpColorPicker({ defaultColor: node.style.backgroundColor });
|
1247 |
-
// break;
|
1248 |
-
//
|
1249 |
-
// }
|
1250 |
-
};
|
1251 |
-
|
1252 |
-
if (element.kind == 'button') {
|
1253 |
-
//We must add this special kind of property, since it is triggered with click event
|
1254 |
-
var buttons = prop.getElementsByClassName('wptb-btn-size-btn');
|
1255 |
-
|
1256 |
-
for (var i = 0; i < buttons.length; i++) {
|
1257 |
-
buttons[i].onclick = function () {
|
1258 |
-
var size = this.innerHTML,
|
1259 |
-
n_Class = this.dataset.element,
|
1260 |
-
infArr = n_Class.match(/wptb-options-(.+)-(\d+)/i),
|
1261 |
-
type = infArr[1],
|
1262 |
-
num = infArr[2],
|
1263 |
-
affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];
|
1264 |
-
affectedEl.classList.remove('wptb-size-S');
|
1265 |
-
affectedEl.classList.remove('wptb-size-M');
|
1266 |
-
affectedEl.classList.remove('wptb-size-L');
|
1267 |
-
affectedEl.classList.remove('wptb-size-XL');
|
1268 |
-
affectedEl.classList.add('wptb-size-' + size);
|
1269 |
-
var b = this.parentNode.getElementsByClassName('wptb-btn-size-btn');
|
1270 |
-
for (var i = 0; i < b.length; i++) {
|
1271 |
-
b[i].classList.remove('selected');
|
1272 |
-
}
|
1273 |
-
this.classList.add('selected');
|
1274 |
-
|
1275 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1276 |
-
wptbTableStateSaveManager.tableStateSet();
|
1277 |
-
};
|
1278 |
-
}
|
1279 |
-
}
|
1280 |
-
|
1281 |
-
/*
|
1282 |
-
* alignment option in left panel using icons for star-rating
|
1283 |
-
*/
|
1284 |
-
if (element.kind == 'star_rating') {
|
1285 |
-
//We must add this special kind of property, since it is triggered with click event
|
1286 |
-
var buttons = prop.getElementsByClassName('wptb-rating-alignment-btn');
|
1287 |
-
|
1288 |
-
for (var i = 0; i < buttons.length; i++) {
|
1289 |
-
buttons[i].onclick = function () {
|
1290 |
-
var star_alignment = this.getAttribute('data-star_alignment'),
|
1291 |
-
n_Class = this.dataset.element,
|
1292 |
-
infArr = n_Class.match(/wptb-options-(.+)-(\d+)/i),
|
1293 |
-
type = infArr[1],
|
1294 |
-
num = infArr[2],
|
1295 |
-
affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];
|
1296 |
-
affectedEl.style.textAlign = star_alignment;
|
1297 |
-
|
1298 |
-
var b = this.parentNode.getElementsByClassName('wptb-rating-alignment-btn');
|
1299 |
-
for (var i = 0; i < b.length; i++) {
|
1300 |
-
b[i].classList.remove('selected');
|
1301 |
-
}
|
1302 |
-
this.classList.add('selected');
|
1303 |
-
|
1304 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1305 |
-
wptbTableStateSaveManager.tableStateSet();
|
1306 |
-
};
|
1307 |
-
}
|
1308 |
-
}
|
1309 |
-
/*
|
1310 |
-
* alignment option in left panel using icons for list
|
1311 |
-
*/
|
1312 |
-
if (element.kind == 'list') {
|
1313 |
-
//We must add this special kind of property, since it is triggered with click event
|
1314 |
-
var buttons = prop.getElementsByClassName('wptb-list-alignment-btn');
|
1315 |
-
|
1316 |
-
for (var i = 0; i < buttons.length; i++) {
|
1317 |
-
buttons[i].onclick = function () {
|
1318 |
-
var list_alignment = this.getAttribute('data-list_alignment'),
|
1319 |
-
n_Class = this.dataset.element,
|
1320 |
-
infArr = n_Class.match(/wptb-options-(.+)-(\d+)/i),
|
1321 |
-
type = infArr[1],
|
1322 |
-
num = infArr[2],
|
1323 |
-
affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];
|
1324 |
-
|
1325 |
-
var listItems = affectedEl.querySelectorAll('li');
|
1326 |
-
for (var i = 0; i < listItems.length; i++) {
|
1327 |
-
var _p = listItems[i].querySelector('p');
|
1328 |
-
if (_p) {
|
1329 |
-
_p.style.textAlign = list_alignment;
|
1330 |
-
}
|
1331 |
-
}
|
1332 |
-
|
1333 |
-
var b = this.parentNode.getElementsByClassName('wptb-list-alignment-btn');
|
1334 |
-
for (var i = 0; i < b.length; i++) {
|
1335 |
-
b[i].classList.remove('selected');
|
1336 |
-
}
|
1337 |
-
this.classList.add('selected');
|
1338 |
-
|
1339 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1340 |
-
wptbTableStateSaveManager.tableStateSet();
|
1341 |
-
};
|
1342 |
-
}
|
1343 |
-
}
|
1344 |
-
/*
|
1345 |
-
* alignment option in left panel using icons for button
|
1346 |
-
*/
|
1347 |
-
if (element.kind == 'button') {
|
1348 |
-
//We must add this special kind of property, since it is triggered with click event
|
1349 |
-
var buttons = prop.getElementsByClassName('wptb-button-alignment-btn');
|
1350 |
-
|
1351 |
-
for (var i = 0; i < buttons.length; i++) {
|
1352 |
-
buttons[i].onclick = function () {
|
1353 |
-
var button_alignment = this.getAttribute('data-button_alignment'),
|
1354 |
-
n_Class = this.dataset.element,
|
1355 |
-
infArr = n_Class.match(/wptb-options-(.+)-(\d+)/i),
|
1356 |
-
type = infArr[1],
|
1357 |
-
num = infArr[2],
|
1358 |
-
affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];
|
1359 |
-
|
1360 |
-
var jc = '';
|
1361 |
-
if (button_alignment == 'left') {
|
1362 |
-
jc = 'start';
|
1363 |
-
} else if (button_alignment == 'right') {
|
1364 |
-
jc = 'flex-end';
|
1365 |
-
} else {
|
1366 |
-
jc = 'center';
|
1367 |
-
}
|
1368 |
-
affectedEl.getElementsByClassName('wptb-button-wrapper')[0].style.justifyContent = jc;
|
1369 |
-
|
1370 |
-
var b = this.parentNode.getElementsByClassName('wptb-button-alignment-btn');
|
1371 |
-
for (var i = 0; i < b.length; i++) {
|
1372 |
-
b[i].classList.remove('selected');
|
1373 |
-
}
|
1374 |
-
this.classList.add('selected');
|
1375 |
-
|
1376 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1377 |
-
wptbTableStateSaveManager.tableStateSet();
|
1378 |
-
};
|
1379 |
-
}
|
1380 |
-
}
|
1381 |
-
|
1382 |
-
/*
|
1383 |
-
* alignment option in left panel using icons for image
|
1384 |
-
*/
|
1385 |
-
if (element.kind == 'image') {
|
1386 |
-
//We must add this special kind of property, since it is triggered with click event
|
1387 |
-
var buttons = prop.getElementsByClassName('wptb-image-alignment-btn');
|
1388 |
-
|
1389 |
-
for (var i = 0; i < buttons.length; i++) {
|
1390 |
-
buttons[i].onclick = function () {
|
1391 |
-
var image_alignment = this.getAttribute('data-image_alignment'),
|
1392 |
-
n_Class = this.dataset.element,
|
1393 |
-
infArr = n_Class.match(/wptb-options-(.+)-(\d+)/i),
|
1394 |
-
type = infArr[1],
|
1395 |
-
num = infArr[2],
|
1396 |
-
affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];
|
1397 |
-
|
1398 |
-
var image_alignment_value = '';
|
1399 |
-
if (image_alignment == 'left') {
|
1400 |
-
image_alignment_value = 'left';
|
1401 |
-
} else if (image_alignment == 'right') {
|
1402 |
-
image_alignment_value = 'right';
|
1403 |
-
} else {
|
1404 |
-
image_alignment_value = 'none';
|
1405 |
-
}
|
1406 |
-
|
1407 |
-
affectedEl.querySelector('.wptb-image-wrapper a').style.float = image_alignment_value;
|
1408 |
-
|
1409 |
-
var b = this.parentNode.getElementsByClassName('wptb-image-alignment-btn');
|
1410 |
-
for (var i = 0; i < b.length; i++) {
|
1411 |
-
b[i].classList.remove('selected');
|
1412 |
-
}
|
1413 |
-
this.classList.add('selected');
|
1414 |
-
|
1415 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1416 |
-
wptbTableStateSaveManager.tableStateSet();
|
1417 |
-
};
|
1418 |
-
}
|
1419 |
-
}
|
1420 |
-
|
1421 |
-
var optionControls = prop.getElementsByClassName('wptb-element-property');
|
1422 |
-
|
1423 |
-
for (var i = 0; i < optionControls.length; i++) {
|
1424 |
-
if (optionControls[i].classList.contains('wptb-color-picker')) {
|
1425 |
-
jQuery(optionControls[i]).wpColorPicker({
|
1426 |
-
change: function change(event, ui) {
|
1427 |
-
WPTB_Helper.wpColorPickerChange(event, ui);
|
1428 |
-
|
1429 |
-
//console.log(event);
|
1430 |
-
WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving(event);
|
1431 |
-
},
|
1432 |
-
clear: function clear(event) {
|
1433 |
-
WPTB_Helper.wpColorPickerChange(event);
|
1434 |
-
}
|
1435 |
-
});
|
1436 |
-
}
|
1437 |
-
|
1438 |
-
if (optionControls[i].classList.contains('wptb-stars-count-field')) {
|
1439 |
-
WPTB_Helper.numberImputSize(optionControls[i], 1, 10);
|
1440 |
-
}
|
1441 |
-
|
1442 |
-
if (optionControls[i].dataset.type === 'font-size' || optionControls[i].dataset.type === 'image-size' || optionControls[i].dataset.type === 'star-size' || optionControls[i].dataset.type === 'numeral-rating-size') {
|
1443 |
-
var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0];
|
1444 |
-
slider.oninput = function () {
|
1445 |
-
this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].value = this.value;
|
1446 |
-
this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].onchange(event);
|
1447 |
-
};
|
1448 |
-
}
|
1449 |
-
|
1450 |
-
// if (optionControls[i].dataset.type === 'image-size') {
|
1451 |
-
// var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0];
|
1452 |
-
// slider.oninput = function () {
|
1453 |
-
// this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].value = this.value;
|
1454 |
-
// this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].onchange( event );
|
1455 |
-
// }
|
1456 |
-
// }
|
1457 |
-
//
|
1458 |
-
// if ( optionControls[i].dataset.type === 'star-size' ) {
|
1459 |
-
// var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0];
|
1460 |
-
// slider.oninput = function () {
|
1461 |
-
// this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].value = this.value;
|
1462 |
-
// this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].onchange( event );
|
1463 |
-
// }
|
1464 |
-
// }
|
1465 |
-
|
1466 |
-
optionControls[i].onchange = function (event) {
|
1467 |
-
var n_Class = this.dataset.element,
|
1468 |
-
infArr = n_Class.match(/wptb-options-(.+)-(\d+)/i),
|
1469 |
-
type = infArr[1],
|
1470 |
-
num = infArr[2],
|
1471 |
-
affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0],
|
1472 |
-
val = this.value;
|
1473 |
-
|
1474 |
-
switch (this.dataset.type) {
|
1475 |
-
case 'src':
|
1476 |
-
var img = affectedEl.getElementsByTagName("img")[0];
|
1477 |
-
img.src = this.value;
|
1478 |
-
break;
|
1479 |
-
case 'alternative-text':
|
1480 |
-
var img = affectedEl.getElementsByTagName('img')[0];
|
1481 |
-
img.alt = this.value;
|
1482 |
-
break;
|
1483 |
-
case 'image-link':
|
1484 |
-
affectedEl.getElementsByTagName('a')[0].href = WPTB_Helper.linkHttpCheckChange(this.value);
|
1485 |
-
break;
|
1486 |
-
case 'image-link-target':
|
1487 |
-
if (this.checked == true) {
|
1488 |
-
affectedEl.getElementsByTagName('a')[0].target = '_blank';
|
1489 |
-
} else {
|
1490 |
-
affectedEl.getElementsByTagName('a')[0].target = '_self';
|
1491 |
-
}
|
1492 |
-
break;
|
1493 |
-
case 'image-link-nofollow':
|
1494 |
-
if (this.checked == true) {
|
1495 |
-
affectedEl.getElementsByTagName('a')[0].rel = 'nofollow';
|
1496 |
-
} else {
|
1497 |
-
affectedEl.getElementsByTagName('a')[0].removeAttribute('rel');
|
1498 |
-
}
|
1499 |
-
break;
|
1500 |
-
case 'image-size':
|
1501 |
-
affectedEl.getElementsByTagName('a')[0].style.width = this.value + '%';
|
1502 |
-
affectedEl.getElementsByTagName('a')[0].style.height = 'auto';
|
1503 |
-
this.parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0].value = this.value;
|
1504 |
-
break;
|
1505 |
-
case 'font-size':
|
1506 |
-
affectedEl.style.fontSize = val + 'px';
|
1507 |
-
this.parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0].value = this.value;
|
1508 |
-
break;
|
1509 |
-
case 'rating-alignment':
|
1510 |
-
var jc = '';
|
1511 |
-
if (this.value == 'left') {
|
1512 |
-
jc = 'start';
|
1513 |
-
} else if (this.value == 'right') {
|
1514 |
-
jc = 'right';
|
1515 |
-
} else {
|
1516 |
-
jc = 'center';
|
1517 |
-
}
|
1518 |
-
affectedEl.style.textAlign = jc;
|
1519 |
-
break;
|
1520 |
-
case 'button-link':
|
1521 |
-
if (this.value) {
|
1522 |
-
affectedEl.getElementsByTagName('a')[0].href = WPTB_Helper.linkHttpCheckChange(this.value);
|
1523 |
-
} else {
|
1524 |
-
affectedEl.getElementsByTagName('a')[0].removeAttribute('href');
|
1525 |
-
}
|
1526 |
-
break;
|
1527 |
-
case 'button-link-target':
|
1528 |
-
if (this.checked == true) {
|
1529 |
-
affectedEl.getElementsByTagName('a')[0].target = '_blank';
|
1530 |
-
} else {
|
1531 |
-
affectedEl.getElementsByTagName('a')[0].target = '_self';
|
1532 |
-
}
|
1533 |
-
break;
|
1534 |
-
case 'button-link-nofollow':
|
1535 |
-
if (this.checked == true) {
|
1536 |
-
affectedEl.getElementsByTagName('a')[0].rel = 'nofollow';
|
1537 |
-
} else {
|
1538 |
-
affectedEl.getElementsByTagName('a')[0].removeAttribute('rel');
|
1539 |
-
}
|
1540 |
-
break;
|
1541 |
-
case 'button-id':
|
1542 |
-
if (this.value) {
|
1543 |
-
affectedEl.getElementsByTagName('a')[0].id = this.value;
|
1544 |
-
} else {
|
1545 |
-
affectedEl.getElementsByTagName('a')[0].removeAttribute('id');
|
1546 |
-
}
|
1547 |
-
case 'button-color':
|
1548 |
-
break;
|
1549 |
-
case 'list-class':
|
1550 |
-
var parentNode = event.target.parentNode.parentNode.querySelector('[data-type=list-style-type]').parentNode,
|
1551 |
-
parentNodeSettingItem = parentNode.parentNode;
|
1552 |
-
if (val == 'unordered') {
|
1553 |
-
parentNode.style.display = 'flex';
|
1554 |
-
|
1555 |
-
parentNodeSettingItem.querySelector('.wptb-list-icon-select-label').style.display = 'flex';
|
1556 |
-
var _listItem = affectedEl.querySelectorAll('li');
|
1557 |
-
for (var i = 0; i < _listItem.length; i++) {
|
1558 |
-
var _p2 = _listItem[i].querySelector('p');
|
1559 |
-
_p2.removeAttribute('class');
|
1560 |
-
_p2.classList.add('wptb-list-style-type-disc');
|
1561 |
-
}
|
1562 |
-
parentNodeSettingItem.querySelector('[data-type=list-style-type]').value = 'disc';
|
1563 |
-
} else {
|
1564 |
-
parentNode.style.display = 'none';
|
1565 |
-
parentNodeSettingItem.querySelector('.wptb-list-icon-select-label').style.display = 'none';
|
1566 |
-
var listItem = affectedEl.querySelectorAll('li');
|
1567 |
-
for (var i = 0; i < listItem.length; i++) {
|
1568 |
-
var _p3 = listItem[i].querySelector('p');
|
1569 |
-
_p3.removeAttribute('class');
|
1570 |
-
}
|
1571 |
-
}
|
1572 |
-
break;
|
1573 |
-
case 'list-style-type':
|
1574 |
-
var listItem = affectedEl.querySelectorAll('li');
|
1575 |
-
for (var i = 0; i < listItem.length; i++) {
|
1576 |
-
var _p4 = listItem[i].querySelector('p');
|
1577 |
-
_p4.removeAttribute('class');
|
1578 |
-
_p4.classList.add('wptb-list-style-type-' + val.toLowerCase());
|
1579 |
-
}
|
1580 |
-
break;
|
1581 |
-
case 'star-size':
|
1582 |
-
var _ratingStar = affectedEl.querySelectorAll('li');
|
1583 |
-
for (var _i5 = 0; _i5 < _ratingStar.length; _i5++) {
|
1584 |
-
_ratingStar[_i5].style.width = val + 'px';
|
1585 |
-
_ratingStar[_i5].style.height = val + 'px';
|
1586 |
-
var span = _ratingStar[_i5].querySelectorAll('span');
|
1587 |
-
for (var j = 0; j < span.length; j++) {
|
1588 |
-
if (span[j].querySelector('svg')) {
|
1589 |
-
span[j].style.width = val + 'px';
|
1590 |
-
span[j].style.height = val + 'px';
|
1591 |
-
span[j].querySelector('svg').style.width = val + 'px';
|
1592 |
-
}
|
1593 |
-
}
|
1594 |
-
}
|
1595 |
-
break;
|
1596 |
-
case 'show-number-rating':
|
1597 |
-
var wptbNumeralRatingOptionContainer = WPTB_Helper.findAncestor(this, 'wptb-star_rating-options').getElementsByClassName('wptb-numeral-rating-option-container');
|
1598 |
-
|
1599 |
-
WPTB_Helper.starRatingTextMessageChenge(affectedEl);
|
1600 |
-
|
1601 |
-
if (wptbNumeralRatingOptionContainer.length > 0) {
|
1602 |
-
var _wptbTextMessage = affectedEl.querySelector('.wptb-text-message');
|
1603 |
-
|
1604 |
-
var _val = this.checked ? 'checked' : 'unchecked';
|
1605 |
-
if (_val == 'checked') {
|
1606 |
-
for (var _i6 = 0; _i6 < wptbNumeralRatingOptionContainer.length; _i6++) {
|
1607 |
-
wptbNumeralRatingOptionContainer[_i6].style.display = 'block';
|
1608 |
-
}
|
1609 |
-
_wptbTextMessage.parentNode.style.display = 'block';
|
1610 |
-
} else if (_val == 'unchecked') {
|
1611 |
-
for (var _i7 = 0; _i7 < wptbNumeralRatingOptionContainer.length; _i7++) {
|
1612 |
-
wptbNumeralRatingOptionContainer[_i7].style.display = 'none';
|
1613 |
-
}
|
1614 |
-
_wptbTextMessage.parentNode.style.display = 'none';
|
1615 |
-
}
|
1616 |
-
}
|
1617 |
-
break;
|
1618 |
-
case 'numeral-rating-size':
|
1619 |
-
var wptbTextMessageSize = affectedEl.querySelector('.wptb-text-message');
|
1620 |
-
wptbTextMessageSize.style.fontSize = val + 'px';
|
1621 |
-
wptbTextMessageSize.style.height = val + 'px';
|
1622 |
-
wptbTextMessageSize.style.lineHeight = val + 'px';
|
1623 |
-
break;
|
1624 |
-
case 'stars-count':
|
1625 |
-
var starRatings = affectedEl.querySelectorAll('li');
|
1626 |
-
|
1627 |
-
var starRatingsCount = starRatings.length;
|
1628 |
-
|
1629 |
-
if (val > starRatingsCount) {
|
1630 |
-
var difference = val - starRatingsCount;
|
1631 |
-
var starRatingsLast = starRatings[starRatings.length - 1];
|
1632 |
-
|
1633 |
-
var parent = starRatingsLast.parentNode;
|
1634 |
-
for (var _i8 = 0; _i8 < difference; _i8++) {
|
1635 |
-
var newStarRating = starRatingsLast.cloneNode(true);
|
1636 |
-
newStarRating.removeAttribute('class');
|
1637 |
-
newStarRating.setAttribute('class', 'wptb-rating-star');
|
1638 |
-
newStarRating.dataset.value = parseInt(starRatingsLast.dataset.value) + _i8 + 1;
|
1639 |
-
WPTB_Helper.starRatingEventHandlersAdd(newStarRating);
|
1640 |
-
parent.appendChild(newStarRating);
|
1641 |
-
}
|
1642 |
-
} else if (val < starRatingsCount) {
|
1643 |
-
var _difference = parseInt(starRatingsCount) - parseInt(val);
|
1644 |
-
|
1645 |
-
if (val == 0) {
|
1646 |
-
_difference--;
|
1647 |
-
starRatings[0].removeAttribute('class');
|
1648 |
-
starRatings[0].setAttribute('class', 'wptb-rating-star');
|
1649 |
-
starRatings[0].style.display = 'none';
|
1650 |
-
}
|
1651 |
-
|
1652 |
-
var starRatingLength = starRatings.length;
|
1653 |
-
for (i = 0; i < _difference; i++) {
|
1654 |
-
starRatings[0].parentNode.removeChild(starRatings[starRatingLength - i - 1]);
|
1655 |
-
}
|
1656 |
-
} else if (val == starRatingsCount && starRatingsCount == 1) {
|
1657 |
-
starRatings[0].style.display = 'inline-block';
|
1658 |
-
}
|
1659 |
-
|
1660 |
-
WPTB_Helper.starRatingTextMessageChenge(affectedEl);
|
1661 |
-
|
1662 |
-
break;
|
1663 |
-
}
|
1664 |
-
|
1665 |
-
if (event.target.classList.contains('wptb-size-slider') || event.target.classList.contains('wptb-size-slider')) {
|
1666 |
-
event.target.onmouseup = function () {
|
1667 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1668 |
-
wptbTableStateSaveManager.tableStateSet();
|
1669 |
-
};
|
1670 |
-
} else {
|
1671 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1672 |
-
wptbTableStateSaveManager.tableStateSet();
|
1673 |
-
}
|
1674 |
-
};
|
1675 |
-
}
|
1676 |
-
};
|
1677 |
-
var WPTB_Helper = {
|
1678 |
-
hexToRgb: function hexToRgb(hex) {
|
1679 |
-
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
1680 |
-
return result ? 'rgb(' + parseInt(result[1], 16) + ',' + parseInt(result[2], 16) + ',' + parseInt(result[3], 16) + ')' : null;
|
1681 |
-
},
|
1682 |
-
rgbToHex: function rgbToHex(rgb) {
|
1683 |
-
var rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
|
1684 |
-
|
1685 |
-
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) : '';
|
1686 |
-
},
|
1687 |
-
getDragImageCustom: function getDragImageCustom(type) {
|
1688 |
-
var hostName = location.protocol + '//' + location.hostname;
|
1689 |
-
var img = document.createElement('img');
|
1690 |
-
img.src = hostName + '/wp-content/plugins/wp-table-builder/inc/admin/views/builder/icons/' + type + '.png';
|
1691 |
-
return img;
|
1692 |
-
},
|
1693 |
-
dragImagesArr: function dragImagesArr() {
|
1694 |
-
return {
|
1695 |
-
text: WPTB_Helper.getDragImageCustom('text'),
|
1696 |
-
image: WPTB_Helper.getDragImageCustom('image'),
|
1697 |
-
button: WPTB_Helper.getDragImageCustom('button'),
|
1698 |
-
list: WPTB_Helper.getDragImageCustom('list'),
|
1699 |
-
star_rating: WPTB_Helper.getDragImageCustom('half-filled-rating-star')
|
1700 |
-
};
|
1701 |
-
},
|
1702 |
-
listItemsRecalculateIndex: function listItemsRecalculateIndex(ulElem) {
|
1703 |
-
var par = ulElem.querySelectorAll('p');
|
1704 |
-
if (par.length > 0) {
|
1705 |
-
for (var i = 0; i < par.length; i++) {
|
1706 |
-
par[i].dataset.listStyleTypeIndex = Number(i) + 1 + '.';
|
1707 |
-
}
|
1708 |
-
}
|
1709 |
-
},
|
1710 |
-
listItemsTinyMceInit: function listItemsTinyMceInit(listItem) {
|
1711 |
-
tinyMCE.init({
|
1712 |
-
target: listItem,
|
1713 |
-
inline: true,
|
1714 |
-
plugins: "link, paste",
|
1715 |
-
dialog_type: "modal",
|
1716 |
-
theme: 'modern',
|
1717 |
-
menubar: false,
|
1718 |
-
fixed_toolbar_container: '#wpcd_fixed_toolbar',
|
1719 |
-
paste_as_text: true,
|
1720 |
-
toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',
|
1721 |
-
setup: function setup(ed) {
|
1722 |
-
ed.on('keydown', function (e) {
|
1723 |
-
var article = e.target.parentNode;
|
1724 |
-
if (e.keyCode == 13) {
|
1725 |
-
e.preventDefault();
|
1726 |
-
var text = e.target.innerHTML;
|
1727 |
-
var duplicate = new WPTB_ListItem(text, article, true);
|
1728 |
-
|
1729 |
-
article.parentNode.insertBefore(duplicate.getDOMElement(), article);
|
1730 |
-
WPTB_Helper.listItemsTinyMceInit(duplicate.getDOMElement().firstChild);
|
1731 |
-
e.target.querySelector('p').innerText = 'New List Item';
|
1732 |
-
//tinyMCE.execCommand('mceInsertContent', false, 'New List Item');
|
1733 |
-
WPTB_Helper.listItemsRecalculateIndex(article.parentNode);
|
1734 |
-
|
1735 |
-
return;
|
1736 |
-
} else if (e.keyCode == '8' || e.keyCode == '46') {
|
1737 |
-
var p = e.target.querySelector('p');
|
1738 |
-
var pText = p.innerHTML.replace(/<[^>]+>/g, '');
|
1739 |
-
pText = pText.replace(/\s+/g, ' ').trim();
|
1740 |
-
pText = pText.replace(/ /g, '').trim();
|
1741 |
-
|
1742 |
-
if (pText == '') {
|
1743 |
-
e.preventDefault();
|
1744 |
-
e.target.querySelector('p').innerText = '\n';
|
1745 |
-
} else {
|
1746 |
-
var selectedText = WPTB_Helper.getSelectionText();
|
1747 |
-
selectedText = selectedText.replace(/\s+/g, ' ').trim();
|
1748 |
-
selectedText = selectedText.replace(/ /g, '').trim();
|
1749 |
-
if (selectedText == pText) {
|
1750 |
-
e.preventDefault();
|
1751 |
-
e.target.querySelector('p').innerText = '\n';
|
1752 |
-
}
|
1753 |
-
}
|
1754 |
-
}
|
1755 |
-
|
1756 |
-
var wptbListItem = e.target.parentNode;
|
1757 |
-
var wptbActionsField = new WPTB_ActionsField();
|
1758 |
-
|
1759 |
-
wptbActionsField.addActionField(2, wptbListItem);
|
1760 |
-
|
1761 |
-
wptbActionsField.setParameters(wptbListItem);
|
1762 |
-
});
|
1763 |
-
|
1764 |
-
ed.on('keyup', function (e) {
|
1765 |
-
var wptbListItem = e.target.parentNode;
|
1766 |
-
var wptbActionsField = new WPTB_ActionsField();
|
1767 |
-
|
1768 |
-
wptbActionsField.addActionField(2, wptbListItem);
|
1769 |
-
|
1770 |
-
wptbActionsField.setParameters(wptbListItem);
|
1771 |
-
|
1772 |
-
e.target.onblur = function () {
|
1773 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1774 |
-
wptbTableStateSaveManager.tableStateSet();
|
1775 |
-
};
|
1776 |
-
});
|
1777 |
-
},
|
1778 |
-
init_instance_callback: function init_instance_callback(editor) {
|
1779 |
-
window.currentEditor = editor;
|
1780 |
-
editor.on('focus', function (e) {
|
1781 |
-
var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;
|
1782 |
-
if (window.currentEditor && document.getElementById('wptb_builder').scrollTop >= 55 && window.currentEditor.bodyElement.style.display != 'none') {
|
1783 |
-
document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';
|
1784 |
-
document.getElementById('wpcd_fixed_toolbar').style.right = totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2 + 'px';
|
1785 |
-
document.getElementById('wpcd_fixed_toolbar').style.top = '100px';
|
1786 |
-
} else {
|
1787 |
-
document.getElementById('wpcd_fixed_toolbar').style.position = 'static';
|
1788 |
-
delete document.getElementById('wpcd_fixed_toolbar').style.right;
|
1789 |
-
delete document.getElementById('wpcd_fixed_toolbar').style.top;
|
1790 |
-
}
|
1791 |
-
});
|
1792 |
-
}
|
1793 |
-
});
|
1794 |
-
},
|
1795 |
-
buttonsTinyMceInit: function buttonsTinyMceInit(target) {
|
1796 |
-
tinyMCE.init({
|
1797 |
-
target: target,
|
1798 |
-
inline: true,
|
1799 |
-
plugins: "link",
|
1800 |
-
dialog_type: "modal",
|
1801 |
-
theme: 'modern',
|
1802 |
-
menubar: false,
|
1803 |
-
fixed_toolbar_container: '#wpcd_fixed_toolbar',
|
1804 |
-
toolbar: 'bold italic strikethrough',
|
1805 |
-
setup: function setup(ed) {
|
1806 |
-
ed.on('keydown', function (e) {
|
1807 |
-
if (e.keyCode == 13) {
|
1808 |
-
e.preventDefault();
|
1809 |
-
}
|
1810 |
-
var wptbButtonContainer = WPTB_Helper.findAncestor(target, 'wptb-button-container');
|
1811 |
-
|
1812 |
-
var wptbActionsField = new WPTB_ActionsField();
|
1813 |
-
|
1814 |
-
wptbActionsField.addActionField(1, wptbButtonContainer);
|
1815 |
-
|
1816 |
-
wptbActionsField.setParameters(wptbButtonContainer);
|
1817 |
-
});
|
1818 |
-
|
1819 |
-
ed.on('keyup', function (e) {
|
1820 |
-
var wptbButtonContainer = WPTB_Helper.findAncestor(target, 'wptb-button-container');
|
1821 |
-
|
1822 |
-
var wptbActionsField = new WPTB_ActionsField();
|
1823 |
-
|
1824 |
-
wptbActionsField.addActionField(1, wptbButtonContainer);
|
1825 |
-
|
1826 |
-
wptbActionsField.setParameters(wptbButtonContainer);
|
1827 |
-
|
1828 |
-
e.target.onblur = function () {
|
1829 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1830 |
-
wptbTableStateSaveManager.tableStateSet();
|
1831 |
-
};
|
1832 |
-
});
|
1833 |
-
},
|
1834 |
-
init_instance_callback: function init_instance_callback(editor) {
|
1835 |
-
window.currentEditor = editor;
|
1836 |
-
editor.on('focus', function (e) {
|
1837 |
-
var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;
|
1838 |
-
if (window.currentEditor && document.getElementById('wptb_builder').scrollTop >= 55 && window.currentEditor.bodyElement.style.display != 'none') {
|
1839 |
-
document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';
|
1840 |
-
document.getElementById('wpcd_fixed_toolbar').style.right = totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2 + 'px';
|
1841 |
-
document.getElementById('wpcd_fixed_toolbar').style.top = '100px';
|
1842 |
-
} else {
|
1843 |
-
document.getElementById('wpcd_fixed_toolbar').style.position = 'static';
|
1844 |
-
delete document.getElementById('wpcd_fixed_toolbar').style.right;
|
1845 |
-
delete document.getElementById('wpcd_fixed_toolbar').style.top;
|
1846 |
-
}
|
1847 |
-
});
|
1848 |
-
}
|
1849 |
-
});
|
1850 |
-
},
|
1851 |
-
linkHttpCheckChange: function linkHttpCheckChange(link) {
|
1852 |
-
if (link) {
|
1853 |
-
if (link.indexOf('http://') == -1 && link.indexOf('https://') == -1) {
|
1854 |
-
var linkArr = link.split('/'),
|
1855 |
-
linkClean = void 0;
|
1856 |
-
if (Array.isArray(linkArr) && linkArr.length > 0) {
|
1857 |
-
linkClean = linkArr[linkArr.length - 1];
|
1858 |
-
}
|
1859 |
-
return document.location.protocol + '//' + linkClean;
|
1860 |
-
} else {
|
1861 |
-
return link;
|
1862 |
-
}
|
1863 |
-
} else {
|
1864 |
-
return '';
|
1865 |
-
}
|
1866 |
-
},
|
1867 |
-
dataTitleColumnSet: function dataTitleColumnSet(table) {
|
1868 |
-
var rows = table.rows,
|
1869 |
-
rowHead = rows[0];
|
1870 |
-
var computedStyleRowHead = getComputedStyle(rowHead);
|
1871 |
|
1872 |
var rowHeadChildren = rowHead.children;
|
1873 |
var contentsForHeader = {};
|
@@ -1890,8 +964,8 @@ var WPTB_Helper = {
|
|
1890 |
contentsForHeader[rowHeadChildren[i].dataset.xIndex] = ['', '', '', computedStyleRowHead.backgroundColor, ''];
|
1891 |
}
|
1892 |
}
|
1893 |
-
for (var
|
1894 |
-
var thisRow = rows[
|
1895 |
thisRowChildren = thisRow.children;
|
1896 |
for (var _j = 0; _j < thisRowChildren.length; _j++) {
|
1897 |
if (contentsForHeader[thisRowChildren[_j].dataset.xIndex]) {
|
@@ -1957,28 +1031,21 @@ var WPTB_Helper = {
|
|
1957 |
} else {
|
1958 |
var wpPickerContainer = WPTB_Helper.findAncestor(event.target, 'wp-picker-container');
|
1959 |
if (wpPickerContainer) {
|
1960 |
-
if (event.originalEvent.type == 'square') {
|
1961 |
-
var
|
1962 |
-
|
1963 |
-
|
1964 |
-
irisSquareHandle.onmouseup = function () {
|
1965 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1966 |
-
wptbTableStateSaveManager.tableStateSet();
|
1967 |
-
};
|
1968 |
-
}
|
1969 |
-
} else if (event.originalEvent.type == 'strip') {
|
1970 |
-
var uiSliderHandle = wpPickerContainer.getElementsByClassName('iris-slider-offset');
|
1971 |
-
if (uiSliderHandle.length > 0) {
|
1972 |
-
uiSliderHandle = uiSliderHandle[0];
|
1973 |
-
uiSliderHandle.onmouseup = function () {
|
1974 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1975 |
-
wptbTableStateSaveManager.tableStateSet();
|
1976 |
-
};
|
1977 |
-
}
|
1978 |
}
|
1979 |
}
|
1980 |
}
|
1981 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1982 |
wpColorPickerClear: function wpColorPickerClear(attribute, isId) {
|
1983 |
var input = void 0;
|
1984 |
if (isId) {
|
@@ -2034,16 +1101,9 @@ var WPTB_Helper = {
|
|
2034 |
return cellHeight;
|
2035 |
},
|
2036 |
newElementProxy: function newElementProxy(el) {
|
2037 |
-
if (el
|
2038 |
-
|
2039 |
-
|
2040 |
-
return new WPTB_Image();
|
2041 |
-
} else if (el == 'text') {
|
2042 |
-
return new WPTB_Text();
|
2043 |
-
} else if (el == 'button') {
|
2044 |
-
return new WPTB_Button();
|
2045 |
-
} else if (el == 'star_rating') {
|
2046 |
-
return new WPTB_StarRating();
|
2047 |
}
|
2048 |
},
|
2049 |
wpColorPickerChange: function wpColorPickerChange(event, ui) {
|
@@ -2079,104 +1139,20 @@ var WPTB_Helper = {
|
|
2079 |
} else if (type == 'star_rating') {
|
2080 |
if (parent.dataset.type == 'star-color') {
|
2081 |
var ratingStar = affectedEl.querySelectorAll('li');
|
2082 |
-
for (var
|
2083 |
-
var span = ratingStar[
|
2084 |
for (var j = 0; j < span.length; j++) {
|
2085 |
span[j].style.fill = uiColor;
|
2086 |
}
|
2087 |
}
|
2088 |
} else if (parent.dataset.type == 'numeral-rating-color') {
|
2089 |
-
var wptbTextMessageSize = affectedEl.querySelector('.wptb-
|
2090 |
wptbTextMessageSize.style.color = uiColor;
|
2091 |
}
|
2092 |
} else {
|
2093 |
affectedEl.style.color = uiColor;
|
2094 |
}
|
2095 |
},
|
2096 |
-
starRatingSelectHoverSet: function starRatingSelectHoverSet(event) {
|
2097 |
-
var starRating = void 0;
|
2098 |
-
if (!event.target.classList.contains('wptb-rating-star')) {
|
2099 |
-
starRating = WPTB_Helper.findAncestor(event.target, 'wptb-rating-star');
|
2100 |
-
} else {
|
2101 |
-
starRating = event.target;
|
2102 |
-
}
|
2103 |
-
|
2104 |
-
var onStar = parseInt(starRating.dataset.value, 10); // The star currently mouse on
|
2105 |
-
|
2106 |
-
// Now highlight all the stars that's not after the current hovered star
|
2107 |
-
var children = starRating.parentNode.children;
|
2108 |
-
if (event.type == "mouseover") {
|
2109 |
-
for (var j = 0; j < children.length; j++) {
|
2110 |
-
if (j < onStar) {
|
2111 |
-
if (j == onStar - 1) {
|
2112 |
-
if (event.target.classList.contains('wptb-rating-star-left-signal-part')) {
|
2113 |
-
children[j].classList.add('wptb-rating-star-hover-half');
|
2114 |
-
children[j].classList.remove('wptb-rating-star-hover-full');
|
2115 |
-
} else if (event.target.classList.contains('wptb-rating-star-right-signal-part')) {
|
2116 |
-
children[j].classList.add('wptb-rating-star-hover-full');
|
2117 |
-
children[j].classList.remove('wptb-rating-star-hover-half');
|
2118 |
-
}
|
2119 |
-
} else {
|
2120 |
-
children[j].classList.add('wptb-rating-star-hover-full');
|
2121 |
-
children[j].classList.remove('wptb-rating-star-hover-half');
|
2122 |
-
}
|
2123 |
-
} else {
|
2124 |
-
children[j].classList.remove('wptb-rating-star-hover-full');
|
2125 |
-
children[j].classList.remove('wptb-rating-star-hover-half');
|
2126 |
-
}
|
2127 |
-
}
|
2128 |
-
} else if (event.type == "click") {
|
2129 |
-
for (var _j2 = 0; _j2 < children.length; _j2++) {
|
2130 |
-
if (_j2 < onStar) {
|
2131 |
-
if (_j2 == onStar - 1) {
|
2132 |
-
if (event.target.classList.contains('wptb-rating-star-left-signal-part')) {
|
2133 |
-
children[_j2].classList.add('wptb-rating-star-selected-half');
|
2134 |
-
children[_j2].classList.remove('wptb-rating-star-selected-full');
|
2135 |
-
} else if (event.target.classList.contains('wptb-rating-star-right-signal-part')) {
|
2136 |
-
children[_j2].classList.add('wptb-rating-star-selected-full');
|
2137 |
-
children[_j2].classList.remove('wptb-rating-star-selected-half');
|
2138 |
-
}
|
2139 |
-
} else {
|
2140 |
-
children[_j2].classList.add('wptb-rating-star-selected-full');
|
2141 |
-
children[_j2].classList.remove('wptb-rating-star-selected-half');
|
2142 |
-
}
|
2143 |
-
} else {
|
2144 |
-
children[_j2].classList.remove('wptb-rating-star-selected-full');
|
2145 |
-
children[_j2].classList.remove('wptb-rating-star-selected-half');
|
2146 |
-
}
|
2147 |
-
}
|
2148 |
-
}
|
2149 |
-
},
|
2150 |
-
starRatingEventHandlersAdd: function starRatingEventHandlersAdd(ratingStar) {
|
2151 |
-
ratingStar.onmouseover = function (event) {
|
2152 |
-
event.stopPropagation();
|
2153 |
-
WPTB_Helper.starRatingSelectHoverSet(event);
|
2154 |
-
};
|
2155 |
-
ratingStar.onmouseout = function () {
|
2156 |
-
var children = this.parentNode.children;
|
2157 |
-
for (var j = 0; j < children.length; j++) {
|
2158 |
-
children[j].classList.remove('wptb-rating-star-hover-half');
|
2159 |
-
children[j].classList.remove('wptb-rating-star-hover-full');
|
2160 |
-
}
|
2161 |
-
};
|
2162 |
-
|
2163 |
-
/* 2. Action to perform on click */
|
2164 |
-
ratingStar.onclick = function (event) {
|
2165 |
-
WPTB_Helper.starRatingSelectHoverSet(event);
|
2166 |
-
|
2167 |
-
/* Rating number message */
|
2168 |
-
var wptbStarRatingContainer = WPTB_Helper.findAncestor(event.target, 'wptb-star_rating-container');
|
2169 |
-
|
2170 |
-
WPTB_Helper.starRatingTextMessageChenge(wptbStarRatingContainer);
|
2171 |
-
|
2172 |
-
var wptbActionsField = new WPTB_ActionsField(1, wptbStarRatingContainer);
|
2173 |
-
|
2174 |
-
wptbActionsField.setParameters(wptbStarRatingContainer);
|
2175 |
-
|
2176 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
2177 |
-
wptbTableStateSaveManager.tableStateSet();
|
2178 |
-
};
|
2179 |
-
},
|
2180 |
numberImputSize: function numberImputSize(wptbNumberInputs, maxCount, maxValue) {
|
2181 |
wptbNumberInputs.onkeydown = function () {
|
2182 |
var thisValue = this.value;
|
@@ -2190,116 +1166,490 @@ var WPTB_Helper = {
|
|
2190 |
};
|
2191 |
wptbNumberInputs.onkeyup = function () {
|
2192 |
var thisValue = this.value;
|
2193 |
-
thisValue
|
2194 |
-
if (thisValue > maxValue) {
|
2195 |
this.value = maxValue;
|
2196 |
}
|
|
|
|
|
|
|
2197 |
};
|
2198 |
},
|
2199 |
-
|
2200 |
-
|
2201 |
-
|
2202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2203 |
}
|
2204 |
-
|
2205 |
-
|
2206 |
-
|
2207 |
-
|
2208 |
-
|
2209 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2210 |
return;
|
2211 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2212 |
|
2213 |
-
|
2214 |
-
|
2215 |
-
|
2216 |
-
|
2217 |
-
|
2218 |
-
|
2219 |
-
kindIndexProt = undefined,
|
2220 |
-
copy = false;
|
2221 |
-
if (DOMElementProt == undefined) {
|
2222 |
-
DOMElement = document.createElement('div');
|
2223 |
-
elImage = document.createElement('div');
|
2224 |
-
var anchor = document.createElement('a'),
|
2225 |
-
img = document.createElement('img');
|
2226 |
-
anchor.style.display = 'block';
|
2227 |
-
anchor.appendChild(img);
|
2228 |
-
DOMElement.classList.add('wptb-image-container');
|
2229 |
-
elImage.classList.add('wptb-image-wrapper');
|
2230 |
-
elImage.appendChild(anchor);
|
2231 |
-
DOMElement.appendChild(elImage);
|
2232 |
-
|
2233 |
-
anchor.onclick = function (e) {
|
2234 |
-
e.preventDefault();
|
2235 |
-
};
|
2236 |
|
2237 |
-
|
2238 |
-
|
2239 |
-
|
2240 |
-
|
2241 |
-
}
|
2242 |
-
|
2243 |
-
frame: 'post'
|
2244 |
-
});
|
2245 |
|
2246 |
-
var
|
2247 |
-
|
2248 |
-
var
|
2249 |
-
|
2250 |
-
if (Array.isArray(linkArr) && linkArr.length > 0) {
|
2251 |
-
linkClean = linkArr[linkArr.length - 1];
|
2252 |
}
|
2253 |
-
|
2254 |
-
img.height = attachment.height;
|
2255 |
-
img.width = attachment.width;
|
2256 |
-
img.style.width = '100%';
|
2257 |
|
2258 |
-
|
2259 |
-
|
2260 |
-
|
|
|
|
|
|
|
2261 |
|
2262 |
-
|
2263 |
-
|
2264 |
-
|
2265 |
-
|
2266 |
-
|
|
|
2267 |
|
2268 |
-
|
2269 |
-
|
2270 |
-
|
2271 |
-
|
2272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2273 |
|
2274 |
-
|
2275 |
-
|
2276 |
-
|
2277 |
-
|
2278 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2279 |
} else {
|
2280 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2281 |
}
|
2282 |
-
} else {
|
2283 |
-
DOMElement = DOMElementProt.cloneNode(true);
|
2284 |
-
|
2285 |
-
DOMElement.getElementsByTagName('a')[0].onclick = function (e) {
|
2286 |
-
e.preventDefault();
|
2287 |
-
};
|
2288 |
-
|
2289 |
-
var wptbElementMutch = DOMElementProt.className.match(/wptb-element-((.+-)\d+)/i);
|
2290 |
-
if (wptbElementMutch && Array.isArray(wptbElementMutch)) {
|
2291 |
-
kindIndexProt = wptbElementMutch[1];
|
2292 |
-
copy = true;
|
2293 |
-
};
|
2294 |
}
|
2295 |
-
|
2296 |
-
this.kind = 'image';
|
2297 |
-
this.getDOMElement = function () {
|
2298 |
-
return DOMElement;
|
2299 |
-
};
|
2300 |
-
applyGenericItemSettings(this, kindIndexProt, copy);
|
2301 |
-
|
2302 |
-
return this;
|
2303 |
};
|
2304 |
var WPTB_Initializer = function WPTB_Initializer() {
|
2305 |
|
@@ -2371,8 +1721,6 @@ var WPTB_LeftPanel = function WPTB_LeftPanel() {
|
|
2371 |
for (var _i = 1; _i < tableRows.length; _i += 2) {
|
2372 |
tableRows[_i].style.backgroundColor = ui.color.toString();
|
2373 |
}
|
2374 |
-
console.log(event);
|
2375 |
-
console.log(this);
|
2376 |
WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving(event);
|
2377 |
},
|
2378 |
clear: function clear() {
|
@@ -2621,11 +1969,11 @@ var WPTB_LeftPanel = function WPTB_LeftPanel() {
|
|
2621 |
var wptbTableCellNumber = document.getElementById('wptb-table-cell-number');
|
2622 |
WPTB_Helper.numberImputSize(wptbTableCellNumber, 1, 50);
|
2623 |
|
2624 |
-
|
2625 |
-
WPTB_Helper.numberImputSize(wptbTextfontSizeNumber, 1, 50);
|
2626 |
-
|
2627 |
-
|
2628 |
-
WPTB_Helper.numberImputSize(wptbImageWidthNumber, 2, 100);
|
2629 |
|
2630 |
var wptbTableColumnWidthNumber = document.getElementById('wptb-table-column-width-number');
|
2631 |
WPTB_Helper.numberImputSize(wptbTableColumnWidthNumber, 2, 500);
|
@@ -2894,107 +2242,6 @@ var WPTB_LeftPanel = function WPTB_LeftPanel() {
|
|
2894 |
}
|
2895 |
});
|
2896 |
};
|
2897 |
-
var WPTB_List = function WPTB_List(innerElements, DOMElementProt) {
|
2898 |
-
|
2899 |
-
var el_L = document.createElement('ul'),
|
2900 |
-
item,
|
2901 |
-
DOMElement = document.createElement('div'),
|
2902 |
-
kindIndexProt = undefined,
|
2903 |
-
copy = false;
|
2904 |
-
DOMElement.classList.add('wptb-list-item-container');
|
2905 |
-
|
2906 |
-
this.kind = 'list';
|
2907 |
-
|
2908 |
-
if (innerElements === '') {
|
2909 |
-
//Case for edit mode list
|
2910 |
-
} else if (!innerElements) {
|
2911 |
-
for (var i = 0; i < 3; i++) {
|
2912 |
-
item = new WPTB_ListItem('<p>List Item ' + (i + 1) + '</p>');
|
2913 |
-
el_L.appendChild(item.getDOMElement());
|
2914 |
-
}
|
2915 |
-
} else {
|
2916 |
-
var wptbElementMutch = DOMElementProt.className.match(/wptb-element-((.+-)\d+)/i);
|
2917 |
-
if (wptbElementMutch && Array.isArray(wptbElementMutch)) {
|
2918 |
-
kindIndexProt = wptbElementMutch[1];
|
2919 |
-
copy = true;
|
2920 |
-
};
|
2921 |
-
|
2922 |
-
for (var i = 0; i < innerElements.length; i++) {
|
2923 |
-
var listItem = DOMElementProt.querySelector('li');
|
2924 |
-
item = new WPTB_ListItem(innerElements[i], listItem, true);
|
2925 |
-
el_L.appendChild(item.getDOMElement());
|
2926 |
-
}
|
2927 |
-
}
|
2928 |
-
DOMElement.appendChild(el_L);
|
2929 |
-
//window.addElementOptions('list', elList);
|
2930 |
-
|
2931 |
-
this.getDOMElement = function () {
|
2932 |
-
return DOMElement;
|
2933 |
-
};
|
2934 |
-
applyGenericItemSettings(this, kindIndexProt, copy);
|
2935 |
-
WPTB_Helper.listItemsRecalculateIndex(el_L);
|
2936 |
-
|
2937 |
-
return this;
|
2938 |
-
};
|
2939 |
-
var WPTB_ListItem = function WPTB_ListItem(text, DOMElementProt, copy) {
|
2940 |
-
var wptbListItemReturn = void 0;
|
2941 |
-
if (DOMElementProt == undefined || DOMElementProt && copy) {
|
2942 |
-
if (text == undefined) text = 'New List Item';
|
2943 |
-
var DOMElement = document.createElement('li'),
|
2944 |
-
|
2945 |
-
//divdot = document.createElement('div'),
|
2946 |
-
divcontent = document.createElement('div');
|
2947 |
-
//libullet = document.createElement('li');
|
2948 |
-
//divdot.classList.add('wptb-list-item-style-dot');
|
2949 |
-
divcontent.classList.add('wptb-list-item-content');
|
2950 |
-
//libullet.classList.add('wptb-bullet');
|
2951 |
-
if (DOMElementProt) {
|
2952 |
-
var styleDot = DOMElementProt.getAttribute('style');
|
2953 |
-
if (styleDot) {
|
2954 |
-
DOMElement.setAttribute('style', styleDot);
|
2955 |
-
}
|
2956 |
-
}
|
2957 |
-
//DOMElement.appendChild(divdot);
|
2958 |
-
DOMElement.appendChild(divcontent);
|
2959 |
-
//divdot.appendChild(libullet);
|
2960 |
-
divcontent.innerHTML = text;
|
2961 |
-
divcontent.onkeyup = window.listItemKeyListener;
|
2962 |
-
|
2963 |
-
wptbListItemReturn = true;
|
2964 |
-
} else {
|
2965 |
-
var DOMElement = DOMElementProt;
|
2966 |
-
var divcontent = DOMElement.getElementsByClassName('wptb-list-item-content')[0];
|
2967 |
-
|
2968 |
-
divcontent.onkeyup = window.listItemKeyListener;
|
2969 |
-
|
2970 |
-
wptbListItemReturn = false;
|
2971 |
-
}
|
2972 |
-
|
2973 |
-
DOMElement.onmouseenter = function (event) {
|
2974 |
-
var wptbActionsField = new WPTB_ActionsField();
|
2975 |
-
|
2976 |
-
wptbActionsField.addActionField(2, DOMElement);
|
2977 |
-
|
2978 |
-
wptbActionsField.setParameters(DOMElement);
|
2979 |
-
console.log(DOMElement);
|
2980 |
-
};
|
2981 |
-
|
2982 |
-
DOMElement.onmouseleave = function (event) {
|
2983 |
-
var wptbActionsField = new WPTB_ActionsField();
|
2984 |
-
|
2985 |
-
wptbActionsField.leaveFromField(event, DOMElement, 2);
|
2986 |
-
|
2987 |
-
return false;
|
2988 |
-
};
|
2989 |
-
|
2990 |
-
this.getDOMElement = function () {
|
2991 |
-
return DOMElement;
|
2992 |
-
};
|
2993 |
-
|
2994 |
-
if (wptbListItemReturn) {
|
2995 |
-
return this;
|
2996 |
-
}
|
2997 |
-
};
|
2998 |
var MultipleSelect = function MultipleSelect() {
|
2999 |
|
3000 |
var selectedCells = [],
|
@@ -3092,50 +2339,44 @@ var WPTB_Parser = function WPTB_Parser(code) {
|
|
3092 |
|
3093 |
return table;
|
3094 |
};
|
3095 |
-
var
|
3096 |
-
if (Array.isArray(code)) {
|
3097 |
-
var elementHtml = void 0;
|
3098 |
|
3099 |
-
|
3100 |
-
|
3101 |
-
|
3102 |
-
|
3103 |
-
var tagName = code[0];
|
3104 |
-
elementHtml = document.createElement(tagName);
|
3105 |
|
3106 |
-
|
3107 |
-
|
3108 |
-
|
|
|
3109 |
|
3110 |
-
|
3111 |
-
|
3112 |
-
|
3113 |
-
|
3114 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3115 |
}
|
3116 |
}
|
3117 |
|
3118 |
-
if (
|
3119 |
-
|
3120 |
-
|
3121 |
-
|
3122 |
-
elementHtml.appendChild(document.createTextNode(code[2][_i]));
|
3123 |
-
continue;
|
3124 |
-
}
|
3125 |
-
if (!WPTB_Parser(code[2][_i])) continue;
|
3126 |
-
elementHtml.appendChild(WPTB_Parser(code[2][_i]));
|
3127 |
}
|
3128 |
-
} else if (typeof code[2] === 'string') {
|
3129 |
-
elementHtml.appendChild(document.createTextNode(code[2]));
|
3130 |
}
|
3131 |
}
|
3132 |
-
|
3133 |
-
|
3134 |
-
|
3135 |
-
|
3136 |
-
return false;
|
3137 |
-
}
|
3138 |
-
};
|
3139 |
var WPTB_Settings = function WPTB_Settings() {
|
3140 |
var elems = document.getElementsByClassName('wptb-element');
|
3141 |
|
@@ -3146,12 +2387,7 @@ var WPTB_Settings = function WPTB_Settings() {
|
|
3146 |
event.dataTransfer.setData('wptbElIndic-' + event.target.dataset.wptbElement, 'wptbElIndic-' + event.target.dataset.wptbElement);
|
3147 |
};
|
3148 |
elems[i].ondragend = function () {
|
3149 |
-
|
3150 |
-
wptbDropBorderMarker = document.querySelector('.wptb-drop-border-marker');
|
3151 |
-
if (wptbDropHandle || wptbDropBorderMarker) {
|
3152 |
-
wptbDropHandle.style.display = 'none';
|
3153 |
-
wptbDropBorderMarker.style.display = 'none';
|
3154 |
-
}
|
3155 |
};
|
3156 |
};
|
3157 |
|
@@ -3238,7 +2474,9 @@ var WPTB_Settings = function WPTB_Settings() {
|
|
3238 |
url = (wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl) + "?action=save_table",
|
3239 |
t = document.getElementById('wptb-setup-name').value.trim(),
|
3240 |
messagingArea = void 0,
|
3241 |
-
code =
|
|
|
|
|
3242 |
if (code.length > 0) {
|
3243 |
code = WPTB_Stringifier(code[0]);
|
3244 |
code = code.outerHTML;
|
@@ -3246,6 +2484,15 @@ var WPTB_Settings = function WPTB_Settings() {
|
|
3246 |
code = '';
|
3247 |
}
|
3248 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3249 |
if (t === '' || code === '') {
|
3250 |
var messagingAreaText = '';
|
3251 |
if (t === '') messagingAreaText += 'You must assign a name to the table before saving it.</br>';
|
@@ -3262,6 +2509,7 @@ var WPTB_Settings = function WPTB_Settings() {
|
|
3262 |
var params = {
|
3263 |
title: t,
|
3264 |
content: code,
|
|
|
3265 |
security_code: wptb_admin_object.security_code
|
3266 |
};
|
3267 |
if ((rs = WPTB_Helper.detectMode()) || (rs = document.wptbId)) {
|
@@ -3311,233 +2559,6 @@ var WPTB_Settings = function WPTB_Settings() {
|
|
3311 |
http.send(params);
|
3312 |
};
|
3313 |
};
|
3314 |
-
var WPTB_Space = function WPTB_Space(elSpaceBetween) {
|
3315 |
-
|
3316 |
-
function newElementProxy(el) {
|
3317 |
-
if (el.includes('list')) {
|
3318 |
-
return new WPTB_List();
|
3319 |
-
} else if (el.includes('image')) {
|
3320 |
-
return new WPTB_Image();
|
3321 |
-
} else if (el.includes('text')) {
|
3322 |
-
return new WPTB_Text();
|
3323 |
-
} else if (el.includes('button')) {
|
3324 |
-
return new WPTB_Button();
|
3325 |
-
}
|
3326 |
-
}
|
3327 |
-
var spaceBetween = void 0;
|
3328 |
-
if (!elSpaceBetween) {
|
3329 |
-
spaceBetween = document.createElement('div'), spaceBetween.classList.add('wptb-space-between');
|
3330 |
-
} else {
|
3331 |
-
spaceBetween = elSpaceBetween;
|
3332 |
-
}
|
3333 |
-
|
3334 |
-
spaceBetween.ondragenter = function () {
|
3335 |
-
this.classList.add('visible');
|
3336 |
-
};
|
3337 |
-
spaceBetween.ondragover = function (event) {
|
3338 |
-
event.preventDefault();
|
3339 |
-
};
|
3340 |
-
|
3341 |
-
spaceBetween.ondragleave = function () {
|
3342 |
-
this.classList.remove('visible');
|
3343 |
-
};
|
3344 |
-
|
3345 |
-
spaceBetween.ondrop = function (event) {
|
3346 |
-
event.stopPropagation();
|
3347 |
-
|
3348 |
-
var p = event.target.nextSibling,
|
3349 |
-
td = event.target,
|
3350 |
-
element,
|
3351 |
-
t_space,
|
3352 |
-
spaceParent;
|
3353 |
-
|
3354 |
-
while (!td.classList.contains('wptb-droppable')) {
|
3355 |
-
td = td.parentNode;
|
3356 |
-
}
|
3357 |
-
|
3358 |
-
if (event.dataTransfer.getData('wptbElement')) {
|
3359 |
-
element = newElementProxy(event.dataTransfer.getData('wptbElement'));
|
3360 |
-
this.classList.remove('visible');
|
3361 |
-
|
3362 |
-
if (p == null) {
|
3363 |
-
td.appendChild(element.getDOMElement());
|
3364 |
-
td.appendChild(new WPTB_Space());
|
3365 |
-
} else {
|
3366 |
-
td.insertBefore(element.getDOMElement(), p);
|
3367 |
-
td.insertBefore(new WPTB_Space(), p);
|
3368 |
-
}
|
3369 |
-
} else {
|
3370 |
-
alert(event.dataTransfer.getData('node'));
|
3371 |
-
element = document.getElementsByClassName(event.dataTransfer.getData('node'))[0];
|
3372 |
-
t_space = element.nextSibling;
|
3373 |
-
spaceParent = element.parentNode;
|
3374 |
-
if (t_space != undefined) {
|
3375 |
-
spaceParent.removeChild(t_space);
|
3376 |
-
}
|
3377 |
-
|
3378 |
-
if (p == null) {
|
3379 |
-
td.appendChild(element);
|
3380 |
-
td.appendChild(new WPTB_Space());
|
3381 |
-
} else {
|
3382 |
-
td.insertBefore(element, p);
|
3383 |
-
td.insertBefore(new WPTB_Space(), p);
|
3384 |
-
}
|
3385 |
-
}
|
3386 |
-
this.classList.remove('visible');
|
3387 |
-
};
|
3388 |
-
|
3389 |
-
if (!elSpaceBetween) {
|
3390 |
-
return spaceBetween;
|
3391 |
-
}
|
3392 |
-
};
|
3393 |
-
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); } }
|
3394 |
-
|
3395 |
-
var WPTB_StarRating = function WPTB_StarRating(DOMElementProt, countStarts) {
|
3396 |
-
if (!countStarts) {
|
3397 |
-
if (!DOMElementProt) {
|
3398 |
-
countStarts = 5;
|
3399 |
-
} else {
|
3400 |
-
countStarts = DOMElementProt.querySelectorAll('li').length;
|
3401 |
-
}
|
3402 |
-
}
|
3403 |
-
|
3404 |
-
var DOMElement = document.createElement('div'),
|
3405 |
-
ratingStarsBox = document.createElement('div'),
|
3406 |
-
ratingStarsList = document.createElement('ul'),
|
3407 |
-
successBox = document.createElement('div'),
|
3408 |
-
textMessage = document.createElement('div'),
|
3409 |
-
kindIndexProt = undefined,
|
3410 |
-
copy = false;
|
3411 |
-
|
3412 |
-
DOMElement.classList.add('wptb-star_rating-container');
|
3413 |
-
ratingStarsBox.classList.add('wptb-rating-stars-box');
|
3414 |
-
ratingStarsList.classList.add('wptb-rating-stars-list');
|
3415 |
-
successBox.classList.add('wptb-success-box');
|
3416 |
-
successBox.style.display = 'none';
|
3417 |
-
textMessage.classList.add('wptb-text-message');
|
3418 |
-
textMessage.style.fontSize = '25px';
|
3419 |
-
|
3420 |
-
var filledRatingStarHtml = '<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" \n\
|
3421 |
-
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" style="width: 20px;" viewBox="0 0 426.667 426.667" \n\
|
3422 |
-
style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve">\n\
|
3423 |
-
<polygon points="426.667,165.12 273.28,152.107 213.333,10.667 153.387,152.107 0,165.12 \n\
|
3424 |
-
116.48,266.027 81.493,416 213.333,336.427 345.173,416 310.187,266.027"/></svg>';
|
3425 |
-
|
3426 |
-
var notFilledRatingStarHtml = '<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" \n\
|
3427 |
-
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" style="width: 20px;" viewBox="0 0 426.667 426.667" \n\
|
3428 |
-
style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve">\n\
|
3429 |
-
<path d="M426.667,165.12L273.28,151.893L213.333,10.667l-59.947,141.44L0,165.12l116.48,100.907L81.493,416l131.84-79.573\n\
|
3430 |
-
L345.173,416L310.4,266.027L426.667,165.12z M213.333,296.533L133.12,344.96l21.333-91.307l-70.827-61.44l93.44-8.107 \n\
|
3431 |
-
l36.267-85.973l36.48,86.187l93.44,8.107l-70.827,61.44l21.333,91.307L213.333,296.533z"/></svg>';
|
3432 |
-
|
3433 |
-
var halfFilledRatingStarHtml = '<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" \n\
|
3434 |
-
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" style="width: 20px;" viewBox="0 0 426.667 426.667" \n\
|
3435 |
-
style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve">\n\
|
3436 |
-
<path d="M426.667,165.12L273.28,151.893L213.333,10.667l-59.947,141.44L0,165.12l116.48,100.907L81.493,416l131.84-79.573 \n\
|
3437 |
-
L345.173,416L310.4,266.027L426.667,165.12z M213.333,296.533v-198.4l36.48,86.187l93.44,8.107l-70.827,61.44l21.333,91.307 \n\
|
3438 |
-
L213.333,296.533z"/></svg>';
|
3439 |
-
|
3440 |
-
for (var i = 0; i < countStarts; i++) {
|
3441 |
-
var ratingStar = document.createElement('li');
|
3442 |
-
ratingStar.classList.add('wptb-rating-star');
|
3443 |
-
ratingStar.style.width = '20px';
|
3444 |
-
var ratingStarZeroSet = '';
|
3445 |
-
if (i == 0) {
|
3446 |
-
ratingStarZeroSet = '<span class="wptb-rating-star-zero-set"></span>';
|
3447 |
-
}
|
3448 |
-
|
3449 |
-
ratingStar.innerHTML = '<span class="wptb-rating-star-left-signal-part">' + ratingStarZeroSet + '</span><span class="wptb-filled-rating-star">' + filledRatingStarHtml + '</span>' + '<span class="wptb-not-filled-rating-star">' + notFilledRatingStarHtml + '</span>' + '<span class="wptb-half-filled-rating-star">' + halfFilledRatingStarHtml + '</span><span class="wptb-rating-star-right-signal-part"></span>';
|
3450 |
-
ratingStar.dataset.value = i + 1;
|
3451 |
-
ratingStarsList.appendChild(ratingStar);
|
3452 |
-
}
|
3453 |
-
|
3454 |
-
successBox.appendChild(textMessage);
|
3455 |
-
ratingStarsBox.appendChild(ratingStarsList);
|
3456 |
-
ratingStarsBox.appendChild(successBox);
|
3457 |
-
DOMElement.appendChild(ratingStarsBox);
|
3458 |
-
|
3459 |
-
// Creation of a new star rating when copying to avoid errors when assigning new event handlers.
|
3460 |
-
if (DOMElementProt) {
|
3461 |
-
var wptbElementMutch = DOMElementProt.className.match(/wptb-element-((.+-)\d+)/i);
|
3462 |
-
if (wptbElementMutch && Array.isArray(wptbElementMutch)) {
|
3463 |
-
kindIndexProt = wptbElementMutch[1];
|
3464 |
-
copy = true;
|
3465 |
-
};
|
3466 |
-
|
3467 |
-
var wptbRatingStarsBox = DOMElementProt.querySelector('.wptb-rating-stars-box');
|
3468 |
-
if (wptbRatingStarsBox) {
|
3469 |
-
var wptbRatingStarsBoxAttributes = [].concat(_toConsumableArray(wptbRatingStarsBox.attributes));
|
3470 |
-
if (wptbRatingStarsBoxAttributes.length > 0) {
|
3471 |
-
for (var _i = 0; _i < wptbRatingStarsBoxAttributes.length; _i++) {
|
3472 |
-
if (wptbRatingStarsBoxAttributes[_i].name == 'style') {
|
3473 |
-
ratingStarsBox.setAttribute(wptbRatingStarsBoxAttributes[_i].name, wptbRatingStarsBoxAttributes[_i].value);
|
3474 |
-
}
|
3475 |
-
}
|
3476 |
-
}
|
3477 |
-
}
|
3478 |
-
|
3479 |
-
var wptbRatingStarsOld = wptbRatingStarsBox.querySelectorAll('li');
|
3480 |
-
var wptbRatingStars = ratingStarsList.querySelectorAll('li');
|
3481 |
-
if (wptbRatingStarsOld.length > 0 && wptbRatingStars.length > 0) {
|
3482 |
-
var iMax = wptbRatingStarsOld.length < countStarts ? wptbRatingStarsOld.length : countStarts;
|
3483 |
-
for (var _i2 = 0; _i2 < wptbRatingStarsOld.length; _i2++) {
|
3484 |
-
var wptbRatingStarsAttributes = [].concat(_toConsumableArray(wptbRatingStarsOld[_i2].attributes));
|
3485 |
-
if (wptbRatingStarsAttributes.length > 0) {
|
3486 |
-
for (var j = 0; j < wptbRatingStarsAttributes.length; j++) {
|
3487 |
-
wptbRatingStars[_i2].setAttribute(wptbRatingStarsAttributes[j].name, wptbRatingStarsAttributes[j].value);
|
3488 |
-
}
|
3489 |
-
}
|
3490 |
-
|
3491 |
-
var wptbRatingStarsOldSpan = wptbRatingStarsOld[_i2].children;
|
3492 |
-
var wptbRatingStarsSpan = wptbRatingStars[_i2].children;
|
3493 |
-
for (var k = 0; k < wptbRatingStarsOldSpan.length; k++) {
|
3494 |
-
var wptbRatingStarsOldSpanAttributes = [].concat(_toConsumableArray(wptbRatingStarsOldSpan[k].attributes));
|
3495 |
-
if (wptbRatingStarsOldSpanAttributes.length > 0) {
|
3496 |
-
for (var l = 0; l < wptbRatingStarsOldSpanAttributes.length; l++) {
|
3497 |
-
wptbRatingStarsSpan[k].setAttribute(wptbRatingStarsOldSpanAttributes[l].name, wptbRatingStarsOldSpanAttributes[l].value);
|
3498 |
-
var wptbRatingStarsOldSvg = wptbRatingStarsOldSpan[k].querySelector('svg');
|
3499 |
-
if (wptbRatingStarsOldSvg) {
|
3500 |
-
var wptbRatingStarsOldSvgStyle = wptbRatingStarsOldSvg.getAttribute('style');
|
3501 |
-
wptbRatingStarsSpan[k].querySelector('svg').setAttribute('style', wptbRatingStarsOldSvgStyle);
|
3502 |
-
}
|
3503 |
-
}
|
3504 |
-
}
|
3505 |
-
}
|
3506 |
-
}
|
3507 |
-
}
|
3508 |
-
|
3509 |
-
var wptbSuccessBox = wptbRatingStarsBox.querySelector('.wptb-success-box');
|
3510 |
-
if (wptbSuccessBox) {
|
3511 |
-
var wptbSuccessBoxAttributes = [].concat(_toConsumableArray(wptbSuccessBox.attributes));
|
3512 |
-
for (var _i3 = 0; _i3 < wptbSuccessBoxAttributes.length; _i3++) {
|
3513 |
-
if (wptbSuccessBoxAttributes[_i3].name == 'style') {
|
3514 |
-
successBox.setAttribute(wptbSuccessBoxAttributes[_i3].name, wptbSuccessBoxAttributes[_i3].value);
|
3515 |
-
}
|
3516 |
-
}
|
3517 |
-
}
|
3518 |
-
|
3519 |
-
var wptbTextMessage = wptbSuccessBox.querySelector('.wptb-text-message');
|
3520 |
-
if (wptbTextMessage) {
|
3521 |
-
textMessage.innerHTML = wptbTextMessage.innerHTML;
|
3522 |
-
var wptbTextMessageAttributes = [].concat(_toConsumableArray(wptbTextMessage.attributes));
|
3523 |
-
for (var _i4 = 0; _i4 < wptbTextMessageAttributes.length; _i4++) {
|
3524 |
-
if (wptbTextMessageAttributes[_i4].name == 'style') {
|
3525 |
-
textMessage.setAttribute(wptbTextMessageAttributes[_i4].name, wptbTextMessageAttributes[_i4].value);
|
3526 |
-
}
|
3527 |
-
}
|
3528 |
-
}
|
3529 |
-
}
|
3530 |
-
|
3531 |
-
this.kind = 'star_rating';
|
3532 |
-
|
3533 |
-
this.getDOMElement = function () {
|
3534 |
-
return DOMElement;
|
3535 |
-
};
|
3536 |
-
|
3537 |
-
applyGenericItemSettings(this, kindIndexProt, copy);
|
3538 |
-
|
3539 |
-
return this;
|
3540 |
-
};
|
3541 |
var WPTB_Stringifier = function WPTB_Stringifier(codeMain) {
|
3542 |
if (codeMain) {
|
3543 |
var code = codeMain.cloneNode(true);
|
@@ -3631,58 +2652,6 @@ var WPTB_Stringifier = function WPTB_Stringifier(codeMain) {
|
|
3631 |
return code;
|
3632 |
}
|
3633 |
};
|
3634 |
-
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); } }
|
3635 |
-
|
3636 |
-
var WPTB_Stringifier2 = function WPTB_Stringifier2(node) {
|
3637 |
-
var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
3638 |
-
|
3639 |
-
|
3640 |
-
if (node == undefined) {
|
3641 |
-
return '';
|
3642 |
-
} else if (node.tagName == undefined && node.nodeType == 3) {
|
3643 |
-
return node.nodeValue;
|
3644 |
-
}
|
3645 |
-
|
3646 |
-
var code = [],
|
3647 |
-
children = void 0,
|
3648 |
-
int_elem_arr = false,
|
3649 |
-
attributes = [].concat(_toConsumableArray(node.attributes)),
|
3650 |
-
attributes_list = [],
|
3651 |
-
internal_elements = [];
|
3652 |
-
if ((node.parentNode.classList.contains('wptb-list-item-content') || node.parentNode.classList.contains('mce-content-body')) && node.tagName.toLowerCase() == 'p') {
|
3653 |
-
children = node.childNodes;
|
3654 |
-
int_elem_arr = true;
|
3655 |
-
} else if (node.children.length > 0) {
|
3656 |
-
children = node.children;
|
3657 |
-
} else {
|
3658 |
-
children = node.childNodes;
|
3659 |
-
}
|
3660 |
-
if (attributes.length > 0) {
|
3661 |
-
for (var i = 0; i < attributes.length; i++) {
|
3662 |
-
attributes_list[i] = [attributes[i].name, attributes[i].value];
|
3663 |
-
}
|
3664 |
-
} else {
|
3665 |
-
attributes_list = '';
|
3666 |
-
}
|
3667 |
-
|
3668 |
-
if (children.length > 0) {
|
3669 |
-
for (var _i = 0; _i < children.length; _i++) {
|
3670 |
-
var inter_elem = WPTB_Stringifier(children[_i]);
|
3671 |
-
|
3672 |
-
if (Array.isArray(inter_elem) || int_elem_arr) {
|
3673 |
-
internal_elements[_i] = inter_elem;
|
3674 |
-
} else if (typeof inter_elem === 'string' && inter_elem) {
|
3675 |
-
internal_elements = inter_elem;
|
3676 |
-
}
|
3677 |
-
}
|
3678 |
-
} else {
|
3679 |
-
internal_elements = '';
|
3680 |
-
}
|
3681 |
-
|
3682 |
-
code.push(node.tagName.toLowerCase(), attributes_list, internal_elements);
|
3683 |
-
|
3684 |
-
return code;
|
3685 |
-
};
|
3686 |
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; };
|
3687 |
|
3688 |
var array = [],
|
@@ -5448,6 +4417,13 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
5448 |
}
|
5449 |
}
|
5450 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5451 |
var mceContentBodys = wptbNewPreviewTable.querySelectorAll('.mce-content-body');
|
5452 |
if (mceContentBodys.length > 0) {
|
5453 |
for (var k = 0; k < mceContentBodys.length; k++) {
|
@@ -5469,7 +4445,7 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
5469 |
}
|
5470 |
}
|
5471 |
|
5472 |
-
window.wptbTableStateSaving.push([wptbNewPreviewTable, cssForTdsWidthAutoValue]);
|
5473 |
|
5474 |
// set new number of state which is showed now
|
5475 |
window.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;
|
@@ -5584,6 +4560,28 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
5584 |
}
|
5585 |
}
|
5586 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5587 |
WPTB_Helper.settingsPanelClear();
|
5588 |
WPTB_Helper.elementOptionsPanelClear();
|
5589 |
WPTB_LeftPanel();
|
@@ -5596,41 +4594,6 @@ var WPTB_TableStateSaveManager = function WPTB_TableStateSaveManager() {
|
|
5596 |
}
|
5597 |
};
|
5598 |
};
|
5599 |
-
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); } }
|
5600 |
-
|
5601 |
-
var WPTB_Text = function WPTB_Text(text, DOMElementProt) {
|
5602 |
-
var DOMElement = document.createElement('div'),
|
5603 |
-
elText2 = document.createElement('div'),
|
5604 |
-
elP = document.createElement('p'),
|
5605 |
-
kindIndexProt = undefined,
|
5606 |
-
copy = false;
|
5607 |
-
|
5608 |
-
DOMElement.classList.add('wptb-text-container');
|
5609 |
-
|
5610 |
-
elP.innerHTML = text != undefined ? text : 'Text';
|
5611 |
-
elText2.appendChild(elP);
|
5612 |
-
DOMElement.appendChild(elText2);
|
5613 |
-
if (DOMElementProt) {
|
5614 |
-
var wptbElementMutch = DOMElementProt.className.match(/wptb-element-((.+-)\d+)/i);
|
5615 |
-
if (wptbElementMutch && Array.isArray(wptbElementMutch)) {
|
5616 |
-
kindIndexProt = wptbElementMutch[1];
|
5617 |
-
copy = true;
|
5618 |
-
};
|
5619 |
-
|
5620 |
-
var attributes = [].concat(_toConsumableArray(DOMElementProt.attributes));
|
5621 |
-
for (var i = 0; i < attributes.length; i++) {
|
5622 |
-
DOMElement.setAttribute(attributes[i].name, attributes[i].value);
|
5623 |
-
}
|
5624 |
-
}
|
5625 |
-
|
5626 |
-
this.kind = 'text';
|
5627 |
-
this.getDOMElement = function () {
|
5628 |
-
return DOMElement;
|
5629 |
-
};
|
5630 |
-
applyGenericItemSettings(this, kindIndexProt, copy);
|
5631 |
-
|
5632 |
-
return this;
|
5633 |
-
};
|
5634 |
var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
|
5635 |
|
5636 |
element.ondragenter = function (e) {
|
@@ -5696,6 +4659,13 @@ var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
|
|
5696 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
5697 |
WPTB_Helper.dataTitleColumnSet(table);
|
5698 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5699 |
} else {
|
5700 |
return;
|
5701 |
}
|
@@ -5716,34 +4686,74 @@ var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
|
|
5716 |
element.classList.remove('wptb-ondragenter');
|
5717 |
};
|
5718 |
};
|
|
|
|
|
|
|
|
|
5719 |
var applyGenericItemSettings = function applyGenericItemSettings(element, kindIndexProt) {
|
5720 |
var copy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
5721 |
|
5722 |
var node = element.getDOMElement(),
|
5723 |
index,
|
5724 |
-
listItems,
|
5725 |
copy;
|
5726 |
-
|
5727 |
-
|
5728 |
-
|
5729 |
-
|
5730 |
-
|
5731 |
-
|
5732 |
-
|
5733 |
-
|
5734 |
-
|
5735 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5736 |
}
|
|
|
|
|
|
|
|
|
5737 |
}
|
5738 |
-
|
5739 |
-
|
5740 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5741 |
} else {
|
5742 |
-
index
|
|
|
|
|
5743 |
}
|
5744 |
-
|
5745 |
-
|
5746 |
-
|
5747 |
}
|
5748 |
|
5749 |
node.onmouseenter = function (event) {
|
@@ -5751,158 +4761,19 @@ var applyGenericItemSettings = function applyGenericItemSettings(element, kindIn
|
|
5751 |
return;
|
5752 |
}
|
5753 |
|
5754 |
-
var
|
5755 |
-
wptbActionsField = new WPTB_ActionsField();
|
5756 |
|
5757 |
wptbActionsField.addActionField(1, node);
|
5758 |
|
5759 |
wptbActionsField.setParameters(node);
|
5760 |
|
5761 |
node.classList.remove('wptb-ondragenter');
|
5762 |
-
|
5763 |
-
//wptbActionsField.addActionField( 1, node )
|
5764 |
-
|
5765 |
-
if (element.kind === 'button') {
|
5766 |
-
var a = node.querySelector('a'),
|
5767 |
-
target = a.querySelector('div');
|
5768 |
-
a.onclick = function (e) {
|
5769 |
-
e.preventDefault();
|
5770 |
-
};
|
5771 |
-
WPTB_Helper.buttonsTinyMceInit(target);
|
5772 |
-
} else if (element.kind === 'text') {
|
5773 |
-
tinyMCE.init({
|
5774 |
-
target: node.childNodes[0],
|
5775 |
-
inline: true,
|
5776 |
-
plugins: "link, paste",
|
5777 |
-
dialog_type: "modal",
|
5778 |
-
theme: 'modern',
|
5779 |
-
menubar: false,
|
5780 |
-
force_br_newlines: false,
|
5781 |
-
force_p_newlines: false,
|
5782 |
-
forced_root_block: '',
|
5783 |
-
fixed_toolbar_container: '#wpcd_fixed_toolbar',
|
5784 |
-
paste_as_text: true,
|
5785 |
-
toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',
|
5786 |
-
setup: function setup(ed) {
|
5787 |
-
ed.on('change', function (e) {
|
5788 |
-
var row = WPTB_Helper.findAncestor(node, 'wptb-row');
|
5789 |
-
if (row.classList.contains('wptb-table-head')) {
|
5790 |
-
var table = WPTB_Helper.findAncestor(row, 'wptb-preview-table');
|
5791 |
-
WPTB_Helper.dataTitleColumnSet(table);
|
5792 |
-
}
|
5793 |
-
});
|
5794 |
-
|
5795 |
-
ed.on('keydown', function (e) {
|
5796 |
-
var wptbActionsField = new WPTB_ActionsField();
|
5797 |
-
|
5798 |
-
wptbActionsField.addActionField(1, node);
|
5799 |
-
|
5800 |
-
wptbActionsField.setParameters(node);
|
5801 |
-
});
|
5802 |
-
ed.on('keyup', function (e) {
|
5803 |
-
var wptbActionsField = new WPTB_ActionsField();
|
5804 |
-
|
5805 |
-
wptbActionsField.addActionField(1, node);
|
5806 |
-
|
5807 |
-
wptbActionsField.setParameters(node);
|
5808 |
-
|
5809 |
-
e.target.onblur = function () {
|
5810 |
-
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
5811 |
-
wptbTableStateSaveManager.tableStateSet();
|
5812 |
-
};
|
5813 |
-
});
|
5814 |
-
},
|
5815 |
-
init_instance_callback: function init_instance_callback(editor) {
|
5816 |
-
window.currentEditor = editor;
|
5817 |
-
//editor.fire('focus');
|
5818 |
-
editor.on('focus', function (e) {
|
5819 |
-
var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;
|
5820 |
-
if (window.currentEditor && document.getElementById('wptb_builder').scrollTop >= 55 && window.currentEditor.bodyElement.style.display != 'none') {
|
5821 |
-
document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';
|
5822 |
-
document.getElementById('wpcd_fixed_toolbar').style.right = totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2 + 'px';
|
5823 |
-
document.getElementById('wpcd_fixed_toolbar').style.top = '100px';
|
5824 |
-
} else {
|
5825 |
-
document.getElementById('wpcd_fixed_toolbar').style.position = 'static';
|
5826 |
-
delete document.getElementById('wpcd_fixed_toolbar').style.right;
|
5827 |
-
delete document.getElementById('wpcd_fixed_toolbar').style.top;
|
5828 |
-
}
|
5829 |
-
});
|
5830 |
-
}
|
5831 |
-
});
|
5832 |
-
} else if (element.kind === 'list') {
|
5833 |
-
listItems = node.getElementsByClassName('wptb-list-item-content');
|
5834 |
-
for (var _i = 0; _i < listItems.length; _i++) {
|
5835 |
-
WPTB_Helper.listItemsTinyMceInit(listItems[_i]);
|
5836 |
-
}
|
5837 |
-
}
|
5838 |
};
|
5839 |
|
5840 |
node.onmouseleave = function (event) {
|
5841 |
var wptbActionsField = new WPTB_ActionsField();
|
5842 |
|
5843 |
-
|
5844 |
-
return;
|
5845 |
-
}
|
5846 |
-
|
5847 |
-
wptbActionsField.leaveFromField(event, node, 1);
|
5848 |
};
|
5849 |
-
|
5850 |
-
var wptbActions = document.getElementsByClassName('wptb-actions');
|
5851 |
-
if (wptbActions.length > 0) {
|
5852 |
-
wptbActions = wptbActions[0];
|
5853 |
-
}
|
5854 |
-
|
5855 |
-
// Change data-title-column if the title was changed
|
5856 |
-
if (element.kind == 'text') {
|
5857 |
-
var observer = new MutationObserver(function (mutations) {
|
5858 |
-
var row = WPTB_Helper.findAncestor(node, 'wptb-row');
|
5859 |
-
if (row.classList.contains('wptb-table-head')) {
|
5860 |
-
var table = WPTB_Helper.findAncestor(row, 'wptb-preview-table');
|
5861 |
-
WPTB_Helper.dataTitleColumnSet(table);
|
5862 |
-
}
|
5863 |
-
});
|
5864 |
-
var config = { attributes: true, attributeFilter: ['style'] };
|
5865 |
-
observer.observe(element.getDOMElement(), config);
|
5866 |
-
} else if (element.kind == 'star_rating') {
|
5867 |
-
var ratingStars = node.getElementsByClassName('wptb-rating-star');
|
5868 |
-
for (var _i2 = 0; _i2 < ratingStars.length; _i2++) {
|
5869 |
-
var ratingStar = ratingStars[_i2];
|
5870 |
-
|
5871 |
-
WPTB_Helper.starRatingEventHandlersAdd(ratingStar);
|
5872 |
-
|
5873 |
-
var ritingStarZeroSet = ratingStar.querySelector('.wptb-rating-star-zero-set');
|
5874 |
-
if (ritingStarZeroSet) {
|
5875 |
-
ritingStarZeroSet.onclick = function (event) {
|
5876 |
-
var ulStarList = WPTB_Helper.findAncestor(event.target, 'wptb-rating-stars-list');
|
5877 |
-
if (ulStarList) {
|
5878 |
-
var children = ulStarList.children;
|
5879 |
-
for (var _i3 = 0; _i3 < children.length; _i3++) {
|
5880 |
-
children[_i3].classList.remove('wptb-rating-star-selected-full');
|
5881 |
-
children[_i3].classList.remove('wptb-rating-star-selected-half');
|
5882 |
-
}
|
5883 |
-
}
|
5884 |
-
};
|
5885 |
-
}
|
5886 |
-
}
|
5887 |
-
}
|
5888 |
-
|
5889 |
-
var node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\d+)/i);
|
5890 |
-
if (node_wptb_element_kind_num) {
|
5891 |
-
node.classList.remove(node_wptb_element_kind_num[0]);
|
5892 |
-
}
|
5893 |
-
if (!node.classList.contains('wptb-ph-element')) {
|
5894 |
-
node.classList.add('wptb-ph-element');
|
5895 |
-
if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
|
5896 |
-
node.classList.add('wptb-element-' + element.kind + '-' + index);
|
5897 |
-
}
|
5898 |
-
} else {
|
5899 |
-
if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
|
5900 |
-
node.classList.add('wptb-element-' + element.kind + '-' + index);
|
5901 |
-
}
|
5902 |
-
}
|
5903 |
-
new WPTB_ElementOptions(element, index, kindIndexProt);
|
5904 |
-
|
5905 |
-
document.counter.increment(element.kind);
|
5906 |
};
|
5907 |
-
|
5908 |
//# sourceMappingURL=admin.js.map
|
1 |
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
2 |
+
|
3 |
var WPTB_ActionsField = function WPTB_ActionsField() {
|
4 |
var _this = this;
|
5 |
|
27 |
if (actionType == 1) {
|
28 |
|
29 |
var btnDelete = void 0,
|
30 |
+
btnCopy = void 0;
|
|
|
31 |
|
32 |
+
btnDelete = document.createElement('span'), btnCopy = document.createElement('span'), actions = document.createElement('div');
|
33 |
|
34 |
actions.classList.add('wptb-actions');
|
35 |
btnDelete.classList.add('dashicons', 'dashicons-trash', 'wptb-delete-action');
|
36 |
btnCopy.classList.add('dashicons', 'dashicons-admin-page', 'wptb-duplicate-action');
|
|
|
|
|
37 |
|
|
|
38 |
actions.appendChild(btnCopy);
|
39 |
actions.appendChild(btnDelete);
|
40 |
+
|
41 |
body.appendChild(actions);
|
42 |
|
43 |
actions.activeElem = thisNode;
|
47 |
btnDelete.onclick = function (event) {
|
48 |
var act = event.target.parentNode.activeElem,
|
49 |
el = act.parentNode;
|
|
|
50 |
|
51 |
+
if (act && act.className.match(/wptb-element-(.+)-(\d+)/i)) {
|
52 |
+
WPTB_Helper.elementControlsStateDelete(act);
|
53 |
+
}
|
54 |
+
|
55 |
+
if (act) {
|
56 |
+
el.removeChild(act);
|
57 |
+
}
|
58 |
+
|
59 |
+
if (act && (typeof act === 'undefined' ? 'undefined' : _typeof(act)) === 'object' && act.hasOwnProperty('kind') && act.kind == 'text') {
|
60 |
var thisRow = el.parentNode;
|
61 |
if (thisRow.classList.contains('wptb-table-head')) {
|
62 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
65 |
}
|
66 |
|
67 |
var wptbActionsField = new WPTB_ActionsField();
|
|
|
68 |
wptbActionsField.actionsRemove();
|
69 |
+
|
70 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
71 |
wptbTableStateSaveManager.tableStateSet();
|
72 |
};
|
76 |
infArr = void 0,
|
77 |
type = void 0;
|
78 |
var activeElement = event.target.parentNode.activeElem;
|
|
|
|
|
|
|
|
|
79 |
var td = activeElement.parentNode;
|
80 |
+
infArr = activeElement.className.match(/wptb-element-(.+)-(\d+)/i);
|
81 |
+
if (infArr && Array.isArray(infArr)) {
|
82 |
+
type = infArr[1];
|
83 |
+
var data = {};
|
84 |
+
data.kind = type;
|
85 |
+
data.elemProt = activeElement;
|
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 |
td.insertBefore(copy.getDOMElement(), activeElement.nextSibling);
|
92 |
+
} else {
|
93 |
+
copy = {};
|
94 |
+
var elementCopy = activeElement.cloneNode(true);
|
95 |
+
elementCopy.classList.remove('wptb-directlyhovered');
|
96 |
|
97 |
+
copy.getDOMElement = function () {
|
98 |
+
return elementCopy;
|
99 |
+
};
|
100 |
|
101 |
+
applyGenericItemSettings(copy);
|
102 |
|
103 |
td.insertBefore(copy.getDOMElement(), activeElement.nextSibling);
|
|
|
|
|
104 |
|
105 |
+
WPTB_Helper.wptbDocumentEventGenerate('wptb-inner-element:copy', activeElement, copy.getDOMElement());
|
106 |
}
|
107 |
|
108 |
WPTB_innerElementSet(copy.getDOMElement());
|
109 |
|
110 |
var wptbActionsField = new WPTB_ActionsField(1, activeElement);
|
|
|
111 |
wptbActionsField.setParameters(activeElement);
|
112 |
|
113 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
114 |
wptbTableStateSaveManager.tableStateSet();
|
115 |
};
|
116 |
|
117 |
+
if (thisNode.classList.contains('wptb-ph-element')) {
|
118 |
+
var btnMove = void 0;
|
119 |
+
btnMove = document.createElement('span');
|
120 |
+
btnMove.classList.add("dashicons", "dashicons-move", 'wptb-move-action');
|
121 |
+
btnMove.draggable = true;
|
122 |
+
actions.appendChild(btnMove);
|
123 |
+
|
124 |
+
btnMove.ondragstart = function (event) {
|
125 |
+
var wptbElementIconsDirectories = 'wptb-element-icons-directories';
|
126 |
+
var tmplIconsDirectories = wp.template(wptbElementIconsDirectories);
|
127 |
+
var data = {};
|
128 |
+
var jsonIconsDirectories = tmplIconsDirectories(data);
|
129 |
+
var IconsDirectories = JSON.parse(jsonIconsDirectories);
|
130 |
+
|
131 |
+
var dragImages = void 0,
|
132 |
+
actions = event.target.parentNode,
|
133 |
+
activeElem = actions.activeElem,
|
134 |
+
infArr = void 0,
|
135 |
+
type = void 0;
|
136 |
+
infArr = activeElem.className.match(/wptb-element-(.+)-(\d+)/i);
|
137 |
+
if (infArr && Array.isArray(infArr)) {
|
138 |
+
type = infArr[1];
|
139 |
+
activeElem.classList.add('wptb-moving-mode');
|
140 |
+
|
141 |
+
if (IconsDirectories && (typeof IconsDirectories === 'undefined' ? 'undefined' : _typeof(IconsDirectories)) === 'object' && IconsDirectories[type]) {
|
142 |
+
dragImages = WPTB_Helper.getElementIcon(IconsDirectories[type]);
|
143 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
|
145 |
+
event.dataTransfer.effectAllowed = 'move';
|
146 |
+
event.dataTransfer.setDragImage(dragImages, 0, 0);
|
147 |
+
event.dataTransfer.setData('node', 'wptb-element-' + infArr[1] + '-' + infArr[2]);
|
148 |
+
event.dataTransfer.setData('wptb-moving-mode', 'wptb-element-' + infArr[1] + '-' + infArr[2]);
|
149 |
+
event.dataTransfer.setData('wptbElIndic-' + infArr[1], 'wptbElIndic-' + infArr[1]);
|
150 |
+
var act = event.target.parentNode.activeElem;
|
151 |
+
if (act.kind == 'text') {
|
152 |
+
var thisRow = act.parentNode.parentNode;
|
153 |
+
if (thisRow.classList.contains('wptb-table-head')) {
|
154 |
+
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
155 |
+
WPTB_Helper.dataTitleColumnSet(table);
|
156 |
+
}
|
157 |
+
}
|
158 |
+
} else {
|
159 |
+
_this.style.display = 'none';
|
160 |
+
console.log(_this);
|
161 |
+
}
|
162 |
|
163 |
+
_this.actionsHide();
|
164 |
+
};
|
165 |
|
166 |
+
btnMove.ondragend = function (event) {
|
167 |
+
WPTB_Helper.elementDragEndClear();
|
168 |
+
};
|
169 |
}
|
170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
actions.style.display = 'block';
|
172 |
|
173 |
_this.wptbActions = actions;
|
175 |
};
|
176 |
|
177 |
this.setParameters = function (thisNode) {
|
178 |
+
|
179 |
if (!_this.wptbActions) {
|
180 |
var actions = document.getElementsByClassName('wptb-actions');
|
181 |
if (actions.length > 0) {
|
182 |
_this.wptbActions = actions[0];
|
183 |
+
} else {
|
184 |
+
_this.wptbActions = false;
|
185 |
}
|
186 |
}
|
187 |
|
188 |
+
if (_this.wptbActions && _this.wptbActions.classList.contains('wptb-actions')) {
|
189 |
_this.wptbActions.style.display = 'block';
|
190 |
+
} else {
|
191 |
+
return;
|
192 |
}
|
193 |
|
194 |
var coordinatesElement = thisNode.getBoundingClientRect();
|
203 |
_this.wptbActions.style.top = parseFloat(coordinatesElement.top) - 15 + 'px';
|
204 |
_this.wptbActions.style.left = parseFloat(coordinatesElement.right) - parseFloat(_this.wptbActions.clientWidth) + 1 + 'px';
|
205 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
_this.wptbActions.style.display = 'block';
|
207 |
thisNode.classList.add('wptb-directlyhovered');
|
208 |
|
209 |
wptbContainer.addEventListener('scroll', correctTop, false);
|
210 |
};
|
211 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
this.leaveFromField = function (event, node, actionType) {
|
213 |
+
if (!_this.wptbActions) {
|
214 |
+
var actions = document.getElementsByClassName('wptb-actions');
|
215 |
+
if (actions.length > 0) {
|
216 |
+
_this.wptbActions = actions[0];
|
217 |
+
} else {
|
218 |
+
_this.wptbActions = false;
|
219 |
+
}
|
220 |
+
}
|
221 |
+
|
222 |
+
if (!_this.wptbActions) {
|
223 |
+
return;
|
224 |
+
}
|
225 |
+
|
226 |
if (event.relatedTarget) {
|
227 |
if (event.relatedTarget.classList.contains('wptb-actions') || event.relatedTarget.classList.contains('wptb-move-action') || event.relatedTarget.classList.contains('wptb-duplicate-action') || event.relatedTarget.classList.contains('wptb-delete-action')) {
|
228 |
if (!_this.wptbActions) {
|
229 |
_this.wptbActions = document.getElementsByClassName('wptb-actions')[0];
|
230 |
}
|
231 |
_this.wptbActions.onmouseleave = function (event) {
|
232 |
+
if (event.relatedTarget != null && (event.relatedTarget.classList.contains('wptb-ph-element') || WPTB_Helper.findAncestor(event.relatedTarget, 'wptb-ph-element')) && event.relatedTarget != _this.wptbActions.activeElem && WPTB_Helper.findAncestor(event.relatedTarget, 'wptb-directlyhovered') != _this.wptbActions.activeElem) {
|
233 |
+
|
234 |
+
// this.wptbActions.style.display = 'none';
|
235 |
+
// event.relatedTarget.parentNode.parentNode.classList.remove( 'wptb-directlyhovered' );
|
236 |
+
//
|
237 |
+
// let wptbActionsField = new WPTB_ActionsField();
|
238 |
+
//
|
239 |
+
// wptbActionsField.addActionField( 1, event.relatedTarget.parentNode.parentNode );
|
240 |
+
//
|
241 |
+
// wptbActionsField.setParameters( event.relatedTarget.parentNode.parentNode );
|
242 |
+
} else {}
|
243 |
|
244 |
+
var wptbActionsField = new WPTB_ActionsField();
|
|
|
245 |
|
246 |
+
wptbActionsField.leaveFromField(event, event.relatedTarget.parentNode.parentNode);
|
247 |
|
248 |
+
event.target.activeElem.classList.remove('wptb-directlyhovered');
|
|
|
|
|
|
|
|
|
249 |
};
|
250 |
|
251 |
return;
|
252 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
}
|
254 |
|
255 |
node.classList.remove('wptb-directlyhovered');
|
256 |
_this.wptbActions.style.display = 'none';
|
257 |
|
258 |
+
if (event.relatedTarget) {
|
259 |
+
if (event.relatedTarget.classList.contains('wptb-ph-element') || WPTB_Helper.findAncestor(event.relatedTarget, 'wptb-ph-element')) {
|
260 |
+
_this.addActionField(1, event.relatedTarget.parentNode);
|
|
|
|
|
|
|
261 |
|
262 |
+
_this.setParameters(event.relatedTarget.parentNode);
|
|
|
263 |
}
|
264 |
}
|
265 |
};
|
307 |
document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';
|
308 |
var wptbTableSetupEl = document.getElementsByClassName('wptb-table-setup')[0];
|
309 |
wptbTableSetupEl.appendChild(WPTB_Parser(ans[1]));
|
310 |
+
|
311 |
+
var body = document.getElementsByTagName('body')[0];
|
312 |
+
|
313 |
+
if (ans[2]) {
|
314 |
+
var elementsSettingTemplateJs = document.createElement('script');
|
315 |
+
elementsSettingTemplateJs.setAttribute('type', 'text/html');
|
316 |
+
elementsSettingTemplateJs.setAttribute('class', 'wptb-element-datas');
|
317 |
+
|
318 |
+
elementsSettingTemplateJs.innerHTML = ans[2];
|
319 |
+
|
320 |
+
body.appendChild(elementsSettingTemplateJs);
|
321 |
+
}
|
322 |
+
|
323 |
WPTB_Table();
|
324 |
WPTB_LeftPanel();
|
325 |
WPTB_Settings();
|
346 |
|
347 |
document.addEventListener('DOMContentLoaded', WPTB_Builder);
|
348 |
})();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
349 |
var WPTB_Cell = function WPTB_Cell(callback, DOMElement) {
|
350 |
|
351 |
function highlightRow(td) {
|
411 |
|
412 |
if (wptbPhElement.length > 0) {
|
413 |
var _loop = function _loop(i) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
414 |
wptbPhElement[i].getDOMElement = function () {
|
415 |
return wptbPhElement[i];
|
416 |
};
|
419 |
|
420 |
var wptbElementTypeClass = wptbPhElement[i].className.match(/wptb-element-((.+-)\d+)/i);
|
421 |
if (wptbElementTypeClass && Array.isArray(wptbElementTypeClass)) {
|
422 |
+
(function () {
|
423 |
+
var wptbTypeElementArr = wptbElementTypeClass[1].split('-');
|
424 |
+
wptbPhElement[i].kind = wptbTypeElementArr[0];
|
425 |
+
applyGenericItemSettings(wptbPhElement[i], wptbElementTypeClass[1]);
|
426 |
+
var wptbInternalActiveElement = wptbPhElement[i].getElementsByClassName('wptb-in-element');
|
427 |
+
if (wptbInternalActiveElement.length > 0) {
|
428 |
+
var _loop2 = function _loop2(j) {
|
429 |
+
var wptbInternalActiveElementObj = {};
|
430 |
+
wptbInternalActiveElementObj.getDOMElement = function () {
|
431 |
+
return wptbInternalActiveElement[j];
|
432 |
+
};
|
433 |
+
|
434 |
+
applyGenericItemSettings(wptbInternalActiveElementObj);
|
435 |
+
};
|
436 |
+
|
437 |
+
for (var j = 0; j < wptbInternalActiveElement.length; j++) {
|
438 |
+
_loop2(j);
|
439 |
}
|
440 |
}
|
441 |
+
})();
|
442 |
}
|
443 |
};
|
444 |
|
574 |
WPTB_Helper.dataTitleColumnSet(table);
|
575 |
}
|
576 |
|
577 |
+
// start item javascript if item is new
|
578 |
+
var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
|
579 |
+
var elemKind = infArr[1];
|
580 |
+
if (e.dataTransfer.getData('wptbElement') && (elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list')) {
|
581 |
+
//WPTB_Helper.elementStartScript( element );
|
582 |
+
}
|
583 |
+
|
584 |
wptbDropHandle.style.display = 'none';
|
585 |
wptbDropBorderMarker.style.display = 'none';
|
586 |
|
587 |
WPTB_innerElementSet(element);
|
|
|
588 |
if (!element.classList.contains('wptb-image-container') || element.wptbMovingMode == 1) {
|
589 |
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
590 |
wptbTableStateSaveManager.tableStateSet();
|
704 |
|
705 |
return this;
|
706 |
};
|
707 |
+
var WPTB_ElementObject = function WPTB_ElementObject(data) {
|
708 |
+
var DOMElement = void 0,
|
709 |
+
kindIndexProt = void 0,
|
710 |
+
copy = void 0;
|
711 |
+
if (!data.elemProt) {
|
712 |
+
DOMElement = document.createElement('div'), kindIndexProt = undefined, copy = false;
|
713 |
+
DOMElement.classList.add('wptb-' + data.kind + '-container', 'wptb-ph-element', 'wptb-item-javascript-indic');
|
714 |
+
|
715 |
+
var wpTemplateId = 'wptb-' + data.kind + '-content';
|
716 |
+
var template = wp.template(wpTemplateId);
|
717 |
+
data.node = DOMElement;
|
718 |
+
var itemHtml = template(data);
|
719 |
+
|
720 |
+
itemHtml = itemHtml.replace(/\r|\n|\t/g, '').trim();
|
721 |
+
DOMElement.innerHTML = itemHtml;
|
722 |
+
} else {
|
723 |
+
DOMElement = data.elemProt.cloneNode(true);
|
724 |
+
DOMElement.classList.remove('wptb-directlyhovered');
|
725 |
+
var wptbElementMutch = data.elemProt.className.match(/wptb-element-((.+-)\d+)/i);
|
726 |
+
if (wptbElementMutch && Array.isArray(wptbElementMutch)) {
|
727 |
+
kindIndexProt = wptbElementMutch[1];
|
728 |
+
};
|
729 |
+
copy = true;
|
730 |
|
731 |
+
if (data.tinyMceClear) {
|
732 |
+
DOMElement = WPTB_Helper.elementClearFromTinyMce(DOMElement);
|
733 |
+
}
|
734 |
+
}
|
735 |
|
736 |
+
var inElems = DOMElement.querySelectorAll('.wptb-in-element');
|
737 |
+
if (inElems.length > 0) {
|
738 |
+
var _loop = function _loop(i) {
|
739 |
+
var inElemObj = {};
|
740 |
+
inElemObj.getDOMElement = function () {
|
741 |
+
return inElems[i];
|
742 |
+
};
|
743 |
|
744 |
+
applyGenericItemSettings(inElemObj);
|
745 |
+
};
|
746 |
|
747 |
+
for (var i = 0; i < inElems.length; i++) {
|
748 |
+
_loop(i);
|
749 |
+
}
|
750 |
}
|
751 |
|
752 |
+
window.addEventListener('item:onmouseenter', function (event) {
|
753 |
+
//console.log( event );
|
754 |
+
}, false);
|
755 |
|
756 |
+
this.kind = data.kind;
|
757 |
+
this.getDOMElement = function () {
|
758 |
+
return DOMElement;
|
759 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
760 |
|
761 |
+
applyGenericItemSettings(this, kindIndexProt, copy);
|
762 |
+
return this;
|
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 |
+
var children = document.getElementById("element-options-group").childNodes;
|
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);
|
890 |
+
return result ? 'rgb(' + parseInt(result[1], 16) + ',' + parseInt(result[2], 16) + ',' + parseInt(result[3], 16) + ')' : null;
|
891 |
+
},
|
892 |
+
rgbToHex: function rgbToHex(rgb) {
|
893 |
+
var rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
|
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');
|
900 |
+
img.src = icon_directory;
|
901 |
+
return img;
|
902 |
+
},
|
903 |
+
elementDragEndClear: function elementDragEndClear() {
|
904 |
+
var wptbMovingMode = document.getElementsByClassName('wptb-moving-mode');
|
905 |
+
if (wptbMovingMode.length > 0) {
|
906 |
+
for (var i = 0; i < wptbMovingMode.length; i++) {
|
907 |
+
wptbMovingMode[i].classList.remove('wptb-moving-mode');
|
908 |
+
}
|
909 |
+
}
|
910 |
|
911 |
+
var wptbDropHandles = document.getElementsByClassName('wptb-drop-handle');
|
912 |
+
if (wptbDropHandles.length > 0) {
|
913 |
+
for (var _i = 0; _i < wptbDropHandles.length; _i++) {
|
914 |
+
wptbDropHandles[_i].style.display = 'none';
|
915 |
}
|
916 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
917 |
|
918 |
+
var wptbDropBorderMarkers = document.getElementsByClassName('wptb-drop-border-marker');
|
919 |
+
if (wptbDropBorderMarkers.length > 0) {
|
920 |
+
for (var _i2 = 0; _i2 < wptbDropBorderMarkers.length; _i2++) {
|
921 |
+
wptbDropBorderMarkers[_i2].style.display = 'none';
|
922 |
+
}
|
923 |
+
}
|
924 |
+
},
|
925 |
+
linkHttpCheckChange: function linkHttpCheckChange(link) {
|
926 |
+
if (link) {
|
927 |
+
if (link.indexOf('http://') == -1 && link.indexOf('https://') == -1) {
|
928 |
+
var linkArr = link.split('/'),
|
929 |
+
linkClean = void 0;
|
930 |
+
if (Array.isArray(linkArr) && linkArr.length > 0) {
|
931 |
+
linkClean = linkArr[linkArr.length - 1];
|
|
|
|
|
932 |
}
|
933 |
+
return document.location.protocol + '//' + linkClean;
|
934 |
+
} else {
|
935 |
+
return link;
|
936 |
+
}
|
937 |
+
} else {
|
938 |
+
return '';
|
939 |
+
}
|
940 |
+
},
|
941 |
+
dataTitleColumnSet: function dataTitleColumnSet(table) {
|
942 |
+
var rows = table.rows,
|
943 |
+
rowHead = rows[0];
|
944 |
+
var computedStyleRowHead = getComputedStyle(rowHead);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
945 |
|
946 |
var rowHeadChildren = rowHead.children;
|
947 |
var contentsForHeader = {};
|
964 |
contentsForHeader[rowHeadChildren[i].dataset.xIndex] = ['', '', '', computedStyleRowHead.backgroundColor, ''];
|
965 |
}
|
966 |
}
|
967 |
+
for (var _i3 = 1; _i3 < rows.length; _i3++) {
|
968 |
+
var thisRow = rows[_i3],
|
969 |
thisRowChildren = thisRow.children;
|
970 |
for (var _j = 0; _j < thisRowChildren.length; _j++) {
|
971 |
if (contentsForHeader[thisRowChildren[_j].dataset.xIndex]) {
|
1031 |
} else {
|
1032 |
var wpPickerContainer = WPTB_Helper.findAncestor(event.target, 'wp-picker-container');
|
1033 |
if (wpPickerContainer) {
|
1034 |
+
if (event.originalEvent.type == 'square' || event.originalEvent.type == 'strip') {
|
1035 |
+
var body = document.getElementsByTagName('body')[0];
|
1036 |
+
body.removeEventListener('mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false);
|
1037 |
+
body.addEventListener('mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1038 |
}
|
1039 |
}
|
1040 |
}
|
1041 |
},
|
1042 |
+
irisStripMouseUpStateSaveManager: function irisStripMouseUpStateSaveManager() {
|
1043 |
+
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1044 |
+
wptbTableStateSaveManager.tableStateSet();
|
1045 |
+
|
1046 |
+
var body = document.getElementsByTagName('body')[0];
|
1047 |
+
body.removeEventListener('mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false);
|
1048 |
+
},
|
1049 |
wpColorPickerClear: function wpColorPickerClear(attribute, isId) {
|
1050 |
var input = void 0;
|
1051 |
if (isId) {
|
1101 |
return cellHeight;
|
1102 |
},
|
1103 |
newElementProxy: function newElementProxy(el) {
|
1104 |
+
if (el) {
|
1105 |
+
var data = { kind: el };
|
1106 |
+
return new WPTB_ElementObject(data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1107 |
}
|
1108 |
},
|
1109 |
wpColorPickerChange: function wpColorPickerChange(event, ui) {
|
1139 |
} else if (type == 'star_rating') {
|
1140 |
if (parent.dataset.type == 'star-color') {
|
1141 |
var ratingStar = affectedEl.querySelectorAll('li');
|
1142 |
+
for (var _i4 = 0; _i4 < ratingStar.length; _i4++) {
|
1143 |
+
var span = ratingStar[_i4].getElementsByTagName('span');
|
1144 |
for (var j = 0; j < span.length; j++) {
|
1145 |
span[j].style.fill = uiColor;
|
1146 |
}
|
1147 |
}
|
1148 |
} else if (parent.dataset.type == 'numeral-rating-color') {
|
1149 |
+
var wptbTextMessageSize = affectedEl.querySelector('.wptb-number-rating');
|
1150 |
wptbTextMessageSize.style.color = uiColor;
|
1151 |
}
|
1152 |
} else {
|
1153 |
affectedEl.style.color = uiColor;
|
1154 |
}
|
1155 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1156 |
numberImputSize: function numberImputSize(wptbNumberInputs, maxCount, maxValue) {
|
1157 |
wptbNumberInputs.onkeydown = function () {
|
1158 |
var thisValue = this.value;
|
1166 |
};
|
1167 |
wptbNumberInputs.onkeyup = function () {
|
1168 |
var thisValue = this.value;
|
1169 |
+
if (parseInt(thisValue, 10) > parseInt(maxValue, 10)) {
|
|
|
1170 |
this.value = maxValue;
|
1171 |
}
|
1172 |
+
|
1173 |
+
var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
|
1174 |
+
wptbTableStateSaveManager.tableStateSet();
|
1175 |
};
|
1176 |
},
|
1177 |
+
ucfirst: function ucfirst(str) {
|
1178 |
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
1179 |
+
},
|
1180 |
+
wptbDocumentEventGenerate: function wptbDocumentEventGenerate(eventName, element, details) {
|
1181 |
+
if (eventName && element) {
|
1182 |
+
if (!details) {
|
1183 |
+
details = true;
|
1184 |
+
}
|
1185 |
+
var event = new CustomEvent(eventName, { detail: details, bubbles: true });
|
1186 |
+
element.dispatchEvent(event);
|
1187 |
}
|
1188 |
+
},
|
1189 |
+
// run script for the pointed element
|
1190 |
+
elementStartScript: function elementStartScript(element) {
|
1191 |
+
//let script = element.getElementsByTagName( 'script' );
|
1192 |
+
var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
|
1193 |
+
if (infArr && Array.isArray(infArr)) {
|
1194 |
+
var kind = infArr[1];
|
1195 |
+
if (kind) {
|
1196 |
+
// let wpTemplateId = 'wptb-' + kind + '-script';
|
1197 |
+
// let template = wp.template( wpTemplateId );
|
1198 |
+
// let data = {elemClass: infArr[0]};
|
1199 |
+
// let elementScriptText = template( data );
|
1200 |
+
// elementScriptText = elementScriptText.replace(/\r|\n|\t/g, '').trim();
|
1201 |
+
//
|
1202 |
+
// let scriptNew = document.createElement( 'script' );
|
1203 |
+
// scriptNew.setAttribute( 'type', 'text/javascript' );
|
1204 |
+
// scriptNew.innerHTML = elementScriptText;
|
1205 |
+
// element.parentNode.appendChild( scriptNew );
|
1206 |
+
|
1207 |
+
// element.parentNode.removeChild( scriptNew );
|
1208 |
+
if (kind in WPTB_ElementsScriptsLauncher) {
|
1209 |
+
WPTB_ElementsScriptsLauncher[kind](element);
|
1210 |
+
}
|
1211 |
+
}
|
1212 |
+
}
|
1213 |
+
},
|
1214 |
+
// deletes event handlers from the pointed option element and from all his daughter elements
|
1215 |
+
deleteEventHandlers: function deleteEventHandlers(element) {
|
1216 |
+
if (element) {
|
1217 |
+
jQuery(element).off();
|
1218 |
+
var elementChildren = element.children;
|
1219 |
+
if (elementChildren) {
|
1220 |
+
for (var i = 0; i < elementChildren.length; i++) {
|
1221 |
+
WPTB_Helper.deleteEventHandlers(elementChildren[i]);
|
1222 |
+
}
|
1223 |
+
}
|
1224 |
+
} else {
|
1225 |
return;
|
1226 |
}
|
1227 |
+
},
|
1228 |
+
// replace all occurrences in a string
|
1229 |
+
replaceAll: function replaceAll(string, search, replace) {
|
1230 |
+
return string.split(search).join(replace);
|
1231 |
+
},
|
1232 |
+
// clears code from TinyMCE attributes
|
1233 |
+
elementClearFromTinyMce: function elementClearFromTinyMce(element) {
|
1234 |
+
var mceContentBodys = element.querySelectorAll('.mce-content-body');
|
1235 |
+
if (mceContentBodys.length > 0) {
|
1236 |
+
for (var k = 0; k < mceContentBodys.length; k++) {
|
1237 |
+
mceContentBodys[k].classList.remove('mce-content-body');
|
1238 |
+
}
|
1239 |
+
}
|
1240 |
|
1241 |
+
var dataMceStyle = element.querySelectorAll('[data-mce-style]');
|
1242 |
+
if (dataMceStyle.length > 0) {
|
1243 |
+
for (var _k = 0; _k < dataMceStyle.length; _k++) {
|
1244 |
+
dataMceStyle[_k].removeAttribute('data-mce-style');
|
1245 |
+
}
|
1246 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1247 |
|
1248 |
+
var mceEditFocus = element.querySelectorAll('.mce-edit-focus');
|
1249 |
+
if (mceEditFocus.length > 0) {
|
1250 |
+
for (var _k2 = 0; _k2 < mceEditFocus.length; _k2++) {
|
1251 |
+
mceEditFocus[_k2].classList.remove('mce-edit-focus');
|
1252 |
+
}
|
1253 |
+
}
|
|
|
|
|
1254 |
|
1255 |
+
var contentEditable = element.querySelectorAll('[contenteditable]');
|
1256 |
+
if (contentEditable.length > 0) {
|
1257 |
+
for (var _k3 = 0; _k3 < contentEditable.length; _k3++) {
|
1258 |
+
contentEditable[_k3].removeAttribute('contenteditable');
|
|
|
|
|
1259 |
}
|
1260 |
+
}
|
|
|
|
|
|
|
1261 |
|
1262 |
+
var spellCheck = element.querySelectorAll('[spellcheck]');
|
1263 |
+
if (spellCheck.length > 0) {
|
1264 |
+
for (var _k4 = 0; _k4 < spellCheck.length; _k4++) {
|
1265 |
+
spellCheck[_k4].removeAttribute('spellcheck');
|
1266 |
+
}
|
1267 |
+
}
|
1268 |
|
1269 |
+
var mceIds = element.querySelectorAll('[id^=mce_]');
|
1270 |
+
if (mceIds.length > 0) {
|
1271 |
+
for (var _k5 = 0; _k5 < mceIds.length; _k5++) {
|
1272 |
+
mceIds[_k5].removeAttribute('id');
|
1273 |
+
}
|
1274 |
+
}
|
1275 |
|
1276 |
+
return element;
|
1277 |
+
},
|
1278 |
+
elementOptionContainerCustomClassSet: function elementOptionContainerCustomClassSet(targetInput, customClassForContainer) {
|
1279 |
+
if (targetInput && customClassForContainer) {
|
1280 |
+
var containerElement = WPTB_Helper.findAncestor(targetInput, 'wptb-element-option');
|
1281 |
+
if (containerElement) {
|
1282 |
+
containerElement.classList.add(customClassForContainer);
|
1283 |
+
}
|
1284 |
+
}
|
1285 |
+
},
|
1286 |
+
elementOptionContainerAdditionalStyles: function elementOptionContainerAdditionalStyles(targetInput, containerAdditionalStyles) {
|
1287 |
+
if (targetInput && containerAdditionalStyles) {
|
1288 |
+
var containerElement = WPTB_Helper.findAncestor(targetInput, 'wptb-element-option');
|
1289 |
+
var containerStylesArrOne = containerAdditionalStyles.split(';');
|
1290 |
+
|
1291 |
+
if (containerElement && containerStylesArrOne) {
|
1292 |
+
var containerStylesSet = function containerStylesSet(containerStyleStr, containerElement) {
|
1293 |
+
if (containerStyleStr) {
|
1294 |
+
containerStyleStrArr = containerStyleStr.split(':');
|
1295 |
+
|
1296 |
+
if (containerStyleStrArr && Array.isArray(containerStyleStrArr)) {
|
1297 |
+
containerElement.style[containerStyleStrArr[0]] = containerStyleStrArr[1];
|
1298 |
+
}
|
1299 |
+
}
|
1300 |
+
};
|
1301 |
+
|
1302 |
+
if (containerStylesArrOne && Array.isArray(containerStylesArrOne)) {
|
1303 |
+
for (var i = 0; i < containerStylesArrOne.length; i++) {
|
1304 |
+
console.log(containerStylesArrOne);
|
1305 |
+
if (containerStylesArrOne[i]) {
|
1306 |
+
containerStylesSet(containerStylesArrOne[i], containerElement);
|
1307 |
+
}
|
1308 |
+
}
|
1309 |
+
} else {
|
1310 |
+
containerStylesSet(containerStylesArrOne, containerElement);
|
1311 |
+
}
|
1312 |
+
}
|
1313 |
+
}
|
1314 |
+
},
|
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('click', function () {
|
1319 |
+
var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i),
|
1320 |
+
elementKind = void 0;
|
1321 |
+
|
1322 |
+
if (infArr && Array.isArray(infArr)) {
|
1323 |
+
elementKind = infArr[1];
|
1324 |
+
}
|
1325 |
+
|
1326 |
+
if (!element.hasOwnProperty('сontrolsConnectIndic') || element.сontrolsConnectIndic !== true && elementKind) {
|
1327 |
+
var elementsSettingsTemplateJs = document.getElementsByClassName('wptb-element-datas');
|
1328 |
+
if (elementsSettingsTemplateJs.length > 0) {
|
1329 |
+
(function () {
|
1330 |
+
elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];
|
1331 |
+
|
1332 |
+
var elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
1333 |
+
var controlClassesNames = [];
|
1334 |
+
if (elementsSettings) {
|
1335 |
+
elementsSettings = JSON.parse(elementsSettings);
|
1336 |
+
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object') {
|
1337 |
+
if ('tmpl-wptb-element-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings) {
|
1338 |
+
var elementSettings = elementsSettings['tmpl-wptb-element-datas-' + infArr[1] + '-' + infArr[2]];
|
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");
|
1342 |
+
var keyInfArr = key.match(regularText);
|
1343 |
+
if (keyInfArr && Array.isArray(keyInfArr)) {
|
1344 |
+
var controlClass = key.replace('data-', '');
|
1345 |
+
controlClassesNames.push([controlClass, keyInfArr[2]]);
|
1346 |
+
}
|
1347 |
+
});
|
1348 |
+
}
|
1349 |
+
}
|
1350 |
+
}
|
1351 |
+
}
|
1352 |
+
|
1353 |
+
var _loop = function _loop(i) {
|
1354 |
+
element.addEventListener('wptb-control:' + controlClassesNames[i][0], function () {
|
1355 |
+
var controls = {};
|
1356 |
+
var controlName = controlClassesNames[i][1];
|
1357 |
+
var control = document.getElementsByClassName(controlClassesNames[i][0]);
|
1358 |
+
if (control.length > 0 && controlName) {
|
1359 |
+
var targetControlValue = WPTB_Helper.targetControlValueGet(control);
|
1360 |
+
|
1361 |
+
controls[controlName] = targetControlValue;
|
1362 |
+
}
|
1363 |
+
|
1364 |
+
functionHandler(controls, element);
|
1365 |
+
}, false);
|
1366 |
|
1367 |
+
element.сontrolsConnectIndic = true;
|
1368 |
+
};
|
1369 |
+
|
1370 |
+
for (var i = 0; i < controlClassesNames.length; i++) {
|
1371 |
+
_loop(i);
|
1372 |
+
}
|
1373 |
+
})();
|
1374 |
+
}
|
1375 |
+
}
|
1376 |
+
}, false);
|
1377 |
+
}
|
1378 |
+
},
|
1379 |
+
oneControlInclude: function oneControlInclude(element, functionHandler, controlName) {
|
1380 |
+
if (element && (typeof element === 'undefined' ? 'undefined' : _typeof(element)) === 'object' && typeof functionHandler === 'function' && typeof controlName === 'string') {
|
1381 |
+
var infArr = element.className.match(/wptb-element-((.+-)\d+)/i),
|
1382 |
+
elementKind = void 0;
|
1383 |
+
|
1384 |
+
if (infArr && Array.isArray(infArr)) {
|
1385 |
+
elementKind = infArr[1].split('-')[0];
|
1386 |
+
|
1387 |
+
var wptbContrlStacksConfigId = 'wptb-' + elementKind + '-control-stack';
|
1388 |
+
var tmplControlsConfig = wp.template(wptbContrlStacksConfigId);
|
1389 |
+
var data = {
|
1390 |
+
container: '.' + infArr[0]
|
1391 |
+
};
|
1392 |
+
var jsonControlsConfigJson = tmplControlsConfig(data);
|
1393 |
+
var jsonControlsConfig = JSON.parse(jsonControlsConfigJson);
|
1394 |
+
|
1395 |
+
if (jsonControlsConfig && (typeof jsonControlsConfig === 'undefined' ? 'undefined' : _typeof(jsonControlsConfig)) === 'object' && jsonControlsConfig.hasOwnProperty(controlName)) {
|
1396 |
+
var controlClassName = 'wptb-el-' + infArr[1] + '-' + controlName;
|
1397 |
+
|
1398 |
+
element.addEventListener('wptb-control:' + controlClassName, function (event) {
|
1399 |
+
var control = document.getElementsByClassName(controlClassName);
|
1400 |
+
if (control.length > 0) {
|
1401 |
+
var targetControlValue = WPTB_Helper.targetControlValueGet(control);
|
1402 |
+
|
1403 |
+
functionHandler(targetControlValue, element);
|
1404 |
+
}
|
1405 |
+
}, false);
|
1406 |
+
}
|
1407 |
+
}
|
1408 |
} else {
|
1409 |
+
return false;
|
1410 |
+
}
|
1411 |
+
},
|
1412 |
+
//
|
1413 |
+
innerElementCopyIncludeHandler: function innerElementCopyIncludeHandler(element, functionHandler) {
|
1414 |
+
if (element && (typeof element === 'undefined' ? 'undefined' : _typeof(element)) === 'object' && typeof functionHandler === 'function') {
|
1415 |
+
element.addEventListener('wptb-inner-element:copy', function (event) {
|
1416 |
+
var innerElement = event.detail;
|
1417 |
+
if (innerElement) {
|
1418 |
+
WPTB_Helper.elementClearFromTinyMce(innerElement);
|
1419 |
+
functionHandler(innerElement, element);
|
1420 |
+
}
|
1421 |
+
}, false);
|
1422 |
+
}
|
1423 |
+
},
|
1424 |
+
//
|
1425 |
+
appearDependOn: function appearDependOn(dependOn, targetControlElementClass) {
|
1426 |
+
if (Array.isArray(dependOn)) {
|
1427 |
+
var dependOnControlName = dependOn[0];
|
1428 |
+
var infArr = targetControlElementClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
|
1429 |
+
|
1430 |
+
if (infArr && Array.isArray(infArr)) {
|
1431 |
+
var controlName = infArr[3];
|
1432 |
+
|
1433 |
+
var dependOnControlElementClass = targetControlElementClass.replace(controlName, dependOnControlName);
|
1434 |
+
|
1435 |
+
var dependOnControlElement = document.getElementsByClassName(dependOnControlElementClass);
|
1436 |
+
|
1437 |
+
if (dependOnControlElement.length > 0) {
|
1438 |
+
dependOnControlElement = dependOnControlElement[0];
|
1439 |
+
var targetControlElement = document.getElementsByClassName(targetControlElementClass);
|
1440 |
+
if (targetControlElement.length > 0) {
|
1441 |
+
targetControlElement = targetControlElement[0];
|
1442 |
+
var controlContainerElem = WPTB_Helper.findAncestor(targetControlElement, 'wptb-element-option');
|
1443 |
+
|
1444 |
+
if (controlContainerElem) {
|
1445 |
+
var showHideDependOnControlElement = function showHideDependOnControlElement(dependOnControlElementKind) {
|
1446 |
+
|
1447 |
+
var elementsSettingsTemplateJs = document.getElementsByClassName('wptb-element-datas');
|
1448 |
+
if (elementsSettingsTemplateJs.length > 0) {
|
1449 |
+
elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];
|
1450 |
+
|
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-element-datas-' + dependOnControlElementKind in elementsSettings) {
|
1455 |
+
var elementSettings = elementsSettings['tmpl-wptb-element-datas-' + dependOnControlElementKind];
|
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 |
+
|
1459 |
+
if (elementSettingValue) {
|
1460 |
+
if (dependOn[1] && Array.isArray(dependOn[1]) && dependOn[1].indexOf(elementSettingValue) !== -1) {
|
1461 |
+
controlContainerElem.style.display = 'block';
|
1462 |
+
} else if (dependOn[2] && Array.isArray(dependOn[2]) && dependOn[2].indexOf(elementSettingValue) !== -1) {
|
1463 |
+
controlContainerElem.style.display = 'none';
|
1464 |
+
}
|
1465 |
+
}
|
1466 |
+
}
|
1467 |
+
}
|
1468 |
+
}
|
1469 |
+
}
|
1470 |
+
};
|
1471 |
+
|
1472 |
+
showHideDependOnControlElement(infArr[1]);
|
1473 |
+
|
1474 |
+
dependOnControlElement.addEventListener('change', function () {
|
1475 |
+
showHideDependOnControlElement(infArr[1]);
|
1476 |
+
}, false);
|
1477 |
+
}
|
1478 |
+
}
|
1479 |
+
}
|
1480 |
+
}
|
1481 |
+
}
|
1482 |
+
},
|
1483 |
+
//
|
1484 |
+
controlsStateManager: function controlsStateManager(targetControlClass, controlChangeIndic) {
|
1485 |
+
var targetControls = document.getElementsByClassName(targetControlClass);
|
1486 |
+
if (targetControls.length > 0) {
|
1487 |
+
//targetControls = targetControls[0];
|
1488 |
+
|
1489 |
+
var infArr = targetControlClass.match(/wptb-el-((.+-)\d+)-(.+)/i);
|
1490 |
+
|
1491 |
+
if (infArr && Array.isArray(infArr)) {
|
1492 |
+
var selectorElement = document.querySelector('.wptb-element-' + infArr[1]);
|
1493 |
+
if (selectorElement) {
|
1494 |
+
var elementsSettingsTemplatesJs = void 0;
|
1495 |
+
var elementSettings = {};
|
1496 |
+
var elementsSettings = void 0;
|
1497 |
+
elementsSettingsTemplatesJs = document.getElementsByClassName('wptb-element-datas');
|
1498 |
+
if (elementsSettingsTemplatesJs.length == 0 || elementsSettingsTemplatesJs[0].innerHTML == '') {
|
1499 |
+
var targetControlValue = WPTB_Helper.targetControlValueGet(targetControls);
|
1500 |
+
elementSettings['data-' + targetControlClass] = targetControlValue;
|
1501 |
+
|
1502 |
+
elementsSettings = {};
|
1503 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] = elementSettings;
|
1504 |
+
elementsSettings = JSON.stringify(elementsSettings);
|
1505 |
+
|
1506 |
+
if (elementsSettingsTemplatesJs.length == 0) {
|
1507 |
+
elementsSettingsTemplatesJs = document.createElement('script');
|
1508 |
+
elementsSettingsTemplatesJs.setAttribute('type', 'text/html');
|
1509 |
+
elementsSettingsTemplatesJs.setAttribute('class', 'wptb-element-datas');
|
1510 |
+
} else {
|
1511 |
+
elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];
|
1512 |
+
}
|
1513 |
+
|
1514 |
+
elementsSettingsTemplatesJs.innerHTML = elementsSettings;
|
1515 |
+
|
1516 |
+
var body = document.getElementsByTagName('body')[0];
|
1517 |
+
body.appendChild(elementsSettingsTemplatesJs);
|
1518 |
+
} else {
|
1519 |
+
elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];
|
1520 |
+
elementsSettings = elementsSettingsTemplatesJs.innerHTML;
|
1521 |
+
if (elementsSettings) {
|
1522 |
+
elementsSettings = JSON.parse(elementsSettings);
|
1523 |
+
|
1524 |
+
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object') {
|
1525 |
+
|
1526 |
+
if (controlChangeIndic) {
|
1527 |
+
var _targetControlValue = WPTB_Helper.targetControlValueGet(targetControls);
|
1528 |
+
if (!('tmpl-wptb-element-datas-' + infArr[1] in elementsSettings) || _typeof(elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]) !== 'object') {
|
1529 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] = {};
|
1530 |
+
}
|
1531 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-' + targetControlClass] = _targetControlValue;
|
1532 |
+
elementsSettingsTemplatesJs.innerHTML = JSON.stringify(elementsSettings);
|
1533 |
+
} else if (!('tmpl-wptb-element-datas-' + infArr[1] in elementsSettings && _typeof(elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]) === 'object' && 'data-' + targetControlClass in elementsSettings['tmpl-wptb-element-datas-' + infArr[1]])) {
|
1534 |
+
var _targetControlValue2 = WPTB_Helper.targetControlValueGet(targetControls);
|
1535 |
+
if (!('tmpl-wptb-element-datas-' + infArr[1] in elementsSettings) || _typeof(elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]) !== 'object') {
|
1536 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]] = {};
|
1537 |
+
}
|
1538 |
+
elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-' + targetControlClass] = _targetControlValue2;
|
1539 |
+
elementsSettingsTemplatesJs.innerHTML = JSON.stringify(elementsSettings);
|
1540 |
+
} else if ('tmpl-wptb-element-datas-' + infArr[1] in elementsSettings && _typeof(elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]) === 'object' && 'data-' + targetControlClass in elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]) {
|
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-element-datas-' + infArr[1]]['data-' + targetControlClass][targetControls[i].name];
|
1546 |
+
} else {
|
1547 |
+
_targetControlValue3 = elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-' + targetControlClass];
|
1548 |
+
}
|
1549 |
+
|
1550 |
+
if (_targetControlValue3 == 'checked') {
|
1551 |
+
targetControls[i].checked = true;
|
1552 |
+
} else if (_targetControlValue3 == 'unchecked') {
|
1553 |
+
targetControls[i].checked = false;
|
1554 |
+
}
|
1555 |
+
} else {
|
1556 |
+
targetControls[i].value = elementsSettings['tmpl-wptb-element-datas-' + infArr[1]]['data-' + targetControlClass];
|
1557 |
+
}
|
1558 |
+
}
|
1559 |
+
}
|
1560 |
+
}
|
1561 |
+
}
|
1562 |
+
}
|
1563 |
+
}
|
1564 |
+
}
|
1565 |
+
}
|
1566 |
+
},
|
1567 |
+
//
|
1568 |
+
targetControlValueGet: function targetControlValueGet(targetControls) {
|
1569 |
+
var targetControlValue = void 0;
|
1570 |
+
for (var i = 0; i < targetControls.length; i++) {
|
1571 |
+
if (targetControls[i].type == 'checkbox' && targetControls[i].name) {
|
1572 |
+
if (!targetControlValue) targetControlValue = {};
|
1573 |
+
if (targetControls[i].checked == true) {
|
1574 |
+
targetControlValue[targetControls[i].name] = 'checked';
|
1575 |
+
} else {
|
1576 |
+
targetControlValue[targetControls[i].name] = 'unchecked';
|
1577 |
+
}
|
1578 |
+
} else if (targetControls[i].type == 'checkbox') {
|
1579 |
+
if (targetControls[i].checked == true) {
|
1580 |
+
targetControlValue = 'checked';
|
1581 |
+
} else {
|
1582 |
+
targetControlValue = 'unchecked';
|
1583 |
+
}
|
1584 |
+
} else {
|
1585 |
+
targetControlValue = targetControls[i].value;
|
1586 |
+
}
|
1587 |
+
}
|
1588 |
+
return targetControlValue;
|
1589 |
+
},
|
1590 |
+
//
|
1591 |
+
elementControlsStateCopy: function elementControlsStateCopy(elementProt, copyElem) {
|
1592 |
+
if (elementProt && copyElem) {
|
1593 |
+
var infArrProt = elementProt.className.match(/wptb-element-((.+-)\d+)/i);
|
1594 |
+
var infArrCopy = copyElem.className.match(/wptb-element-((.+-)\d+)/i);
|
1595 |
+
if (infArrProt && Array.isArray(infArrProt) && infArrCopy && Array.isArray(infArrCopy)) {
|
1596 |
+
var elemProtKind = infArrProt[1];
|
1597 |
+
var elemCopyKind = infArrCopy[1];
|
1598 |
+
var elementsSettingsTemplateJs = document.getElementsByClassName('wptb-element-datas');
|
1599 |
+
if (elementsSettingsTemplateJs.length > 0) {
|
1600 |
+
elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];
|
1601 |
+
|
1602 |
+
var elementsSettings = elementsSettingsTemplateJs.innerHTML;
|
1603 |
+
if (elementsSettings) {
|
1604 |
+
elementsSettings = JSON.parse(elementsSettings);
|
1605 |
+
|
1606 |
+
if (elementsSettings && (typeof elementsSettings === 'undefined' ? 'undefined' : _typeof(elementsSettings)) === 'object') {
|
1607 |
+
var elementSettingsProt = elementsSettings['tmpl-wptb-element-datas-' + elemProtKind];
|
1608 |
+
if (elementSettingsProt && (typeof elementSettingsProt === 'undefined' ? 'undefined' : _typeof(elementSettingsProt)) === 'object') {
|
1609 |
+
var elementSettingsCopy = {};
|
1610 |
+
|
1611 |
+
Object.keys(elementSettingsProt).forEach(function (key) {
|
1612 |
+
var elementSettingValue = elementSettingsProt[key];
|
1613 |
+
var elementSettingKeyCopy = key.replace(elemProtKind, elemCopyKind);
|
1614 |
+
elementSettingsCopy[elementSettingKeyCopy] = elementSettingValue;
|
1615 |
+
});
|
1616 |
+
|
1617 |
+
if (Object.keys(elementSettingsCopy).length > 0) {
|
1618 |
+
elementsSettings['tmpl-wptb-element-datas-' + elemCopyKind] = elementSettingsCopy;
|
1619 |
+
|
1620 |
+
elementsSettings = JSON.stringify(elementsSettings);
|
1621 |
+
elementsSettingsTemplateJs.innerHTML = elementsSettings;
|
1622 |
+
}
|
1623 |
+
}
|
1624 |
+
}
|
1625 |
+
}
|
1626 |
+
}
|
1627 |
+
}
|
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');
|
1635 |
+
if (infArr && Array.isArray(infArr) && wptbElementDatas.length > 0) {
|
1636 |
+
wptbElementDatas = wptbElementDatas[0];
|
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-element-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings) {
|
1641 |
+
delete elementsSettings['tmpl-wptb-element-datas-' + infArr[1] + '-' + infArr[2]];
|
1642 |
+
|
1643 |
+
if (Object.keys(elementsSettings).length == 0) {
|
1644 |
+
body.removeChild(wptbElementDatas);
|
1645 |
+
} else {
|
1646 |
+
elementsSettings = JSON.stringify(elementsSettings);
|
1647 |
+
wptbElementDatas.innerHTML = elementsSettings;
|
1648 |
+
}
|
1649 |
+
}
|
1650 |
+
}
|
1651 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1652 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1653 |
};
|
1654 |
var WPTB_Initializer = function WPTB_Initializer() {
|
1655 |
|
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() {
|
1969 |
var wptbTableCellNumber = document.getElementById('wptb-table-cell-number');
|
1970 |
WPTB_Helper.numberImputSize(wptbTableCellNumber, 1, 50);
|
1971 |
|
1972 |
+
// let wptbTextfontSizeNumber = document.getElementById( 'wptb-size-number' );
|
1973 |
+
// WPTB_Helper.numberImputSize( wptbTextfontSizeNumber, 1, 50 );
|
1974 |
+
//
|
1975 |
+
// let wptbImageWidthNumber = document.getElementById( 'wptb-size-number' );
|
1976 |
+
// WPTB_Helper.numberImputSize( wptbImageWidthNumber, 2, 100 );
|
1977 |
|
1978 |
var wptbTableColumnWidthNumber = document.getElementById('wptb-table-column-width-number');
|
1979 |
WPTB_Helper.numberImputSize(wptbTableColumnWidthNumber, 2, 500);
|
2242 |
}
|
2243 |
});
|
2244 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2245 |
var MultipleSelect = function MultipleSelect() {
|
2246 |
|
2247 |
var selectedCells = [],
|
2339 |
|
2340 |
return table;
|
2341 |
};
|
2342 |
+
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; };
|
|
|
|
|
2343 |
|
2344 |
+
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
|
2345 |
+
if (!Object.keys) {
|
2346 |
+
Object.keys = function () {
|
2347 |
+
'use strict';
|
|
|
|
|
2348 |
|
2349 |
+
var hasOwnProperty = Object.prototype.hasOwnProperty,
|
2350 |
+
hasDontEnumBug = !{ toString: null }.propertyIsEnumerable('toString'),
|
2351 |
+
dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'],
|
2352 |
+
dontEnumsLength = dontEnums.length;
|
2353 |
|
2354 |
+
return function (obj) {
|
2355 |
+
if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' && (typeof obj !== 'function' || obj === null)) {
|
2356 |
+
throw new TypeError('Object.keys called on non-object');
|
2357 |
+
}
|
2358 |
+
|
2359 |
+
var result = [],
|
2360 |
+
prop,
|
2361 |
+
i;
|
2362 |
+
|
2363 |
+
for (prop in obj) {
|
2364 |
+
if (hasOwnProperty.call(obj, prop)) {
|
2365 |
+
result.push(prop);
|
2366 |
}
|
2367 |
}
|
2368 |
|
2369 |
+
if (hasDontEnumBug) {
|
2370 |
+
for (i = 0; i < dontEnumsLength; i++) {
|
2371 |
+
if (hasOwnProperty.call(obj, dontEnums[i])) {
|
2372 |
+
result.push(dontEnums[i]);
|
|
|
|
|
|
|
|
|
|
|
2373 |
}
|
|
|
|
|
2374 |
}
|
2375 |
}
|
2376 |
+
return result;
|
2377 |
+
};
|
2378 |
+
}();
|
2379 |
+
}
|
|
|
|
|
|
|
2380 |
var WPTB_Settings = function WPTB_Settings() {
|
2381 |
var elems = document.getElementsByClassName('wptb-element');
|
2382 |
|
2387 |
event.dataTransfer.setData('wptbElIndic-' + event.target.dataset.wptbElement, 'wptbElIndic-' + event.target.dataset.wptbElement);
|
2388 |
};
|
2389 |
elems[i].ondragend = function () {
|
2390 |
+
WPTB_Helper.elementDragEndClear();
|
|
|
|
|
|
|
|
|
|
|
2391 |
};
|
2392 |
};
|
2393 |
|
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;
|
2484 |
code = '';
|
2485 |
}
|
2486 |
|
2487 |
+
datas = '';
|
2488 |
+
var datas_containers = document.getElementsByClassName('wptb-element-datas');
|
2489 |
+
|
2490 |
+
if (datas_containers.length > 0) {
|
2491 |
+
if (datas_containers[0].innerHTML) {
|
2492 |
+
datas = datas_containers[0].innerHTML;
|
2493 |
+
}
|
2494 |
+
}
|
2495 |
+
|
2496 |
if (t === '' || code === '') {
|
2497 |
var messagingAreaText = '';
|
2498 |
if (t === '') messagingAreaText += 'You must assign a name to the table before saving it.</br>';
|
2509 |
var params = {
|
2510 |
title: t,
|
2511 |
content: code,
|
2512 |
+
elements_datas: datas,
|
2513 |
security_code: wptb_admin_object.security_code
|
2514 |
};
|
2515 |
if ((rs = WPTB_Helper.detectMode()) || (rs = document.wptbId)) {
|
2559 |
http.send(params);
|
2560 |
};
|
2561 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2562 |
var WPTB_Stringifier = function WPTB_Stringifier(codeMain) {
|
2563 |
if (codeMain) {
|
2564 |
var code = codeMain.cloneNode(true);
|
2652 |
return code;
|
2653 |
}
|
2654 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2655 |
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; };
|
2656 |
|
2657 |
var array = [],
|
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++) {
|
4445 |
}
|
4446 |
}
|
4447 |
|
4448 |
+
window.wptbTableStateSaving.push([wptbNewPreviewTable, cssForTdsWidthAutoValue, wptbDlementDatas]);
|
4449 |
|
4450 |
// set new number of state which is showed now
|
4451 |
window.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;
|
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 |
+
if (window.wptbTableStateSaving[window.wptbTableStateNumberShow][2]) {
|
4569 |
+
wptbElementDatas.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];
|
4570 |
+
|
4571 |
+
if (wptbElementDatas.length > 0) {
|
4572 |
+
wptbElementDatas = wptbElementDatas[0];
|
4573 |
+
} else {
|
4574 |
+
wptbElementDatas = document.createElement('div');
|
4575 |
+
wptbElementDatas.classList.add('wptb-element-datas');
|
4576 |
+
body.appendChild(wptbElementDatas);
|
4577 |
+
}
|
4578 |
+
} else {
|
4579 |
+
if (wptbElementDatas.length > 0) {
|
4580 |
+
wptbElementDatas = wptbElementDatas[0];
|
4581 |
+
body.removeChild(wptbElementDatas);
|
4582 |
+
}
|
4583 |
+
}
|
4584 |
+
|
4585 |
WPTB_Helper.settingsPanelClear();
|
4586 |
WPTB_Helper.elementOptionsPanelClear();
|
4587 |
WPTB_LeftPanel();
|
4594 |
}
|
4595 |
};
|
4596 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4597 |
var WPTB_innerElementSet = function WPTB_innerElementSet(element) {
|
4598 |
|
4599 |
element.ondragenter = function (e) {
|
4659 |
var table = WPTB_Helper.findAncestor(thisRow, 'wptb-preview-table');
|
4660 |
WPTB_Helper.dataTitleColumnSet(table);
|
4661 |
}
|
4662 |
+
|
4663 |
+
// start item javascript if item is new
|
4664 |
+
var infArr = element.className.match(/wptb-element-(.+)-(\d+)/i);
|
4665 |
+
var elemKind = infArr[1];
|
4666 |
+
if (e.dataTransfer.getData('wptbElement') && (elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list')) {
|
4667 |
+
//WPTB_Helper.elementStartScript( element );
|
4668 |
+
}
|
4669 |
} else {
|
4670 |
return;
|
4671 |
}
|
4686 |
element.classList.remove('wptb-ondragenter');
|
4687 |
};
|
4688 |
};
|
4689 |
+
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; };
|
4690 |
+
|
4691 |
+
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); } }
|
4692 |
+
|
4693 |
var applyGenericItemSettings = function applyGenericItemSettings(element, kindIndexProt) {
|
4694 |
var copy = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
4695 |
|
4696 |
var node = element.getDOMElement(),
|
4697 |
index,
|
|
|
4698 |
copy;
|
4699 |
+
if (node.classList.contains('wptb-ph-element')) {
|
4700 |
+
if (kindIndexProt == undefined || copy == true) {
|
4701 |
+
index = document.counter.nextIndex(element.kind);
|
4702 |
+
var wptbElements = document.getElementsByClassName('wptb-ph-element');
|
4703 |
+
var elementIndexesArr = [];
|
4704 |
+
for (var i = 0; i < wptbElements.length; i++) {
|
4705 |
+
var regex = new RegExp('wptb-element-' + element.kind + '-(\\d+)', "i");
|
4706 |
+
var infArr = wptbElements[i].className.match(regex);
|
4707 |
+
if (infArr) {
|
4708 |
+
elementIndexesArr.push(infArr[1]);
|
4709 |
+
}
|
4710 |
+
}
|
4711 |
+
if (elementIndexesArr.length > 0) {
|
4712 |
+
var elementIndexMax = Math.max.apply(Math, elementIndexesArr);
|
4713 |
+
index = elementIndexMax + 1;
|
4714 |
+
} else {
|
4715 |
+
index = 1;
|
4716 |
+
}
|
4717 |
+
|
4718 |
+
if (copy) {
|
4719 |
+
// change all data-elements which save parameters for different controls
|
4720 |
+
var wptbNodeattributes = [].concat(_toConsumableArray(node.attributes));
|
4721 |
+
for (var _i = 0; _i < wptbNodeattributes.length; _i++) {
|
4722 |
+
if (wptbNodeattributes[_i] && _typeof(wptbNodeattributes[_i]) === 'object' && wptbNodeattributes[_i].nodeName) {
|
4723 |
+
var regularText = new RegExp('data-wptb-el-' + element.kind + '-(\\d+)-(.+)', "i");
|
4724 |
+
var attr = wptbNodeattributes[_i].nodeName.match(regularText);
|
4725 |
+
if (attr && Array.isArray(attr)) {
|
4726 |
+
var newDataAttributeName = wptbNodeattributes[_i].nodeName.replace(element.kind + '-' + attr[1], element.kind + '-' + index);
|
4727 |
+
var newDataAttributeValue = wptbNodeattributes[_i].nodeValue;
|
4728 |
+
node.removeAttribute(wptbNodeattributes[_i].nodeName);
|
4729 |
+
node.setAttribute(newDataAttributeName, newDataAttributeValue);
|
4730 |
+
}
|
4731 |
+
}
|
4732 |
+
}
|
4733 |
}
|
4734 |
+
} else if (kindIndexProt && !copy) {
|
4735 |
+
var kindIndexProtArr = kindIndexProt.split('-');
|
4736 |
+
index = kindIndexProtArr[kindIndexProtArr.length - 1];
|
4737 |
+
// start element javascript if element is new
|
4738 |
}
|
4739 |
+
|
4740 |
+
var node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\d+)/i);
|
4741 |
+
if (node_wptb_element_kind_num) {
|
4742 |
+
node.classList.remove(node_wptb_element_kind_num[0]);
|
4743 |
+
}
|
4744 |
+
if (!node.classList.contains('wptb-ph-element')) {
|
4745 |
+
node.classList.add('wptb-ph-element');
|
4746 |
+
if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
|
4747 |
+
node.classList.add('wptb-element-' + element.kind + '-' + index);
|
4748 |
+
}
|
4749 |
} else {
|
4750 |
+
if (!node.classList.contains('wptb-element-' + element.kind + '-' + index)) {
|
4751 |
+
node.classList.add('wptb-element-' + element.kind + '-' + index);
|
4752 |
+
}
|
4753 |
}
|
4754 |
+
new WPTB_ElementOptions(element, index, kindIndexProt);
|
4755 |
+
WPTB_Helper.elementStartScript(element.getDOMElement());
|
4756 |
+
document.counter.increment(element.kind);
|
4757 |
}
|
4758 |
|
4759 |
node.onmouseenter = function (event) {
|
4761 |
return;
|
4762 |
}
|
4763 |
|
4764 |
+
var wptbActionsField = new WPTB_ActionsField();
|
|
|
4765 |
|
4766 |
wptbActionsField.addActionField(1, node);
|
4767 |
|
4768 |
wptbActionsField.setParameters(node);
|
4769 |
|
4770 |
node.classList.remove('wptb-ondragenter');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4771 |
};
|
4772 |
|
4773 |
node.onmouseleave = function (event) {
|
4774 |
var wptbActionsField = new WPTB_ActionsField();
|
4775 |
|
4776 |
+
wptbActionsField.leaveFromField(event, node);
|
|
|
|
|
|
|
|
|
4777 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4778 |
};
|
|
|
4779 |
//# sourceMappingURL=admin.js.map
|
inc/admin/js/admin.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["WPTB_ActionsField.js","WPTB_Builder.js","WPTB_Button.js","WPTB_Cell.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementOptions.js","WPTB_Helper.js","WPTB_Image.js","WPTB_Initializer.js","WPTB_LeftPanel.js","WPTB_List.js","WPTB_ListItem.js","WPTB_MultipleSelect.js","WPTB_Parser.js","WPTB_Parser2.js","WPTB_Settings.js","WPTB_Space.js","WPTB_StarRating.js","WPTB_Stringifier.js","WPTB_Stringifier2.js","WPTB_Table.js","WPTB_TableStateSaveManager.js","WPTB_Text.js","WPTB_innerElementSet.js","applyGenericItemSettings.js","wptb-builder.js"],"names":["WPTB_ActionsField","wptbActions","document","getElementsByClassName","length","addActionField","actionType","thisNode","body","getElementsByTagName","actions","previousNode","activeElem","classList","remove","parentNode","removeChild","btnDelete","btnCopy","btnMove","createElement","add","draggable","appendChild","type","onclick","event","act","target","el","kind","thisRow","contains","table","WPTB_Helper","findAncestor","dataTitleColumnSet","wptbActionsField","actionsRemove","wptbTableStateSaveManager","WPTB_TableStateSaveManager","tableStateSet","copy","infArr","activeElement","activeElementClone","cloneNode","className","match","td","temp","srcList","querySelectorAll","i","push","innerHTML","WPTB_List","insertBefore","getDOMElement","nextSibling","WPTB_Text","childNodes","WPTB_Image","text","querySelector","WPTB_Button","WPTB_StarRating","WPTB_innerElementSet","setParameters","ondragstart","dragImagesArr","dataTransfer","effectAllowed","setDragImage","setData","actionsHide","style","display","previous","append","wptbDirectlyhovered","action","item","parent","listItemsRecalculateIndex","coordinatesElement","getBoundingClientRect","coordinatesElementTopBegin","top","listItem","content","html","duplicate","WPTB_ListItem","listItemsTinyMceInit","firstChild","divcontent","setTimeout","coordinatesElementTopEnd","wptbContainer","correctTop","parseFloat","removeEventListener","left","right","clientWidth","addEventListener","leaveFromField","node","relatedTarget","onmouseleave","localName","opacity","WPTB_Builder","table_id","detectMode","http","XMLHttpRequest","urlSet","ajaxurl","open","setRequestHeader","onreadystatechange","d","readyState","status","ans","JSON","parse","responseText","getElementById","value","wptbTableSetupEl","WPTB_Parser","WPTB_Table","WPTB_LeftPanel","WPTB_Settings","send","counter","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","DOMElementProt","DOMElement","elButton","el_B","el_BDiv","el_BDivP","kindIndexProt","undefined","wptbElementMutch","Array","isArray","attributesContainer","attributes","setAttribute","name","wptbButtonWrapper","wptbButtonWrapAttributes","wptbButtonA","wptbButtonAttributes","wptbButton","applyGenericItemSettings","WPTB_Cell","callback","highlightRow","parentRow","columnCount","parseInt","tds","classToAdd","ttd","highlightColumn","index","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","wptbPhElement","wptbSpaceBetween","j","WPTB_Space","wptbElementTypeClass","wptbTypeElementArr","split","wptbListItems","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","getDOMParentElement","nodeName","toLowerCase","innerElement","innerElementNext","console","log","onscroll","indics","types","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","increment","key","nextIndex","WPTB_ElementOptions","elemIdClass","prop","properties","affectedEl","wptbSize","b","buttonAlignment","justifyContent","selectOptionVal","elementButtonAlignmentSelect","getAttribute","buttonHref","buttonLinkTarget","buttonId","buttonHrefInput","buttonLinkTargetInput","buttonLinkTargetInputId","buttonLinkTargetInputLabel","buttotIdInput","checked","buttonTextColor","color","buttonColor","backgroundColor","buttonTextColorInput","buttonBackgroundColorInput","rgbToHex","elementsA","a","imgAlign","float","imageAlignmentSelect","imageLinkHref","inputImageLink","imageLinkTarget","imageLinkTargetInput","imageLinkTargetInputId","imageLinkTargetInputLabel","imgWidth","imageWidthInputRange","imageWidthInputNumber","img","imgAlternativeText","imageAlternativeTextInput","elementFontSize","fontSize","elementTextColor","textFontSizeInputRange","textFontSizeInputNumber","textColorInput","elementList","elementListColor","listColorInput","elementListItem","listItemP","listItemPClasses","elementListClassSelect","listIconSelectLabel","nodeType","listIconSelectLabelId","elementListStyleTypeSelect","elementListItemContent","listItemPTextAlignArr","p","textAlign","listItemPTextAlignLeftCount","listItemPTextAlignCenterCount","listItemPTextAlignRightCount","elementListAlignmentSelect","maxListItemTAlLeftC","Math","max","wptbListAlignmentValue","wptbRatingAlignment","ratingStar","ratingStarSize","starSizeInputRange","starSizeInputNumber","starColorInput","ratingStarColor","fill","ratingStars","starsCountInputNumber","successBox","showNumberRatingCheckbox","numeralRatingOptionContainers","wptbTextMessage","numberRatingSize","numberRatingColor","numberSizeInputRange","numberSizeInputNumber","numberColorInput","optionsClass","children","buttons","size","n_Class","num","star_alignment","list_alignment","listItems","button_alignment","jc","image_alignment","image_alignment_value","optionControls","wpColorPicker","change","ui","wpColorPickerChange","wpColorPickerCheckChangeForTableStateSaving","clear","numberImputSize","slider","oninput","onchange","src","alt","href","linkHttpCheckChange","rel","removeAttribute","id","parentNodeSettingItem","span","wptbNumeralRatingOptionContainer","starRatingTextMessageChenge","wptbTextMessageSize","lineHeight","starRatings","starRatingsCount","difference","starRatingsLast","newStarRating","starRatingEventHandlersAdd","starRatingLength","onmouseup","hexToRgb","hex","result","exec","rgb","toString","slice","getDragImageCustom","hostName","location","protocol","hostname","image","button","list","star_rating","ulElem","par","listStyleTypeIndex","Number","tinyMCE","init","inline","plugins","dialog_type","theme","menubar","fixed_toolbar_container","paste_as_text","toolbar","setup","ed","on","article","keyCode","innerText","pText","replace","trim","selectedText","getSelectionText","wptbListItem","onblur","init_instance_callback","editor","currentEditor","totalWidth","scrollTop","bodyElement","position","buttonsTinyMceInit","wptbButtonContainer","link","linkArr","linkClean","rows","rowHead","computedStyleRowHead","rowHeadChildren","contentsForHeader","tdElements","textContent","thisRowChildren","wptbTitleColumn","wptbTitleColumnFontSize","wptbTitleColumnColor","wptbTitleBackgroundColor","wptbTitleAlign","cls","parentElement","txt","getSelection","selection","createRange","settingsPanelClear","wpColorPickerClear","elementOptionsPanelClear","elementOptionsGroup","originalEvent","wpPickerContainer","irisSquareHandle","uiSliderHandle","attribute","isId","input","newInput","url","regex","RegExp","results","decodeURIComponent","getColumnWidth","cell","xIndexes","cellWidth","getRowHeight","yIndexes","cellHeight","uiColor","classe","ps","number","starRatingSelectHoverSet","starRating","onStar","onmouseover","stopPropagation","onmouseout","wptbStarRatingContainer","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","starRatingContainer","ratingNumber","wptbTextMessageCommon","wptbTextMessageCommonVal","elImage","anchor","file_frame","wp","media","frames","title","multiple","frame","imageSetting","attachment","imgSrc","state","props","toJSON","get","first","menuItemVisibility","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","columns","wptbElementButtons","wptbTdBgColorSavedSet","inputId","trNumber","tableRows","trBackgroundColor","wptbEvenRowBg","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","wptbTextfontSizeNumber","wptbImageWidthNumber","wptbTableColumnWidthNumber","wptbTableRowHeightNumber","tdDefaultWidth","wptbInnerBorderCheck","tableBorderColorSetArea","addColumnWidth","highlighted","addRowHeight","createMobileHeadForTable","thisEvent","wptbElement","toggleTableEditMode","addRowToTheEnd","addRowToTheStart","addRowBefore","addRowAfter","addColumnEnd","addColumnStart","addColumnBefore","addColumnAfter","deleteColumn","deleteRow","mergeCells","splitCell","wptbBuilderPanel","clickOnFreeSpace","wptbHeader","wpcdFixedToolbar","hasAttribute","innerElements","el_L","wptbListItemReturn","styleDot","listItemKeyListener","onmouseenter","selectedCells","multipleCellMode","activateMultipleSelectMode","deactivateMultipleSelectMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","code","div","columnTitleMobile","WPTB_Parser2","elementHtml","createTextNode","tagName","elems","ondragend","wptbUndo","tableStateGet","wptbUndoredo","wptbUndoRedoContainer","wptbRedo","shortcodePopupWindow","onbeforeunload","wptbSaveDisabled","wptbTableStateNumberSave","wptbTableStateNumberShow","bar","wptb_admin_object","t","messagingArea","WPTB_Stringifier","outerHTML","messagingAreaText","params","security_code","rs","wptbId","stringify","data","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","elSpaceBetween","includes","spaceBetween","t_space","spaceParent","alert","countStarts","ratingStarsBox","ratingStarsList","textMessage","filledRatingStarHtml","notFilledRatingStarHtml","halfFilledRatingStarHtml","ratingStarZeroSet","wptbRatingStarsBox","wptbRatingStarsBoxAttributes","wptbRatingStarsOld","wptbRatingStars","iMax","wptbRatingStarsAttributes","wptbRatingStarsOldSpan","wptbRatingStarsSpan","k","wptbRatingStarsOldSpanAttributes","l","wptbRatingStarsOldSvg","wptbRatingStarsOldSvgStyle","wptbSuccessBox","wptbSuccessBoxAttributes","wptbTextMessageAttributes","codeMain","tableColumns","minWidth","maxWidth","mceContentBodys","dataMceStyle","contentEditable","spellCheck","mceIds","wptbActionsLength","columnNameDivContainer","columnNameDiv","WPTB_Stringifier2","start","nodeValue","int_elem_arr","attributes_list","internal_elements","inter_elem","array","wptbTableSetup","row","maxAmountOfCells","maxAmountOfRows","mark","rowSpan","cs","colSpan","markedCells","noCells","singleCells","multipleCells","cellSettings","column","cellHighlighted","wptbTableColumnWidthSlider","tableColumnWidthAutoFixedCheckbox","wptbFixedWidth","wptbTableRowHeightSlider","tableRowHeightAutoFixedCheckbox","wptbFixedHeight","isSquare","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","string","undoSelect","fillTableArray","colspansSums","cells","colspanSumInRow","apply","getActualPointsInRow","points","search","skipInCols","reconstraction","insertRow","wptb_preview_table","cellModeBackground","leftScrollPanelCurtain","leftScrollPanelCellSettings","wptbPreviewTableTds","recalculateIndexes","trs","maxCols","maxColsFull","tdsArr","jMainIter","z","cleaner","dataXIndex","tableTdsFor","colspan","widthIsSet","arrayTdsFromPreviousRow","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","tableFullStyleObj","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","head","cssForTdsWidthAutoOld","dataYIndex","rowspan","heightIsSet","arrayTdsPrevious","tableColumnHeightAutoFixedCheckbox","wptbAdaptiveTableChoseBlock","mergingCellsVertically","forBreak","currentTable","currentTableTd","currentTdStyle","firstCell","c_pos","cellStyle","pos","pendingInsertion","bro","currentCell","r","aux","from","cellNew","rowChildren","rowChildrenLength","cellRowSpan","rowAfter","cellsColSpan","tableRowsIChildren","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","dimensions","call","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","findRowspannedCells","actualPoints","addLackingCells","sumRows","totalColspan","nextRow","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","pop","onresize","wptbTableStateSaving","wptbNewPreviewTable","wptbHighlighted","cssForTdsWidthAutoValue","datawptbUndoredo","wptbLeftScrollPanelCellSetting","elText2","elP","classId","wptbElements","elementIndexesArr","elementIndexMax","kindIndexProtArr","force_br_newlines","force_p_newlines","forced_root_block","observer","MutationObserver","mutations","config","attributeFilter","observe","ritingStarZeroSet","ulStarList","node_wptb_element_kind_num"],"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, btnMove;\n\n btnDelete = document.createElement( 'span' ),\n btnCopy = document.createElement( 'span' ),\n btnMove = 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 btnMove.classList.add( \"dashicons\", \"dashicons-move\", 'wptb-move-action' );\n btnMove.draggable = true;\n\n actions.appendChild( btnMove );\n actions.appendChild( btnCopy );\n actions.appendChild( btnDelete );\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 el.removeChild(act);\n\n if( 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\n wptbActionsField.actionsRemove();\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n\n\n btnCopy.onclick = ( event ) => {\n let copy,\n infArr,\n type;\n let activeElement = event.target.parentNode.activeElem;\n let activeElementClone = activeElement.cloneNode( true );\n activeElementClone.classList.remove( 'wptb-directlyhovered' );\n infArr = activeElement.className.match(/wptb-element-(.+)-(\\d+)/i);\n type = infArr[1];\n let td = activeElement.parentNode;\n if ( type == 'list' ) {\n var temp = [],\n srcList = activeElement.querySelectorAll('ul li .wptb-list-item-content');\n\n for (var i = 0; i < srcList.length; i++) {\n temp.push(srcList[i].innerHTML);\n }\n\n copy = new WPTB_List( temp, activeElementClone );\n\n td.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n } else if ( type == 'text' ) {\n copy = new WPTB_Text( activeElementClone.childNodes[0].innerHTML, activeElementClone );\n\n td.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n } else if ( type == 'image' ) {\n copy = new WPTB_Image( '', activeElement );\n \n td.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n } else if( type == 'button' ) {\n let text = activeElementClone.childNodes[0].querySelector( 'p' ).innerHTML;\n \n copy = new WPTB_Button( text, activeElementClone );\n\n td.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n } else if( type = 'star_rating' ) {\n copy = new WPTB_StarRating( activeElementClone );\n\n td.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n }\n\n WPTB_innerElementSet( copy.getDOMElement() );\n\n let wptbActionsField = new WPTB_ActionsField( 1, activeElement );\n \n wptbActionsField.setParameters( activeElement );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n btnMove.ondragstart = ( event ) => {\n let dragImagesArr = WPTB_Helper.dragImagesArr(),\n actions = event.target.parentNode,\n activeElem = actions.activeElem,\n infArr,\n type;\n infArr = activeElem.className.match(/wptb-element-(.+)-(\\d+)/i);\n type = infArr[1];\n activeElem.classList.add( 'wptb-moving-mode' );\n\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setDragImage( dragImagesArr[type], 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 //actions.style.display = 'none';\n this.actionsHide();\n };\n\n //actions.style.right = '-' + parseFloat( thisNode.offsetWidth ) + 'px';\n actions.style.display = 'block';\n\n this.wptbActions = actions;\n } else if( actionType == 2 ) {\n let btnDelete,\n btnCopy,\n previous,\n i;\n\n btnDelete = document.createElement('span'),\n btnCopy = document.createElement('span'),\n actions = document.createElement('span')\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.append( btnCopy, btnDelete );\n body.appendChild( actions );\n\n actions.activeElem = thisNode;\n \n let wptbDirectlyhovered = WPTB_Helper.findAncestor( thisNode, 'wptb-directlyhovered' );\n if( wptbDirectlyhovered ) {\n wptbDirectlyhovered.classList.remove( 'wptb-directlyhovered' );\n }\n\n actions.type = 2;\n\n btnDelete.onclick = ( event ) => {\n var action = event.target.parentNode, \n item = action.activeElem,\n parent = item.parentNode;\n let wptbActionsField = new WPTB_ActionsField( 4 );\n wptbActionsField.actionsRemove();\n parent.removeChild( item );\n WPTB_Helper.listItemsRecalculateIndex( parent );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n btnCopy.onclick = ( event ) => {\n let coordinatesElement = thisNode.getBoundingClientRect();\n let coordinatesElementTopBegin = coordinatesElement.top;\n\n var listItem = event.target.parentNode.activeElem,\n content = listItem.querySelector( '.wptb-list-item-content' ),\n html = content.innerHTML;\n var duplicate = new WPTB_ListItem( html, listItem, true );\n listItem.parentNode.insertBefore( duplicate.getDOMElement(), thisNode.nextSibling );\n WPTB_Helper.listItemsTinyMceInit( duplicate.getDOMElement().firstChild );\n\n let divcontent = thisNode.getElementsByClassName( 'wptb-list-item-content' );\n if( divcontent.length > 0 ) {\n divcontent = divcontent[0];\n }\n setTimeout( function(){\n divcontent.innerHTML = html;\n WPTB_Helper.listItemsRecalculateIndex( listItem.parentNode );\n }, 5 );\n\n coordinatesElement = thisNode.getBoundingClientRect();\n let coordinatesElementTopEnd = coordinatesElement.top;\n\n if( coordinatesElementTopBegin != coordinatesElementTopEnd ) {\n let wptbActionsField = new WPTB_ActionsField( 2, thisNode );\n wptbActionsField.setParameters( thisNode );\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n actions.style.display = 'block';\n\n this.wptbActions = actions;\n }\n }\n \n this.setParameters = ( thisNode ) => {\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.display = 'block';\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// let wptbBorderMarkerTop = this.wptbBorderMarker.querySelector( '.wptb-border-marker-top' );\n// wptbBorderMarkerTop.style.width = ( parseFloat( thisNode.offsetWidth ) + 3 ) + 'px';\n//\n// let wptbBorderMarkerRight = this.wptbBorderMarker.querySelector( '.wptb-border-marker-right' );\n// wptbBorderMarkerRight.style.height = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) + 4 ) + 'px';\n// wptbBorderMarkerRight.style.left = ( parseFloat( thisNode.offsetWidth ) + 3 ) + 'px';\n//\n// let wptbBorderMarkerBottom = this.wptbBorderMarker.querySelector( '.wptb-border-marker-bottom' );\n// wptbBorderMarkerBottom.style.width = wptbBorderMarkerTop.style.width;\n// wptbBorderMarkerBottom.style.top = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) + 3 ) + 'px';;\n//\n// let wptbBorderMarkerLeft = this.wptbBorderMarker.querySelector( '.wptb-border-marker-left' );\n// \n \n //this.wptbBorderMarker.style.display = 'block';\n this.wptbActions.style.display = 'block';\n thisNode.classList.add( 'wptb-directlyhovered' );\n \n wptbContainer.addEventListener( 'scroll', correctTop, false );\n }\n \n// if( actionType == 1 || actionType == 2 ) {\n// this.setParameters( thisNode );\n// }\n// } else {\n// this.wptbActions.style.display = 'block';\n// thisNode.classList.add( 'wptb-directlyhovered' );\n// }\n \n this.leaveFromField = ( event, node, actionType ) => {\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 != this.wptbActions.activeElem &&\n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-directlyhovered') != this.wptbActions.activeElem ) {\n event.target.activeElem.classList.remove( 'wptb-directlyhovered' );\n this.wptbActions.style.display = 'none';\n\n if( this.wptbActions.type == 2 ) {\n let wptbActionsField = new WPTB_ActionsField();\n\n wptbActionsField.addActionField( 1, event.relatedTarget.parentNode.parentNode );\n\n wptbActionsField.setParameters( event.relatedTarget.parentNode.parentNode );\n }\n } else {\n return;\n }\n }\n\n return;\n } \n// else if( event.relatedTarget.classList.contains( 'wptb-drop-handle' ) ) {\n// let wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' );\n// if( wptbDropHandle.length > 0 ) {\n// wptbDropHandle = wptbDropHandle[0];\n// wptbDropHandle.onmouseleave\n// }\n// }\n }\n \n node.classList.remove( 'wptb-directlyhovered' );\n this.wptbActions.style.display = 'none';\n \n if( this.wptbActions.type == 2 ) {\n if( event.relatedTarget ) {\n if( event.relatedTarget.localName == 'ul' ) {\n //let wptbActionsField = new WPTB_ActionsField();\n\n this.addActionField( 1, event.relatedTarget.parentNode );\n\n this.setParameters( event.relatedTarget.parentNode );\n }\n }\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 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_Button = function( text, DOMElementProt ) {\n \n var DOMElement = document.createElement('div'),\n elButton = document.createElement('div'),\n el_B = document.createElement('a'),\n el_BDiv = document.createElement( 'div' ),\n el_BDivP = document.createElement( 'p' ),\n kindIndexProt = undefined,\n copy = false;\n\n DOMElement.classList.add('wptb-button-container', 'wptb-size-M', 'wptb-');\n elButton.classList.add('wptb-button-wrapper');\n el_BDiv.classList.add('wptb-button');\n el_BDivP.innerHTML = text != undefined ? text : 'Button Text';\n \n // Creation of a new button when copying to avoid errors when assigning new event handlers.\n if ( DOMElementProt ) {\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\n kindIndexProt = wptbElementMutch[1];\n copy = true;\n }; \n var attributesContainer = [...DOMElementProt.attributes];\n if ( attributesContainer.length > 0 ) {\n for( let i = 0; i < attributesContainer.length; i++ ) {\n DOMElement.setAttribute(attributesContainer[i].name, attributesContainer[i].value);\n } \n }\n \n var wptbButtonWrapper = DOMElementProt.querySelector( '.wptb-button-wrapper' );\n if ( wptbButtonWrapper ) {\n var wptbButtonWrapAttributes = [...wptbButtonWrapper.attributes];\n if ( wptbButtonWrapAttributes.length > 0 ) {\n for( let i = 0; i < wptbButtonWrapAttributes.length; i++ ) {\n if ( wptbButtonWrapAttributes[i].name == 'style') {\n elButton.setAttribute( wptbButtonWrapAttributes[i].name, wptbButtonWrapAttributes[i].value );\n }\n } \n }\n }\n \n var wptbButtonA = DOMElementProt.querySelector( 'a' );\n if ( wptbButtonA ) {\n var wptbButtonAttributes = [...wptbButtonA.attributes];\n if ( wptbButtonAttributes.length > 0 ) {\n for( let i = 0; i < wptbButtonAttributes.length; i++ ) {\n if ( wptbButtonAttributes[i].name == 'style' || \n wptbButtonAttributes[i].name == 'href' || \n wptbButtonAttributes[i].name == 'target' ) {\n el_B.setAttribute( wptbButtonAttributes[i].name, wptbButtonAttributes[i].value );\n }\n } \n }\n }\n \n var wptbButton = DOMElementProt.querySelector( '.wptb-button' );\n if ( wptbButton ) {\n var wptbButtonAttributes = [...wptbButton.attributes];\n if ( wptbButtonAttributes.length > 0 ) {\n for( let i = 0; i < wptbButtonAttributes.length; i++ ) {\n if ( wptbButtonAttributes[i].name == 'style') {\n el_BDiv.setAttribute( wptbButtonAttributes[i].name, wptbButtonAttributes[i].value );\n }\n } \n }\n }\n }\n \n elButton.appendChild(el_B);\n el_B.appendChild( el_BDiv );\n el_BDiv.appendChild( el_BDivP );\n DOMElement.appendChild(elButton);\n \n \n \n this.kind = 'button';\n\n this.getDOMElement = function () {\n return DOMElement;\n };\n\n applyGenericItemSettings( this, kindIndexProt, copy );\n \n return this;\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\n let wptbSpaceBetween = DOMElement.getElementsByClassName( 'wptb-space-between' );\n\n if ( wptbSpaceBetween.length > 0 ) {\n for( let j = 0; j < wptbSpaceBetween.length; j++ ) {\n WPTB_Space( wptbSpaceBetween[j] );\n }\n }\n \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 if ( wptbPhElement[i].kind == 'list' ) {\n let wptbListItems = wptbPhElement[i].getElementsByTagName( 'li' );\n if( wptbListItems.length > 0 ) {\n for ( let i = 0; i < wptbListItems.length; i++ ) {\n WPTB_ListItem( undefined, wptbListItems[i] );\n }\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 wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n \n WPTB_innerElementSet(element);\n console.log(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_ElementOptions = function ( element, index, kindIndexProt ) {\n\n var node = element.getDOMElement(), elemIdClass;\n\n prop = document.querySelector(\".wptb-\" + element.kind + \"-options-prototype\").cloneNode(true);\n prop.classList.remove(\"wptb-\" + element.kind + \"-options-prototype\"); // remove prototype from the class\n elemIdClass = 'wptb-options-' + element.kind + \"-\" + index;\n\n var properties = prop.getElementsByClassName('wptb-element-property');\n\n for (var i = 0; i < properties.length; i++) {\n properties[i].dataset.element = elemIdClass;\n }\n\n prop.classList.add(elemIdClass);\n document.getElementById(\"element-options-group\").appendChild(prop);\n \n if ( kindIndexProt ) {\n if ( element.kind == 'button' ) {\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt )[0],\n wptbButtonWrapper,\n wptbButtonA,\n wptbButton,\n wptbSize;\n \n if ( affectedEl ) {\n wptbSize = affectedEl.className.match(/wptb-size-([a-z]+)/i);\n }\n \n if( wptbSize && Array.isArray( wptbSize ) ) {\n var b = prop.getElementsByClassName('wptb-btn-size-btn');\n \n for ( var i = 0; i < b.length; i++ ) {\n b[i].classList.remove( 'selected' );\n \n if ( b[i].innerHTML == wptbSize[1] ) {\n b[i].classList.add( 'selected' );\n }\n }\n }\n \n if( affectedEl ) {\n wptbButtonWrapper = affectedEl.getElementsByClassName( 'wptb-button-wrapper' );\n \n wptbButtonA = affectedEl.getElementsByTagName( 'a' );\n \n wptbButton = affectedEl.getElementsByClassName( 'wptb-button' );\n }\n \n if ( wptbButtonWrapper ) {\n let buttonAlignment = wptbButtonWrapper[0].style.justifyContent;\n\n var selectOptionVal='';\n if ( buttonAlignment == 'start' ) {\n selectOptionVal = 'left';\n } else if ( buttonAlignment == 'center' || ! buttonAlignment ) {\n selectOptionVal = 'center';\n } else if ( buttonAlignment == 'flex-end' ) {\n selectOptionVal = 'right';\n }\n\n let elementButtonAlignmentSelect = prop.getElementsByClassName('wptb-button-alignment-btn');\n\n\n\n\n for ( var i = 0; i < elementButtonAlignmentSelect.length; i++ ) {\n elementButtonAlignmentSelect[i].classList.remove( 'selected' );\n \n if ( elementButtonAlignmentSelect[i].getAttribute('data-button_alignment') == selectOptionVal ) {\n elementButtonAlignmentSelect[i].classList.add( 'selected' );\n }\n }\n }\n \n if ( wptbButtonA.length > 0 ) {\n let buttonHref = wptbButtonA[0].getAttribute( 'href' ), \n buttonLinkTarget = wptbButtonA[0].getAttribute( 'target' ),\n buttonId = wptbButtonA[0].getAttribute( 'id' ),\n \n \n buttonHrefInput = prop.querySelector( 'input[data-type=\"button-link\"]' ),\n buttonLinkTargetInput = prop.querySelector( 'input[data-type=\"button-link-target\"]' ),\n buttonLinkTargetInputId = buttonLinkTargetInput.getAttribute( 'id' ),\n buttonLinkTargetInputLabel = buttonLinkTargetInput.parentNode.getElementsByTagName( 'label' )[0],\n \n buttotIdInput = prop.querySelector( 'input[data-type=\"button-id\"]' );\n\n buttonLinkTargetInputId = buttonLinkTargetInputId + '-' + kindIndexProt.split( '-' )[1];\n buttonLinkTargetInput.setAttribute( 'id', buttonLinkTargetInputId );\n buttonLinkTargetInputLabel.setAttribute( 'for', buttonLinkTargetInputId );\n\n buttonHrefInput.value = buttonHref;\n\n if( buttonLinkTarget && buttonLinkTarget == '_blank') {\n buttonLinkTargetInput.checked = true;\n }\n \n buttotIdInput.value = buttonId;\n }\n \n if( wptbButton ) {\n let buttonTextColor = wptbButton[0].style.color,\n buttonColor = wptbButton[0].style.backgroundColor,\n buttonTextColorInput = prop.querySelector( 'input[data-type=\"button-text-color\"]' ),\n buttonBackgroundColorInput = prop.querySelector( 'input[data-type=\"button-color\"]' );\n \n \n buttonTextColorInput.value = WPTB_Helper.rgbToHex( buttonTextColor );\n \n buttonBackgroundColorInput.value = WPTB_Helper.rgbToHex( buttonColor );\n \n }\n } else if ( element.kind == 'image' ) {\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt );\n if ( affectedEl.length > 0 ) {\n let elementsA = affectedEl[0].getElementsByTagName( 'a' );\n if ( elementsA.length > 0 ) {\n let a = elementsA[0];\n\n if ( a ) {\n // set select according to the alignment of the image\n let imgAlign;\n if( a.style.float == 'none' || ! a.style.float) {\n imgAlign = 'center';\n } else {\n imgAlign = a.style.float;\n }\n let imageAlignmentSelect = prop.getElementsByClassName('wptb-image-alignment-btn');\n\n for ( var i = 0; i < imageAlignmentSelect.length; i++ ) {\n imageAlignmentSelect[i].classList.remove( 'selected' );\n \n if ( imageAlignmentSelect[i].getAttribute('data-image_alignment') == imgAlign ) {\n imageAlignmentSelect[i].classList.add( 'selected' );\n }\n }\n\n\n a.onclick = function( e ) {\n e.preventDefault();\n }\n\n // set text link for input field of setting panel\n let imageLinkHref = a.getAttribute( 'href' ),\n inputImageLink = prop.querySelector( 'input[data-type=\"image-link\"]' );\n if ( imageLinkHref ) {\n inputImageLink.value = imageLinkHref;\n }\n\n // set checkbox for target of link \n let imageLinkTarget = a.getAttribute( 'target' ),\n imageLinkTargetInput = prop.querySelector( 'input[data-type=\"image-link-target\"]' ),\n imageLinkTargetInputId = imageLinkTargetInput.getAttribute( 'id' ),\n imageLinkTargetInputLabel = imageLinkTargetInput.parentNode.getElementsByTagName( 'label' )[0];\n\n imageLinkTargetInputId = imageLinkTargetInputId + '-' + kindIndexProt.split( '-' )[1];\n\n imageLinkTargetInput.setAttribute( 'id', imageLinkTargetInputId );\n imageLinkTargetInputLabel.setAttribute( 'for', imageLinkTargetInputId );\n\n if ( imageLinkTarget && imageLinkTarget == '_blank' ) {\n imageLinkTargetInput.checked = true;\n }\n\n // set value for input fields of image size\n let imgWidth = a.style.width;\n if ( imgWidth ) {\n let imageWidthInputRange = prop.querySelector( 'input[type=\"range\"][data-type=\"image-size\"]' ),\n imageWidthInputNumber = prop.querySelector( 'input[type=\"number\"][data-type=\"image-size\"]' );\n\n imageWidthInputRange.value = parseInt( imgWidth );\n imageWidthInputNumber.value = parseInt( imgWidth );\n }\n\n let img = a.getElementsByTagName( 'img' );\n if ( img.length > 0 ) {\n // set value for input field of alternative text image\n let imgAlternativeText = img[0].getAttribute('alt'),\n imageAlternativeTextInput = prop.querySelector( 'input[type=\"text\"][data-type=\"alternative-text\"]' );\n\n imageAlternativeTextInput.value = imgAlternativeText;\n }\n }\n }\n }\n } else if ( element.kind == 'text' ) {\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt );\n if ( affectedEl.length > 0 ) {\n let elementFontSize = affectedEl[0].style.fontSize,\n elementTextColor = affectedEl[0].style.color;\n let textFontSizeInputRange = prop.querySelector( 'input[type=\"range\"][data-type=\"font-size\"]' ),\n textFontSizeInputNumber = prop.querySelector( 'input[type=\"number\"][data-type=\"font-size\"]' ),\n textColorInput = prop.querySelector( 'input[type=\"text\"][data-type=\"color\"]' );\n\n textFontSizeInputRange.value = parseInt( elementFontSize ) ? parseInt( elementFontSize ) : 10;\n textFontSizeInputNumber.value = parseInt( elementFontSize ) ? parseInt( elementFontSize ) : 10;\n textColorInput.value = WPTB_Helper.rgbToHex( elementTextColor );\n }\n } else if ( element.kind == 'list' ) {\n let elementList = document.getElementsByClassName( 'wptb-element-' + kindIndexProt );\n if ( elementList.length > 0 ) {\n let elementListColor = elementList[0].querySelector( 'p' ).style.color;\n let listColorInput = prop.querySelector( 'input[type=\"text\"][data-type=\"list-text-color\"]' );\n listColorInput.value = WPTB_Helper.rgbToHex( elementListColor );\n \n let elementListItem = elementList[0].querySelectorAll( 'li' );\n if ( elementListItem.length > 0 ) {\n let listItemP = elementListItem[0].querySelector( 'p' );\n let listItemPClasses = listItemP.classList;\n //listItemPClasses = [...listItemPClasses];\n if ( listItemPClasses.length > 0 ) {\n let elementListClassSelect = prop.querySelector( 'select[data-type=\"list-class\"]' );\n if ( elementListClassSelect ) {\n elementListClassSelect.value = 'unordered';\n \n let listIconSelectLabel = elementListClassSelect.parentNode.nextSibling;\n for ( let i = 0; i < 10; i++ ) {\n if ( listIconSelectLabel.nodeType == '1' ) {\n break;\n } else {\n listIconSelectLabel = listIconSelectLabel.nextSibling;\n }\n }\n if ( listIconSelectLabel ) {\n let listIconSelectLabelId = listIconSelectLabel.getAttribute( 'id' );\n listIconSelectLabel.setAttribute( 'id', listIconSelectLabelId + '-' + kindIndexProt );\n listIconSelectLabel.style.display = 'flex';\n }\n \n let elementListStyleTypeSelect = prop.querySelector( 'select[data-type=\"list-style-type\"]' );\n if ( elementListStyleTypeSelect ) {\n elementListStyleTypeSelect.parentNode.style.display = 'flex';\n \n if( listItemPClasses.contains( 'wptb-list-style-type-disc' ) ) {\n elementListStyleTypeSelect.value = 'disc';\n } else if( listItemPClasses.contains( 'wptb-list-style-type-circle' ) ) {\n elementListStyleTypeSelect.value = 'circle';\n } else if( listItemPClasses.contains( 'wptb-list-style-type-square' ) ) {\n elementListStyleTypeSelect.value = 'square';\n } else if ( listItemPClasses.contains( 'wptb-list-style-type-none' ) ) {\n elementListStyleTypeSelect.value = 'none';\n }\n }\n }\n }\n }\n \n let elementListItemContent = elementList[0].getElementsByClassName( 'wptb-list-item-content' );\n if ( elementListItemContent.length > 0 ) {\n let listItemPTextAlignArr = [];\n for ( let i = 0; i < elementListItemContent.length; i++ ) {\n let p = elementListItemContent[i].querySelector( 'p' );\n if ( p ) {\n if ( p.style.textAlign ) {\n listItemPTextAlignArr.push( p.style.textAlign );\n } else {\n listItemPTextAlignArr.push( 'left' );\n }\n }\n \n }\n \n let listItemPTextAlignLeftCount = 0,\n listItemPTextAlignCenterCount = 0,\n listItemPTextAlignRightCount = 0;\n \n if ( listItemPTextAlignArr.length > 0 ) {\n for ( let i = 0; i < listItemPTextAlignArr.length; i++ ) {\n if ( listItemPTextAlignArr[i] ) {\n if ( listItemPTextAlignArr[i] == 'left' ) {\n listItemPTextAlignLeftCount++;\n } else if ( listItemPTextAlignArr[i] == 'center' ) {\n listItemPTextAlignCenterCount++;\n } else if ( listItemPTextAlignArr[i] == 'right' ) {\n listItemPTextAlignRightCount++;\n }\n }\n }\n }\n \n let elementListAlignmentSelect = prop.getElementsByClassName('wptb-list-alignment-btn'),\n maxListItemTAlLeftC = Math.max( listItemPTextAlignLeftCount, listItemPTextAlignCenterCount, listItemPTextAlignRightCount );\n let wptbListAlignmentValue;\n if ( listItemPTextAlignLeftCount == maxListItemTAlLeftC ) {\n wptbListAlignmentValue = 'left';\n } else if ( listItemPTextAlignCenterCount == maxListItemTAlLeftC ) {\n wptbListAlignmentValue = 'center';\n } else if ( listItemPTextAlignRightCount == maxListItemTAlLeftC ) {\n wptbListAlignmentValue = 'right';\n }\n\n for ( var i = 0; i < elementListAlignmentSelect.length; i++ ) {\n elementListAlignmentSelect[i].classList.remove( 'selected' );\n \n if ( elementListAlignmentSelect[i].getAttribute('data-list_alignment') == wptbListAlignmentValue ) {\n elementListAlignmentSelect[i].classList.add( 'selected' );\n }\n }\n }\n } \n } else if( element.kind == 'star_rating' ) {\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + kindIndexProt ),wptbRatingAlignment;\n if( affectedEl.length > 0 ) {\n affectedEl = affectedEl[0];\n let ratingStar = affectedEl.querySelector( 'li' );\n if( ratingStar ) {\n let ratingStarSize = ratingStar.style.width;\n let starSizeInputRange = prop.querySelector( 'input[type=\"range\"][data-type=\"star-size\"]' ),\n starSizeInputNumber = prop.querySelector( 'input[type=\"number\"][data-type=\"star-size\"]' );\n\n starSizeInputRange.value = parseInt( ratingStarSize ) ? parseInt( ratingStarSize ) : 10;\n starSizeInputNumber.value = parseInt( ratingStarSize ) ? parseInt( ratingStarSize ) : 10;\n\n if( ratingStar.querySelector( 'span' ) ) {\n let starColorInput = prop.querySelector( 'input[type=\"text\"][data-type=\"star-color\"]' ),\n ratingStarColor = ratingStar.querySelector( 'span' ).style.fill;\n starColorInput.value = WPTB_Helper.rgbToHex( ratingStarColor );\n }\n }\n \n let ratingStars = affectedEl.querySelectorAll( 'li' );\n let starsCountInputNumber = prop.querySelector( 'input[type=\"number\"][data-type=\"stars-count\"]' );\n if( ratingStars.length == 1 && ratingStars[0].style.display == 'none' ) {\n starsCountInputNumber.value = 0;\n } else {\n starsCountInputNumber.value = ratingStars.length;\n }\n\n // Rating default/saved alignment from icons in left panel\n if ( affectedEl ) {\n wptbRatingAlignment = affectedEl.style.textAlign;\n }\n \n if( wptbRatingAlignment ) {\n var b = prop.getElementsByClassName('wptb-rating-alignment-btn');\n \n for ( var i = 0; i < b.length; i++ ) {\n b[i].classList.remove( 'selected' );\n \n if ( b[i].getAttribute('data-star_alignment') == wptbRatingAlignment ) {\n b[i].classList.add( 'selected' );\n }\n }\n }\n\n let successBox = affectedEl.querySelector( '.wptb-success-box' );\n if( successBox ) {\n let showNumberRatingCheckbox = prop.querySelector( 'input[type=\"checkbox\"][data-type=\"show-number-rating\"]' );\n if( successBox.style.display == 'block' ) {\n showNumberRatingCheckbox.checked = true;\n let numeralRatingOptionContainers = prop.getElementsByClassName( 'wptb-numeral-rating-option-container' );\n for( let i = 0; i < numeralRatingOptionContainers.length; i++ ) {\n numeralRatingOptionContainers[i].style.display = 'block';\n }\n } else {\n showNumberRatingCheckbox.checked = false;\n }\n\n let wptbTextMessage = successBox.querySelector( '.wptb-text-message' );\n if( wptbTextMessage ) {\n let numberRatingSize = wptbTextMessage.style.fontSize;\n let numberRatingColor = wptbTextMessage.style.color;\n\n let numberSizeInputRange = prop.querySelector( 'input[type=\"range\"][data-type=\"numeral-rating-size\"]' ),\n numberSizeInputNumber = prop.querySelector( 'input[type=\"number\"][data-type=\"numeral-rating-size\"]' ),\n numberColorInput = prop.querySelector( 'input[type=\"text\"][data-type=\"numeral-rating-color\"]' );\n\n numberSizeInputRange.value = parseInt( numberRatingSize ) ? parseInt( numberRatingSize ) : 10;\n numberSizeInputNumber.value = parseInt( numberRatingSize ) ? parseInt( numberRatingSize ) : 10;\n numberColorInput.value = WPTB_Helper.rgbToHex( numberRatingColor );\n }\n }\n }\n }\n }\n\n node.onclick = function () {\n var infArr = this.className.match(/wptb-element-((.+-)\\d+)/i),\n optionsClass = '.wptb-' + infArr[2] + 'options' +\n '.wptb-options-' + infArr[1];\n\n document.getElementsByClassName('wptb-elements-container')[0].style.display = 'none';\n document.getElementsByClassName('wptb-settings-section')[0].style.display = 'none';\n document.getElementById(\"element-options-group\").style.display = 'block';\n\n var children = document.getElementById(\"element-options-group\").childNodes;\n for (var i = 0; i < children.length; i++) {\n if (children[i].style)\n children[i].style.display = 'none';\n }\n\n document.querySelector(optionsClass).style.display = 'block';\n\n //var listStyleType, textAlign;\n\n// switch (element.kind) {\n\n// case 'text':\n// jQuery(prop).find('[data-type=color]').wpColorPicker({ defaultColor: node.style.color });\n// prop.querySelector('[type=number][data-type=font-size]').value\n// = prop.querySelector('[type=range][data-type=font-size]').value\n// = node.style.fontSize.substring(0, node.style.fontSize.length - 2);\n// break;\n// case 'list':\n// textAlign = node.querySelector('li p').style.textAlign;\n// listStyleType = node.querySelector('li').style.listStyleType;\n// if ( prop.querySelector( 'select[data-type=list-class]' ) ) {\n// console.log(textAlign);\n// console.log(listStyleType);\n// console.log(listStyleType);\n// console.log(prop);\n// prop.querySelector('select[data-type=list-class]').selectedIndex = ( listStyleType == 'decimal' ? 0 : 1 );\n// }\n// if ( prop.querySelector('select[data-type=list-style-type]') ) {\n// prop.querySelector('select[data-type=list-style-type]').selectedIndex = (listStyleType == 'circle' ? 0 : (listStyleType == 'square' ? 1 : 2));\n// }\n// if ( prop.querySelector('select[data-type=list-alignment]') ) {\n// prop.querySelector('select[data-type=list-alignment]').selectedIndex = (textAlign == 'left' ? 0 : (textAlign == 'center' ? 1 : 2));\n// }\n// break;\n// case 'image':\n// break;\n// case 'button':\n// jQuery(prop).find('[data-type=button-color]').wpColorPicker({ defaultColor: node.style.backgroundColor });\n// break;\n//\n// }\n };\n\n if (element.kind == 'button') {\n //We must add this special kind of property, since it is triggered with click event\n var buttons = prop.getElementsByClassName('wptb-btn-size-btn');\n\n for (var i = 0; i < buttons.length; i++) {\n buttons[i].onclick = function () {\n var size = this.innerHTML,\n n_Class = this.dataset.element,\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\n type = infArr[1],\n num = infArr[2],\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];\n affectedEl.classList.remove('wptb-size-S');\n affectedEl.classList.remove('wptb-size-M');\n affectedEl.classList.remove('wptb-size-L');\n affectedEl.classList.remove('wptb-size-XL');\n affectedEl.classList.add('wptb-size-' + size);\n var b = this.parentNode.getElementsByClassName('wptb-btn-size-btn');\n for (var i = 0; i < b.length; i++) {\n b[i].classList.remove('selected');\n }\n this.classList.add('selected');\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n }\n\n /*\n * alignment option in left panel using icons for star-rating\n */\n if (element.kind == 'star_rating') {\n //We must add this special kind of property, since it is triggered with click event\n var buttons = prop.getElementsByClassName('wptb-rating-alignment-btn');\n\n for (var i = 0; i < buttons.length; i++) {\n buttons[i].onclick = function () {\n var star_alignment = this.getAttribute('data-star_alignment'),\n n_Class = this.dataset.element,\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\n type = infArr[1],\n num = infArr[2],\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];\n affectedEl.style.textAlign = star_alignment;\n\n var b = this.parentNode.getElementsByClassName('wptb-rating-alignment-btn');\n for (var i = 0; i < b.length; i++) {\n b[i].classList.remove('selected');\n }\n this.classList.add('selected');\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n }\n /*\n * alignment option in left panel using icons for list\n */\n if (element.kind == 'list') {\n //We must add this special kind of property, since it is triggered with click event\n var buttons = prop.getElementsByClassName('wptb-list-alignment-btn');\n\n for (var i = 0; i < buttons.length; i++) {\n buttons[i].onclick = function () {\n var list_alignment = this.getAttribute('data-list_alignment'),\n n_Class = this.dataset.element,\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\n type = infArr[1],\n num = infArr[2],\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];\n\n let listItems = affectedEl.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n let p = listItems[i].querySelector( 'p' );\n if ( p ) {\n p.style.textAlign = list_alignment;\n }\n }\n\n var b = this.parentNode.getElementsByClassName('wptb-list-alignment-btn');\n for (var i = 0; i < b.length; i++) {\n b[i].classList.remove('selected');\n }\n this.classList.add('selected');\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n }\n /*\n * alignment option in left panel using icons for button\n */\n if (element.kind == 'button') {\n //We must add this special kind of property, since it is triggered with click event\n var buttons = prop.getElementsByClassName('wptb-button-alignment-btn');\n\n for (var i = 0; i < buttons.length; i++) {\n buttons[i].onclick = function () {\n var button_alignment = this.getAttribute('data-button_alignment'),\n n_Class = this.dataset.element,\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\n type = infArr[1],\n num = infArr[2],\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];\n\n var jc = '';\n if (button_alignment == 'left') {\n jc = 'start';\n } else if (button_alignment == 'right') {\n jc = 'flex-end';\n } else {\n jc = 'center';\n }\n affectedEl.getElementsByClassName('wptb-button-wrapper')[0].style.justifyContent = jc;\n\n var b = this.parentNode.getElementsByClassName('wptb-button-alignment-btn');\n for (var i = 0; i < b.length; i++) {\n b[i].classList.remove('selected');\n }\n this.classList.add('selected');\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n }\n\n /*\n * alignment option in left panel using icons for image\n */\n if (element.kind == 'image') {\n //We must add this special kind of property, since it is triggered with click event\n var buttons = prop.getElementsByClassName('wptb-image-alignment-btn');\n\n for (var i = 0; i < buttons.length; i++) {\n buttons[i].onclick = function () {\n var image_alignment = this.getAttribute('data-image_alignment'),\n n_Class = this.dataset.element,\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\n type = infArr[1],\n num = infArr[2],\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0];\n\n var image_alignment_value = '';\n if (image_alignment == 'left') {\n image_alignment_value = 'left';\n } else if (image_alignment == 'right') {\n image_alignment_value = 'right';\n } else {\n image_alignment_value = 'none';\n }\n \n affectedEl.querySelector( '.wptb-image-wrapper a' ).style.float = image_alignment_value;\n\n var b = this.parentNode.getElementsByClassName('wptb-image-alignment-btn');\n for (var i = 0; i < b.length; i++) {\n b[i].classList.remove('selected');\n }\n this.classList.add('selected');\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n }\n\n var optionControls = prop.getElementsByClassName('wptb-element-property');\n\n for (var i = 0; i < optionControls.length; i++) {\n if ( optionControls[i].classList.contains( 'wptb-color-picker' ) ) {\n jQuery(optionControls[i]).wpColorPicker({\n change: function ( event, ui ) {\n WPTB_Helper.wpColorPickerChange( event, ui );\n \n //console.log(event);\n WPTB_Helper.wpColorPickerCheckChangeForTableStateSaving( event );\n },\n clear: function( event ) {\n WPTB_Helper.wpColorPickerChange( event );\n }\n });\n }\n \n if( optionControls[i].classList.contains( 'wptb-stars-count-field' ) ) {\n WPTB_Helper.numberImputSize( optionControls[i], 1, 10 );\n }\n\n if ( optionControls[i].dataset.type === 'font-size' || optionControls[i].dataset.type === 'image-size' ||\n optionControls[i].dataset.type === 'star-size' || optionControls[i].dataset.type === 'numeral-rating-size' ) {\n var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0];\n slider.oninput = function () {\n this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].value = this.value;\n this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].onchange( event );\n }\n }\n\n// if (optionControls[i].dataset.type === 'image-size') {\n// var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0];\n// slider.oninput = function () {\n// this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].value = this.value;\n// this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].onchange( event );\n// }\n// }\n// \n// if ( optionControls[i].dataset.type === 'star-size' ) {\n// var slider = optionControls[i].parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0];\n// slider.oninput = function () {\n// this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].value = this.value;\n// this.parentNode.parentNode.getElementsByClassName('wptb-size-number')[0].onchange( event );\n// }\n// }\n\n optionControls[i].onchange = function ( event ) {\n var n_Class = this.dataset.element,\n infArr = n_Class.match(/wptb-options-(.+)-(\\d+)/i),\n type = infArr[1],\n num = infArr[2],\n affectedEl = document.getElementsByClassName('wptb-element-' + type + '-' + num)[0],\n val = this.value;\n\n switch ( this.dataset.type ) {\n case 'src':\n var img = affectedEl.getElementsByTagName(\"img\")[0];\n img.src = this.value;\n break;\n case 'alternative-text':\n var img = affectedEl.getElementsByTagName('img')[0];\n img.alt = this.value;\n break;\n case 'image-link':\n affectedEl.getElementsByTagName('a')[0].href = WPTB_Helper.linkHttpCheckChange( this.value );\n break;\n case 'image-link-target':\n if (this.checked == true) {\n affectedEl.getElementsByTagName('a')[0].target = '_blank';\n } else {\n affectedEl.getElementsByTagName('a')[0].target = '_self';\n }\n break;\n case 'image-link-nofollow':\n if (this.checked == true) {\n affectedEl.getElementsByTagName('a')[0].rel = 'nofollow';\n } else {\n affectedEl.getElementsByTagName('a')[0].removeAttribute('rel');\n }\n break;\n case 'image-size':\n affectedEl.getElementsByTagName('a')[0].style.width = this.value + '%';\n affectedEl.getElementsByTagName('a')[0].style.height = 'auto';\n this.parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0].value = this.value;\n break;\n case 'font-size':\n affectedEl.style.fontSize = val + 'px';\n this.parentNode.parentNode.getElementsByClassName('wptb-size-slider')[0].value = this.value;\n break;\n case 'rating-alignment':\n var jc = '';\n if (this.value == 'left') {\n jc = 'start';\n } else if (this.value == 'right') {\n jc = 'right';\n } else {\n jc = 'center';\n }\n affectedEl.style.textAlign = jc;\n break;\n case 'button-link':\n if ( this.value ) {\n affectedEl.getElementsByTagName( 'a' )[0].href = WPTB_Helper.linkHttpCheckChange( this.value );\n } else {\n affectedEl.getElementsByTagName( 'a' )[0].removeAttribute( 'href' );\n }\n break;\n case 'button-link-target':\n if (this.checked == true) {\n affectedEl.getElementsByTagName('a')[0].target = '_blank';\n } else {\n affectedEl.getElementsByTagName('a')[0].target = '_self';\n }\n break;\n case 'button-link-nofollow':\n if (this.checked == true) {\n affectedEl.getElementsByTagName('a')[0].rel = 'nofollow';\n } else {\n affectedEl.getElementsByTagName('a')[0].removeAttribute( 'rel' );\n }\n break;\n case 'button-id':\n if( this.value ) {\n affectedEl.getElementsByTagName( 'a' )[0].id = this.value;\n } else {\n affectedEl.getElementsByTagName( 'a' )[0].removeAttribute( 'id' );\n }\n case 'button-color':\n break;\n case 'list-class':\n let parentNode = event.target\n .parentNode\n .parentNode\n .querySelector('[data-type=list-style-type]')\n .parentNode,\n parentNodeSettingItem = parentNode.parentNode;\n if (val == 'unordered') {\n parentNode.style.display = 'flex';\n \n parentNodeSettingItem.querySelector( '.wptb-list-icon-select-label' ).style.display = 'flex';\n let listItem = affectedEl.querySelectorAll('li');\n for (var i = 0; i < listItem.length; i++) {\n let p = listItem[i].querySelector( 'p' );\n p.removeAttribute ( 'class' );\n p.classList.add( 'wptb-list-style-type-disc' );\n }\n parentNodeSettingItem.querySelector('[data-type=list-style-type]').value = 'disc';\n } else {\n parentNode.style.display = 'none';\n parentNodeSettingItem.querySelector( '.wptb-list-icon-select-label' ).style.display = 'none';\n var listItem = affectedEl.querySelectorAll('li');\n for (var i = 0; i < listItem.length; i++) {\n let p = listItem[i].querySelector( 'p' );\n p.removeAttribute ( 'class' );\n }\n }\n break;\n case 'list-style-type':\n var listItem = affectedEl.querySelectorAll('li');\n for (var i = 0; i < listItem.length; i++) {\n let p = listItem[i].querySelector( 'p' );\n p.removeAttribute ( 'class' );\n p.classList.add( 'wptb-list-style-type-' + val.toLowerCase() );\n }\n break;\n case 'star-size':\n let ratingStar = affectedEl.querySelectorAll('li');\n for( let i = 0; i < ratingStar.length; i++ ) {\n ratingStar[i].style.width = val + 'px';\n ratingStar[i].style.height = val + 'px';\n let span = ratingStar[i].querySelectorAll( 'span' );\n for( let j = 0; j < span.length; j++ ) {\n if( span[j].querySelector( 'svg' ) ) {\n span[j].style.width = val + 'px';\n span[j].style.height = val + 'px';\n span[j].querySelector( 'svg' ).style.width = val + 'px';\n }\n }\n }\n break;\n case 'show-number-rating':\n let wptbNumeralRatingOptionContainer = WPTB_Helper.findAncestor( this, 'wptb-star_rating-options' )\n .getElementsByClassName( 'wptb-numeral-rating-option-container' );\n \n WPTB_Helper.starRatingTextMessageChenge( affectedEl );\n \n if( wptbNumeralRatingOptionContainer.length > 0 ) {\n let wptbTextMessage = affectedEl.querySelector( '.wptb-text-message' );\n \n let val = this.checked ? 'checked' : 'unchecked';\n if( val== 'checked' ) {\n for ( let i = 0; i < wptbNumeralRatingOptionContainer.length; i++ ) {\n wptbNumeralRatingOptionContainer[i].style.display = 'block';\n }\n wptbTextMessage.parentNode.style.display = 'block';\n } else if ( val == 'unchecked' ) {\n for ( let i = 0; i < wptbNumeralRatingOptionContainer.length; i++ ) {\n wptbNumeralRatingOptionContainer[i].style.display = 'none';\n }\n wptbTextMessage.parentNode.style.display = 'none';\n }\n }\n break;\n case 'numeral-rating-size':\n let wptbTextMessageSize = affectedEl.querySelector('.wptb-text-message');\n wptbTextMessageSize.style.fontSize = val + 'px';\n wptbTextMessageSize.style.height = val + 'px';\n wptbTextMessageSize.style.lineHeight = val + 'px';\n break;\n case 'stars-count':\n let starRatings = affectedEl.querySelectorAll( 'li' );\n \n let starRatingsCount = starRatings.length;\n \n if( val > starRatingsCount ) {\n let difference = val - starRatingsCount;\n let starRatingsLast = starRatings[starRatings.length - 1];\n \n let parent = starRatingsLast.parentNode;\n for( let i = 0; i < difference; i++ ){\n let newStarRating = starRatingsLast.cloneNode( true );\n newStarRating.removeAttribute( 'class' );\n newStarRating.setAttribute( 'class', 'wptb-rating-star' );\n newStarRating.dataset.value = parseInt(starRatingsLast.dataset.value) + i + 1;\n WPTB_Helper.starRatingEventHandlersAdd( newStarRating );\n parent.appendChild( newStarRating );\n }\n } else if( val < starRatingsCount ) {\n let difference = parseInt( starRatingsCount ) - parseInt( val );\n \n if( val == 0 ) {\n difference--;\n starRatings[0].removeAttribute( 'class' );\n starRatings[0].setAttribute( 'class', 'wptb-rating-star' );\n starRatings[0].style.display = 'none';\n }\n \n let starRatingLength = starRatings.length;\n for( i = 0; i < difference; i++ ) {\n starRatings[0].parentNode.removeChild( starRatings[starRatingLength - i - 1] );\n }\n } else if( val == starRatingsCount && starRatingsCount == 1 ) {\n starRatings[0].style.display = 'inline-block';\n }\n \n WPTB_Helper.starRatingTextMessageChenge( affectedEl );\n \n break;\n }\n \n \n if( event.target.classList.contains( 'wptb-size-slider' ) || event.target.classList.contains( 'wptb-size-slider' ) ) {\n event.target.onmouseup = function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n } else {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\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 getDragImageCustom: function ( type ) {\n let hostName = location.protocol + '//' + location.hostname;\n let img = document.createElement( 'img' );\n img.src = hostName + '/wp-content/plugins/wp-table-builder/inc/admin/views/builder/icons/' + type + '.png';\n return img;\n },\n dragImagesArr: function() {\n return {\n text: WPTB_Helper.getDragImageCustom( 'text' ),\n image: WPTB_Helper.getDragImageCustom( 'image' ),\n button: WPTB_Helper.getDragImageCustom( 'button' ),\n list: WPTB_Helper.getDragImageCustom( 'list' ),\n star_rating: WPTB_Helper.getDragImageCustom( 'half-filled-rating-star' )\n };\n },\n listItemsRecalculateIndex: function( ulElem ) {\n let par = ulElem.querySelectorAll( 'p' );\n if ( par.length > 0 ) {\n for ( let i = 0; i < par.length; i++ ) {\n par[i].dataset.listStyleTypeIndex = Number( i ) + 1 + '.';\n }\n }\n },\n listItemsTinyMceInit: function( listItem ) {\n tinyMCE.init({\n target: listItem,\n inline: true,\n plugins: \"link, paste\",\n dialog_type: \"modal\",\n theme: 'modern',\n menubar: false,\n fixed_toolbar_container: '#wpcd_fixed_toolbar',\n paste_as_text: true,\n toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',\n setup: function(ed) {\n ed.on('keydown', function(e) {\n let article = e.target.parentNode;\n if ( e.keyCode == 13 ) {\n e.preventDefault();\n let text = e.target.innerHTML;\n let duplicate = new WPTB_ListItem( text, article, true );\n \n article.parentNode.insertBefore( duplicate.getDOMElement(), article );\n WPTB_Helper.listItemsTinyMceInit( duplicate.getDOMElement().firstChild );\n e.target.querySelector( 'p' ).innerText = 'New List Item';\n //tinyMCE.execCommand('mceInsertContent', false, 'New List Item');\n WPTB_Helper.listItemsRecalculateIndex( article.parentNode );\n \n return;\n \n } else if ( e.keyCode == '8' || e.keyCode == '46' ) {\n let p = e.target.querySelector( 'p' );\n let pText = p.innerHTML.replace(/<[^>]+>/g, '');\n pText = pText.replace( /\\s+/g, ' ' ).trim();\n pText = pText.replace( / /g, '').trim();\n \n if( pText == '' ) {\n e.preventDefault();\n e.target.querySelector( 'p' ).innerText = '\\n';\n } else {\n let selectedText = WPTB_Helper.getSelectionText();\n selectedText = selectedText.replace( /\\s+/g, ' ' ).trim();\n selectedText = selectedText.replace( / /g, '' ).trim();\n if( selectedText == pText ) {\n e.preventDefault();\n e.target.querySelector( 'p' ).innerText = '\\n';\n }\n }\n }\n \n let wptbListItem = e.target.parentNode;\n let wptbActionsField = new WPTB_ActionsField();\n\n wptbActionsField.addActionField( 2, wptbListItem );\n\n wptbActionsField.setParameters( wptbListItem );\n });\n \n ed.on( 'keyup', function( e ) {\n let wptbListItem = e.target.parentNode;\n let wptbActionsField = new WPTB_ActionsField();\n\n wptbActionsField.addActionField( 2, wptbListItem );\n\n wptbActionsField.setParameters( wptbListItem );\n \n e.target.onblur = function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n });\n },\n init_instance_callback: function (editor) {\n window.currentEditor = editor;\n editor.on('focus', function (e) {\n var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;\n if (window.currentEditor &&\n document.getElementById('wptb_builder').scrollTop >= 55 &&\n window.currentEditor.bodyElement.style.display != 'none') {\n document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';\n document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';\n document.getElementById('wpcd_fixed_toolbar').style.top = '100px';\n } else {\n document.getElementById('wpcd_fixed_toolbar').style.position = 'static';\n delete document.getElementById('wpcd_fixed_toolbar').style.right;\n delete document.getElementById('wpcd_fixed_toolbar').style.top;\n }\n });\n }\n });\n },\n buttonsTinyMceInit: function( target ) {\n tinyMCE.init({\n target: target,\n inline: true,\n plugins: \"link\",\n dialog_type: \"modal\",\n theme: 'modern',\n menubar: false,\n fixed_toolbar_container: '#wpcd_fixed_toolbar',\n toolbar: 'bold italic strikethrough',\n setup : function(ed) {\n ed.on( 'keydown', function(e) {\n if (e.keyCode == 13) {\n e.preventDefault();\n }\n let wptbButtonContainer = WPTB_Helper.findAncestor( target, 'wptb-button-container' );\n \n let wptbActionsField = new WPTB_ActionsField();\n\n wptbActionsField.addActionField( 1, wptbButtonContainer );\n\n wptbActionsField.setParameters( wptbButtonContainer );\n });\n \n ed.on( 'keyup', function(e) {\n let wptbButtonContainer = WPTB_Helper.findAncestor( target, 'wptb-button-container' );\n \n let wptbActionsField = new WPTB_ActionsField();\n\n wptbActionsField.addActionField( 1, wptbButtonContainer );\n\n wptbActionsField.setParameters( wptbButtonContainer );\n \n e.target.onblur = function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n });\n },\n init_instance_callback: function (editor) {\n window.currentEditor = editor;\n editor.on('focus', function (e) {\n var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;\n if (window.currentEditor &&\n document.getElementById('wptb_builder').scrollTop >= 55 &&\n window.currentEditor.bodyElement.style.display != 'none') {\n document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';\n document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';\n document.getElementById('wpcd_fixed_toolbar').style.top = '100px';\n } else {\n document.getElementById('wpcd_fixed_toolbar').style.position = 'static';\n delete document.getElementById('wpcd_fixed_toolbar').style.right;\n delete document.getElementById('wpcd_fixed_toolbar').style.top;\n }\n });\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' ) {\n let irisSquareHandle = wpPickerContainer.getElementsByClassName( 'iris-square-handle' );\n if( irisSquareHandle.length > 0 ) {\n irisSquareHandle = irisSquareHandle[0];\n irisSquareHandle.onmouseup = function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n } else if( event.originalEvent.type == 'strip' ) {\n let uiSliderHandle = wpPickerContainer.getElementsByClassName( 'iris-slider-offset' );\n if( uiSliderHandle.length > 0 ) {\n uiSliderHandle = uiSliderHandle[0];\n uiSliderHandle.onmouseup = function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n }\n }\n }\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 == 'list' ) {\n return new WPTB_List();\n } else if ( el == 'image' ) {\n return new WPTB_Image();\n } else if ( el == 'text' ) {\n return new WPTB_Text();\n } else if ( el == 'button' ) {\n return new WPTB_Button();\n } else if( el == 'star_rating' ) {\n return new WPTB_StarRating();\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-text-message');\n wptbTextMessageSize.style.color = uiColor;\n }\n\n } else {\n affectedEl.style.color = uiColor;\n }\n },\n starRatingSelectHoverSet : function( event ) {\n let starRating;\n if( ! event.target.classList.contains( 'wptb-rating-star' ) ) {\n starRating = WPTB_Helper.findAncestor( event.target, 'wptb-rating-star' );\n } else {\n starRating = event.target;\n }\n \n let onStar = parseInt( starRating.dataset.value, 10 ); // The star currently mouse on\n\n // Now highlight all the stars that's not after the current hovered star\n let children = starRating.parentNode.children;\n if( event.type == \"mouseover\" ) {\n for( let j = 0; j < children.length; j++ ) {\n if( j < onStar ) {\n if( j == onStar - 1 ) {\n if ( event.target.classList.contains( 'wptb-rating-star-left-signal-part' ) ) {\n children[j].classList.add( 'wptb-rating-star-hover-half' );\n children[j].classList.remove( 'wptb-rating-star-hover-full' );\n } else if( event.target.classList.contains( 'wptb-rating-star-right-signal-part' ) ) {\n children[j].classList.add( 'wptb-rating-star-hover-full' );\n children[j].classList.remove( 'wptb-rating-star-hover-half' );\n }\n } else {\n children[j].classList.add( 'wptb-rating-star-hover-full' );\n children[j].classList.remove( 'wptb-rating-star-hover-half' );\n }\n } else {\n children[j].classList.remove( 'wptb-rating-star-hover-full' );\n children[j].classList.remove( 'wptb-rating-star-hover-half' );\n }\n }\n } else if ( event.type == \"click\" ) {\n for( let j = 0; j < children.length; j++ ) {\n if( j < onStar ) {\n if( j == onStar - 1 ) {\n if ( event.target.classList.contains( 'wptb-rating-star-left-signal-part' ) ) {\n children[j].classList.add( 'wptb-rating-star-selected-half' );\n children[j].classList.remove( 'wptb-rating-star-selected-full' );\n } else if( event.target.classList.contains( 'wptb-rating-star-right-signal-part' ) ) {\n children[j].classList.add( 'wptb-rating-star-selected-full' );\n children[j].classList.remove( 'wptb-rating-star-selected-half' );\n }\n } else {\n children[j].classList.add( 'wptb-rating-star-selected-full' );\n children[j].classList.remove( 'wptb-rating-star-selected-half' );\n }\n } else {\n children[j].classList.remove( 'wptb-rating-star-selected-full' );\n children[j].classList.remove( 'wptb-rating-star-selected-half' );\n }\n }\n }\n \n },\n starRatingEventHandlersAdd: function( ratingStar ) {\n ratingStar.onmouseover = function( event ) {\n event.stopPropagation();\n WPTB_Helper.starRatingSelectHoverSet( event );\n }\n ratingStar.onmouseout = function() {\n let children = this.parentNode.children;\n for( let j = 0; j < children.length; j++ ) {\n children[j].classList.remove( 'wptb-rating-star-hover-half' );\n children[j].classList.remove( 'wptb-rating-star-hover-full' );\n }\n }\n\n /* 2. Action to perform on click */\n ratingStar.onclick = function( event ) {\n WPTB_Helper.starRatingSelectHoverSet( event );\n \n /* Rating number message */\n let wptbStarRatingContainer = WPTB_Helper.findAncestor( event.target, 'wptb-star_rating-container' );\n\n WPTB_Helper.starRatingTextMessageChenge( wptbStarRatingContainer );\n\n let wptbActionsField = new WPTB_ActionsField( 1, wptbStarRatingContainer );\n\n wptbActionsField.setParameters( wptbStarRatingContainer );\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\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 thisValue = String( thisValue );\n if ( thisValue > maxValue ) {\n this.value = maxValue;\n }\n }\n },\n starRatingTextMessageChenge: function( starRatingContainer ) {\n let ratingNumber = starRatingContainer.getElementsByClassName( 'wptb-rating-star-selected-full' ).length;\n if( starRatingContainer.getElementsByClassName( 'wptb-rating-star-selected-half' ).length > 0 ) {\n ratingNumber = parseInt( ratingNumber ) + 0.5;\n }\n \n let wptbTextMessageCommon = starRatingContainer.querySelectorAll( 'li' ),\n wptbTextMessageCommonVal = wptbTextMessageCommon.length,\n wptbTextMessage = starRatingContainer.querySelector( '.wptb-text-message' );\n if( wptbTextMessageCommonVal == 1 && wptbTextMessageCommon[0].style.display == 'none' ) {\n wptbTextMessage.innerHTML = '';\n return;\n }\n \n wptbTextMessage.innerHTML = ratingNumber + '/' + wptbTextMessageCommonVal;\n }\n}\n","var WPTB_Image = function ( src, DOMElementProt ) {\n let DOMElement,\n elImage,\n kindIndexProt = undefined,\n copy = false;\n if ( DOMElementProt == undefined ) {\n DOMElement = document.createElement( 'div' );\n elImage = document.createElement( 'div' );\n\t let anchor = document.createElement( 'a' ),\n\t img = document.createElement( 'img' );\n anchor.style.display = 'block';\n anchor.appendChild( img );\n DOMElement.classList.add( 'wptb-image-container' );\n elImage.classList.add( 'wptb-image-wrapper' );\n elImage.appendChild( anchor );\n DOMElement.appendChild( elImage );\n \n anchor.onclick = function( e ) {\n e.preventDefault();\n }\n \n file_frame = wp.media.frames.file_frame = wp.media({\n\t\ttitle: 'Select a image to upload',\n\t\tbutton: {\n text: 'Use this image'\n\t\t},\n\t\tmultiple: false,\n frame: 'post'\n });\n \n let imageSetting = function( img, attachment ) {\n let imgSrc = attachment.url;\n let linkArr = imgSrc.split( ':' ),\n linkClean;\n if ( Array.isArray( linkArr ) && linkArr.length > 0 ) {\n linkClean = linkArr[linkArr.length - 1];\n }\n img.src = linkClean;\n img.height = attachment.height;\n img.width = attachment.width;\n img.style.width = '100%';\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n \n // When an image is select, run a callback.\n file_frame.on( 'select', function() {\n attachment = file_frame.state().props.toJSON();\n imageSetting( img, attachment );\n });\n \n // When an image is insert, run a callback.\n file_frame.on( 'insert', function () {\n attachment = file_frame.state().get( 'selection' ).first().toJSON();\n imageSetting( img, attachment );\n });\n \n // Finally, open the modal\n if (src == undefined) {\n file_frame.open();\n file_frame.menuItemVisibility( 'gallery', 'hide' );\n file_frame.menuItemVisibility(\"playlist\", \"hide\"), \n file_frame.menuItemVisibility(\"video-playlist\", \"hide\"), \n file_frame.menuItemVisibility(\"audio-playlist\", \"hide\")\n } else {\n img.src = src;\n }\n } else {\n DOMElement = DOMElementProt.cloneNode( true );\n \n DOMElement.getElementsByTagName( 'a' )[0].onclick = function(e) {\n e.preventDefault();\n };\n \n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\n kindIndexProt = wptbElementMutch[1];\n copy = true;\n };\n }\n \n this.kind = 'image';\n this.getDOMElement = function () {\n return DOMElement;\n };\n\tapplyGenericItemSettings( this, kindIndexProt, copy );\n\n\treturn this;\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 console.log(event);\n console.log(this);\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 WPTB_List = function ( innerElements, DOMElementProt ) {\n\n var el_L = document.createElement('ul'), item,\n DOMElement = document.createElement('div'),\n kindIndexProt = undefined,\n copy = false;\n DOMElement.classList.add( 'wptb-list-item-container' );\n\n this.kind = 'list';\n\n if (innerElements === '') {\n //Case for edit mode list\n } else if ( !innerElements ) {\n for (var i = 0; i < 3; i++) {\n item = new WPTB_ListItem( '<p>List Item ' + (i + 1) + '</p>');\n el_L.appendChild(item.getDOMElement());\n }\n } else {\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\n kindIndexProt = wptbElementMutch[1];\n copy = true;\n };\n \n for ( var i = 0; i < innerElements.length; i++ ) {\n let listItem = DOMElementProt.querySelector( 'li' );\n item = new WPTB_ListItem( innerElements[i], listItem, true );\n el_L.appendChild(item.getDOMElement());\n }\n }\n DOMElement.appendChild(el_L);\n //window.addElementOptions('list', elList);\n\n this.getDOMElement = function () {\n return DOMElement;\n }\n applyGenericItemSettings( this, kindIndexProt, copy );\n WPTB_Helper.listItemsRecalculateIndex( el_L );\n\n return this;\n};","var WPTB_ListItem = function ( text, DOMElementProt, copy ) {\n let wptbListItemReturn;\n if ( DOMElementProt == undefined || ( DOMElementProt && copy )) {\n if (text == undefined) text = 'New List Item';\n var DOMElement = document.createElement('li'),\n //divdot = document.createElement('div'),\n divcontent = document.createElement('div');\n //libullet = document.createElement('li');\n //divdot.classList.add('wptb-list-item-style-dot');\n divcontent.classList.add('wptb-list-item-content');\n //libullet.classList.add('wptb-bullet');\n if ( DOMElementProt ) {\n let styleDot = DOMElementProt.getAttribute( 'style' );\n if ( styleDot ) {\n DOMElement.setAttribute( 'style', styleDot );\n }\n }\n //DOMElement.appendChild(divdot);\n DOMElement.appendChild(divcontent);\n //divdot.appendChild(libullet);\n divcontent.innerHTML = text;\n divcontent.onkeyup = window.listItemKeyListener;\n \n wptbListItemReturn = true;\n } else {\n var DOMElement = DOMElementProt;\n var divcontent = DOMElement.getElementsByClassName( 'wptb-list-item-content' )[0];\n \n divcontent.onkeyup = window.listItemKeyListener;\n \n wptbListItemReturn = false;\n }\n \n DOMElement.onmouseenter = function ( event ) {\n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.addActionField( 2, DOMElement );\n \n wptbActionsField.setParameters( DOMElement );\n console.log(DOMElement);\n };\n\n DOMElement.onmouseleave = function ( event ) {\n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.leaveFromField( event, DOMElement, 2 );\n \n return false;\n };\n\n this.getDOMElement = function () {\n return DOMElement;\n };\n \n if ( wptbListItemReturn ) {\n return this;\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}","var WPTB_Parser2 = function (code) {\n if( Array.isArray( code ) ) {\n let elementHtml;\n \n if ( code.length == 1) {\n return elementHtml.appendChild( document.createTextNode( code[0] ) );\n }\n if( 0 in code ) {\n let tagName = code[0];\n elementHtml = document.createElement( tagName );\n \n if ( 1 in code ) {\n if( Array.isArray( code[1] ) ) {\n let attributes = code[1];\n \n for( let i = 0; i < attributes.length; i++ ) {\n if( Array.isArray( attributes[i] ) ) {\n elementHtml.setAttribute(attributes[i][0], attributes[i][1]);\n }\n }\n }\n }\n \n if ( 2 in code ) {\n if ( Array.isArray( code[2] ) ) {\n for ( let i = 0; i < code[2].length; i++ ) {\n if ( typeof code[2][i] === 'string' && tagName.toLowerCase() == 'p' ) {\n elementHtml.appendChild( document.createTextNode( code[2][i] ) );\n continue;\n }\n if ( ! WPTB_Parser( code[2][i] ) ) continue;\n elementHtml.appendChild( WPTB_Parser( code[2][i] ) );\n }\n } else if( typeof code[2] === 'string' ) {\n elementHtml.appendChild( document.createTextNode( code[2] ) );\n }\n \n }\n }\n \n return elementHtml;\n } else {\n return false;\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 let wptbDropHandle = document.querySelector( '.wptb-drop-handle' ),\n wptbDropBorderMarker = document.querySelector( '.wptb-drop-border-marker' );\n if ( wptbDropHandle || wptbDropBorderMarker ) {\n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n }\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 = 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 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 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_Space = function ( elSpaceBetween ) {\n\n function newElementProxy(el) {\n if (el.includes('list')) {\n return new WPTB_List();\n } else if (el.includes('image')) {\n return new WPTB_Image();\n } else if (el.includes('text')) {\n return new WPTB_Text();\n } else if (el.includes('button')) {\n return new WPTB_Button();\n }\n }\n let spaceBetween;\n if ( ! elSpaceBetween ) {\n spaceBetween = document.createElement('div'), spaceBetween.classList.add('wptb-space-between');\n } else {\n spaceBetween = elSpaceBetween;\n }\n\n spaceBetween.ondragenter = function () {\n this.classList.add('visible');\n };\n spaceBetween.ondragover = function (event) {\n event.preventDefault();\n };\n\n spaceBetween.ondragleave = function () {\n this.classList.remove('visible');\n };\n\n spaceBetween.ondrop = function (event) {\n event.stopPropagation();\n\n var p = event.target.nextSibling,\n td = event.target,\n element, t_space, spaceParent;\n\n while ( !td.classList.contains('wptb-droppable') ) {\n td = td.parentNode;\n }\n\n if (event.dataTransfer.getData('wptbElement')) {\n element = newElementProxy(event.dataTransfer.getData('wptbElement'));\n this.classList.remove('visible');\n\n if (p == null) {\n td.appendChild(element.getDOMElement());\n td.appendChild(new WPTB_Space());\n } else {\n td.insertBefore(element.getDOMElement(), p);\n td.insertBefore(new WPTB_Space(), p);\n }\n\n } else {\n alert(event.dataTransfer.getData('node'));\n element = document.getElementsByClassName(event.dataTransfer.getData('node'))[0];\n t_space = element.nextSibling;\n spaceParent = element.parentNode;\n if (t_space != undefined) {\n spaceParent.removeChild(t_space);\n }\n\n if (p == null) {\n td.appendChild(element);\n td.appendChild(new WPTB_Space());\n } else {\n td.insertBefore(element, p);\n td.insertBefore(new WPTB_Space(), p);\n }\n\n }\n this.classList.remove('visible');\n };\n \n if ( ! elSpaceBetween ) {\n return spaceBetween;\n }\n};","var WPTB_StarRating = function ( DOMElementProt, countStarts ) {\n if( ! countStarts ) {\n if( ! DOMElementProt ) {\n countStarts = 5;\n } else {\n countStarts = DOMElementProt.querySelectorAll( 'li' ).length;\n }\n }\n \n let DOMElement = document.createElement('div'),\n ratingStarsBox = document.createElement( 'div' ),\n ratingStarsList = document.createElement( 'ul' ),\n successBox = document.createElement( 'div' ),\n textMessage = document.createElement( 'div' ),\n kindIndexProt = undefined,\n copy = false;\n \n DOMElement.classList.add( 'wptb-star_rating-container' );\n ratingStarsBox.classList.add( 'wptb-rating-stars-box' );\n ratingStarsList.classList.add( 'wptb-rating-stars-list' );\n successBox.classList.add( 'wptb-success-box' );\n successBox.style.display = 'none';\n textMessage.classList.add( 'wptb-text-message' );\n textMessage.style.fontSize = '25px';\n \n let filledRatingStarHtml = '<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" \\n\\\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"20px\" style=\"width: 20px;\" viewBox=\"0 0 426.667 426.667\" \\n\\\n style=\"enable-background:new 0 0 426.667 426.667;\" xml:space=\"preserve\">\\n\\\n <polygon points=\"426.667,165.12 273.28,152.107 213.333,10.667 153.387,152.107 0,165.12 \\n\\\n 116.48,266.027 81.493,416 213.333,336.427 345.173,416 310.187,266.027\"/></svg>';\n \n let notFilledRatingStarHtml = '<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" \\n\\\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"20px\" style=\"width: 20px;\" viewBox=\"0 0 426.667 426.667\" \\n\\\n style=\"enable-background:new 0 0 426.667 426.667;\" xml:space=\"preserve\">\\n\\\n <path d=\"M426.667,165.12L273.28,151.893L213.333,10.667l-59.947,141.44L0,165.12l116.48,100.907L81.493,416l131.84-79.573\\n\\\n L345.173,416L310.4,266.027L426.667,165.12z M213.333,296.533L133.12,344.96l21.333-91.307l-70.827-61.44l93.44-8.107 \\n\\\n l36.267-85.973l36.48,86.187l93.44,8.107l-70.827,61.44l21.333,91.307L213.333,296.533z\"/></svg>';\n \n let halfFilledRatingStarHtml = '<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" \\n\\\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"20px\" style=\"width: 20px;\" viewBox=\"0 0 426.667 426.667\" \\n\\\n style=\"enable-background:new 0 0 426.667 426.667;\" xml:space=\"preserve\">\\n\\\n <path d=\"M426.667,165.12L273.28,151.893L213.333,10.667l-59.947,141.44L0,165.12l116.48,100.907L81.493,416l131.84-79.573 \\n\\\n L345.173,416L310.4,266.027L426.667,165.12z M213.333,296.533v-198.4l36.48,86.187l93.44,8.107l-70.827,61.44l21.333,91.307 \\n\\\n L213.333,296.533z\"/></svg>';\n \n \n for( let i = 0; i < countStarts; i++ ) {\n let ratingStar = document.createElement( 'li' );\n ratingStar.classList.add( 'wptb-rating-star' );\n ratingStar.style.width = '20px';\n let ratingStarZeroSet = '';\n if( i == 0 ) {\n ratingStarZeroSet = '<span class=\"wptb-rating-star-zero-set\"></span>';\n }\n \n ratingStar.innerHTML = '<span class=\"wptb-rating-star-left-signal-part\">' + ratingStarZeroSet + '</span><span class=\"wptb-filled-rating-star\">' + filledRatingStarHtml + '</span>'\n + '<span class=\"wptb-not-filled-rating-star\">' + notFilledRatingStarHtml + '</span>'\n + '<span class=\"wptb-half-filled-rating-star\">' + halfFilledRatingStarHtml + '</span><span class=\"wptb-rating-star-right-signal-part\"></span>';\n ratingStar.dataset.value = i + 1;\n ratingStarsList.appendChild( ratingStar );\n }\n\n successBox.appendChild( textMessage );\n ratingStarsBox.appendChild( ratingStarsList );\n ratingStarsBox.appendChild( successBox );\n DOMElement.appendChild( ratingStarsBox );\n \n \n\n \n // Creation of a new star rating when copying to avoid errors when assigning new event handlers.\n if ( DOMElementProt ) {\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\n kindIndexProt = wptbElementMutch[1];\n copy = true;\n };\n \n var wptbRatingStarsBox = DOMElementProt.querySelector( '.wptb-rating-stars-box' );\n if ( wptbRatingStarsBox ) {\n var wptbRatingStarsBoxAttributes = [...wptbRatingStarsBox.attributes];\n if ( wptbRatingStarsBoxAttributes.length > 0 ) {\n for( let i = 0; i < wptbRatingStarsBoxAttributes.length; i++ ) {\n if ( wptbRatingStarsBoxAttributes[i].name == 'style') {\n ratingStarsBox.setAttribute( wptbRatingStarsBoxAttributes[i].name, wptbRatingStarsBoxAttributes[i].value );\n }\n } \n }\n }\n \n let wptbRatingStarsOld = wptbRatingStarsBox.querySelectorAll( 'li' );\n let wptbRatingStars = ratingStarsList.querySelectorAll( 'li' );\n if ( wptbRatingStarsOld.length > 0 && wptbRatingStars.length > 0 ) {\n let iMax = wptbRatingStarsOld.length < countStarts ? wptbRatingStarsOld.length : countStarts;\n for( let i = 0; i < wptbRatingStarsOld.length; i++ ) {\n let wptbRatingStarsAttributes = [...wptbRatingStarsOld[i].attributes];\n if ( wptbRatingStarsAttributes.length > 0 ) {\n for( let j = 0; j < wptbRatingStarsAttributes.length; j++ ) {\n wptbRatingStars[i].setAttribute( wptbRatingStarsAttributes[j].name, wptbRatingStarsAttributes[j].value );\n } \n }\n \n let wptbRatingStarsOldSpan = wptbRatingStarsOld[i].children;\n let wptbRatingStarsSpan = wptbRatingStars[i].children;\n for( let k = 0; k < wptbRatingStarsOldSpan.length; k++ ){\n let wptbRatingStarsOldSpanAttributes = [...wptbRatingStarsOldSpan[k].attributes];\n if( wptbRatingStarsOldSpanAttributes.length > 0 ) {\n for ( let l = 0; l < wptbRatingStarsOldSpanAttributes.length; l++ ) {\n wptbRatingStarsSpan[k].setAttribute( wptbRatingStarsOldSpanAttributes[l].name, wptbRatingStarsOldSpanAttributes[l].value );\n let wptbRatingStarsOldSvg = wptbRatingStarsOldSpan[k].querySelector( 'svg' );\n if( wptbRatingStarsOldSvg ) {\n let wptbRatingStarsOldSvgStyle = wptbRatingStarsOldSvg.getAttribute( 'style' );\n wptbRatingStarsSpan[k].querySelector( 'svg' ).setAttribute( 'style', wptbRatingStarsOldSvgStyle );\n }\n }\n }\n }\n }\n }\n \n var wptbSuccessBox = wptbRatingStarsBox.querySelector( '.wptb-success-box' );\n if ( wptbSuccessBox ) {\n var wptbSuccessBoxAttributes = [...wptbSuccessBox.attributes];\n for( let i = 0; i < wptbSuccessBoxAttributes.length; i++ ) {\n if ( wptbSuccessBoxAttributes[i].name == 'style') {\n successBox.setAttribute( wptbSuccessBoxAttributes[i].name, wptbSuccessBoxAttributes[i].value );\n }\n } \n }\n \n var wptbTextMessage = wptbSuccessBox.querySelector( '.wptb-text-message' );\n if ( wptbTextMessage ) {\n textMessage.innerHTML = wptbTextMessage.innerHTML;\n var wptbTextMessageAttributes = [...wptbTextMessage.attributes];\n for( let i = 0; i < wptbTextMessageAttributes.length; i++ ) {\n if ( wptbTextMessageAttributes[i].name == 'style') {\n textMessage.setAttribute( wptbTextMessageAttributes[i].name, wptbTextMessageAttributes[i].value );\n }\n } \n }\n }\n \n this.kind = 'star_rating';\n\n this.getDOMElement = function () {\n return DOMElement;\n };\n\n applyGenericItemSettings( this, kindIndexProt, copy );\n \n return this;\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 WPTB_Stringifier2 = function ( node, start = false ) {\n\n\tif ( node == undefined ) {\n\t\treturn '';\n\t} else if ( node.tagName == undefined && node.nodeType == 3 ) {\n return node.nodeValue;\n }\n \n let code = [],\n children,\n int_elem_arr = false,\n attributes = [...node.attributes],\n attributes_list = [],\n internal_elements = [];\n if ( ( node.parentNode.classList.contains( 'wptb-list-item-content' ) || \n node.parentNode.classList.contains( 'mce-content-body' ) ) && \n node.tagName.toLowerCase() == 'p' ) {\n children = node.childNodes;\n int_elem_arr = true;\n } else if( node.children.length > 0 ) {\n children = node.children;\n } else {\n children = node.childNodes;\n }\n if ( attributes.length > 0 ) {\n for ( let i = 0; i < attributes.length; i++ ) {\n attributes_list[i] = [attributes[i].name, attributes[i].value];\n }\n } else {\n attributes_list = '';\n }\n \n if ( children.length > 0 ) {\n for ( let i = 0; i < children.length; i++) {\n let inter_elem = WPTB_Stringifier(children[i]);\n \n if ( Array.isArray( inter_elem ) || int_elem_arr ) {\n internal_elements[i] = inter_elem;\n } else if ( typeof inter_elem === 'string' && inter_elem ) {\n internal_elements = inter_elem;\n }\n }\n } else {\n internal_elements = '';\n }\n \n \n code.push(node.tagName.toLowerCase(), attributes_list , internal_elements);\n \n return code;\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 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] );\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 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_Text = function ( text , DOMElementProt ) {\n let DOMElement = document.createElement('div'),\n elText2 = document.createElement('div'),\n elP = document.createElement('p'),\n kindIndexProt = undefined,\n copy = false;\n \n DOMElement.classList.add( 'wptb-text-container' );\n\n elP.innerHTML = text != undefined ? text : 'Text';\n elText2.appendChild(elP);\n DOMElement.appendChild(elText2);\n if ( DOMElementProt ) {\n let wptbElementMutch = DOMElementProt.className.match( /wptb-element-((.+-)\\d+)/i );\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\n kindIndexProt = wptbElementMutch[1];\n copy = true;\n };\n\n let attributes = [...DOMElementProt.attributes];\n for( let i = 0; i < attributes.length; i++ ) {\n DOMElement.setAttribute(attributes[i].name, attributes[i].value);\n }\n } \n\n this.kind = 'text';\n this.getDOMElement = function () {\n return DOMElement;\n };\n applyGenericItemSettings( this, kindIndexProt, copy );\n\n return this;\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 } 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 listItems,\n copy;\n \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 } else if ( kindIndexProt && ! copy ) {\n let kindIndexProtArr = kindIndexProt.split('-');\n index = kindIndexProtArr[kindIndexProtArr.length - 1];\n }\n \n node.onmouseenter = function ( event ) {\n if( event.target.classList.contains( 'wptb-moving-mode' ) ) {\n return;\n }\n \n let i, wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.addActionField( 1, node );\n \n wptbActionsField.setParameters( node );\n \n node.classList.remove( 'wptb-ondragenter' );\n \n //wptbActionsField.addActionField( 1, node )\n \n if ( element.kind === 'button' ) {\n let a = node.querySelector( 'a' ),\n target = a.querySelector( 'div' );\n a.onclick = function( e ) {\n e.preventDefault();\n }\n WPTB_Helper.buttonsTinyMceInit( target );\n } else if (element.kind === 'text') {\n tinyMCE.init({\n target: node.childNodes[0],\n inline: true,\n plugins: \"link, paste\",\n dialog_type: \"modal\",\n theme: 'modern',\n menubar: false,\n force_br_newlines : false,\n force_p_newlines : false,\n forced_root_block : '',\n fixed_toolbar_container: '#wpcd_fixed_toolbar',\n paste_as_text: true,\n toolbar: 'bold italic strikethrough link unlink | alignleft aligncenter alignright alignjustify',\n setup : function( ed ) {\n ed.on( 'change', function(e) {\n let row = WPTB_Helper.findAncestor( node, 'wptb-row' );\n if( row.classList.contains( 'wptb-table-head' ) ) {\n let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );\n WPTB_Helper.dataTitleColumnSet( table );\n }\n \n \n });\n \n ed.on( 'keydown', function(e) {\n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.addActionField( 1, node );\n \n wptbActionsField.setParameters( node );\n });\n ed.on( 'keyup', function(e) {\n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.addActionField( 1, node );\n \n wptbActionsField.setParameters( node );\n \n e.target.onblur = function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n });\n \n },\n init_instance_callback: function (editor) {\n window.currentEditor = editor;\n //editor.fire('focus');\n editor.on('focus', function (e) {\n var totalWidth = document.getElementsByClassName('wptb-builder-panel')[0].offsetWidth;\n if (window.currentEditor &&\n document.getElementById('wptb_builder').scrollTop >= 55 &&\n window.currentEditor.bodyElement.style.display != 'none') {\n document.getElementById('wpcd_fixed_toolbar').style.position = 'fixed';\n document.getElementById('wpcd_fixed_toolbar').style.right = (totalWidth / 2 - document.getElementById('wpcd_fixed_toolbar').offsetWidth / 2) + 'px';\n document.getElementById('wpcd_fixed_toolbar').style.top = '100px';\n } else {\n document.getElementById('wpcd_fixed_toolbar').style.position = 'static';\n delete document.getElementById('wpcd_fixed_toolbar').style.right;\n delete document.getElementById('wpcd_fixed_toolbar').style.top;\n }\n });\n }\n });\n } else if( element.kind === 'list' ) {\n listItems = node.getElementsByClassName( 'wptb-list-item-content' );\n for ( let i = 0; i < listItems.length; i++ ) {\n WPTB_Helper.listItemsTinyMceInit( listItems[i] );\n }\n } \n };\n \n node.onmouseleave = function ( event ) {\n let wptbActionsField = new WPTB_ActionsField();\n \n if( wptbActionsField.wptbActions && wptbActionsField.wptbActions.type != '1' ) {\n return;\n }\n \n wptbActionsField.leaveFromField( event, node, 1 );\n };\n \n let wptbActions = document.getElementsByClassName( 'wptb-actions' );\n if( wptbActions.length > 0 ) {\n wptbActions = wptbActions[0];\n \n }\n \n // Change data-title-column if the title was changed\n if( element.kind == 'text' ) {\n var observer = new MutationObserver( function( mutations ) {\n let row = WPTB_Helper.findAncestor( node, 'wptb-row' );\n if( row.classList.contains( 'wptb-table-head' ) ) {\n let table = WPTB_Helper.findAncestor( row, 'wptb-preview-table' );\n WPTB_Helper.dataTitleColumnSet( table );\n }\n });\n var config = { attributes: true, attributeFilter: ['style'] };\n observer.observe( element.getDOMElement(), config );\n } else if( element.kind == 'star_rating' ) {\n let ratingStars = node.getElementsByClassName( 'wptb-rating-star' );\n for ( let i = 0; i < ratingStars.length; i++ ) {\n let ratingStar = ratingStars[i];\n \n \n WPTB_Helper.starRatingEventHandlersAdd( ratingStar );\n \n let ritingStarZeroSet = ratingStar.querySelector( '.wptb-rating-star-zero-set' );\n if( ritingStarZeroSet ) {\n ritingStarZeroSet.onclick = function( event ) {\n let ulStarList = WPTB_Helper.findAncestor( event.target, 'wptb-rating-stars-list' );\n if( ulStarList ) {\n let children = ulStarList.children;\n for( let i = 0; i < children.length; i++ ) {\n children[i].classList.remove( 'wptb-rating-star-selected-full' );\n children[i].classList.remove( 'wptb-rating-star-selected-half' );\n }\n }\n }\n }\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\n document.counter.increment(element.kind);\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","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":"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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 \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
|