WP Table Builder – WordPress Table Plugin - Version 1.2.2

Version Description

  • HOTFIX: JavaScript Error that Broke Some Pages and Conflicts with Other Plugin.
  • FIX: Cell Management Not Working for New Tables.
Download this release

Release Info

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

Code changes from version 1.2.1 to 1.2.2

inc/admin/controls/control-section-group-collapse.php CHANGED
@@ -26,7 +26,7 @@ class Control_Section_Group_Collapse {
26
  * @param bool $open_state force section to start as opened or not
27
  */
28
  public static function add_section( $section_id, $section_label, $section_controls, $control_call, $open_state = true ) {
29
- $section_controls = apply_filters( 'wp-table-builder/register-controls-section-group/' . $section_id, $section_controls );
30
  $start_section_id = "${section_id}_section-group-start";
31
  $end_section_id = "${section_id}_section-group-end";
32
 
26
  * @param bool $open_state force section to start as opened or not
27
  */
28
  public static function add_section( $section_id, $section_label, $section_controls, $control_call, $open_state = true ) {
29
+ $section_controls = apply_filters( 'wp-table-builder/register-controls-section-group/' . $section_id, $section_controls, $section_id );
30
  $start_section_id = "${section_id}_section-group-start";
31
  $end_section_id = "${section_id}_section-group-end";
32
 
inc/admin/js/admin.js CHANGED
@@ -339,10 +339,6 @@ var WPTB_ActionsField = function WPTB_ActionsField() {
339
 
340
  var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
341
  wptbTableStateSaveManager.tableStateSet();
342
-
343
- WPTB_Helper.elementOptionsSet('table_setting', element);
344
- WPTB_Helper.elementStartScript(element, 'table_setting');
345
- WPTB_Helper.wptbDocumentEventGenerate('element:controls:active', element);
346
  } else {
347
  document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
348
  }
@@ -1773,6 +1769,9 @@ var WPTB_Helper = {
1773
  var infArr = element.className.match(/wptb-element-((.+-)\d+)/i);
1774
  if (!infArr) {
1775
  var table_id = WPTB_Helper.detectMode();
 
 
 
1776
  if (element.classList.contains('wptb-preview-table')) {
1777
  element.classList.add('wptb-element-main-table_setting-' + table_id);
1778
  } else if (element.classList.contains('wptb-cell')) {
@@ -2953,10 +2952,6 @@ var WPTB_Settings = function WPTB_Settings() {
2953
  event.target.onmouseleave = '';
2954
  var table = document.querySelector('.wptb-preview-table');
2955
  WPTB_Table();
2956
-
2957
- WPTB_Helper.elementOptionsSet('table_setting', table);
2958
- WPTB_Helper.elementStartScript(table, 'table_setting');
2959
- WPTB_Helper.wptbDocumentEventGenerate('element:controls:active', table);
2960
  };
2961
  }
2962
  }
@@ -2977,10 +2972,6 @@ var WPTB_Settings = function WPTB_Settings() {
2977
  event.target.onmouseleave = '';
2978
  var table = document.querySelector('.wptb-preview-table');
2979
  WPTB_Table();
2980
-
2981
- WPTB_Helper.elementOptionsSet('table_setting', table);
2982
- WPTB_Helper.elementStartScript(table, 'table_setting');
2983
- WPTB_Helper.wptbDocumentEventGenerate('element:controls:active', table);
2984
  };
2985
  }
2986
  }
@@ -4799,6 +4790,9 @@ var array = [],
4799
 
4800
  WPTB_LeftPanel();
4801
 
 
 
 
4802
  // this code gets the ID of the active element in the toolbar
4803
  // and stores it in the data attribute of the common container element "wpcd_fixed_toolbar"
4804
  // let wptbPhElement = document.getElementsByClassName( 'wptb-ph-element' );
@@ -5257,8 +5251,8 @@ var applyGenericItemSettings = function applyGenericItemSettings(element, kindIn
5257
  node.classList.add('wptb-element-' + element.kind + '-' + index);
5258
  }
5259
  }
5260
- new WPTB_ElementOptions(element, index, kindIndexProt);
5261
  WPTB_Helper.elementStartScript(element.getDOMElement());
 
5262
  document.counter.increment(element.kind);
5263
  }
5264
 
339
 
340
  var wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
341
  wptbTableStateSaveManager.tableStateSet();
 
 
 
 
342
  } else {
343
  document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
344
  }
1769
  var infArr = element.className.match(/wptb-element-((.+-)\d+)/i);
1770
  if (!infArr) {
1771
  var table_id = WPTB_Helper.detectMode();
1772
+ if (!table_id) {
1773
+ table_id = 'startedid-0';
1774
+ }
1775
  if (element.classList.contains('wptb-preview-table')) {
1776
  element.classList.add('wptb-element-main-table_setting-' + table_id);
1777
  } else if (element.classList.contains('wptb-cell')) {
2952
  event.target.onmouseleave = '';
2953
  var table = document.querySelector('.wptb-preview-table');
2954
  WPTB_Table();
 
 
 
 
2955
  };
2956
  }
2957
  }
2972
  event.target.onmouseleave = '';
2973
  var table = document.querySelector('.wptb-preview-table');
2974
  WPTB_Table();
 
 
 
 
2975
  };
2976
  }
2977
  }
4790
 
4791
  WPTB_LeftPanel();
4792
 
4793
+ WPTB_Helper.elementStartScript(table, 'table_setting');
4794
+ WPTB_Helper.elementOptionsSet('table_setting', table);
4795
+
4796
  // this code gets the ID of the active element in the toolbar
4797
  // and stores it in the data attribute of the common container element "wpcd_fixed_toolbar"
4798
  // let wptbPhElement = document.getElementsByClassName( 'wptb-ph-element' );
5251
  node.classList.add('wptb-element-' + element.kind + '-' + index);
5252
  }
5253
  }
 
5254
  WPTB_Helper.elementStartScript(element.getDOMElement());
5255
+ new WPTB_ElementOptions(element, index, kindIndexProt);
5256
  document.counter.increment(element.kind);
5257
  }
5258
 
inc/admin/js/admin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["WPTB_ActionsField.js","WPTB_Builder.js","WPTB_Cell.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementObject.js","WPTB_ElementOptions.js","WPTB_Helper.js","WPTB_Initializer.js","WPTB_LeftPanel.js","WPTB_MultipleSelect.js","WPTB_Parser.js","WPTB_Polyfills.js","WPTB_Settings.js","WPTB_Stringifier.js","WPTB_Table.js","WPTB_TableStateSaveManager.js","WPTB_innerElementSet.js","applyGenericItemSettings.js"],"names":["WPTB_ActionsField","wptbActions","document","getElementsByClassName","length","addActionField","actionType","thisNode","body","getElementsByTagName","actions","previousNode","activeElem","classList","remove","parentNode","removeChild","btnDelete","btnCopy","createElement","add","appendChild","type","onclick","event","act","target","el","infArr","className","match","hasOwnProperty","kind","thisRow","WPTB_Helper","rowIsTop","table","findAncestor","contains","dataTitleColumnSet","wptbActionsField","actionsRemove","wptbTableStateSaveManager","WPTB_TableStateSaveManager","tableStateSet","copy","activeElement","activeElemParent","Array","isArray","data","elemProt","tinyMceClear","WPTB_ElementObject","insertBefore","getDOMElement","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","actionsHide","ondragend","elementDragEndClear","coordinatesElement","getBoundingClientRect","wptbContainer","correctTop","top","parseFloat","removeEventListener","left","right","clientWidth","addEventListener","leaveFromField","node","relatedTarget","onmouseleave","opacity","WPTB_Builder","table_id","detectMode","http","XMLHttpRequest","urlSet","ajaxurl","open","setRequestHeader","onreadystatechange","d","readyState","status","ans","responseText","getElementById","value","wptbTableSetupEl","WPTB_Parser","WPTB_Table","element","querySelector","dataset","wptbTableContainerMaxWidth","maxWidth","tdDefaultWidth","WPTB_Settings","elementOptionsSet","elementStartScript","send","counter","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","url","window","location","href","regex","RegExp","results","exec","WPTB_Cell","callback","DOMElement","highlightRow","td","parentRow","columnCount","parseInt","tds","i","classToAdd","ttd","highlightColumn","index","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","ondblclick","stopPropagation","currentTarget","newElementProxy","controlsChange","inputs","highlighted","controlUnicClassCommonPart","addColumnWidth","cellWidth","cellWidthFixedControl","checked","cellWidthFixed","width","getColumnWidth","addRowHeight","cellHeight","cellHeightFixed","height","getRowHeight","controlsInclude","wptbPhElement","wptbElementTypeClass","wptbTypeElementArr","split","wptbInternalActiveElement","j","wptbInternalActiveElementObj","setCoords","y","x","yIndex","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","offsetWidth","offsetHeight","tableFullStyleObj","tableBorderLeft","tableBorderRight","tableBorderTop","tableBorderBottom","nodeName","toLowerCase","firstChild","lastChild","WPTB_DropHandle","thisElem","e","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","ondragenter","ondragover","preventDefault","ondragleave","ondrop","getData","wptbMovingMode","text","getDOMParentElement","innerElement","innerElementNext","undefined","onscroll","localName","indics","types","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","increment","key","nextIndex","kindIndexProt","wpTemplateId","itemHtml","replace","trim","innerHTML","wptbElementMutch","elementClearFromTinyMce","inElems","querySelectorAll","inElemObj","WPTB_ElementOptions","capture","hexToRgb","hex","result","rgbToHex","rgb","isHex","rgbm","Math","round","toString","toUpperCase","slice","test","icon_directory","hostName","protocol","hostname","img","src","wptbDropHandles","wptbDropBorderMarkers","linkHttpCheckChange","link","convertToAbs","currentLocation","origin","linkArr","linkClean","rows","rowHead","computedStyleRowHead","rowHeadChildren","children","contentsForHeader","tdElements","p","textContent","textAlign","fontSize","color","backgroundColor","thisRowChildren","wptbTitleColumn","wptbTitleColumnFontSize","wptbTitleColumnColor","wptbTitleBackgroundColor","wptbTitleAlign","cls","parentElement","row","parent","getSelectionText","txt","getSelection","selection","createRange","elementOptionsPanelClear","elementOptionsGroup","wpColorPickerCheckChangeForTableStateSaving","originalEvent","wpPickerContainer","irisStripMouseUpStateSaveManager","wpColorPickerClear","attribute","isId","input","newInput","setAttribute","decodeURIComponent","cell","xIndexes","yIndexes","wpColorPickerChange","ui","uiColor","classe","ps","number","affectedEl","ratingStar","span","fill","wptbTextMessageSize","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","ucfirst","str","charAt","eventName","details","CustomEvent","detail","bubbles","dispatchEvent","WPTB_ElementsScriptsLauncher","deleteEventHandlers","off","elementChildren","replaceAll","string","search","join","mceContentBodys","k","dataMceStyle","removeAttribute","mceEditFocus","contentEditable","spellCheck","mceIds","elementOptionContainerCustomClassSet","targetInput","customClassForContainer","containerElement","elementOptionContainerAdditionalStyles","containerAdditionalStyles","containerStylesArrOne","containerStylesSet","containerStyleStr","containerStyleStrArr","functionHandler","controlConnectFunctionsName","name","elementKind","elementOptionsContainer","elementOptions","controlActiveElement","regularText","controlInfArr","controlUnicClassName","controls","controlName","control","targetControlValue","targetControlValueGet","push","oneControlInclude","wptbContrlStacksConfigId","tmplControlsConfig","container","jsonControlsConfigJson","jsonControlsConfig","controlClassName","innerElementCopyIncludeHandler","appearDependOnControl","dependOn","targetControlElementClass","dependOnControlName","dependOnControlElementClass","dependOnControlElement","targetControlElement","controlContainerElem","showHideDependOnControlElement","dependOnControlElements","controlsStateManager","targetControlClass","controlChangeIndic","targetControls","selectorElement","elementsSettingsTemplatesJs","elementSettings","elementsSettings","stringify","alignmentValue","elementControlsStateCopy","elementProt","copyElem","infArrProt","infArrCopy","elemProtKind","elemCopyKind","elementsSettingsTemplateJs","elementSettingsProt","elementSettingsCopy","Object","keys","forEach","elementSettingValue","elementSettingKeyCopy","elementControlsStateDelete","nameControl","wptbElementDatas","elementContainerClass","elementOptionClassIndic","elementOptionsGroupId","wptbelementOptionClass","wptbelementOptionsContainer","wptbelementOptionsScriptsContainer","cellEditActiveClass","activateSection","childNodes","elementOptionsGroupChildren","controlScriptsArr","controlappearDependOnControl","controlKey","tmplControlTemplate","elemContainer","elementControlTargetUnicClass","controlTemplate","wptbElementOptionContainer","helperJavascriptElem","helperJavascriptCode","innerText","script","managerExternalCssStyles","elementContainer","selector","cssName","cssValue","head","cssForThisElement","cssText","cssTextArrFirst","pop","selectorExists","cssTextArrSecond","cssTextArrThird","cssNameExists","cssTextArrFourth","splice","registerSections","sections","map","sectionElement","s","sectionDataId","displayType","triggerSectionEvent","prototype","call","visibility","setupSectionButtons","sectionButtons","from","vm","sectionName","wptbSectionButton","wptbSectionDisplayType","setupPanelToggleButtons","$","each","find","click","slideToggle","toggleClass","sectionEvent","setupSidebarToggle","toggleSelector","toggleButton","toggle","externalCssStylesDelete","externalCssStylesCopy","copyElement","activeElemClass","cssForActiveElement","cssForNewElement","infArrCopyEl","cssForActiveElementInnerHTML","cssForNewElementInnerHTML","elementsStylesConvertToObject","stylesElements","stylesObj","styleElemId","getAttribute","elementsStylesSetFromObject","jsonObject","styleCss","saveTable","startSaving","previewSaving","wptbTableStateNumberSave","wptbTableStateNumberShow","bar","toggleTableEditMode","wptb_admin_object","t","messagingArea","code","datas","postId","rs","wptbId","paramIdsNecessaryChange","codeClone","columns","WPTB_Stringifier","outerHTML","datas_containers","styleObjJson","messagingAreaText","setTimeout","params","title","content","elements_datas","elements_styles","security_code","preview_saving","id","action","builderPageUrl","history","pushState","wptbPreviewTable","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","clickOnFreeSpace","cellModeBackground","wpcdFixedToolbar","hasAttribute","elementAjax","dataAjaxData","element_name","element_ajax_data","close","leftScrollPanelCurtain","leftScrollPanelCellSettings","deactivateMultipleSelectMode","wptbPreviewTableTds","activateMultipleSelectMode","checkingDimensionValue","dimension","searchIndex","checkSetGetStyleSizeValue","styleName","computedStyleName","elemStyleValue","elementStyles","checkSetGetStyleColorValue","set","elemStyleColorValue","checkSetGetStyleValue","getValueMaxCountSameElementsInArray","arr","check","maxPropName","recalculateIndexes","trs","maxCols","maxColsFull","tdsArr","jMainIter","colSpan","rowSpan","z","tableRowsColorsReinstall","tableIndex","tableHeaderBackground","tableEvenRowBackground","tableOddRowBackground","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","WPTB_LeftPanel","wptbElementButtons","wptbElement","wptbTablesEditModeCloseButton","addRowToTheEnd","addRowToTheStart","addRowBefore","addRowAfter","addColumnEnd","addColumnStart","addColumnBefore","addColumnAfter","deleteColumn","deleteRow","mergeCells","splitCell","wptbBuilderPanel","wptbHeader","selectedCells","multipleCellMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","first","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","div","columnTitleMobile","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","obj","TypeError","prop","elems","wptbUndo","tableStateGet","wptbUndoredo","wptbUndoRedoContainer","wptbRedo","shortcodePopupWindow","onbeforeunload","wptbSaveDisabled","previewId","floor","random","newHref","URL","searchParams","tableTitleField","onchange","codeMain","tableColumns","minWidth","innerElements","wptbActionsLength","dataMceBogus","columnNameDivContainer","columnNameDiv","array","wptb_preview_table","wptbTableSetup","maxAmountOfCells","maxAmountOfRows","mark","cs","noCells","singleCells","multipleCells","cellSettings","position","column","cellHighlighted","markedCells","controlElemIds","elementControlSizeUnicClass","elementControlSizeFixedUnicClass","sizeName","getSizeFunctionName","size","cellSizeInputs","cellSizeFixedInput","isSquare","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","a","undoSelect","fillTableArray","colspansSums","cells","colspanSumInRow","max","apply","getActualPointsInRow","points","skipInCols","reconstraction","insertRow","borderWidth","cleaner","dataXIndex","tableTdsFor","colspan","tableRows","widthIsSet","arrayTdsFromPreviousRow","wptbFixedWidth","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTdWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","cssForTdsWidthAutoOld","wptbTableAlignment","float","dataYIndex","rowspan","heightIsSet","arrayTdsPrevious","wptbFixedHeight","mergingCellsVertically","forBreak","currentTable","currentTableTd","currentTdStyle","firstCell","c_pos","cellStyle","pos","pendingInsertion","bro","currentCell","l","r","aux","cellNew","rowChildren","rowChildrenLength","cellRowSpan","rowAfter","cellsColSpan","tableRowsIChildren","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","dimensions","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","Number","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","nextRow","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","onresize","generate","wptbTableStateSaving","wptbNewTableSetup","wptbHighlighted","wptbDirectlyhovered","cssForTdsWidthAutoValue","wptbTableTitle","wptbSetupName","datawptbUndoredo","wptbTableSetupNew","wptbLeftScrollPanelCellSetting","tableStateClear","classId","elemKind","onmouseover","wptbElements","elementIndexesArr","elementIndexMax","wptbNodeattributes","attributes","attr","newDataAttributeName","newDataAttributeValue","nodeValue","kindIndexProtArr","node_wptb_element_kind_num","onmouseenter"],"mappings":"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","file":"admin.js","sourcesContent":["var WPTB_ActionsField = function() {\n //this.wptbBorderMarker;\n this.wptbActions;\n if( document.getElementsByClassName( 'wptb-actions' ).length != 0 ) {\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\n }\n \n this.addActionField = ( actionType, thisNode ) => {\n let body = document.getElementsByTagName( 'body' )[0];\n \n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length != 0 ) {\n let previousNode = actions[0].activeElem;\n if( previousNode ) {\n previousNode.classList.remove( 'wptb-directlyhovered' );\n }\n \n while( actions.length != 0 ) {\n actions[0].parentNode.removeChild( actions[0] );\n }\n }\n \n if( actionType == 1 ) {\n \n let btnDelete, btnCopy;\n\n btnDelete = document.createElement( 'span' ),\n btnCopy = document.createElement( 'span' ),\n actions = document.createElement( 'div' );\n\n actions.classList.add( 'wptb-actions' );\n btnDelete.classList.add( 'dashicons', 'dashicons-trash', 'wptb-delete-action' );\n btnCopy.classList.add( 'dashicons', 'dashicons-admin-page', 'wptb-duplicate-action' );\n \n actions.appendChild( btnCopy );\n actions.appendChild( btnDelete );\n \n body.appendChild( actions );\n\n actions.activeElem = thisNode;\n\n actions.type = 1;\n\n btnDelete.onclick = function( event ) {\n let act = event.target.parentNode.activeElem,\n el = act.parentNode;\n let infArr = act.className.match( /wptb-element-(.+)-(\\d+)/i );\n// if( act && infArr && Array.isArray( infArr ) ) {\n// WPTB_Helper.elementControlsStateDelete( act );\n// WPTB_Helper.externalCssStylesDelete( infArr[0] );\n// }\n \n if( act ) {\n el.removeChild( act );\n }\n\n if( act && typeof act === 'object' && act.hasOwnProperty( 'kind' ) && act.kind == 'text' ) {\n let thisRow = el.parentNode;\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n }\n\n let wptbActionsField = new WPTB_ActionsField();\n wptbActionsField.actionsRemove();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n btnCopy.onclick = ( event ) => {\n let copy,\n infArr,\n type;\n let activeElement = event.target.parentNode.activeElem;\n let activeElemParent = activeElement.parentNode;\n infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n type = infArr[1];\n let data = {};\n data.kind = type;\n data.elemProt = activeElement;\n data.tinyMceClear = true;\n copy = new WPTB_ElementObject( data );\n //WPTB_Helper.elementControlsStateCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.externalCssStylesCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.elementStartScript( copy.getDOMElement() );\n \n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n } else {\n copy = {};\n let elementCopy = activeElement.cloneNode( true );\n elementCopy.classList.remove( 'wptb-directlyhovered' );\n \n copy.getDOMElement = function() {\n return elementCopy;\n }\n \n applyGenericItemSettings( copy );\n \n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n \n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-inner-element:copy', activeElement, copy.getDOMElement() );\n }\n \n WPTB_innerElementSet( copy.getDOMElement() );\n\n let wptbActionsField = new WPTB_ActionsField( 1, activeElement );\n wptbActionsField.setParameters( activeElement );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n \n if( thisNode.classList.contains( 'wptb-ph-element' ) ) {\n let btnMove;\n btnMove = document.createElement( 'span' );\n btnMove.classList.add( \"dashicons\", \"dashicons-move\", 'wptb-move-action' );\n btnMove.draggable = true;\n actions.appendChild( btnMove );\n \n btnMove.ondragstart = ( event ) => {\n let wptbElementIconsDirectories = 'wptb-element-icons-directories';\n let tmplIconsDirectories = wp.template( wptbElementIconsDirectories );\n let data = {};\n let jsonIconsDirectories = tmplIconsDirectories( data );\n let IconsDirectories = JSON.parse( jsonIconsDirectories );\n\n let dragImages,\n actions = event.target.parentNode,\n activeElem = actions.activeElem,\n infArr,\n type;\n infArr = activeElem.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n type = infArr[1];\n activeElem.classList.add( 'wptb-moving-mode' );\n\n if( IconsDirectories && typeof IconsDirectories === 'object' && IconsDirectories[type] ) {\n dragImages = WPTB_Helper.getElementIcon( IconsDirectories[type] );\n }\n\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setDragImage( dragImages, 0, 0 );\n event.dataTransfer.setData( 'node', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\n event.dataTransfer.setData( 'wptb-moving-mode', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\n event.dataTransfer.setData( 'wptbElIndic-' + infArr[1], 'wptbElIndic-' + infArr[1] );\n let act = event.target.parentNode.activeElem;\n if( act.kind == 'text' ) {\n let thisRow = act.parentNode.parentNode;\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n }\n } else {\n this.style.display = 'none';\n }\n\n this.actionsHide();\n };\n\n btnMove.ondragend = ( event ) => {\n WPTB_Helper.elementDragEndClear();\n }\n }\n\n actions.style.display = 'flex';\n\n this.wptbActions = actions;\n } \n }\n \n this.setParameters = ( thisNode ) => {\n \n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n } else {\n this.wptbActions = false;\n }\n }\n \n if( this.wptbActions && this.wptbActions.classList.contains( 'wptb-actions' ) ) {\n this.wptbActions.style.display = 'flex';\n } else {\n return;\n }\n \n let coordinatesElement = thisNode.getBoundingClientRect();\n \n let wptbContainer = document.getElementsByClassName( 'wptb-container' )[0];\n let correctTop = () => {\n let coordinatesElement = thisNode.getBoundingClientRect();\n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\n }\n wptbContainer.removeEventListener( 'scroll', correctTop, false );\n \n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\n this.wptbActions.style.left = ( parseFloat( coordinatesElement.right ) - parseFloat( this.wptbActions.clientWidth ) ) + 1 + 'px';\n \n this.wptbActions.style.display = 'flex';\n thisNode.classList.add( 'wptb-directlyhovered' );\n \n wptbContainer.addEventListener( 'scroll', correctTop, false );\n }\n \n this.leaveFromField = ( event, node, actionType ) => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n } else {\n this.wptbActions = false;\n }\n }\n \n if( ! this.wptbActions ) {\n return;\n }\n \n if( event.relatedTarget ) {\n if ( event.relatedTarget.classList.contains( 'wptb-actions' ) ||\n event.relatedTarget.classList.contains( 'wptb-move-action' ) ||\n event.relatedTarget.classList.contains( 'wptb-duplicate-action' ) ||\n event.relatedTarget.classList.contains( 'wptb-delete-action' ) ) {\n if( ! this.wptbActions ) {\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\n }\n this.wptbActions.onmouseleave = ( event ) => {\n if( event.relatedTarget != null && ( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || \n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element') ) && event.relatedTarget != this.wptbActions.activeElem &&\n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-directlyhovered' ) != this.wptbActions.activeElem ) {\n \n// this.wptbActions.style.display = 'none';\n// event.relatedTarget.parentNode.parentNode.classList.remove( 'wptb-directlyhovered' );\n//\n// let wptbActionsField = new WPTB_ActionsField();\n//\n// wptbActionsField.addActionField( 1, event.relatedTarget.parentNode.parentNode );\n//\n// wptbActionsField.setParameters( event.relatedTarget.parentNode.parentNode );\n } else {\n \n }\n \n let wptbActionsField = new WPTB_ActionsField();\n\n wptbActionsField.leaveFromField( event, event.relatedTarget.parentNode.parentNode );\n \n event.target.activeElem.classList.remove( 'wptb-directlyhovered' );\n }\n\n return;\n } \n }\n \n node.classList.remove( 'wptb-directlyhovered' );\n this.wptbActions.style.display = 'none';\n \n if( event.relatedTarget ) {\n if( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element' ) ) {\n this.addActionField( 1, event.relatedTarget.parentNode );\n\n this.setParameters( event.relatedTarget.parentNode );\n }\n }\n }\n \n this.actionsRemove = () => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n }\n }\n \n if( this.wptbActions ) {\n this.wptbActions.parentNode.removeChild( this.wptbActions );\n }\n }\n \n this.actionsHide = () => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n }\n }\n \n if( this.wptbActions ) {\n this.wptbActions.style.opacity = 0;\n }\n }\n}","(function () {\n var WPTB_Builder = function () {\n var table_id = WPTB_Helper.detectMode();\n if ( table_id ) {\n var http = new XMLHttpRequest(),\n urlSet = ajaxurl + \"?action=get_table\" + '&id=' + table_id;\n http.open('GET', urlSet, true);\n http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n http.onreadystatechange = function (d) {\n if (this.readyState == 4 && this.status == 200) {\n var ans = JSON.parse( http.responseText );\n document.getElementById('wptb-setup-name').value = ans[0];\n \n if( ans[1] ) {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n let wptbTableSetupEl = document.getElementsByClassName('wptb-table-setup')[0];\n wptbTableSetupEl.appendChild( WPTB_Parser( ans[1] ) );\n \n let body = document.getElementsByTagName('body')[0];\n \n WPTB_Table();\n let element = document.querySelector( '.wptb-preview-table' );\n if( element ) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n if( ! infArr ) {\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\n }\n \n if( element.dataset.wptbTableContainerMaxWidth ) {\n wptbTableSetupEl.style.maxWidth = element.dataset.wptbTableContainerMaxWidth + 'px';\n \n element.tdDefaultWidth();\n }\n }\n \n //WPTB_LeftPanel();\n WPTB_Settings();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n \n WPTB_Helper.elementOptionsSet( 'table_setting', element );\n WPTB_Helper.elementStartScript( element, 'table_setting' );\n WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', element );\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n }\n \n return;\n }\n };\n http.send(null);\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n document.counter = new ElementCounters();\n document.select = new MultipleSelect();\n\n var initializer = WPTB_Initializer();\n settings = WPTB_Settings();\n };\n\n let url = window.location.href,\n regex = new RegExp('[?&]page=wptb-builder'),\n results = regex.exec( url );\n if ( results ) {\n document.addEventListener('DOMContentLoaded', WPTB_Builder);\n }\n})();","var WPTB_Cell = function ( callback, DOMElement ) {\n\n function highlightRow(td) {\n var parentRow = td.parentNode,\n columnCount = parseInt(document.getElementById('wptb-columns-number').value),\n tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\n for (var i = 0; i < tds.length; i++) {\n tds[i].classList.remove('wptb-highlighted-row-first', 'wptb-highlighted-row-last', 'wptb-highlighted-row-inner', 'wptb-highlighted-column-first', 'wptb-highlighted-column-last', 'wptb-highlighted-column-inner');\n }\n for (var i = 0; i < columnCount; i++) {\n\n var classToAdd = i == 0 ? 'wptb-highlighted-row-first' : i == columnCount - 1 ? 'wptb-highlighted-row-last' : 'wptb-highlighted-row-inner';\n var ttd = parentRow.getElementsByTagName('td')[i];\n if (ttd !== td) {\n ttd.classList.add(classToAdd);\n }\n }\n }\n\n function highlightColumn(td) {\n\n var index,\n parentRow = td.parentNode;\n columnCount = parseInt(document.getElementById('wptb-columns-number').value), rowCount = parseInt(document.getElementById('wptb-rows-number').value), table = document.getElementsByClassName('wptb-preview-table')[0];\n for (var i = 0; i < columnCount; i++) {\n if (parentRow.getElementsByTagName('td')[i] === td) {\n index = i;\n break;\n }\n }\n\n for (var i = 0; i < rowCount; i++) {\n var classToAdd = i == 0 ? 'wptb-highlighted-column-first' : i == rowCount - 1 ? 'wptb-highlighted-column-last' : 'wptb-highlighted-column-inner';\n var tr = table.getElementsByTagName('tr')[i];\n if (tr.getElementsByTagName('td')[index] !== td) {\n tr.getElementsByTagName('td')[index].classList.add(classToAdd);\n }\n }\n }\n \n if( ! DOMElement ) {\n DOMElement = document.createElement(\"td\");\n\n DOMElement.style.padding = jQuery('#wptb-table-padding-number').val() + 'px';\n\n var innerBorderWidth = jQuery('#wptb-table-inner-border-number').val();\n\n if (innerBorderWidth != '' && parseInt(innerBorderWidth) != 0) {\n DOMElement.style.border = innerBorderWidth + 'px solid ' + jQuery('#wptb-table-border-color').val();\n } \n\n DOMElement.classList.add('wptb-droppable', 'wptb-cell');\n }\n\n DOMElement.draggable = false;\n if ( callback ) {\n DOMElement.onclick = callback;\n }\n \n // Cell double click handler\n DOMElement.ondblclick = function( event ) {\n event.stopPropagation();\n if( ! WPTB_Helper.findAncestor( DOMElement, 'wptb-preview-table-manage-cells' ) && event.target == event.currentTarget ) {\n \n WPTB_Helper.wptbDocumentEventGenerate( 'table:cell:dblclick', event.target );\n \n let element = WPTB_Helper.newElementProxy( 'text' );\n element = element.getDOMElement();\n \n DOMElement.appendChild( element );\n \n WPTB_innerElementSet( element );\n }\n }\n \n WPTB_innerElementSet( DOMElement );\n\n function controlsChange( inputs, DOMElement ) {\n if( inputs && typeof inputs === 'object' ) {\n let table = WPTB_Helper.findAncestor( DOMElement, 'wptb-preview-table' ),\n highlighted = table.querySelector( '.wptb-highlighted' );\n if( highlighted ) {\n let infArr = highlighted.className.match(/wptb-element-((.+-)\\d+)/i);\n\n let controlUnicClassCommonPart = '';\n if(infArr && Array.isArray(infArr)) {\n controlUnicClassCommonPart = infArr[1]\n }\n\n if( inputs.hasOwnProperty( 'cellWidth' ) ) {\n table.addColumnWidth( inputs.cellWidth );\n\n if( controlUnicClassCommonPart ) {\n let cellWidthFixedControl = document.querySelector(`.wptb-el-${controlUnicClassCommonPart}-cellWidthFixed`);\n\n if(cellWidthFixedControl && !cellWidthFixedControl.checked) cellWidthFixedControl.checked = true;\n }\n } else if( inputs.hasOwnProperty( 'cellWidthFixed' ) ) {\n if( inputs.cellWidthFixed == 'checked' ) {\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\n table.addColumnWidth( width );\n } else {\n table.addColumnWidth( false, true );\n }\n } else if( inputs.hasOwnProperty( 'cellHeight' ) ) {\n table.addRowHeight( inputs.cellHeight );\n\n if( controlUnicClassCommonPart ) {\n let cellWidthFixedControl = document.querySelector(`.wptb-el-${controlUnicClassCommonPart}-cellHeightFixed`);\n\n if(cellWidthFixedControl && !cellWidthFixedControl.checked) cellWidthFixedControl.checked = true;\n }\n } else if( inputs.hasOwnProperty( 'cellHeightFixed' ) ) {\n if( inputs.cellHeightFixed == 'checked' ) {\n let height = WPTB_Helper.getRowHeight( table, highlighted );\n table.addRowHeight( height );\n } else {\n table.addRowHeight( false, true );\n }\n }\n }\n }\n }\n WPTB_Helper.controlsInclude( DOMElement, controlsChange );\n \n let wptbPhElement = DOMElement.getElementsByClassName( 'wptb-ph-element' );\n \n if ( wptbPhElement.length > 0 ) {\n for( let i = 0; i < wptbPhElement.length; i++ ) {\n wptbPhElement[i].getDOMElement = function() {\n return wptbPhElement[i];\n }\n \n WPTB_innerElementSet( wptbPhElement[i] );\n \n let wptbElementTypeClass = wptbPhElement[i].className.match( /wptb-element-((.+-)\\d+)/i );\n if( wptbElementTypeClass && Array.isArray( wptbElementTypeClass ) ) {\n let wptbTypeElementArr = wptbElementTypeClass[1].split( '-' );\n wptbPhElement[i].kind = wptbTypeElementArr[0];\n applyGenericItemSettings( wptbPhElement[i], wptbElementTypeClass[1] );\n let wptbInternalActiveElement = wptbPhElement[i].getElementsByClassName( 'wptb-in-element' );\n if ( wptbInternalActiveElement.length > 0 ) {\n for ( let j = 0; j < wptbInternalActiveElement.length; j++ ) {\n let wptbInternalActiveElementObj = {};\n wptbInternalActiveElementObj.getDOMElement = function() {\n return wptbInternalActiveElement[j];\n }\n \n applyGenericItemSettings( wptbInternalActiveElementObj );\n }\n }\n }\n }\n }\n\n this.getDOMElement = function () {\n return DOMElement;\n };\n\n this.setCoords = function (y, x) {\n var el = this.getDOMElement();\n el.dataset.yIndex = y;\n el.dataset.xIndex = x;\n };\n\n this.getCoords = function () {\n var coords,\n el = this.getDOMElement();\n coords.x = el.dataset.xIndex;\n coords.y = el.dataset.yIndex;\n return coords;\n };\n\n this.appendElement = function (node) {\n getDOMElement().appendChild(node);\n };\n \n DOMElement.getCellDimensions = function() {\n \n let tdStyleObj = window.getComputedStyle( this, null );\n \n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n \n let tdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n \n let tdPaddingTop = tdStyleObj.getPropertyValue( 'padding-top' );\n let tdPaddingBottom = tdStyleObj.getPropertyValue( 'padding-bottom' );\n \n let tdBorderTopWidth = tdStyleObj.getPropertyValue( 'border-top-width' );\n let tdBorderBottomWidth = tdStyleObj.getPropertyValue( 'border-bottom-width' );\n \n let width = parseInt( this.offsetWidth, 10 ) - \n parseInt( tdPaddingLeft, 10 ) - \n parseInt( tdPaddingRight, 10 ) -\n ( parseInt( tdBorderLeftWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderRightWidth, 10 ) / 2 );\n \n let height = parseInt( this.offsetHeight, 10 ) - \n parseInt( tdPaddingTop, 10 ) - \n parseInt( tdPaddingBottom, 10 ) -\n ( parseInt( tdBorderTopWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderBottomWidth, 10 ) / 2 ); \n \n \n let table = WPTB_Helper.findAncestor( this, 'wptb-preview-table' );\n if( table ) {\n let tableFullStyleObj = window.getComputedStyle( table, null );\n let tableBorderLeft = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let tableBorderRight = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderTop = tableFullStyleObj.getPropertyValue( 'border-top-width' );\n let tableBorderBottom = tableFullStyleObj.getPropertyValue( 'border-bottom-width' );\n \n let tr = this.parentNode;\n if( tr && tr.nodeName.toLowerCase() === 'tr' ) {\n if( tr.firstChild && tr.firstChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderLeft, 10 ) > parseInt( tdBorderLeftWidth, 10 ) ) {\n width += -( parseInt( tableBorderLeft, 10 ) - parseInt( tdBorderLeftWidth, 10 ) ) / 2;\n }\n }\n\n if( tr.lastChild && tr.lastChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderRight, 10 ) > parseInt( tdBorderRightWidth, 10 ) ) {\n width += -( parseInt( tableBorderRight, 10 ) - parseInt( tdBorderRightWidth, 10 ) ) / 2;\n }\n }\n \n let body = tr.parentNode;\n if( body && body.nodeName.toLowerCase() === 'body' ) {\n if( body.firstChild && body.firstChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderTop, 10 ) > parseInt( tdBorderTopWidth, 10 ) ) {\n height += ( parseInt( tableBorderTop, 10 ) - parseInt( tdBorderTopWidth, 10 ) ) / 2;\n }\n }\n \n if( body.lastChild && body.lastChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderBottom, 10 ) > parseInt( tdBorderBottomWidth, 10 ) ) {\n height += ( parseInt( tableBorderBottom, 10 ) - parseInt( tdBorderBottomWidth, 10 ) ) / 2;\n }\n }\n }\n }\n }\n \n return {\n width: parseInt( width ), \n height: parseInt( height )\n };\n }\n\n return this;\n};","var WPTB_DropHandle = function (thisElem, e) {\n \n let wptbDropHandle,\n wptbDropBorderMarker,\n wptbDropBorderMarkerTop,\n wptbDropBorderMarkerRight,\n wptbDropBorderMarkerBottom,\n wptbDropBorderMarkerLeft;\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length == 0 ) {\n wptbDropHandle = document.createElement( 'div' );\n wptbDropHandle.classList.add( 'wptb-drop-handle' );\n \n wptbDropBorderMarker = document.createElement( 'div' );\n wptbDropBorderMarker.classList.add( 'wptb-drop-border-marker' );\n \n wptbDropBorderMarkerTop = document.createElement( 'div' ),\n wptbDropBorderMarkerRight = document.createElement( 'div' ),\n wptbDropBorderMarkerBottom = document.createElement( 'div' ),\n wptbDropBorderMarkerLeft = document.createElement( 'div' );\n \n wptbDropBorderMarkerTop.classList.add( 'wptb-drop-border-marker-top' );\n wptbDropBorderMarkerRight.classList.add( 'wptb-drop-border-marker-right' );\n wptbDropBorderMarkerBottom.classList.add( 'wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerLeft.classList.add( 'wptb-drop-border-marker-left' );\n \n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerTop );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerRight );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerBottom );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerLeft );\n \n let body = document.getElementsByTagName( 'body' );\n if ( body.length > 0 ) {\n body[0].appendChild( wptbDropHandle );\n body[0].appendChild( wptbDropBorderMarker );\n }\n \n wptbDropHandle.ondragenter = function () {\n\n }\n\n wptbDropHandle.ondragover = function (e) {\n e.preventDefault();\n }\n\n wptbDropHandle.ondragleave = function () {\n\n }\n wptbDropHandle.ondrop = function (e) {\n e.preventDefault();\n let element;\n \n if ( e.dataTransfer.getData('wptbElement') ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData('wptbElement') );\n element = element.getDOMElement();\n } else {\n element = document.getElementsByClassName( e.dataTransfer.getData('node') )[0];\n element.classList.remove( 'wptb-moving-mode' );\n element.classList.remove( 'wptb-moving-into-same-elem' );\n element.wptbMovingMode = 1;\n }\n \n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n thisElem = wptbDropHandle.getDOMParentElement();\n if ( thisElem.nodeName.toLowerCase() == 'td' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n }\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n \n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n \n WPTB_innerElementSet( element );\n if( ! element.classList.contains( 'wptb-image-container' ) || element.wptbMovingMode == 1 ) {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n element.wptbMovingMode == undefined;\n }\n }\n let wptbContainer = document.querySelector( '.wptb-container' );\n wptbContainer.onscroll = function() {\n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n }\n } else {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \n thisElem.getElementsByClassName( 'wptb-ph-element' ).length != 0 ) {\n return;\n }\n \n let thisRow;\n if ( thisElem.localName == 'td' ) {\n thisRow = thisElem.parentNode;\n } else if ( thisElem.localName == 'div' && thisElem.classList.contains( 'wptb-ph-element' ) ) {\n thisRow = thisElem.parentNode.parentNode;\n }\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n let indics = e.dataTransfer.types;\n let notDragEnter = false;\n for ( let i = 0; i < indics.length; i++ ) {\n let infArr = indics[i].match( /wptbelindic-([a-z]+)/i );\n if ( infArr && infArr[1] != 'text' ) {\n notDragEnter = true;\n break;\n }\n }\n if( notDragEnter ) {\n return;\n }\n }\n }\n \n wptbDropHandle.style.width = thisElem.offsetWidth + 'px';\n let height = thisElem.offsetHeight,\n coordinatesElement = thisElem.getBoundingClientRect(),\n left = parseFloat( coordinatesElement.left ),\n top;\n wptbDropHandle.style.left = left + 'px';\n \n if( e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) != -1 ) {\n let elementDrag = document.getElementsByClassName( 'wptb-moving-mode' )[0];\n if( thisElem == elementDrag ) {\n wptbDropHandle.classList.add('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.add('wptb-moving-into-same-elem');\n } else {\n wptbDropHandle.classList.remove('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.remove('wptb-moving-into-same-elem');\n }\n }\n \n wptbDropHandle.getDOMParentElement = function() {\n return thisElem;\n }\n \n wptbDropHandle.style.display = 'block';\n wptbDropBorderMarker.style.display = 'block';\n if( thisElem.nodeName.toLowerCase() != 'td' ) {\n let y = e.offsetY==undefined?e.layerY:e.offsetY;\n top = parseFloat( coordinatesElement.top ) - parseFloat( 11 );\n wptbDropHandle.dataset.text = 'Above Element';\n if ( y > height/2 ) {\n top = parseFloat( coordinatesElement.top ) + height - 1;\n wptbDropHandle.dataset.text = 'Below Element';\n }\n } else {\n wptbDropHandle.dataset.text = 'Drop Here';\n top = parseFloat( coordinatesElement.top ) + height/2 - 5;\n }\n wptbDropHandle.style.top = top + 'px';\n\n wptbDropBorderMarker.style.top = coordinatesElement.top + 'px';\n wptbDropBorderMarker.style.left = coordinatesElement.left + 'px';\n\n wptbDropBorderMarkerTop = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-top' );\n wptbDropBorderMarkerTop.style.width = ( parseFloat( thisElem.offsetWidth ) - parseFloat( 1 ) ) + 'px';\n\n wptbDropBorderMarkerRight = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-right' );\n wptbDropBorderMarkerRight.style.height = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) - 1 ) + 'px';\n wptbDropBorderMarkerRight.style.left = wptbDropBorderMarkerTop.style.width;\n\n wptbDropBorderMarkerBottom = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerBottom.style.width = wptbDropBorderMarkerTop.style.width;\n wptbDropBorderMarkerBottom.style.top = wptbDropBorderMarkerRight.style.height;\n\n wptbDropBorderMarkerLeft = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-left' );\n wptbDropBorderMarkerLeft.style.height = wptbDropBorderMarkerRight.style.height;\n}","var ElementCounters = function () {\n\n\tvar priv = [];\n\tpriv['text'] = 0;\n\tpriv['image'] = 0;\n\tpriv['list'] = 0;\n\tpriv['button'] = 0;\n\n\tthis.increment = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn;\n\t\t}\n\t\tpriv[key]++;\n\t}\n\n\tthis.nextIndex = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn priv[key] + 1;\n\t}\n\n\treturn this;\n\n};","var WPTB_ElementObject = function ( data ) {\n let DOMElement, kindIndexProt, copy;\n if( ! data.elemProt ) {\n DOMElement = document.createElement('div'),\n kindIndexProt = undefined,\n copy = false;\n DOMElement.classList.add( 'wptb-' + data.kind + '-container', 'wptb-ph-element' );\n \n let wpTemplateId = 'wptb-' + data.kind + '-content';\n let template = wp.template( wpTemplateId );\n data.node = DOMElement;\n let itemHtml = template( data );\n\n itemHtml = itemHtml.replace(/\\r|\\n|\\t/g, '').trim();\n DOMElement.innerHTML = itemHtml;\n } else {\n DOMElement = data.elemProt.cloneNode( true );\n DOMElement.classList.remove( 'wptb-directlyhovered' );\n let wptbElementMutch = data.elemProt.className.match( /wptb-element-((.+-)\\d+)/i );\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\n kindIndexProt = wptbElementMutch[1];\n };\n copy = true;\n \n if( data.tinyMceClear ) {\n DOMElement = WPTB_Helper.elementClearFromTinyMce( DOMElement );\n }\n }\n \n let inElems = DOMElement.querySelectorAll( '.wptb-in-element' );\n if( inElems.length > 0 ) {\n for ( let i = 0; i < inElems.length; i++ ) {\n let inElemObj = {};\n inElemObj.getDOMElement = function() {\n return inElems[i];\n }\n \n applyGenericItemSettings( inElemObj );\n }\n }\n \n window.addEventListener( 'item:onmouseenter', function( event ) {\n //console.log( event );\n }, false);\n \n \n this.kind = data.kind;\n this.getDOMElement = function () {\n return DOMElement;\n };\n \n applyGenericItemSettings( this, kindIndexProt, copy );\n return this;\n}\n\n\n","var WPTB_ElementOptions = function ( element, index, kindIndexProt ) {\n\n var node = element.getDOMElement();\n node.addEventListener( 'click', function() {\n WPTB_Helper.elementOptionsSet( element.kind, this );\n }, {capture: true} );\n};","var WPTB_Helper = {\n hexToRgb: function( hex ) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec( hex );\n return result ? 'rgb(' + parseInt( result[1], 16 ) + ',' + parseInt( result[2], 16 ) + ',' + parseInt( result[3], 16 ) + ')' : null;\n },\n rgbToHex: function ( rgb ) {\n if( rgb ) {\n if( WPTB_Helper.isHex( rgb ) ) return rgb;\n\n let rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?((?:[0-9]*[.])?[0-9]+)[\\s+]?\\)/i);\n if ( rgbm && rgbm.length === 5) {\n return \"#\" +\n ('0' + Math.round(parseFloat(rgbm[4], 10) * 255).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\n } else {\n rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgbm && rgbm.length === 4) {\n return \"#\" +\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\n } else {\n return '';\n }\n }\n } else {\n return '';\n }\n\n },\n isHex: function( hex ) {\n let regex = new RegExp('^#(?:[A-Fa-f0-9]{3}){1,2}$');\n return regex.test( hex );\n },\n getElementIcon: function ( icon_directory ) {\n let hostName = location.protocol + '//' + location.hostname;\n let img = document.createElement( 'img' );\n img.src = icon_directory;\n return img;\n },\n elementDragEndClear: function() {\n let wptbMovingMode = document.getElementsByClassName( 'wptb-moving-mode' );\n if ( wptbMovingMode.length > 0 ) {\n for( let i = 0; i < wptbMovingMode.length; i++ ) {\n wptbMovingMode[i].classList.remove( 'wptb-moving-mode' );\n }\n }\n\n let wptbDropHandles = document.getElementsByClassName( 'wptb-drop-handle' );\n if ( wptbDropHandles.length > 0 ) {\n for( let i = 0; i < wptbDropHandles.length; i++ ) {\n wptbDropHandles[i].style.display = 'none';\n }\n }\n\n let wptbDropBorderMarkers = document.getElementsByClassName( 'wptb-drop-border-marker' );\n if ( wptbDropBorderMarkers.length > 0 ) {\n for( let i = 0; i < wptbDropBorderMarkers.length; i++ ) {\n wptbDropBorderMarkers[i].style.display = 'none';\n }\n }\n },\n linkHttpCheckChange: function( link, convertToAbs = false ) {\n if ( link ) {\n // even though it is not a best practice and a huge security risk, sometimes our users use javascript tag at href attributes, this check will make sure those tags will not be modified and returned as they are\n if(link.match(/^(javascript:)(.+)$/)){\n return link;\n }\n // relative link checking\n // if link starts with '/', assume it is a relative link to the origin of the current site\n else if( link.match(/^\\/([\\S]+)$/) ){\n if (convertToAbs) {\n const currentLocation = document.location;\n let {origin} = currentLocation;\n\n\n // strip out the '/' at the end of the origin name if there is any\n if (origin.match(/^(.+)\\/$/)) {\n origin = origin.slice(-1);\n }\n\n return `${origin}${link}`;\n }else{\n return link;\n }\n }\n else if ( link.indexOf( 'http://' ) == -1 && link.indexOf( 'https://' ) == -1 ) {\n let linkArr = link.split( '/' ),\n linkClean;\n if ( Array.isArray( linkArr ) && linkArr.length > 0 ) {\n linkClean = linkArr[linkArr.length - 1];\n }\n return document.location.protocol + '//' + linkClean;\n } else { \n return link;\n }\n } else {\n return '';\n }\n },\n dataTitleColumnSet: function( table ) {\n let rows = table.rows,\n rowHead = rows[0];\n let computedStyleRowHead = getComputedStyle( rowHead );\n \n let rowHeadChildren = rowHead.children;\n let contentsForHeader = {};\n for( let i = 0; i < rowHeadChildren.length; i++ ) {\n let tdElements = rowHeadChildren[i].children;\n \n for( let j = 0; j < tdElements.length; j++ ) {\n let element = tdElements[j];\n if( element.classList.contains( 'wptb-ph-element' ) ) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr[1] == 'text' ) {\n let p = element.querySelector( 'p' ),\n textContent = p.textContent,\n textAlign = p.style.textAlign;\n contentsForHeader[rowHeadChildren[i].dataset.xIndex] = [textContent, element.style.fontSize, \n element.style.color, computedStyleRowHead.backgroundColor, textAlign];\n break;\n }\n }\n }\n if( ! contentsForHeader[rowHeadChildren[i].dataset.xIndex] ) {\n contentsForHeader[rowHeadChildren[i].dataset.xIndex] = ['', '', \n '', computedStyleRowHead.backgroundColor, ''];\n }\n }\n for ( let i = 1; i < rows.length; i++ ) {\n let thisRow = rows[i],\n thisRowChildren = thisRow.children;\n for( let j = 0; j < thisRowChildren.length; j++ ) {\n if ( contentsForHeader[thisRowChildren[j].dataset.xIndex] ) {\n thisRowChildren[j].dataset.wptbTitleColumn = contentsForHeader[thisRowChildren[j].dataset.xIndex][0];\n thisRowChildren[j].dataset.wptbTitleColumnFontSize = contentsForHeader[thisRowChildren[j].dataset.xIndex][1];\n thisRowChildren[j].dataset.wptbTitleColumnColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][2];\n thisRowChildren[j].dataset.wptbTitleBackgroundColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][3];\n thisRowChildren[j].dataset.wptbTitleAlign = contentsForHeader[thisRowChildren[j].dataset.xIndex][4];\n } else {\n thisRowChildren[j].dataset.wptbTitleColumn = '';\n thisRowChildren[j].dataset.wptbTitleColumnFontSize = '';\n thisRowChildren[j].dataset.wptbTitleColumnColor = '';\n thisRowChildren[j].dataset.wptbTitleBackgroundColor = '';\n thisRowChildren[j].dataset.wptbTitleAlign = '';\n }\n }\n }\n },\n findAncestor: function( el, cls ) {\n while ( ( el = el.parentElement ) && !el.classList.contains( cls ) );\n return el;\n },\n rowIsTop: function( row ) {\n var parent = row.parentNode;\n if( parent.children[0] == row ) {\n return true;\n } else {\n return false;\n }\n },\n getSelectionText: function() {\n var txt = '';\n if (txt = window.getSelection) {\n txt = window.getSelection().toString();\n } else {\n txt = document.selection.createRange().text;\n }\n return txt;\n },\n elementOptionsPanelClear: function() {\n let elementOptionsGroup = document.getElementById( 'element-options-group' );\n if( elementOptionsGroup ) {\n elementOptionsGroup.innerHTML = '';\n }\n },\n wpColorPickerCheckChangeForTableStateSaving: function( event ) {\n if( event.originalEvent.type == 'external' ) {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } else {\n let wpPickerContainer = WPTB_Helper.findAncestor( event.target, 'wp-picker-container' );\n if( wpPickerContainer ) {\n if( event.originalEvent.type == 'square' || event.originalEvent.type == 'strip' ) {\n let body = document.getElementsByTagName( 'body' )[0];\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n body.addEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n }\n }\n }\n },\n irisStripMouseUpStateSaveManager: function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n \n let body = document.getElementsByTagName( 'body' )[0];\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n },\n wpColorPickerClear: function( attribute, isId ) {\n let input;\n if( isId ) {\n input = [document.getElementById( attribute )];\n input.length = 1;\n } else {\n input = document.getElementsByClassName( attribute );\n }\n for( let i = 0; i < input.length; i++ ) {\n let wpPickerContainer = WPTB_Helper.findAncestor( input[i], 'wp-picker-container' );\n if( wpPickerContainer ) {\n let parent = wpPickerContainer.parentNode;\n parent.removeChild( wpPickerContainer );\n let newInput = document.createElement( 'input' );\n if( isId ) {\n newInput.setAttribute( 'id', attribute );\n } else {\n newInput.classList.add( 'wptb-element-property', attribute );\n }\n newInput.value = \"\";\n parent.appendChild( newInput );\n }\n }\n },\n detectMode: function() {\n var url = window.location.href,\n regex = new RegExp('[?&]table(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if ( ! results ) return false;\n if ( ! results[2] ) return '';\n return decodeURIComponent( results[2].replace(/\\+/g, ' ') );\n },\n getColumnWidth: function( table, cell ) {\n let xIndex = cell.dataset.xIndex;\n let xIndexes = table.querySelectorAll( '[data-x-index=\"' + xIndex + '\"]' );\n let cellWidth = cell.getCellDimensions().width;\n for( let i = 0; i < xIndexes.length; i++ ) {\n if( cellWidth > xIndexes[i].getCellDimensions().width ) {\n cellWidth = xIndexes[i].getCellDimensions().width;\n }\n }\n return cellWidth;\n },\n getRowHeight: function( table, cell ) {\n let yIndex = cell.dataset.yIndex;\n let yIndexes = table.querySelectorAll( '[data-y-index=\"' + yIndex + '\"]' );\n let cellHeight = cell.getCellDimensions().height;\n for( let i = 0; i < yIndexes.length; i++ ) {\n if( cellHeight > yIndexes[i].getCellDimensions().height ) {\n cellHeight = yIndexes[i].getCellDimensions().height;\n }\n }\n return cellHeight;\n },\n newElementProxy: function( el ) {\n if( el ) {\n let data = {kind: el};\n return new WPTB_ElementObject( data );\n }\n },\n wpColorPickerChange: function( event, ui ) {\n let uiColor;\n if( ui ) {\n uiColor = ui.color.toString();\n } else {\n uiColor = '';\n }\n \n let parent = WPTB_Helper.findAncestor( event.target, 'wp-picker-input-wrap' ).getElementsByClassName( 'wptb-color-picker' )[0], classe, type, ps, number;\n classe = parent.dataset.element.match(/wptb-options-(.+)-(\\d+)/i);\n type = classe[1];\n number = classe[2];\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + type + '-' + number )[0];\n if ( type == 'button' ) {\n if ( parent.dataset.type == 'button-text-color' ) {\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.color = uiColor;\n } else {\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.backgroundColor = uiColor;\n }\n } else if( type == 'list' ) {\n let ps = affectedEl.querySelectorAll( 'p' );\n if( ps.length > 0 ) {\n for ( let i = 0; i < ps.length; i++ ) {\n ps[i].style.color = uiColor;\n }\n }\n } else if( type == 'star_rating' ) {\n if ( parent.dataset.type == 'star-color' ) {\n let ratingStar = affectedEl.querySelectorAll('li');\n for( let i = 0; i < ratingStar.length; i++ ) {\n let span = ratingStar[i].getElementsByTagName( 'span' );\n for( let j = 0; j < span.length; j++ ) {\n span[j].style.fill = uiColor;\n }\n }\n } else if( parent.dataset.type == 'numeral-rating-color' ) {\n let wptbTextMessageSize = affectedEl.querySelector('.wptb-number-rating');\n wptbTextMessageSize.style.color = uiColor;\n }\n\n } else {\n affectedEl.style.color = uiColor;\n }\n },\n numberImputSize: function ( wptbNumberInputs, maxCount, maxValue ) {\n wptbNumberInputs.onkeydown = function() {\n let thisValue = this.value;\n thisValue = String( thisValue );\n if ( thisValue[0] == 0 ) {\n this.value = \"\";\n } else {\n thisValue = thisValue.substring( 0, maxCount );\n this.value = thisValue;\n }\n }\n wptbNumberInputs.onkeyup = function( ) {\n let thisValue = this.value;\n if ( parseInt( thisValue, 10 ) > parseInt( maxValue, 10 ) ) {\n this.value = maxValue;\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n },\n ucfirst: function( str ) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n wptbDocumentEventGenerate: function( eventName, element, details ) {\n if( eventName && element ) {\n if( ! details ) {\n details = true;\n }\n let event = new CustomEvent( eventName, { detail: details, bubbles: true } );\n element.dispatchEvent( event );\n }\n },\n // run script for the pointed element\n elementStartScript: function( element, kind ) {\n //let script = element.getElementsByTagName( 'script' );\n if(!kind) {\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n if( infArr && Array.isArray( infArr ) ) {\n kind = infArr[1];\n }\n }\n\n if( kind ) {\n// let wpTemplateId = 'wptb-' + kind + '-script';\n// let template = wp.template( wpTemplateId );\n// let data = {elemClass: infArr[0]};\n// let elementScriptText = template( data );\n// elementScriptText = elementScriptText.replace(/\\r|\\n|\\t/g, '').trim();\n//\n// let scriptNew = document.createElement( 'script' );\n// scriptNew.setAttribute( 'type', 'text/javascript' );\n// scriptNew.innerHTML = elementScriptText;\n// element.parentNode.appendChild( scriptNew );\n\n// element.parentNode.removeChild( scriptNew );\n if( kind in WPTB_ElementsScriptsLauncher ) {\n WPTB_ElementsScriptsLauncher[kind]( element );\n }\n }\n },\n // deletes event handlers from the pointed option element and from all his daughter elements\n deleteEventHandlers: function( element ) {\n if( element ) {\n jQuery( element ).off();\n let elementChildren = element.children;\n if( elementChildren ) {\n for ( let i = 0; i < elementChildren.length; i++ ) {\n WPTB_Helper.deleteEventHandlers( elementChildren[i] );\n }\n }\n } else {\n return;\n }\n },\n // replace all occurrences in a string\n replaceAll: function( string, search, replace ){\n return string.split( search ).join( replace );\n },\n // clears code from TinyMCE attributes\n elementClearFromTinyMce: function( element ) {\n let mceContentBodys = element.querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n\n let dataMceStyle = element.querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n \n let mceEditFocus = element.querySelectorAll( '.mce-edit-focus' );\n if( mceEditFocus.length > 0 ) {\n for ( let k = 0; k < mceEditFocus.length; k++ ) {\n mceEditFocus[k].classList.remove( 'mce-edit-focus' );\n }\n }\n\n let contentEditable = element.querySelectorAll( '[contenteditable]' );\n if ( contentEditable.length > 0 ) {\n for ( let k = 0; k < contentEditable.length; k++ ) {\n contentEditable[k].removeAttribute( 'contenteditable' );\n }\n }\n\n let spellCheck = element.querySelectorAll( '[spellcheck]' );\n if ( spellCheck.length > 0 ) {\n for ( let k = 0; k < spellCheck.length; k++ ) {\n spellCheck[k].removeAttribute( 'spellcheck' );\n }\n }\n\n let mceIds = element.querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n \n return element;\n },\n elementOptionContainerCustomClassSet: function( targetInput, customClassForContainer ) {\n if( targetInput && customClassForContainer ) {\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\n if( containerElement ) {\n containerElement.classList.add( customClassForContainer );\n }\n }\n },\n elementOptionContainerAdditionalStyles: function( targetInput, containerAdditionalStyles ) {\n if( targetInput && containerAdditionalStyles ) {\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\n let containerStylesArrOne = containerAdditionalStyles.split( ';' );\n\n if( containerElement && containerStylesArrOne ) {\n function containerStylesSet( containerStyleStr, containerElement ) {\n if( containerStyleStr ) {\n containerStyleStrArr = containerStyleStr.split( ':' );\n\n if( containerStyleStrArr && Array.isArray( containerStyleStrArr ) ) {\n containerElement.style[containerStyleStrArr[0]] = containerStyleStrArr[1];\n }\n }\n }\n if( containerStylesArrOne && Array.isArray( containerStylesArrOne ) ) {\n for( let i = 0; i < containerStylesArrOne.length; i++ ) {\n if( containerStylesArrOne[i] ) {\n containerStylesSet( containerStylesArrOne[i], containerElement );\n }\n }\n } else {\n containerStylesSet( containerStylesArrOne, containerElement );\n }\n }\n }\n },\n // function which set handler for event of changes of control\n controlsInclude: function( element, functionHandler ) {\n if( element && typeof element === 'object' && functionHandler && typeof functionHandler === 'function' ) {\n element.addEventListener( 'element:controls:active', function() {\n if(!element.hasOwnProperty('controlConnectFunctionsName') ||\n !Array.isArray(element.controlConnectFunctionsName) ||\n element.controlConnectFunctionsName.indexOf(functionHandler.name) == -1) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i ),\n elementKind;\n\n if( infArr && Array.isArray( infArr ) ) {\n elementKind = infArr[1];\n }\n\n// if( ! element.hasOwnProperty( 'сontrolsConnectIndic' ) || element.сontrolsConnectIndic !== true && elementKind ) {\n// let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\n// if( elementsSettingsTemplateJs.length > 0 ) {\n// elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\n//\n// let elementsSettings = elementsSettingsTemplateJs.innerHTML;\n// let controlClassesNames = [];\n// if( elementsSettings ) {\n// elementsSettings = elementsSettings.trim();\n// elementsSettings = JSON.parse( elementsSettings );\n// if( elementsSettings && typeof elementsSettings === 'object' ) {\n// if( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings ) {\n// let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\n// if( elementSettings && typeof elementSettings === 'object' ) {\n// Object.keys( elementSettings ).forEach( function( key ) {\n// let regularText = new RegExp( 'data-wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n// let keyInfArr = key.match( regularText );\n// if( keyInfArr && Array.isArray( keyInfArr ) ) {\n// let controlClass = key.replace( 'data-', '' );\n// controlClassesNames.push( [controlClass, keyInfArr[2]] );\n// }\n// });\n// }\n// }\n// }\n// }\n// }\n// }\n if( elementKind ){\n let elementOptionsContainer = document.querySelector( '.wptb-element-options.wptb-options-' + infArr[1] + '-' + infArr[2] );\n\n // from time to time depend on table cells hierarchy, cell td items may catch mouse clicks which are intended for elements. since the active section is not cell management, this will gives and unharmfull error of not found element, simple check for null equality will be sufficient for now.\n if(!elementOptionsContainer){\n return;\n }\n\n let elementOptions = elementOptionsContainer.querySelectorAll( '.wptb-element-option' );\n\n\n for( let i = 0; i < elementOptions.length; i++ ) {\n let controlActiveElement = elementOptions[i].querySelector( '.wptb-element-property' );\n if( controlActiveElement ) {\n let regularText = new RegExp( 'wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n let controlInfArr = controlActiveElement.className.match( regularText );\n if( controlInfArr && Array.isArray( controlInfArr ) ) {\n let controlUnicClassName = controlInfArr[0];\n\n element.addEventListener( 'wptb-control:' + controlUnicClassName, function() {\n let controls = {};\n let controlName = controlInfArr[2];\n let control = document.getElementsByClassName( controlUnicClassName );\n if( control.length > 0 && controlName ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n controls[controlName] = targetControlValue;\n }\n\n functionHandler( controls, element );\n }, false );\n }\n }\n }\n \n if(!element.controlConnectFunctionsName && !Array.isArray(element.controlConnectFunctionsName)) {\n element.controlConnectFunctionsName = [];\n }\n\n element.controlConnectFunctionsName.push( functionHandler.name );\n }\n }\n }, false );\n }\n },\n oneControlInclude: function( element, functionHandler, controlName ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' && typeof controlName === 'string' ) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i ),\n elementKind;\n \n if( infArr && Array.isArray( infArr ) ) {\n elementKind = infArr[1].split( '-' )[0];\n \n let wptbContrlStacksConfigId = 'wptb-' + elementKind + '-control-stack';\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\n let data = {\n container: '.' + infArr[0]\n };\n let jsonControlsConfigJson = tmplControlsConfig( data );\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\n \n if( jsonControlsConfig && typeof jsonControlsConfig === 'object' && jsonControlsConfig.hasOwnProperty( controlName ) ) {\n let controlClassName = 'wptb-el-' + infArr[1] + '-' + controlName;\n \n element.addEventListener( 'wptb-control:' + controlClassName, function( event ) {\n let control = document.getElementsByClassName( controlClassName );\n if( control.length > 0 ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n functionHandler( targetControlValue, element );\n }\n }, false );\n }\n }\n } else {\n return false;\n }\n },\n //\n innerElementCopyIncludeHandler: function( element, functionHandler ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\n element.addEventListener( 'wptb-inner-element:copy', function( event ) {\n let innerElement = event.detail;\n if( innerElement ) {\n WPTB_Helper.elementClearFromTinyMce( innerElement );\n functionHandler( innerElement, element );\n }\n }, false );\n }\n },\n //\n appearDependOnControl: function( dependOn, targetControlElementClass ) {\n if( Array.isArray( dependOn ) ) {\n let dependOnControlName = dependOn[0];\n let infArr = targetControlElementClass.match( /wptb-el-((.+-)\\d+)-(.+)/i );\n \n if( infArr && Array.isArray( infArr ) ) {\n let controlName = infArr[3];\n\n let dependOnControlElementClass = targetControlElementClass.replace( controlName, dependOnControlName );\n\n let dependOnControlElement = document.getElementsByClassName( dependOnControlElementClass );\n\n if( dependOnControlElement.length > 0 ) {\n dependOnControlElement = dependOnControlElement[0];\n let targetControlElement = document.getElementsByClassName( targetControlElementClass );\n if( targetControlElement.length > 0 ) {\n targetControlElement = targetControlElement[0];\n let controlContainerElem = WPTB_Helper.findAncestor( targetControlElement, 'wptb-element-option' );\n\n if( controlContainerElem ) {\n function showHideDependOnControlElement( dependOnControlElementClass, dependOn ) {\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 = elementsSettings.trim();\n// elementsSettings = JSON.parse( elementsSettings );\n// if( elementsSettings && typeof elementsSettings === 'object' && \n// ( 'tmpl-wptb-el-datas-' + dependOnControlElementKind ) in elementsSettings ) {\n// let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + dependOnControlElementKind];\n// if( elementSettings && typeof elementSettings === 'object' && \n// ( 'data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName ) in elementSettings ) {\n// let elementSettingValue = elementSettings['data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName];\n// \n// if( elementSettingValue ) {\n// if( dependOn[1] && Array.isArray( dependOn[1] ) && \n// ( dependOn[1].indexOf( elementSettingValue ) !== -1 ) ) {\n// controlContainerElem.style.display = 'block';\n// } else if( dependOn[2] && Array.isArray( dependOn[2] ) && \n// ( dependOn[2].indexOf( elementSettingValue ) !== -1 ) ) {\n// controlContainerElem.style.display = 'none';\n// }\n// }\n// }\n// }\n// }\n// }\n if( dependOnControlElementClass ) {\n let dependOnControlElements = document.getElementsByClassName( dependOnControlElementClass );\n if( dependOnControlElements.length > 0 ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( dependOnControlElements );\n \n if( dependOn[1] && Array.isArray( dependOn[1] ) && \n ( dependOn[1].indexOf( targetControlValue ) !== -1 ) ) {\n controlContainerElem.style.display = 'block';\n } else if( dependOn[2] && Array.isArray( dependOn[2] ) && \n ( dependOn[2].indexOf( targetControlValue ) !== -1 ) ) {\n controlContainerElem.style.display = 'none';\n }\n }\n }\n }\n\n showHideDependOnControlElement( dependOnControlElementClass, dependOn );\n\n dependOnControlElement.addEventListener( 'change', function( event ) {\n showHideDependOnControlElement( dependOnControlElementClass, dependOn );\n }, false );\n }\n }\n }\n }\n }\n },\n //\n controlsStateManager: function ( targetControlClass, controlChangeIndic ) {\n let targetControls = document.getElementsByClassName( targetControlClass );\n if( targetControls.length > 0 ) {\n //targetControls = targetControls[0];\n \n let infArr = targetControlClass.match( /wptb-el-((.+-)\\d+)-(.+)/i );\n \n if( infArr && Array.isArray( infArr ) ) {\n let selectorElement;\n selectorElement = document.querySelector( '.wptb-element-' + infArr[1] );\n \n if( selectorElement ) {\n let elementsSettingsTemplatesJs;\n let elementSettings = {};\n let elementsSettings;\n elementsSettingsTemplatesJs = document.getElementsByClassName( 'wptb-element-datas' );\n if( elementsSettingsTemplatesJs.length == 0 || elementsSettingsTemplatesJs[0].innerHTML == '' ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n elementSettings['data-' + targetControlClass] = targetControlValue;\n\n elementsSettings = {};\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = elementSettings;\n elementsSettings = JSON.stringify( elementsSettings );\n\n if( elementsSettingsTemplatesJs.length == 0 ) {\n elementsSettingsTemplatesJs = document.createElement( 'script' );\n elementsSettingsTemplatesJs.setAttribute( 'type', 'text/html' );\n elementsSettingsTemplatesJs.setAttribute( 'class', 'wptb-element-datas' );\n } else {\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\n }\n\n elementsSettingsTemplatesJs.innerHTML = elementsSettings;\n\n let body = document.getElementsByTagName('body')[0];\n body.appendChild( elementsSettingsTemplatesJs );\n } else {\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\n elementsSettings = elementsSettingsTemplatesJs.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n\n if( elementsSettings && typeof elementsSettings === 'object' ) {\n \n \n if( controlChangeIndic ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) || \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ! ( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) && \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' && \n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) || \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) && \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' && \n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) {\n for( let i = 0; i < targetControls.length; i++ ) {\n if( targetControls[i].type == 'checkbox' ) {\n let targetControlValue;\n if( targetControls[i].name ) {\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass][targetControls[i].name];\n } else {\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\n }\n \n if( targetControlValue == 'checked' ) {\n targetControls[i].checked = true;\n } else if( targetControlValue == 'unchecked' ) {\n targetControls[i].checked = false;\n }\n } else {\n targetControls[i].value = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n //\n targetControlValueGet: function( targetControls ) {\n let targetControlValue;\n for( let i = 0; i < targetControls.length; i++ ) {\n if( targetControls[i].type == 'checkbox' && targetControls[i].name ) {\n if( ! targetControlValue ) targetControlValue = {};\n if( targetControls[i].checked == true ) {\n targetControlValue[targetControls[i].name] = 'checked';\n } else {\n targetControlValue[targetControls[i].name] = 'unchecked';\n }\n } else if( targetControls[i].type == 'checkbox' ) {\n if( targetControls[i].checked == true ) {\n targetControlValue = 'checked';\n } else {\n targetControlValue = 'unchecked';\n }\n } else if( targetControls[i].type ) {\n targetControlValue = targetControls[i].value;\n } else if( targetControls[i].dataset.alignmentValue && targetControls[i].classList.contains( 'selected' ) ){\n targetControlValue = targetControls[i].dataset.alignmentValue;\n }\n }\n return targetControlValue;\n },\n //\n elementControlsStateCopy: function( elementProt, copyElem ) {\n if( elementProt && copyElem ) {\n let infArrProt = elementProt.className.match( /wptb-element-((.+-)\\d+)/i );\n let infArrCopy = copyElem.className.match( /wptb-element-((.+-)\\d+)/i );\n if( infArrProt && Array.isArray( infArrProt ) &&\n infArrCopy && Array.isArray( infArrCopy )) {\n let elemProtKind = infArrProt[1];\n let elemCopyKind = infArrCopy[1];\n let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\n if( elementsSettingsTemplateJs.length > 0 ) {\n elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\n \n let elementsSettings = elementsSettingsTemplateJs.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n \n if( elementsSettings && typeof elementsSettings === 'object' ) {\n let elementSettingsProt = elementsSettings['tmpl-wptb-el-datas-' + elemProtKind];\n if( elementSettingsProt && typeof elementSettingsProt === 'object' ) {\n let elementSettingsCopy = {};\n \n Object.keys( elementSettingsProt ).forEach( function( key ) {\n let elementSettingValue = elementSettingsProt[key];\n let elementSettingKeyCopy = key.replace( elemProtKind, elemCopyKind );\n elementSettingsCopy[elementSettingKeyCopy] = elementSettingValue;\n });\n \n if( Object.keys( elementSettingsCopy ).length > 0 ) {\n elementsSettings['tmpl-wptb-el-datas-' + elemCopyKind] = elementSettingsCopy;\n \n elementsSettings = JSON.stringify( elementsSettings );\n elementsSettingsTemplateJs.innerHTML = elementsSettings;\n }\n }\n }\n }\n }\n }\n }\n },\n //\n elementControlsStateDelete: function( element, nameControl ) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n let body = document.getElementsByTagName( 'body' )[0];\n let wptbElementDatas = body.getElementsByClassName( 'wptb-element-datas' );\n if( infArr && Array.isArray( infArr ) && wptbElementDatas.length > 0 ) {\n wptbElementDatas = wptbElementDatas[0];\n let elementsSettings = wptbElementDatas.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n if( elementsSettings && typeof elementsSettings === 'object' &&\n ( ( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] ) in elementsSettings ) ) {\n if( ! nameControl ) {\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\n } else {\n if( elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] && \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] === 'object' &&\n ( 'data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] ) {\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]]['data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl];\n }\n }\n\n if( Object.keys( elementsSettings ).length == 0 ) {\n body.removeChild( wptbElementDatas );\n } else {\n elementsSettings = JSON.stringify( elementsSettings );\n wptbElementDatas.innerHTML = elementsSettings;\n }\n }\n }\n }\n },\n // \n elementOptionsSet: function( kind, element ) {\n // get controls config for this element\n let wptbContrlStacksConfigId = 'wptb-' + kind + '-control-stack';\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\n let data;\n let elementContainerClass;\n let elementOptionClassIndic;\n let elementOptionsGroup;\n let elementOptionsGroupId;\n let wptbelementOptionClass;\n \n // create containers for inserting controls of this item and their scripts\n let wptbelementOptionsContainer = document.createElement( 'div' );\n let wptbelementOptionsScriptsContainer = document.createElement( 'div' );\n \n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n if( ! infArr ) {\n let table_id = WPTB_Helper.detectMode();\n if( element.classList.contains( 'wptb-preview-table' ) ) {\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\n } else if( element.classList.contains( 'wptb-cell' ) ) {\n let cellEditActiveClass = document.querySelector( '.wptb-element-table_cell_setting-' + table_id );\n if( cellEditActiveClass ) cellEditActiveClass.classList.remove( 'wptb-element-table_cell_setting-' + table_id );\n element.classList.add( 'wptb-element-table_cell_setting-' + table_id );\n }\n\n infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n }\n\n data = {\n container: '.' + infArr[0]\n };\n\n elementContainerClass = infArr[0];\n elementOptionClassIndic = infArr[1];\n \n if( element.classList.contains( 'wptb-preview-table' ) ) {\n elementOptionsGroupId = 'table-settings-group';\n wptbelementOptionClass = 'wptb-element-option';\n } else if( element.classList.contains( 'wptb-cell' ) ) {\n elementOptionsGroupId = 'element-cell-options-group';\n wptbelementOptionClass = 'wptb-element-option';\n\n this.activateSection('cell_settings');\n } else {\n let children = document.getElementById( 'element-options-group' ).childNodes;\n for ( let i = 0; i < children.length; i++) {\n if ( children[i].style )\n children[i].style.display = 'none';\n }\n\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 this.activateSection('options_group');\n\n elementOptionsGroupId = 'element-options-group';\n wptbelementOptionClass = 'wptb-element-option';\n }\n \n wptbelementOptionsContainer.classList.add( 'wptb-element-options', 'wptb-options-' + infArr[1] );\n wptbelementOptionsScriptsContainer.classList.add( 'wptb-element-options-scripts', 'wptb-options-' + infArr[1] );\n\n let jsonControlsConfigJson = tmplControlsConfig( data );\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\n\n // clear elements from options group\n //document.getElementById( 'element-options-group' ).innerHTML = '';\n elementOptionsGroup = document.getElementById( elementOptionsGroupId );\n let elementOptionsGroupChildren = [...elementOptionsGroup.children];\n for( let i = 0; i < elementOptionsGroupChildren.length; i++ ) {\n elementOptionsGroup.removeChild( elementOptionsGroupChildren[i] );\n }\n\n \n // insert created container into element-option-group tag\n document.getElementById( elementOptionsGroupId ).appendChild( wptbelementOptionsContainer );\n document.getElementById( elementOptionsGroupId ).appendChild( wptbelementOptionsScriptsContainer );\n\n // show created container\n wptbelementOptionsContainer.style.display = 'block';\n \n // array for save all scrips for each controls\n let controlScriptsArr = [];\n\n // array for keep \"appear depend on\" parametrs\n let controlappearDependOnControl = [];\n\n // create controls\n let i = 0;\n Object.keys( jsonControlsConfig ).forEach( function( key ) {\n let data = jsonControlsConfig[key];\n data.controlKey = key;\n\n // get necessary wp js template\n let tmplControlTemplate = wp.template( 'wptb-' + data.type + '-control' );\n\n data.elemContainer = elementContainerClass;\n data.elementControlTargetUnicClass = 'wptb-el-' + elementOptionClassIndic + '-' + data.controlKey;\n let controlTemplate = tmplControlTemplate( data );\n\n if( 'appearDependOnControl' in data ) {\n if( Array.isArray( data.appearDependOnControl ) ) {\n controlappearDependOnControl.push( [data.appearDependOnControl, data.elementControlTargetUnicClass] );\n }\n }\n\n let wptbElementOptionContainer = document.createElement( 'div' );\n wptbElementOptionContainer.classList.add( wptbelementOptionClass, 'wptb-settings-items' );\n\n if( data.customClassForContainer ) {\n wptbElementOptionContainer.classList.add( data.customClassForContainer );\n }\n\n if( data.containerAdditionalStyles ) {\n wptbElementOptionContainer.setAttribute( 'style', data.containerAdditionalStyles );\n }\n\n wptbElementOptionContainer.innerHTML = controlTemplate;\n\n wptbelementOptionsContainer.appendChild( wptbElementOptionContainer );\n\n let helperJavascriptElem = wptbElementOptionContainer.getElementsByTagName( 'wptb-template-script' );\n if( helperJavascriptElem.length > 0 ) {\n helperJavascriptElem = helperJavascriptElem[0];\n let helperJavascriptCode = helperJavascriptElem.innerText;\n wptbElementOptionContainer.removeChild( helperJavascriptElem );\n let script = document.createElement( 'script' );\n script.setAttribute( 'type', 'text/javascript' );\n script.innerHTML = helperJavascriptCode.replace(/\\r|\\n|\\t/g, '').trim();\n controlScriptsArr.push( script );\n }\n\n i++;\n });\n\n // run the scripts of controls\n if( controlScriptsArr.length > 0 ) {\n for( let i = 0; i < controlScriptsArr.length; i++ ) {\n wptbelementOptionsScriptsContainer.appendChild( controlScriptsArr[i] );\n }\n }\n\n // run appearDependOnControl function\n for ( let i = 0; i < controlappearDependOnControl.length; i++ ) {\n WPTB_Helper.appearDependOnControl( controlappearDependOnControl[i][0], controlappearDependOnControl[i][1] );\n }\n\n WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', element );\n },\n // function for create, update css for element\n managerExternalCssStyles: function( elementContainer, selector, cssName, cssValue ) {\n let infArr = elementContainer.match( /wptb-element-main(.+)-(\\d+)/i );\n if( ! infArr || ! Array.isArray( infArr ) ) {\n let table = document.getElementsByClassName( 'wptb-preview-table' );\n \n if( table.length > 0 ) {\n table = table[0];\n \n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n selector = '.' + infArr[0] + ' ' + selector;\n }\n }\n }\n \n let head = document.head;\n if( head ) {\n let cssForThisElement = head.querySelector( '#styles-' + elementContainer );\n if( cssForThisElement ) {\n let cssText = cssForThisElement.innerHTML;\n if( cssText ) {\n let cssTextArrFirst = cssText.split( '}' );\n cssTextArrFirst.pop();\n let selectorExists = false;\n for( let i = 0; i < cssTextArrFirst.length; i++ ) {\n let cssTextArrSecond = cssTextArrFirst[i].split( '{' );\n if( cssTextArrSecond[0] === selector ) {\n let cssTextArrThird = cssTextArrSecond[1].split( ';' );\n cssTextArrThird.pop();\n let cssNameExists = false;\n for( let j = 0; j < cssTextArrThird.length; j++ ) {\n let cssTextArrFourth = cssTextArrThird[j].split( ':' );\n if( cssTextArrFourth[0] === cssName ) {\n if( cssValue ) {\n cssTextArrThird[j] = cssName + ':' + cssValue;\n } else {\n cssTextArrThird.splice( j, 1 );\n }\n \n cssTextArrSecond[1] = cssTextArrThird.join( ';' ) ? cssTextArrThird.join( ';' ) + ';' : '';\n cssNameExists = true;\n break;\n }\n }\n if( ! cssNameExists ) {\n if( cssValue ) {\n cssTextArrSecond[1] += cssName + ':' + cssValue + ';';\n }\n }\n if( cssTextArrSecond[1] ) {\n cssTextArrFirst[i] = cssTextArrSecond[0] + '{' + cssTextArrSecond[1]\n } else {\n cssTextArrFirst.splice( i, 1 );\n }\n if( cssTextArrFirst.join( '}' ) ) {\n cssForThisElement.innerHTML = cssTextArrFirst.join( '}' ) + '}';\n } else {\n head.removeChild( cssForThisElement );\n }\n \n selectorExists = true;\n break;\n }\n }\n\n if( ! selectorExists ) {\n if( cssValue ) {\n cssForThisElement.innerHTML = cssText + selector + '{' + cssName + ':' + cssValue + ';}';\n } else {\n cssForThisElement.innerHTML = cssText;\n }\n }\n } else {\n if( cssValue ) {\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\n } else {\n head.removeChild( cssForThisElement );\n }\n }\n } else {\n if( cssValue ) {\n let cssForThisElement = document.createElement( 'style' );\n cssForThisElement.setAttribute( 'id', 'styles-' + elementContainer );\n cssForThisElement.classList.add( 'styles-wptb-elements' );\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\n head.appendChild( cssForThisElement );\n }\n }\n }\n },\n /**\n *\n * Register section parts for sidebar\n *\n * @param {array} sections an array of section names\n */\n registerSections(sections) {\n this.sections = {};\n if (!Array.isArray(sections)) {\n sections = [sections];\n }\n\n sections.map(s => {\n const sectionElement = document.querySelector(`[data-wptb-section=${s}]`);\n if (sectionElement) {\n this.sections[s] = sectionElement;\n }\n })\n },\n /**\n * Activate a registered section and deactivates others\n *\n * @param {string} sectionDataId section name to be activated\n * @param {string} displayType display type override for section to be used in its display style property\n */\n activateSection(sectionDataId, displayType = 'block') {\n this.triggerSectionEvent(sectionDataId);\n Object.keys(this.sections).map(k => {\n if (Object.prototype.hasOwnProperty.call(this.sections, k)) {\n const visibility = sectionDataId === k ? displayType : 'none';\n this.sections[k].style = `display: ${visibility} !important`;\n }\n })\n },\n /**\n * Set up related buttons and links to trigger certain elements\n */\n setupSectionButtons() {\n const sectionButtons = Array.from( document.querySelectorAll('[data-wptb-section-button'));\n const vm = this;\n\n sectionButtons.map(s => {\n const sectionName = s.dataset.wptbSectionButton;\n s.addEventListener('click', function() {\n const displayType = s.dataset.wptbSectionDisplayType;\n vm.activateSection(sectionName, displayType);\n })\n\n document.addEventListener('sectionChanged', (e)=> {\n if(e.detail === sectionName){\n s.classList.remove('disabled');\n s.classList.add('active');\n }else{\n s.classList.remove('active');\n s.classList.add('disabled');\n }\n })\n })\n },\n setupPanelToggleButtons(){\n const $ = jQuery;\n\n $('.wptb-panel-toggle-group').each(function(){\n const vm = $(this);\n $(this).find('.toggle-icon').click(() => {\n vm.find('.wptb-panel-toggle-target').slideToggle();\n vm.toggleClass('wptb-panel-toggle-content');\n })\n })\n },\n /**\n * Trigger a section change event\n *\n * @param {string} sectionName section name\n */\n triggerSectionEvent(sectionName){\n const sectionEvent = new CustomEvent('sectionChanged', {detail: sectionName});\n\n document.dispatchEvent(sectionEvent);\n },\n /**\n * Setup sidebar toggle element\n *\n * @param {string} toggleSelector query selector for drawer toggle element\n */\n setupSidebarToggle(toggleSelector){\n const toggleButton = document.querySelector(toggleSelector);\n if(toggleButton){\n toggleButton.addEventListener('click', (e)=>{\n e.preventDefault();\n document.body.classList.toggle('collapsed');\n })\n }\n },\n // function for deleting all external CSS for the element\n externalCssStylesDelete: function( elementContainerClass ) {\n let head = document.head;\n if( head ) {\n let cssForThisElement = head.querySelector( '#styles-' + elementContainerClass );\n \n if( cssForThisElement ) {\n head.removeChild( cssForThisElement );\n }\n }\n },\n // function for copy all external CSS for the element\n externalCssStylesCopy: function( activeElement, copyElement ) {\n if( activeElement ) {\n let infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n let activeElemClass = infArr[0];\n \n let head = document.head;\n if( head ) {\n let cssForActiveElement = head.querySelector( '#styles-' + activeElemClass );\n\n if( cssForActiveElement ) {\n let cssForNewElement = cssForActiveElement.cloneNode( true );\n \n cssForNewElement.removeAttribute( 'id', 'styles-' + activeElemClass );\n \n let infArrCopyEl = copyElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArrCopyEl && Array.isArray( infArrCopyEl ) ) {\n cssForNewElement.setAttribute( 'id', 'styles-' + infArrCopyEl[0] );\n let cssForActiveElementInnerHTML = cssForActiveElement.innerHTML;\n let cssForNewElementInnerHTML = WPTB_Helper.replaceAll( cssForActiveElementInnerHTML, activeElemClass, infArrCopyEl[0] );\n cssForNewElement.innerHTML = cssForNewElementInnerHTML;\n head.appendChild( cssForNewElement );\n }\n }\n }\n }\n }\n },\n // function for convertation elements stiles in json\n elementsStylesConvertToObject: function() {\n let head = document.head;\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\n let stylesObj = {};\n for( let i = 0; i < stylesElements.length; i++ ) {\n let styleElemId = stylesElements[i].getAttribute( 'id' );\n if( styleElemId && stylesElements[i].innerHTML ) {\n stylesObj[styleElemId] = stylesElements[i].innerHTML;\n }\n }\n \n if( Object.keys( stylesObj ).length != 0 ) {\n return JSON.stringify( stylesObj );\n }\n return '';\n },\n // function for set scc styles tags to head\n elementsStylesSetFromObject: function( jsonObject ) {\n let head = document.head;\n if( head ) {\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\n if( stylesElements.length > 0 ) {\n stylesElements = [...stylesElements];\n for( let i = 0; i < stylesElements.length; i++ ) {\n head.removeChild( stylesElements[i] );\n }\n }\n if( jsonObject ) {\n let stylesObj = JSON.parse( jsonObject );\n if( Object.keys( stylesObj ).length != 0 ) {\n Object.keys( stylesObj ).forEach( function( key ) {\n let cssText = stylesObj[key];\n let styleCss = document.createElement( 'style' );\n styleCss.setAttribute( 'id', key );\n styleCss.classList.add( 'styles-wptb-elements' );\n styleCss.innerHTML = cssText;\n head.appendChild( styleCss );\n });\n }\n }\n }\n },\n // function for table saving\n saveTable: function( event, startSaving, previewSaving ) {\n if( ! previewSaving && ! startSaving ) {\n if( ( ! event.target.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \n window.wptbTableStateNumberShow == event.target.dataset.wptbTableStateNumberSave ) {\n //return;\n }\n }\n \n if( ! previewSaving ) {\n let bar = document.querySelector( '.wptb-edit-bar' );\n if ( bar && bar.classList.contains( 'visible' ) ) {\n let table = document.getElementsByClassName( 'wptb-preview-table' )[0];\n WPTB_Helper.toggleTableEditMode();\n }\n }\n\n let http = new XMLHttpRequest(),\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=save_table\",\n t = document.getElementById( 'wptb-setup-name' ).value.trim(),\n messagingArea,\n code,\n datas;\n \n code = document.getElementsByClassName( 'wptb-preview-table' );\n \n let postId;\n if (( rs = WPTB_Helper.detectMode() ) || ( rs = document.wptbId )) {\n postId = rs;\n }\n let paramIdsNecessaryChange = false;\n if( code.length > 0 ) {\n code = code[0];\n let codeClone = code.cloneNode( true );\n if( postId ) {\n if( codeClone.classList.contains( 'wptb-element-main-table_setting-startedid-0' ) ) {\n codeClone.classList.remove( 'wptb-element-main-table_setting-startedid-0' );\n codeClone.classList.add( 'wptb-element-main-table_setting-' + postId );\n paramIdsNecessaryChange = true;\n }\n }\n codeClone.columns = code.columns;\n code = WPTB_Stringifier( codeClone );\n code = code.outerHTML;\n } else { \n code = '';\n }\n \n if( ! previewSaving ) {\n datas = '';\n let datas_containers = document.getElementsByClassName( 'wptb-element-datas' );\n\n if( datas_containers.length > 0 ) {\n if( datas_containers[0].innerHTML ) {\n datas = datas_containers[0].innerHTML;\n\n if( paramIdsNecessaryChange ) {\n datas = WPTB_Helper.replaceAll( datas, 'tmpl-wptb-el-datas-main-table_setting-startedid-0', \n 'tmpl-wptb-el-datas-main-table_setting-' + postId );\n\n datas = WPTB_Helper.replaceAll( datas, 'data-wptb-el-main-table_setting-startedid-0', \n 'data-wptb-el-main-table_setting-' + postId );\n }\n }\n }\n }\n\n let styleObjJson = WPTB_Helper.elementsStylesConvertToObject();\n if( paramIdsNecessaryChange ) {\n styleObjJson = WPTB_Helper.replaceAll( styleObjJson, '.wptb-element-main-table_setting-startedid-0', \n '.wptb-element-main-table_setting-' + postId );\n }\n \n if ( t === '' && code === '' ) {\n let messagingAreaText = '';\n if( t === '' ) messagingAreaText += 'You must assign a name to the table before saving it.</br>';\n if( code === '' ) messagingAreaText += 'Table wasn\\'t created';\n messagingArea = document.getElementById( 'wptb-messaging-area' );\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Error: ' + messagingAreaText + '</div>';\n messagingArea.classList.add( 'wptb-warning' );\n setTimeout(function () {\n messagingArea.removeChild( messagingArea.firstChild );\n }, 4000 );\n return;\n }\n\n let params = {\n title: t,\n content: code,\n elements_datas: datas,\n elements_styles: styleObjJson,\n security_code: wptb_admin_object.security_code\n };\n \n \n if( previewSaving ) {\n params.preview_saving = previewSaving;\n }\n \n if ( postId ) {\n params.id = postId;\n }\n params = JSON.stringify( params );\n\n http.open('POST', url, true);\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\n\n http.onreadystatechange = function ( action ) {\n if ( this.readyState == 4 && this.status == 200 ) {\n var data = JSON.parse( http.responseText );\n messagingArea = document.getElementById( 'wptb-messaging-area' );\n\n if ( data[0] == 'saved' ) {\n let builderPageUrl = document.location.href.replace( '#', '' );\n let regex = new RegExp( '&table=(.+)', \"i\" );\n builderPageUrl = builderPageUrl.replace( regex, '' );\n window.history.pushState( null, null, builderPageUrl + '&table=' + data[1] );\n \n WPTB_Helper.saveTable( event, true );\n return;\n } else if( data[0] == 'edited' && startSaving ) {\n document.wptbId = data[1];\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully saved.</div>';\n document.getElementsByClassName( 'wptb-embed-btn' )[0].classList.remove( 'wptb-button-disable' );\n document.getElementById( 'wptb-embed-shortcode' ).value = '[wptb id=' + data[1] + ']';\n let wptbPreviewTable = document.querySelector( '.wptb-preview-table' );\n let wptbPreviewBtn = document.getElementsByClassName( 'wptb-preview-btn' );\n if( wptbPreviewBtn.length > 0 ) {\n wptbPreviewBtn = wptbPreviewBtn[0];\n wptbPreviewBtn.classList.remove( 'wptb-button-disable' );\n let wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;\n wptbPreviewBtnHref = wptbPreviewBtnHref.replace( 'empty', data[1] );\n wptbPreviewBtn.setAttribute( 'href', wptbPreviewBtnHref );\n }\n \n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else if( data[0] == 'edited' ) {\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully updated.</div>';\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\n \n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else if( data[0] == 'preview_edited' ) {\n return;\n } else {\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Safety problems</div>';\n }\n messagingArea.classList.add( 'wptb-success' );\n setTimeout( function () {\n messagingArea.removeChild( messagingArea.firstChild );\n }, 4000 );\n }\n }\n http.send( params );\n },\n //\n clickOnFreeSpace: function() {\n let cellModeBackground = document.querySelector( '#wptb-cell_mode_background' );\n if( cellModeBackground && cellModeBackground.classList.contains( 'visible' ) ) {\n return;\n }\n // document.getElementsByClassName( 'wptb-elements-container' )[0].style.display = 'table';\n // document.getElementsByClassName( 'wptb-settings-section' )[0].style.display = 'block';\n // document.getElementById( 'element-options-group' ).style.display = 'none';\n this.activateSection('elements');\n\n let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\n if( wpcdFixedToolbar.hasAttribute( 'data-toolbar-active-id' ) ) {\n document.getElementById( wpcdFixedToolbar.getAttribute( 'data-toolbar-active-id' ) ).classList.remove( 'toolbar-active' );\n }\n let element = document.querySelector( '.wptb-preview-table' );\n if( element ) {\n WPTB_Helper.elementOptionsSet( 'table_setting', element );\n }\n },\n\n /*\n * function for sending of element ajax request\n */\n elementAjax: function( dataAjaxData, element ) {\n let http = new XMLHttpRequest(),\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=wptb_element_ajax\";\n let element_name;\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n element_name = infArr[1];\n }\n \n let params = {\n element_ajax_data: dataAjaxData,\n element_name: element_name,\n security_code: wptb_admin_object.security_code\n };\n params = JSON.stringify( params );\n\n http.open( 'POST', url, true );\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\n\n http.onreadystatechange = function ( action ) {\n if ( this.readyState == 4 && this.status == 200 ) {\n var data = JSON.parse( http.responseText );\n let detail;\n if ( data && Array.isArray( data ) && data[0] == 'element_ajax_responce' ) {\n detail = {value: data[1]};\n } else {\n detail = '';\n }\n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-element:ajax-response', element, detail );\n }\n }\n http.send( params );\n },\n\n /*\n * This just toggles visibility of cell edit bar, and toggles\n * cell selecting mode.\n */\n toggleTableEditMode: function ( close = false ) {\n let bar = document.getElementsByClassName('wptb-edit-bar'),\n cellModeBackground = document.getElementById('wptb-cell_mode_background'),\n leftScrollPanelCurtain = document.getElementById('wptb-left-scroll-panel-curtain'),\n leftScrollPanelCellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');\n if (wptbPreviewTable.length > 0) {\n wptbPreviewTable = wptbPreviewTable[0];\n }\n\n if ( bar.length > 0 ) {\n 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 if( ! close ) {\n document.select.activateMultipleSelectMode();\n bar[i].classList.add( 'visible' );\n cellModeBackground.classList.add( 'visible' );\n leftScrollPanelCurtain.classList.add( 'visible' );\n wptbPreviewTable.parentNode.classList.add( 'wptb-preview-table-manage-cells' );\n }\n }\n\n }\n },\n\n /*\n * checking of dimension of value\n */\n checkingDimensionValue: function ( value, dimension ) {\n value = String( value );\n dimension = String( dimension );\n if( value && dimension ) {\n let searchIndex = value.indexOf( dimension );\n if ( searchIndex != -1 && searchIndex == ( value.length - dimension.length ) ) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n },\n\n /*\n * if dimension is included - checking and if it necessary setting value\n * without dimension - return value\n */\n checkSetGetStyleSizeValue: function( element, styleName, computedStyleName, dimension ) {\n let elemStyleValue = element.style[styleName];\n elemStyleValue = String( elemStyleValue );\n\n if( ! elemStyleValue || dimension ? ! ( WPTB_Helper.checkingDimensionValue( elemStyleValue, dimension ) ) : false ){\n let elementStyles = window.getComputedStyle( element );\n if( computedStyleName && elementStyles.getPropertyValue( computedStyleName ) && dimension ? WPTB_Helper.checkingDimensionValue( elementStyles.getPropertyValue( computedStyleName ), dimension ) : true ) {\n if( ! dimension ) {\n return elementStyles.getPropertyValue( computedStyleName );\n } else {\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\n }\n } else {\n if( ! dimension ) {\n return false;\n } else {\n element.style[styleName] = null;\n }\n }\n } else if( ! dimension ) {\n return elemStyleValue;\n }\n\n return element.style[styleName];\n },\n\n /*\n * function checking that element has the style\n * if this style is present - checking the format color\n * if param set is true - setting style for element (consider hex format of color)\n * if param set is false - getting style from element\n */\n checkSetGetStyleColorValue: function ( element, styleName, computedStyleName, set = false ) {\n let elemStyleColorValue = element.style[styleName];\n\n if( ! elemStyleColorValue ) {\n let elementStyles = window.getComputedStyle( element, null );\n\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\n\n if( set ) {\n elemStyleColorValue = WPTB_Helper.rgbToHex( elementStyles.getPropertyValue( computedStyleName ) );\n if( WPTB_Helper.isHex( elemStyleColorValue ) ) {\n element.style[styleName] = elemStyleColorValue;\n } else {\n element.style[styleName] = '';\n }\n } else {\n return elementStyles.getPropertyValue( computedStyleName );\n }\n\n } else {\n if( set ) {\n element.style[styleName] = '';\n } else {\n return '';\n }\n }\n } else if( ! set ) {\n return elemStyleColorValue;\n }\n },\n\n /*\n * function checking that element has the style\n * if this style is present - checking the format color\n * if param set is true - setting style for element (consider hex format of color)\n * if param set is false - getting style from element\n */\n checkSetGetStyleValue: function ( element, styleName, computedStyleName, set = false ) {\n let elemStyleColorValue = element.style[styleName];\n\n if( ! elemStyleColorValue ) {\n let elementStyles = window.getComputedStyle( element, null );\n\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\n\n if( set ) {\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\n } else {\n return elementStyles.getPropertyValue( computedStyleName );\n }\n\n } else if( ! set ) {\n return '';\n }\n } else if( ! set ) {\n return elemStyleColorValue;\n }\n },\n\n /*\n * get the value of the same elements that have the most count\n */\n getValueMaxCountSameElementsInArray: function ( arr ) {\n if( arr && Array.isArray( arr ) ) {\n let check = {};\n for( let i = 0; i < arr.length; i++ ) {\n if( check[arr[i]] ) {\n check[arr[i]]++;\n } else {\n check[arr[i]] = 1;\n }\n }\n\n let maxPropName;\n for ( let key in check ) {\n if( ! maxPropName ) {\n maxPropName = key;\n continue;\n } else {\n if( check[maxPropName] < check[key] ) {\n maxPropName = key;\n }\n }\n }\n\n return maxPropName;\n }\n },\n\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table.\n */\n recalculateIndexes: function ( table ) {\n let trs = table.getElementsByTagName( 'tr' ),\n tds, maxCols = 0, maxColsFull = 0, tdsArr = [];\n\n for ( let i = 0; i < trs.length; i++ ) {\n tds = trs[i].getElementsByTagName( 'td' );\n\n if ( tdsArr[i] == undefined ) {\n tdsArr[i] = [];\n }\n\n let jMainIter = 0;\n for ( let j = 0; j < tds.length; j++ ) {\n if ( tdsArr[i][j] != undefined ) {\n for ( let y = 0; y < 100; y++ ) {\n if ( tdsArr[i][jMainIter] != undefined ) {\n jMainIter++;\n continue;\n }\n tdsArr[i][jMainIter] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n break;\n }\n } else {\n tdsArr[i][j] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n }\n tds[j].dataset.yIndex = i;\n\n if ( tds[j].colSpan > 1 ) {\n for ( let k = 1; k < tds[j].colSpan; k++ ) {\n jMainIter++;\n tdsArr[i][jMainIter] = 'tdDummy';\n }\n }\n\n if ( tds[j].rowSpan > 1 ) {\n for ( let x = 1; x < tds[j].rowSpan; x++ ) {\n if ( tdsArr[i + x] == undefined ) {\n tdsArr[i + x] = [];\n }\n for ( let z = 0; z < tds[j].colSpan; z++ ) {\n tdsArr[i + x][jMainIter - tds[j].colSpan + 1 + z ] = 'tdDummy';\n }\n }\n }\n jMainIter++;\n\n if ( j > maxCols ) {\n maxCols = j;\n }\n }\n\n if( i == 0 ) {\n maxColsFull = jMainIter;\n }\n }\n table.columns = maxCols;\n table.maxCols = maxColsFull;\n },\n\n /**\n * Table Rows colors reinstall\n */\n tableRowsColorsReinstall: function ( table ) {\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n let tableIndex = '';\n if( infArr[infArr.length -1] == '0' ) {\n tableIndex = 'startedid-0';\n } else {\n tableIndex = infArr[infArr.length -1];\n }\n\n let tableHeaderBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableHeaderBackground' );\n if( tableHeaderBackground ) {\n let details = {value: tableHeaderBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableHeaderBackground, details );\n }\n\n let tableEvenRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableEvenRowBackground' );\n if( tableEvenRowBackground ) {\n let details = {value: tableEvenRowBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableEvenRowBackground, details );\n }\n\n let tableOddRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableOddRowBackground' );\n if( tableOddRowBackground ) {\n let details = {value: tableOddRowBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableOddRowBackground, details );\n }\n }\n }\n}\n","var WPTB_Initializer = function () {\n\n const MIN_COLUMNS = 1,\n MIN_ROWS = 1,\n MAX_COLUMNS = 30,\n MAX_ROWS = 30;\n\n var tableGenerator = document.body;\n columnsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[0],\n columnsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[0],\n rowsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[1],\n rowsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[1],\n columnsInput = document.getElementById('wptb-columns-number'),\n rowsInput = document.getElementById('wptb-rows-number');\n \n columnsDecrementButton.onclick = function () {\n if (columnsInput.value > MIN_COLUMNS) {\n columnsInput.value--;\n }\n };\n\n columnsIncrementButton.onclick = function () {\n if (columnsInput.value < MAX_COLUMNS) {\n columnsInput.value++;\n }\n };\n\n rowsDecrementButton.onclick = function () {\n if (rowsInput.value > MIN_ROWS) {\n rowsInput.value--;\n }\n };\n\n rowsIncrementButton.onclick = function () {\n if (rowsInput.value < MAX_ROWS) {\n rowsInput.value++;\n }\n };\n\n document.getElementById( 'wptb-generate-table' ).onclick = function ( ) {\n var columns = document.getElementById('wptb-columns-number').value,\n rows = document.getElementById('wptb-rows-number').value;\n\n //wptbTableStateSaveManager.tableStateClear();\n \n WPTB_Table(columns, rows);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n WPTB_Helper.registerSections(['elements', 'table_settings', 'cell_settings', 'options_group']);\n WPTB_Helper.setupSectionButtons();\n WPTB_Helper.activateSection('elements');\n WPTB_Helper.setupSidebarToggle('.wptb-panel-drawer-toggle');\n WPTB_Helper.setupPanelToggleButtons();\n};\n","var WPTB_LeftPanel = function () {\r\n\r\n let table = document.getElementsByClassName('wptb-preview-table')[0],\r\n wptbElementButtons = document.getElementsByClassName('wptb-element');\r\n\r\n for (var i = 0; i < wptbElementButtons.length; i++) {\r\n wptbElementButtons[i].ondragstart = function (e) {\r\n e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);\r\n e.dataTransfer.setData( 'wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement );\r\n }\r\n };\r\n \r\n if( table ) {\r\n let wptbTablesEditModeCloseButton = document.getElementsByClassName( 'wptb-table-edit-mode-close' );\r\n for ( let i = 0; i < wptbTablesEditModeCloseButton.length; i++ ) {\r\n wptbTablesEditModeCloseButton[i].onclick = WPTB_Helper.toggleTableEditMode;\r\n }\r\n document.getElementById('wptb-add-end-row').onclick = table.addRowToTheEnd;\r\n document.getElementById('wptb-add-start-row').onclick = table.addRowToTheStart;\r\n document.getElementById('wptb-add-row-before').onclick = table.addRowBefore;\r\n document.getElementById('wptb-add-row-after').onclick = table.addRowAfter;\r\n document.getElementById('wptb-add-end-column').onclick = table.addColumnEnd;\r\n document.getElementById('wptb-add-start-column').onclick = table.addColumnStart;\r\n document.getElementById('wptb-add-column-before').onclick = table.addColumnBefore;\r\n document.getElementById('wptb-add-column-after').onclick = table.addColumnAfter;\r\n document.getElementById('wptb-delete-column').onclick = table.deleteColumn;\r\n document.getElementById('wptb-delete-row').onclick = table.deleteRow;\r\n document.getElementById('wptb-merge-cells').onclick = table.mergeCells;\r\n document.getElementById('wptb-split-cell').onclick = table.splitCell;\r\n };\r\n\r\n // this code hides the \"element parameters\" area\r\n // when clicked outside this element and its \"tinymce\" toolbar \r\n let wptbBuilderPanel = document.getElementsByClassName( 'wptb-builder-panel' )[0];\r\n wptbBuilderPanel.onclick = function( e ) {\r\n if( ! e.target.classList.contains( 'wptb-ph-element' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-ph-element' ) && \r\n ! e.target.classList.contains( 'wptb-fixed-toolbar' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-fixed-toolbar' ) ) {\r\n WPTB_Helper.clickOnFreeSpace();\r\n } \r\n };\r\n \r\n let wptbHeader = document.getElementsByClassName( 'wptb-header' );\r\n if( wptbHeader.length > 0 ) wptbHeader = wptbHeader[0];\r\n wptbHeader.onclick = function() {\r\n WPTB_Helper.clickOnFreeSpace();\r\n };\r\n};","var MultipleSelect = function () {\n\n\tvar selectedCells = [],\n\t\tmultipleCellMode = false;\n\n\tthis.activateMultipleSelectMode = function () {\n\t\tselectedCells = [];\n\t\tvar tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\n\t\tfor (var i = 0; i < tds.length; i++) {\n\t\t\ttds[i].classList.remove('wptb-highlighted');\n\t\t}\n\t\tmultipleCellMode = true;\n\t}\n\n\tthis.deactivateMultipleSelectMode = function () {\n\t\tmultipleCellMode = false;\n\t}\n\n\tthis.isActivated = function () {\n\t\treturn multipleCellMode;\n\t}\n\n\tthis.pushSelectedCell = function (cell) {\n\t\tif (!multipleCellMode) {\n\t\t\treturn;\n\t\t}\n\t\tselectedCells.push(cell);\n\t\tcell.classList.add('wptb-highlighted');\n\t};\n\n\tthis.selectedCells = function () {\n\t\treturn selectedCells;\n\t}\n\n\tthis.flushSelectedCells = function () {\n\t\tselectedCells = [];\n\t}\n\n\tthis.getFirst = function () {\n\t\tvar minXIndex = 1000, minYIndex = 1000, first;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (minXIndex >= selectedCells[i].dataset.xIndex\n\t\t\t\t&& minYIndex >= selectedCells[i].dataset.yIndex) {\n\t\t\t\tfirst = selectedCells[i];\n\t\t\t\tminXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tminYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn first;\n\t}\n\n\tthis.getLast = function () {\n\t\tvar maxXIndex = -1, maxYIndex = -1, last;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (maxXIndex <= selectedCells[i].dataset.xIndex\n\t\t\t\t&& maxYIndex <= selectedCells[i].dataset.yIndex) {\n\t\t\t\tlast = selectedCells[i];\n\t\t\t\tmaxXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tmaxYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn last;\n\t}\n\n\tthis.removeAllButFirst = function () {\n\t\tvar td = this.getFirst();\n\t\tfor (var i = 1; i < selectedCells.length; i++) {\n\t\t\tselectedCells[i].classList.add('wptb-fused-cell-' + td.dataset.xIndex + '-' + td.dataset.yIndex);\n\t\t}\n\t}\n\n\treturn this;\n\n};","var WPTB_Parser = function ( code ) {\n let div = document.createElement( 'div' );\n div.innerHTML = code;\n \n let table = div.children[0];\n let columnTitleMobile = [...table.querySelectorAll( '.wptb-column-title-mobile-container' )];\n \n for( let i = 0; i < columnTitleMobile.length; i++ ) {\n let parent = columnTitleMobile[i].parentNode;\n parent.removeChild( columnTitleMobile[i] );\n }\n \n let tds = table.querySelectorAll( 'td' );\n for ( let i = 0; i < tds.length; i++ ) {\n tds[i].classList.add( 'wptb-droppable' );\n tds[i].classList.remove( 'wptb-column-title-mobile-not-elements' );\n }\n \n return table;\n}","// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\nif (!Object.keys) {\n Object.keys = (function () {\n 'use strict';\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\n dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ],\n dontEnumsLength = dontEnums.length;\n\n return function (obj) {\n if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n var result = [], prop, i;\n\n for (prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n return result;\n };\n }());\n}","var WPTB_Settings = function () {\n var elems = document.getElementsByClassName('wptb-element');\n\n for ( var i = 0; i < elems.length; i++ ) {\n elems[i].ondragstart = function ( event ) {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData( 'wptbElement', event.target.dataset.wptbElement );\n event.dataTransfer.setData( 'wptbElIndic-' + event.target.dataset.wptbElement, 'wptbElIndic-' + event.target.dataset.wptbElement );\n }\n elems[i].ondragend = function () {\n WPTB_Helper.elementDragEndClear();\n }\n };\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n wptbUndo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n\n WPTB_Helper.elementOptionsSet( 'table_setting', table );\n WPTB_Helper.elementStartScript( table, 'table_setting' );\n WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', table )\n }\n }\n }\n }\n }\n \n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n \n wptbRedo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n\n WPTB_Helper.elementOptionsSet( 'table_setting', table );\n WPTB_Helper.elementStartScript( table, 'table_setting' );\n WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', table )\n }\n }\n }\n \n }\n }\n \n let shortcodePopupWindow = document.getElementsByClassName( 'wptb-popup-window-modal' )[0];\n document.getElementsByClassName( 'wptb-embed-btn' )[0].onclick = function () {\n if( ! this.classList.contains( 'wptb-button-disable' ) ) {\n shortcodePopupWindow.classList.add( 'wptb-popup-show' );\n }\n }\n \n window.onbeforeunload = function(e) {\n let wptbSaveDisabled = document.getElementsByClassName( 'wptb-save-disabled' );\n if( wptbSaveDisabled.length == 0 ) {\n return true;\n } else {\n return null;\n }\n };\n \n \n document.getElementsByClassName( 'wptb-popup-dark-area' )[0].onclick = function () {\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\n }\n \n document.getElementsByClassName( 'wptb-popup-window-close-icon' )[0].onclick = function () {\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\n }\n \n document.getElementsByClassName( 'wptb-preview-btn' )[0].onclick = function ( event ) {\n if( this.classList.contains( 'wptb-button-disable' ) ) {\n return;\n } \n \n let previewId = Math.floor( Math.random() * 10000 );\n \n var newHref = new URL( event.target.href );\n newHref.searchParams.set( 'preview_id', previewId );\n event.target.href = newHref.toString();\n WPTB_Helper.saveTable( event, false, previewId );\n }\n\n document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function ( event ) {\n if( ! this.classList.contains( 'wptb-save-disabled' ) ) {\n WPTB_Helper.saveTable( event );\n }\n }\n\n let tableTitleField = document.querySelector( '#wptb-setup-name' );\n if( tableTitleField ) {\n tableTitleField.onchange = function () {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n};\n","var WPTB_Stringifier = function ( codeMain ) {\n if ( codeMain ) {\n let code = codeMain.cloneNode( true );\n code.dataset.tableColumns = codeMain.columns;\n code.style.width = null;\n code.style.minWidth = null;\n code.style.maxWidth = null;\n \n let tds = code.getElementsByTagName( 'td' );\n if ( tds.length > 0 ) {\n for ( let i = 0; i < tds.length; i++ ) {\n \n if ( codeMain.querySelector( 'wptb-table-preview-head' ) ) {\n tds[i].removeAttribute( 'data-x-index' );\n }\n tds[i].removeAttribute( 'data-y-index' );\n tds[i].removeAttribute( 'draggable' );\n tds[i].classList.remove( 'wptb-droppable' );\n let innerElements = tds[i].getElementsByClassName( 'wptb-ph-element' );\n \n if ( innerElements.length > 0 ) {\n for ( let j = 0; j < innerElements.length; j++ ) {\n \n let mceContentBodys = innerElements[j].querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n \n let dataMceStyle = innerElements[j].querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n \n let contentEditable = innerElements[j].querySelectorAll( '[contenteditable]' );\n if ( contentEditable.length > 0 ) {\n for ( let k = 0; k < contentEditable.length; k++ ) {\n contentEditable[k].removeAttribute( 'contenteditable' );\n }\n }\n \n let spellCheck = innerElements[j].querySelectorAll( '[spellcheck]' );\n if ( spellCheck.length > 0 ) {\n for ( let k = 0; k < spellCheck.length; k++ ) {\n spellCheck[k].removeAttribute( 'spellcheck' );\n }\n }\n \n let mceIds = innerElements[j].querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n \n let wptbActions = innerElements[j].querySelectorAll( '.wptb-actions' );\n let wptbActionsLength = wptbActions.length;\n while ( wptbActionsLength > 0 ) {\n if( wptbActions[0] && wptbActions[0].parentNode ) {\n wptbActions[0].parentNode.removeChild( wptbActions[0] );\n wptbActionsLength--;\n } else {\n break;\n }\n \n } \n \n let dataMceBogus = innerElements[j].querySelectorAll( '[data-mce-bogus]' );\n if( dataMceBogus.length > 0 ) {\n dataMceBogus = [...dataMceBogus];\n for( let k = 0; k < dataMceBogus.length; k++ ) {\n if( dataMceBogus[k] && dataMceBogus[k].parentNode ) {\n dataMceBogus[k].parentNode.removeChild( dataMceBogus[k] );\n }\n }\n }\n }\n }\n \n if( tds[i].hasAttribute( 'data-wptb-title-column' ) ) {\n let columnNameDivContainer = document.createElement( 'div' ),\n columnNameDiv = document.createElement( 'div' );\n columnNameDivContainer.classList.add( 'wptb-column-title-mobile-container' );\n columnNameDiv.classList.add( 'wptb-column-title-mobile' );\n columnNameDiv.dataset.wptbTitleColumn = tds[i].dataset.wptbTitleColumn;\n columnNameDiv.setAttribute( 'style', 'font-size:' + tds[i].dataset.wptbTitleColumnFontSize + '; \\n\\\n color:' + tds[i].dataset.wptbTitleColumnColor + '; background-color:' + tds[i].dataset.wptbTitleBackgroundColor + '; text-align:' + tds[i].dataset.wptbTitleAlign + ';' );\n columnNameDiv.style.padding = tds[i].style.padding;\n if( tds[i].children.length == 0 ) {\n tds[i].classList.add( 'wptb-column-title-mobile-not-elements' );\n }\n columnNameDivContainer.appendChild( columnNameDiv );\n tds[i].insertBefore( columnNameDivContainer, tds[i].firstChild );\n }\n }\n }\n \n return code;\n }\n}","var array = [], WPTB_Table = function ( columns, rows, wptb_preview_table ) {\n\n /* The members of the class */\n var settings = document.getElementsByClassName('wptb-settings-items'),\n wptbTableSetup = document.getElementsByClassName(\"wptb-table-setup\")[0],\n table, row, cell,\n maxAmountOfCells,\n maxAmountOfRows;\n\n //HERE ARE THE PRIVATE FUNCTIONS\n /*\n * This function toggles buttons visibility in cell edit mode\n * (according to the amount of currently selected cells), and\n * highlights visually the clicked cell if it is not highlighted, or\n * removes highlight if clicked cell is already highlighted. \n * It too toggles the bits of our abstract representation.\n * @param Event this is the event instance of the click performed over a cell.\n */\n var mark = function ( event ) {\n var rs = this.rowSpan,\n cs = this.colSpan,\n noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n position = getCoords(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 let cellHighlighted = document.getElementsByClassName('wptb-highlighted'),\n markedCells = cellHighlighted.length;\n if (markedCells === 0) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n } else if (markedCells === 1) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.add('visible');\n singleCells[i].removeAttribute('disabled');\n }\n\n cellHighlighted = cellHighlighted[0];\n WPTB_Helper.elementOptionsSet( 'table_cell_setting', cellHighlighted );\n\n let infArr = cellHighlighted.className.match( /wptb-element-((.+-)\\d+)/i );\n\n const controlElemIds = ['cellWidth', 'cellHeight'];\n\n controlElemIds.map(s => {\n let elementControlSizeUnicClass = `wptb-el-${infArr[1]}-${s}`,\n elementControlSizeFixedUnicClass = `wptb-el-${infArr[1]}-${s}Fixed`;\n if(s === 'cellWidth' || s === 'cellHeight') {\n let sizeName = '',\n getSizeFunctionName = '';\n if(s === 'cellWidth') {\n sizeName = 'width';\n getSizeFunctionName = 'getColumnWidth';\n } else if(s === 'cellHeight') {\n sizeName = 'height';\n getSizeFunctionName = 'getRowHeight';\n }\n let size = cellHighlighted.style[sizeName],\n cellSizeInputs = document.querySelectorAll( '.' + elementControlSizeUnicClass ),\n cellSizeFixedInput = document.querySelector( '.' + elementControlSizeFixedUnicClass );\n cellSizeInputs = [...cellSizeInputs];\n\n if(!size && !cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`]) {\n size = WPTB_Helper[getSizeFunctionName](table, cellHighlighted);\n cellSizeInputs.map(s => {\n s.value = size;\n });\n\n cellSizeFixedInput.checked = false;\n } else {\n cellSizeInputs.map(s => {\n if( size ) {\n s.value = parseFloat( size, 10 );\n } else if( cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`] ) {\n s.value = cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`];\n }\n });\n\n cellSizeFixedInput.checked = true;\n }\n }\n });\n\n cellSettings.classList.add( 'visible' );\n } else {\n for (var i = 0; i < multipleCells.length; i++) {\n if (table.isSquare(array)) {\n multipleCells[i].classList.add('visible');\n multipleCells[i].removeAttribute('disabled');\n } else {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n }\n };\n\n /* \n * This function fills an array with 1's according to the actual design\n * of HTML table.\n * @returns an array of arrays containing an abstract representation\n * of HTML table.\n * @deprecated\n * */\n\n var realTimeArray = function () {\n var carried = [], tds, cols, matriz = [];\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carried[i] = 0;\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n cols = [];\n\n var tds = table.rows[i].getElementsByTagName('td');\n\n for (items = 0; items < tds.length; items++) {\n\n for (var k = 0; k < tds[items].colSpan; k++) {\n cols.push(1);\n }\n\n if (tds[items].rowSpan > 1) {\n for (var k = 0; k < tds[items].colSpan; k++) {\n carried[items + k] = {\n justAssigned: true,\n amount: tds[items].rowSpan\n };\n }\n }\n }\n\n for (var k = 0; k < maxAmountOfCells; k++) {\n if (typeof carried[k] == 'object' && carried[k].amount > 0) {\n carried[k].amount--;\n if (carried[k].justAssigned) {\n carried[k].justAssigned = false;\n } else {\n cols.push(1);\n }\n }\n }\n\n matriz.push(cols);\n\n }\n return matriz;\n };\n\n /*\n * This function gets the number and position of cell spaces in current row that are occuped \n * by upper rowspanned cells.\n * @param number the number of row where we wish to calculate the carried rowspans up to.\n * @return an array with the remaining rowspans in each column.\n */\n var carriedRowspans = function (row) {\n var carried = [], tds, cols;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carried[i] = 0;\n }\n\n if (row == -1) {\n return carried;\n }\n\n for (var i = 0; i <= row; i++) {\n cellsBuffer = table.rows[i].getElementsByTagName('td');\n cellPointer = 0;\n\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (carried[xPosition]) {\n carried[xPosition]--;\n } else {\n celda = cellsBuffer[cellPointer++];\n if (celda.rowSpan > 1) {\n for (k = 0; k < celda.colSpan; k++) {\n carried[xPosition + k] = celda.rowSpan - 1;\n }\n stepsToMove = celda.colSpan;\n } else if (celda.colSpan > 1) {\n stepsToMove = celda.colSpan;\n }\n }\n }\n\n }\n return carried;\n };\n\n /*\n * A helpful function for showing\n * the abstract table in console.\n * @param Array our abstract table.\n */\n var drawTable = function (a) {\n var string = 'DRAWING TABLE:\\n';\n for (var i = 0; i < a.length; i++) {\n\n for (var j = 0; j < a[i].length; j++) {\n string += ' ' + a[i][j];\n }\n string += '\\n';\n }\n table.isSquare(a);\n };\n\n /*\n * It resets all the bits of our abstract representation\n * to 0 and removes the highlighting class of all cells.\n */\n\n var undoSelect = function () {\n var noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n tds = table.getElementsByClassName('wptb-highlighted');\n while (tds.length) {\n tds[0].classList.remove('wptb-highlighted');\n }\n cellSettings.classList.remove( 'visible' );\n for (var i = 0; i < array.length; i++) {\n for (var j = 0; j < array[i].length; j++) {\n array[i][j] = 0;\n }\n }\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n };\n\n /*\n * This fills the abstract representation of our table with \n * zeros, at the start. the max amount of cells is the greatest sum\n * of all colspans for row.\n */\n\n var fillTableArray = function () {\n var colspansSums = [], a = [];\n\n //calculate max amount of cells inside a row\n for (var i = 0; i < table.rows.length; i++) {\n var cells = table.rows[i].getElementsByTagName('td'),\n colspanSumInRow = 0;\n for (var j = 0; j < cells.length; j++) {\n colspanSumInRow += cells[j].colSpan;\n }\n colspansSums.push(colspanSumInRow);\n }\n\n maxAmountOfCells = Math.max.apply(null, colspansSums);\n //calculate max rows\n var maxAmountOfRows = table.rows.length;\n\n // fill with zeros from both values\n for (var i = 0; i < maxAmountOfRows; i++) {\n a[i] = [];\n for (var j = 0; j < maxAmountOfCells; j++) {\n a[i].push(0);\n }\n }\n drawTable(a);\n return a;\n };\n\n /*\n * This function gets the sum of all colspans in a row.\n * @param number the number of row to be used as reference.\n */\n var getActualPointsInRow = function (row) {\n var tds = table.rows[row].getElementsByTagName('td'),\n points = 0;\n for (var i = 0; i < tds.length; i++) {\n points += tds[i].colSpan;\n }\n return points;\n }\n\n /*\n * This function gets us the exact coordinates of\n * an exact cell, in a more reliable way than xIndex and yIndex,\n * these last ones were meant to be used for getting the cell trough them.\n * @param DOMElement the cell to get the coordinates.\n */\n var getCoords = function (search) {\n var skipInCols = [], cell;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n skipInCols[i] = 0;\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var cellsBuffer = table.rows[i].getElementsByTagName('td');\n cellPointer = 0;\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (skipInCols[xPosition]) {\n skipInCols[xPosition]--;\n } else {\n var td = cellsBuffer[cellPointer++];\n if (td == search) {\n return [i, xPosition];\n }\n if (td.rowSpan > 1) {\n for ( let k = 0; k < td.colSpan; k++ ) {\n skipInCols[xPosition + k] = td.rowSpan - 1;\n }\n stepsToMove = td.colSpan;\n } else if (td.colSpan > 1) {\n stepsToMove = td.colSpan;\n }\n }\n }\n }\n };\n\n jQuery('#wptb-table-border-color').val('');\n jQuery('#wptb-table-padding-number,#wptb-table-padding-slider').val('15');\n\n if ( columns || rows ) {\n //END OF PRIVATE FUNCTIONS\n for (var i = 0; i < settings.length; i++) {\n if (settings[i].id !== 'wptb-apply-inner-border') {\n settings[i].classList.add('visible');\n }\n }\n\n //Create a HTML Table element.\n table = document.createElement( 'table' );\n table.classList.add( 'wptb-preview-table', 'wptb-element-main-table_setting-startedid-0' );\n table.style.border = '0px solid';\n table.dataset.reconstraction = 1;\n //table.dataset.wptbAdaptiveTable = 1;\n //Add the data rows.\n for (var i = 0; i < rows; i++) {\n\n row = table.insertRow(-1);\n row.classList.add( 'wptb-row' );\n\n for (var j = 0; j < columns; j++) {\n cell = new WPTB_Cell(mark);\n cell.setCoords(i, j);\n cell.getDOMElement().style.borderWidth = '1px';\n row.appendChild(cell.getDOMElement());\n }\n }\n } else {\n if( ! wptb_preview_table ) wptb_preview_table = document.querySelector( '.wptb-preview-table' );\n\n if ( wptb_preview_table ) {\n table = wptb_preview_table;\n\n let cells = table.getElementsByTagName('td');\n\n if (cells.length > 0) {\n for (let i = 0; i < cells.length; i++) {\n WPTB_Cell(mark, cells[i]);\n }\n }\n } else {\n return;\n }\n }\n\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table. \n */\n\n table.recalculateIndexes = function () {\n WPTB_Helper.recalculateIndexes( this );\n }\n \n table.addColumnWidth = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataXIndex = highlighted[k].dataset.xIndex;\n if( dataXIndex ) {\n function tableTdsFor( dataXIndex, colspan ) {\n let tableRows = table.rows;\n let widthIsSet = false;\n let arrayTdsFromPreviousRow = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.xIndex == dataXIndex ) {\n if( value ) {\n if( td.colSpan == colspan ) {\n td.style.width = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n widthIsSet = true;\n } else {\n td.style.width = null;\n td.dataset.wptbFixedWidth = value;\n if( i == tableRows.length - 1 && ! widthIsSet ) {\n tableTdsFor( dataXIndex, colspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.width = null;\n td.removeAttribute( 'data-wptb-fixed-width' );\n } else {\n if( td.dataset.wptbFixedWidth ) {\n if( td.colSpan == colspan ) {\n td.style.width = td.dataset.wptbFixedWidth + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n } \n } else if( td.style.width ) {\n for( let z = 0; z < arrayTdsFromPreviousRow.length; z++ ) {\n arrayTdsFromPreviousRow[z].style.width = td.style.width;\n }\n arrayTdsFromPreviousRow = [];\n } else {\n arrayTdsFromPreviousRow.push( td );\n }\n }\n break;\n } \n }\n }\n }\n \n tableTdsFor( dataXIndex, 1 );\n }\n }\n \n table.tdDefaultWidth();\n }\n }\n \n table.tdDefaultWidth = function() {\n let rows = table.rows;\n \n let tableTdsSumMaxWidth = 0;\n let tableTdsSumMaxWidthFixed = 0;\n let tableTdsSumMaxWidthAuto = 0;\n \n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' )[0];\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n \n let arrayCellsWidthFixedHelper = [];\n let arrayCellsWidthAutoHelper = [];\n let tdPaddingCommon = 0;\n let tableTdBorderCommonWidth = 0;\n let cssForTdsWidthAuto = '';\n \n \n let tableFullStyleObj = window.getComputedStyle( table, null );\n let borderLeftWidth = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let borderRightWidth = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderCommon = parseFloat( borderLeftWidth, 10 ) + parseFloat( borderRightWidth, 10 );\n \n for( let i = 0; i < rows.length; i++ ) {\n let tds = rows[i].children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n \n if( ! arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( td.style.width ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] = parseFloat( td.style.width );\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n } else {\n if( ! td.dataset.wptbFixedWidth ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] = table.dataset.wptbTdWidthAuto ? parseFloat( table.dataset.wptbTdWidthAuto, 10 ) : 100;\n td.dataset.wptbCssTdAutoWidth = true;\n }\n }\n \n if( window.getComputedStyle( td, null ) ) {\n let tdStyleObj = window.getComputedStyle( td, null );\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n tdPaddingCommon = parseFloat( tdPaddingLeft, 10 ) + parseFloat( tdPaddingRight, 10 );\n\n let tableTdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tableTdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n tableTdBorderCommonWidth = parseFloat( tableTdBorderLeftWidth, 10 ) + parseFloat( tableTdBorderRightWidth, 10 );\n tableTdBorderCommonWidth = tableTdBorderCommonWidth / 2;\n \n if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n \n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n \n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n }\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( ! td.dataset.wptbFixedWidth ) {\n td.dataset.wptbCssTdAutoWidth = true;\n }\n } else if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n }\n }\n }\n \n for( let i = 0; i < arrayCellsWidthFixedHelper.length; i++ ) {\n if( arrayCellsWidthFixedHelper[i] ) {\n tableTdsSumMaxWidthFixed += arrayCellsWidthFixedHelper[i];\n }\n }\n \n let CellsWidthAutoCount = 0;\n for( let i = 0; i < arrayCellsWidthAutoHelper.length; i++ ) {\n if( arrayCellsWidthAutoHelper[i] ) {\n tableTdsSumMaxWidthAuto += arrayCellsWidthAutoHelper[i];\n CellsWidthAutoCount++;\n }\n }\n \n tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto;\n \n table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;\n if( CellsWidthAutoCount ) {\n table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;\n if( table.mergingСellsHorizontally ) {\n table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed;\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n }\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n table.removeAttribute( 'data-wptb-cells-width-auto-count' );\n }\n \n let styleElementCreate = false;\n let tableTdWidthAuto;\n if( tableTdsSumMaxWidth < wptbTableSetupWidth ) {\n if( CellsWidthAutoCount ) {\n table.style.minWidth = '100%';\n if( table.mergingСellsHorizontally ) {\n table.style.width = 'auto';\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed;\n tableTdWidthAuto = tableTdsWidthAutoCommon / CellsWidthAutoCount;\n tableTdWidthAuto = tableTdWidthAuto - tdPaddingCommon - tableTdBorderCommonWidth;\n styleElementCreate = true;\n } else {\n table.style.width = '100%';\n }\n } else {\n table.style.width = 'auto';\n table.style.minWidth = null;\n table.style.maxWidth = null;\n }\n } else {\n table.style.maxWidth = null;\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\n table.style.width = 'auto';\n tableTdWidthAuto = table.dataset.wptbTdWidthAuto ? table.dataset.wptbTdWidthAuto : '100';\n styleElementCreate = true;\n }\n \n let head = document.head;\n if( head ) {\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAutoOld ) {\n head.removeChild( cssForTdsWidthAutoOld );\n }\n }\n \n if( styleElementCreate ) {\n cssForTdsWidthAuto = document.createElement( 'style' );\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\n cssForTdsWidthAuto.innerHTML = '[data-wptb-css-td-auto-width=true]{width:' + tableTdWidthAuto + 'px}';\n if( head ) {\n head.appendChild( cssForTdsWidthAuto );\n }\n }\n \n if( table.dataset.wptbTableAlignment ) {\n let wptbTableAlignment = table.dataset.wptbTableAlignment;\n\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n if( wptbTableSetupWidth < table.offsetWidth ) {\n table.style.float = null;\n } else {\n if( wptbTableAlignment == 'center' ) {\n table.style.float = null;\n } else {\n table.style.float = wptbTableAlignment;\n }\n }\n\n if( wptbTableAlignment == 'center' ) {\n wptbTableSetup.style.float = null;\n } else {\n wptbTableSetup.style.float = wptbTableAlignment;\n }\n \n if( tableTdWidthAuto && table.dataset.wptbTableContainerMaxWidth && table.offsetWidth < table.dataset.wptbTableContainerMaxWidth ) {\n table.style.width = '100%';\n }\n } else {\n table.style.float = null;\n }\n }\n \n table.addRowHeight = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataYIndex = highlighted[k].dataset.yIndex;\n if( dataYIndex ) {\n function tableTdsFor( dataYIndex, rowspan ) {\n let tableRows = table.rows;\n let heightIsSet = false;\n let arrayTdsPrevious = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.yIndex == dataYIndex ) {\n if( value ) {\n if( td.rowSpan == rowspan ) {\n td.style.height = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n heightIsSet = true;\n continue;\n } else {\n td.style.height = null;\n td.dataset.wptbFixedHeight = value;\n if( j == tds.length - 1 && ! heightIsSet ) {\n tableTdsFor( dataYIndex , rowspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.height = null;\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n } else {\n if( td.dataset.wptbFixedHeight ) {\n if( td.rowSpan = rowspan ) {\n td.style.height = td.dataset.wptbFixedHeight + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n }\n } else if( td.style.height ) {\n for( let z = 0; z < arrayTdsPrevious.length; z++ ) {\n arrayTdsPrevious[z].style.height = td.style.height;\n }\n arrayTdsPrevious = [];\n } else {\n arrayTdsPrevious.push( td );\n }\n }\n } \n }\n }\n }\n \n tableTdsFor( dataYIndex, 1 );\n }\n }\n }\n }\n \n table.reconstraction = function() {\n let tds = table.getElementsByTagName( 'td' );\n table.mergingСellsHorizontally = false;\n table.mergingCellsVertically = false;\n table.dataset.reconstraction = 1;\n let forBreak = 0;\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].colSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingСellsHorizontally = true;\n forBreak++;\n }\n \n if( tds[i].rowSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingCellsVertically = true;\n forBreak++;\n }\n \n if( forBreak == 2 ) {\n break;\n }\n }\n }\n\n /*\n * As simple as it is: adds a column to the end of table.\n */\n table.addColumnEnd = function () {\n let td,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if (currentTable.length > 0) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if (currentTableTd) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n \n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n \n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n }\n \n table.rows[i].appendChild(td.getDOMElement());\n array[i].push(0);\n }\n \n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * As simple as it looks: adds a column to the start of table.\n */\n\n table.addColumnStart = function () {\n let td,\n firstCell,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if ( currentTable.length > 0 ) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if ( currentTableTd ) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n \n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n }\n firstCell = table.rows[i].getElementsByTagName('td')[0];\n if (firstCell) {\n table.rows[i].insertBefore(td.getDOMElement(), firstCell);\n } else {\n table.rows[i].appendChild(td.getDOMElement());\n }\n array[i].push(0);\n }\n\n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Well, not so simple as previous functions.\n * It adds a column after a certain column of reference.\n * @param integer the column number to be used as reference.\n *\tIf empty, then the first highlighted cell is used as reference.\n */\n\n table.addColumnAfter = function (c_pos) {\n let rows = table.rows,\n 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\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /*\n * For preventing us to take a lot of time,\n * This is just calling the function addColumnAfter, but\n * using the previous column to current one as reference.\n * @see addColumnAfter\n */\n\n table.addColumnBefore = function () {\n var cell = document.querySelector('.wptb-highlighted'),\n pos = getCoords(cell)[1];\n\n if (pos === 0) {\n table.addColumnStart();\n } else {\n table.addColumnAfter(pos - 1);\n }\n };\n\n /*\n * Luckily, thisfunction is simple, \n * it just add a row to the end of table.\n */\n\n table.addRowToTheEnd = function () {\n let r = table.insertRow(-1),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table');\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n \n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n \n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n \n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /*\n * Yet another simple function, \n * it just add a row to the start of table.\n */\n\n table.addRowToTheStart = function () {\n let r = table.insertRow(0),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n \n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n \n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n \n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /* \n * This function adds a row before the current one.\n * Since the biggest factor of problem is a not-started but ongoing rowspan,\n * the most of the troubles is not here.\n */\n\n table.addRowBefore = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellNew;\n for( let i = row - 1; i >= 0; i-- ) {\n let rowChildren = table.rows[i].children;\n let rowChildrenLength = rowChildren.length;\n if( rowChildrenLength > 0 ) {\n for( let j = 0; j < rowChildrenLength; j++ ) {\n if( rowChildren[j].rowSpan == 1 ) {\n row = i;\n cellNew = true;\n break;\n }\n }\n }\n if ( cellNew ) {\n break;\n }\n }\n\n if (row === 0) {\n table.addRowToTheStart();\n } else {\n table.addRowAfter( row, cellStyle );\n }\n };\n\n /*\n * Well... by the name convention of the previous 3 functions,\n * it's pretty obvious that this functions attaches a new\n * row after highlighted cell row. The greatest obstacle it was\n * the possibility of a TR not having the exact amount of columns\n * occuped by actual node but rowspanned upper cells. For that purpose\n * it was created the function realTimeArray.\n * @see realTimeArray\n */\n\n table.addRowAfter = function ( row, cellStyle ) {\n let cellRowSpan,\n rowAfter,\n aux;\n \n if ( ( row == undefined || typeof row !== 'number' ) && cellStyle == undefined ) {\n let cell = document.querySelector('.wptb-highlighted');\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellRowSpan = cell.rowSpan,\n rowAfter = row + cellRowSpan - 1;\n } else {\n rowAfter = row;\n }\n \n \n let cellsColSpan = 0;\n if ( rowAfter < table.rows.length -1 ) {\n for( let i = 0; i <= rowAfter ; i++ ) {\n let tableRowsIChildren = table.rows[i].children,\n tableRIChildrenLength = tableRowsIChildren.length;\n if( tableRIChildrenLength > 0 ) {\n for( let j = 0; j < tableRIChildrenLength; j++ ) {\n let rowIRowSpan = tableRowsIChildren[j].rowSpan;\n\n if ( rowIRowSpan - 1 + i > rowAfter ) {\n tableRowsIChildren[j].rowSpan++;\n }\n }\n }\n }\n \n let rNext = table.rows[rowAfter + 1],\n rNextChildren = rNext.children,\n rNextChildrenLength = rNextChildren.length;\n \n if( rNextChildrenLength > 0 ) {\n for ( let i = 0; i < rNextChildrenLength; i++ ) {\n cellsColSpan += rNextChildren[i].colSpan;\n }\n }\n } else {\n cellsColSpan = array[0].length;\n }\n \n let r = table.insertRow( rowAfter + 1 );\n r.classList.add( 'wptb-row' );\n \n for ( j = 0; j < cellsColSpan; j++ ) {\n let td = new WPTB_Cell( mark );\n 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 WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after');\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This function checks the current selected cells\n * make a rectangular shape.\n * @param Array the abstract table.\n * @return false, if not making a rectangle, or\n *\tArray an array containing number of rows and columns, if selection makes a rectangle.\n */\n\n table.isSquare = function (a) {\n var rowStart = -1,\n columnStart = -1,\n rowEnd = -1,\n columnEnd = -1,\n height,\n width,\n itemsEstimate = 0,\n items = 0;\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n if ( j < columnStart || columnStart == -1 ) {\n columnStart = j;\n }\n if ( i < rowStart || rowStart == -1 ) {\n rowStart = i;\n }\n }\n }\n \n }\n\n for (var i = a.length - 1; i > -1; i--) {\n for (var j = a[i].length - 1; j > -1; j--) {\n if (a[i][j] == 1) {\n if ( j > columnEnd ) {\n columnEnd = j;\n }\n if ( i > rowEnd ) {\n rowEnd = i;\n }\n }\n }\n }\n\n for (var i = rowStart; i < rowEnd; i++) {\n for (var j = columnStart; j < columnEnd; j++) {\n if (a[i][j] == 0 || a[i][j] == undefined) {\n return false;\n }\n }\n }\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n items++;\n }\n }\n }\n\n height = rowEnd - rowStart + 1;\n width = columnEnd - columnStart + 1;\n itemsEstimate = height * width;\n\n if (itemsEstimate !== items) {\n return false;\n }\n return [height, width];\n };\n\n /*\n * This function merges all selected cells.\n * Well, actually sets the colspan and rowspan of first \n * upper left cell in selection and deletes the another selected cells.\n */\n\n table.mergeCells = function () {\n var dimensions = table.isSquare(array),\n rowspan = dimensions[0],\n colspan = dimensions[1],\n first = document.querySelector('.wptb-highlighted'),\n tds = [].slice.call(document.getElementsByClassName('wptb-highlighted'), 1),\n tdsChildrenNew = [];\n\n for (let i = 0; i < tds.length; i++) {\n let tdsInternalElements = tds[i].getElementsByClassName('wptb-ph-element');\n if (tdsInternalElements.length > 0) {\n let tdsIntElemLength = tdsInternalElements.length;\n for (let j = 0; j < tdsIntElemLength; j++) {\n tdsChildrenNew.push(tdsInternalElements[j]);\n }\n }\n let p = tds[i].parentNode;\n p.removeChild(tds[i]);\n }\n if (tdsChildrenNew.length > 0) {\n for (let i = 0; i < tdsChildrenNew.length; i++) {\n first.appendChild(tdsChildrenNew[i]);\n }\n }\n\n first.colSpan = colspan;\n first.rowSpan = rowspan;\n table.recalculateIndexes();\n table.reconstraction();\n let firstWidth = first.style.width;\n let firstDataFixedWidth = first.dataset.wptbFixedWidth;\n if( firstWidth ) {\n table.addColumnWidth( parseFloat( firstWidth, 10 ) );\n } else if( firstDataFixedWidth ) {\n table.addColumnWidth();\n } else {\n table.addColumnWidth( false, true );\n }\n \n let firstHeight = first.style.height;\n let firstDataFixedHeight = first.dataset.wptbFixedHeight;\n if( firstHeight ) {\n table.addRowHeight( parseFloat( firstHeight, 10 ) );\n } else if( firstDataFixedHeight ) {\n table.addRowHeight();\n } else {\n table.addRowHeight( false, true );\n }\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This functions makes the exact inverse as above.\n * It resets colspan and rowspan and appends \n * the same amount in cells to the table.\n * @bug\n */\n\n table.splitCell = function () {\n var cell = document.getElementsByClassName('wptb-highlighted')[0],\n rowspan = cell.rowSpan,\n colspan = cell.colSpan,\n cellStyles = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n thisRow = table.rows[row],\n cellXIndex =cell.dataset.xIndex;\n \n cell.rowSpan = 1;\n cell.colSpan = 1;\n \n for (let i = 1; i < colspan; i++) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().classList.add( 'wptb-highlighted' );\n if ( cell.nextSibling ) {\n thisRow.insertBefore( td.getDOMElement(), cell.nextSibling );\n } else {\n thisRow.appendChild( td.getDOMElement() );\n }\n \n }\n\n if (rowspan > 1) {\n for (let i = 1; i < rowspan; i++) {\n let rowChildInsertBefore = undefined,\n rowNext = table.rows[row + i],\n rowChildren = rowNext.children,\n rowChildrenLength = rowChildren.length;\n \n if ( rowChildrenLength > 0 ) {\n for ( let k = 0; k < rowChildrenLength; k++ ) {\n if ( Number( rowChildren[k].dataset.xIndex ) > Number( cellXIndex ) ) {\n rowChildInsertBefore = rowChildren[k];\n break;\n } \n }\n }\n for ( let j = 0; j < colspan; j++ ) {\n let td = new WPTB_Cell( mark );\n td.getDOMElement().setAttribute( 'style', cellStyles );\n if ( rowChildInsertBefore != undefined ) {\n rowNext.insertBefore( td.getDOMElement(), rowChildInsertBefore );\n } else {\n rowNext.appendChild( td.getDOMElement() );\n }\n }\n }\n }\n\n table.recalculateIndexes();\n table.reconstraction();\n table.addColumnWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Searches for rowspanned cells up to row number meeting it.\n * @param number the number of row where the function\n * must search up to.\n */\n\n table.findRowspannedCells = function (row) {\n var array = [],\n difference;\n actualPoints = getActualPointsInRow(row);\n if (actualPoints === maxAmountOfCells) {\n return [];\n }\n difference = maxAmountOfCells - actualPoints;\n\n for (var i = row - 1; i >= 0 && difference; i--) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var i = 0; i < tds.length; i++) {\n if (tds[i].rowSpan > 1) {\n array.push(tds[i]);\n difference -= tds[i].colSpan;\n }\n }\n }\n return array;\n\n }\n\n /*\n * This function explores the table and adds \n * a cell for each lacking one for each row\n * to meet an even amount of cells.\n */\n\n table.addLackingCells = function () {\n var sumRows = [];\n for (var i = 0; i < table.rows.length; i++) {\n sumRows.push(0);\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var j = 0; j < tds.length; j++) {\n if (tds[j].rowSpan > 1) {\n for (var k = 1; k < tds[j].rowSpan; k++) {\n sumRows[i + k]++;\n }\n }\n }\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td'),\n totalColspan = 0;\n for (var j = 0; j < tds.length; j++) {\n totalColspan += tds[j].colSpan;\n }\n totalColspan += sumRows[i];\n difference = maxAmountOfCells - totalColspan;\n for (var j = 0; j < difference; j++) {\n var td = new WPTB_Cell(mark);\n table.rows[i].appendChild(td.getDOMElement());\n //table.rows[i].insertBefore( td.getDOMElement(), rows[i].nextSibling );\n }\n }\n };\n\n /*\n * This function deletes the row of currently\n * selected cell. \n */\n\n table.deleteRow = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyles = cell.getAttribute('style'),\n rowspan = cell.rowSpan,\n row = getCoords(cell)[0],\n thisRow,\n aux;\n \n if ( rowspan == undefined ) rowspan = 1;\n \n for ( let i = 0; i < rowspan; i++ ) {\n thisRow = table.rows[row];\n let thisRowChildren = thisRow.children,\n nextRow = table.rows[row + 1],\n nextRowChildren,\n nextRowChildrenLength,\n tdArr = [];\n\n if( nextRow != undefined ) {\n nextRowChildren = nextRow.children;\n nextRowChildrenLength = nextRowChildren.length;\n for (let j = 0; j < thisRowChildren.length; j++) {\n if ( thisRowChildren[j].rowSpan > 1 ) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().colSpan = thisRowChildren[j].colSpan;\n td.getDOMElement().rowSpan = thisRowChildren[j].rowSpan - 1;\n\n let nextRowChildrenK = undefined;\n for ( let k = 0; k < nextRowChildrenLength; k++ ) {\n if ( Number( nextRowChildren[k].dataset.xIndex ) > Number( thisRowChildren[j].dataset.xIndex ) ) {\n nextRowChildrenK = nextRowChildren[k];\n break;\n } \n }\n\n if ( nextRowChildrenK ) {\n tdArr.push( [td, nextRowChildrenK] );\n } else {\n tdArr.push( [td] );\n }\n }\n }\n\n if ( tdArr.length > 0 ) {\n for ( let k = 0; k < tdArr.length; k++ ) {\n if ( tdArr[k][1] != undefined ) {\n nextRow.insertBefore( tdArr[k][0].getDOMElement(), tdArr[k][1] );\n } else {\n nextRow.appendChild( tdArr[k][0].getDOMElement() );\n }\n }\n }\n }\n \n let tableRows = table.rows;\n if ( tableRows.length > 0 ) {\n for ( let j = 0; j < row; j++ ) {\n let jRowChildren = tableRows[j].children;\n if ( jRowChildren.length > 0 ) {\n for ( let x = 0; x < jRowChildren.length; x++ ) {\n if ( jRowChildren[x].rowSpan - 1 >= row - j ) {\n jRowChildren[x].rowSpan--;\n }\n }\n }\n }\n }\n aux = Array.from(array[0]);\n array.pop(aux);\n drawTable(array);\n table.getElementsByTagName('tbody')[0].removeChild(table.rows[row]);\n \n if( table.rows.length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n \n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n \n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n /*\n * This function deletes the column of currently\n * selected cell. Again, this is way more complicated than\n * delete row case.\n */\n\n table.deleteColumn = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellXIndex = cell.dataset.xIndex,\n colspan = cell.colSpan;\n \n for ( let i = 0; i < colspan; i++ ) {\n for ( let j = 0; j < table.rows.length; j++ ) {\n let rowChildren = table.rows[j].children;\n let rowChildrenLength = rowChildren.length;\n if( rowChildrenLength > 0 ) {\n for ( let k = rowChildrenLength - 1; k >= 0; k-- ) {\n if ( Number( rowChildren[k].dataset.xIndex ) == Number( cellXIndex ) ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n } else {\n table.rows[j].removeChild( rowChildren[k] );\n }\n break;\n } else if( Number( rowChildren[k].dataset.xIndex ) < Number( cellXIndex ) && \n Number( rowChildren[k].dataset.xIndex ) + \n Number( rowChildren[k].colSpan -1 ) >= cellXIndex ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n }\n break;\n }\n }\n }\n }\n \n for ( let j = 0; j < table.rows.length; j++ ) {\n if (array[j] != undefined)\n array[j].pop();\n }\n \n maxAmountOfCells--;\n \n if( table.querySelectorAll( 'td' ).length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n \n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n table.tdDefaultWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n \n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n\n array = fillTableArray();\n\n undoSelect();\n drawTable(array);\n\n wptbTableSetup.appendChild(table);\n //if (columns || rows) {\n table.recalculateIndexes( true );\n //}\n table.reconstraction();\n table.tdDefaultWidth();\n \n wptbTableSetup.onresize = function() {\n table.tdDefaultWidth();\n };\n\n WPTB_LeftPanel();\n \n // this code gets the ID of the active element in the toolbar \n // and stores it in the data attribute of the common container element \"wpcd_fixed_toolbar\"\n// let wptbPhElement = document.getElementsByClassName( 'wptb-ph-element' );\n// let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\n// for ( let i = 0; i < wptbPhElement.length; i++ ) {\n// wptbPhElement[i].addEventListener( 'click', function( e ) {\n// let wptbToolbar = document.getElementById( 'wpcd_fixed_toolbar' ).children;\n// for ( let j = 0; j < wptbToolbar.length; j++ ) {\n// let elementStyles = window.getComputedStyle( wptbToolbar[j], 'null' );\n// if( elementStyles.getPropertyValue( 'display' ) == 'block' ) {\n// wpcdFixedToolbar.dataset.toolbarActiveId = wptbToolbar[j].getAttribute( 'id' );\n// }\n// }\n// }, false );\n// }\n \n// let wptbPanelLeft = document.getElementsByClassName( 'wptb-panel-left' );\n// if( wptbPanelLeft.length > 0 ) {\n// wptbPanelLeft[0].addEventListener( 'click', function( e ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }, false );\n// }\n \n// let body = document.getElementsByTagName( 'body' );\n// if( body.length > 0 ) {\n// body[0].addEventListener( 'click', function( e ) {\n// if ( e.target.classList.contains( 'wptb-panel-left' ) || WPTB_Helper.findAncestor( e.target, 'wptb-panel-left' ) ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }\n// }, false );\n// }\n};","var WPTB_TableStateSaveManager = function() {\n this.tableStateSet = ( generate ) => {\n \n if( generate && window.wptbTableStateSaving && Array.isArray( window.wptbTableStateSaving ) ) {\n return;\n }\n \n // get table setup\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' );\n let wptbPreviewTable = '';\n if( wptbTableSetup.length > 0 ) {\n wptbTableSetup = wptbTableSetup[0];\n\n wptbPreviewTable = wptbTableSetup.querySelector( '.wptb-preview-table' );\n } else {\n wptbTableSetup = '';\n }\n\n\n \n // check if a global array doesn't exist with saved versions of the table \n // them create it\n if( ! window.wptbTableStateSaving && ! Array.isArray( window.wptbTableStateSaving ) ) {\n window.wptbTableStateSaving = [];\n } \n\n // remove the extra part of the array after changing the table \n // when it is showed in the not last modified version\n if( window.wptbTableStateSaving.length > window.wptbTableStateNumberShow ) {\n window.wptbTableStateSaving = window.wptbTableStateSaving.slice( 0, window.wptbTableStateNumberShow + 1 );\n }\n\n //add new state of table\n let wptbNewTableSetup = '';\n if( wptbTableSetup ) {\n wptbNewTableSetup = wptbTableSetup.cloneNode( true );\n let wptbHighlighted = wptbNewTableSetup.getElementsByClassName( 'wptb-highlighted' );\n for( let i = 0; i < wptbHighlighted.length; i++ ) {\n wptbHighlighted[i].classList.remove( 'wptb-highlighted' );\n }\n let wptbDirectlyhovered = wptbNewTableSetup.getElementsByClassName( 'wptb-directlyhovered' );\n for( let i = 0; i < wptbDirectlyhovered.length; i++ ) {\n wptbDirectlyhovered[i].classList.remove( 'wptb-directlyhovered' );\n }\n let mceContentBodys = wptbNewTableSetup.querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n let dataMceStyle = wptbNewTableSetup.querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n let mceIds = wptbNewTableSetup.querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n }\n\n let cssForTdsWidthAutoValue = '';\n let head = document.head;\n if( head ) {\n let cssForTdsWidthAuto = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAuto ) {\n cssForTdsWidthAutoValue = cssForTdsWidthAuto.innerHTML;\n }\n }\n\n let wptbTableTitle = '';\n let wptbSetupName = document.getElementById( 'wptb-setup-name' );\n if( wptbSetupName ) wptbTableTitle = wptbSetupName.value;\n\n window.wptbTableStateSaving.push( [wptbNewTableSetup, cssForTdsWidthAutoValue, wptbTableTitle] );\n\n // set new number of state which is showed now\n window.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;\n\n // make undo arrow active when the table was changed\n if( window.wptbTableStateSaving.length - 1 > 0 ) {\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n\n wptbUndo.classList.remove( 'wptb-undoredo-disabled' );\n }\n }\n\n // make redo arrow not active when the table was changed\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\n }\n\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n if( ( ! wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \n window.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave || ! wptbPreviewTable ) {\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n } else {\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\n wptbSaveBtn.classList.add('active');\n }\n }\n }\n \n this.tableStateGet = ( datawptbUndoredo ) => {\n if( datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length > 0 ) {\n \n // changes the number of the state which displays now\n if( datawptbUndoredo == 'undo' ) {\n if( window.wptbTableStateNumberShow > 0 ) {\n window.wptbTableStateNumberShow--;\n } else {\n return false;\n }\n } else if( datawptbUndoredo == 'redo' ) {\n if( window.wptbTableStateNumberShow < window.wptbTableStateSaving.length ) {\n window.wptbTableStateNumberShow++;\n } else {\n return false;\n }\n }\n \n // add or delete class \"wptb-undoredo-disabled\" for undo button\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n if( window.wptbTableStateNumberShow == 0 ) {\n if( wptbUndo ) {\n wptbUndo.classList.add( 'wptb-undoredo-disabled' );\n }\n } else if( window.wptbTableStateNumberShow > 0 ) {\n if( wptbUndo ) {\n wptbUndo.classList.remove( 'wptb-undoredo-disabled' );\n }\n }\n }\n \n // add or delete class \"wptb-undoredo-disabled\" for redo button\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n \n if( window.wptbTableStateNumberShow == window.wptbTableStateSaving.length - 1 ) {\n if( wptbRedo ) {\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\n }\n } else if( window.wptbTableStateNumberShow < window.wptbTableStateSaving.length - 1 ) {\n if( wptbRedo ) {\n wptbRedo.classList.remove( 'wptb-undoredo-disabled' );\n }\n }\n }\n \n // add or delete class \"wptb-save-disabled\" for save button\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n if( ( ! wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \n window.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave ) {\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n } else {\n wptbSaveBtn.classList.add('active');\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\n }\n }\n \n // load necessary saved table state\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' );\n if( wptbTableSetup.length > 0 ) {\n wptbTableSetup = wptbTableSetup[0];\n\n //wptbTableSetup.outerHTML = '';\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow] ) {\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] && \n typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] === 'object' ) {\n if( 'outerHTML' in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] ) {\n wptbTableSetup.outerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;\n }\n }\n\n let wptbTableSetupNew = document.querySelector( '.wptb-table-setup' );\n if( wptbTableSetupNew && wptbTableSetupNew.children.length == 0 ) {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n }\n\n // add or change or delete style element in the head for table cells who have auto width\n let head = document.head;\n if( head ) {\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAutoOld ) {\n head.removeChild( cssForTdsWidthAutoOld );\n }\n\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow][1] ) {\n let cssForTdsWidthAuto = document.createElement( 'style' );\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\n cssForTdsWidthAuto.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][1];\n head.appendChild( cssForTdsWidthAuto );\n }\n }\n\n // change value of table title field\n let wptbSetupName = document.getElementById( 'wptb-setup-name' );\n if( typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][2] != 'undefined' ) {\n if( wptbSetupName ) wptbSetupName.value = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];\n }\n }\n \n let body = document.getElementsByTagName( 'body' );\n if( body.length > 0 ) {\n body = body[0];\n }\n\n WPTB_Helper.elementOptionsPanelClear();\n WPTB_LeftPanel();\n\n let wptbLeftScrollPanelCellSetting = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ); \n if( wptbLeftScrollPanelCellSetting ) {\n wptbLeftScrollPanelCellSetting.classList.remove( 'visible' );\n }\n }\n }\n }\n \n this.tableStateClear = function() {\n delete window.wptbTableStateSaving;\n delete window.wptbTableStateNumberShow;\n \n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n \n wptbSaveBtn.removeAttribute( 'data-wptb-table-state-number-save' );\n }\n \n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n wptbUndo.classList.add( 'wptb-undoredo-disabled' );\n }\n \n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\n }\n }\n}","var WPTB_innerElementSet = function ( element ) {\n \n element.ondragenter = function (e) {\n var div;\n if ( e.dataTransfer.types.indexOf( 'wptbelement' ) == -1 && e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) == -1 ) {\n return;\n }\n WPTB_DropHandle(this, e);\n \n element.classList.add( 'wptb-ondragenter' );\n }\n element.ondragover = function (e) {\n e.preventDefault();\n WPTB_DropHandle(this, e);\n }\n element.ondragleave = function () {\n \n }\n element.ondrop = function(e) {\n this.classList.remove( 'wptb-ondragenter' );\n let element, classId;\n e.preventDefault();\n e.stopPropagation();\n\n if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {\n return;\n }\n let wptbDropHandle,\n wptbDropBorderMarker;\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length > 0 ) {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n }\n if( document.getElementsByClassName( 'wptb-drop-border-marker' ).length > 0 ) {\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n\n if ( e.dataTransfer.getData( 'wptbElement' ) ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData( 'wptbElement' ) );\n element = element.getDOMElement();\n } else {\n classId = e.dataTransfer.getData( 'node' );\n element = document.getElementsByClassName( classId )[0];\n //element.classList.remove( 'wptb-moving-mode' );\n }\n \n if( wptbDropHandle.style.display == 'block' ) {\n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) { \n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n // start item javascript if item is new\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n let elemKind = infArr[1];\n if ( e.dataTransfer.getData( 'wptbElement' ) && ( elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list' ) ) {\n //WPTB_Helper.elementStartScript( element );\n }\n } else {\n return;\n }\n \n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n\n WPTB_innerElementSet( element );\n \n if( ! element.classList.contains( 'wptb-image-container' ) || element.classList.contains( 'wptb-moving-mode' ) ) {\n element.classList.remove( 'wptb-moving-mode' );\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } \n return true;\n }\n element.onmouseover = function(e) {\n element.classList.remove( 'wptb-ondragenter' );\n }\n}","var applyGenericItemSettings = function ( element, kindIndexProt, copy = false ) {\n var node = element.getDOMElement(),\n index,\n copy;\n if( node.classList.contains( 'wptb-ph-element' ) ) {\n if ( kindIndexProt == undefined || copy == true ) {\n //index = document.counter.nextIndex( element.kind );\n let wptbElements = document.getElementsByClassName( 'wptb-ph-element' );\n let elementIndexesArr = [];\n for( let i = 0; i < wptbElements.length; i++ ) {\n var regex = new RegExp( 'wptb-element-' + element.kind + '-(\\\\d+)', \"i\" );\n let infArr = wptbElements[i].className.match( regex );\n if( infArr ) {\n elementIndexesArr.push( infArr[1] );\n }\n }\n if( elementIndexesArr.length > 0 ) {\n let elementIndexMax = Math.max( ...elementIndexesArr );\n index = elementIndexMax + 1;\n } else { \n index = 1;\n }\n\n if( copy ) {\n // change all data-elements which save parameters for different controls\n let wptbNodeattributes = [...node.attributes];\n for( let i = 0; i < wptbNodeattributes.length; i++ ) {\n if( wptbNodeattributes[i] && typeof wptbNodeattributes[i] === 'object' && wptbNodeattributes[i].nodeName ) {\n let regularText = new RegExp( 'data-wptb-el-' + element.kind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n let attr = wptbNodeattributes[i].nodeName.match( regularText );\n if( attr && Array.isArray( attr ) ) {\n let newDataAttributeName = wptbNodeattributes[i].nodeName.replace( element.kind + '-' + attr[1], element.kind + '-' + index );\n let newDataAttributeValue = wptbNodeattributes[i].nodeValue;\n node.removeAttribute( wptbNodeattributes[i].nodeName );\n node.setAttribute( newDataAttributeName, newDataAttributeValue );\n }\n }\n }\n }\n } else if ( kindIndexProt && ! copy ) {\n let kindIndexProtArr = kindIndexProt.split('-');\n index = kindIndexProtArr[kindIndexProtArr.length - 1];\n // start element javascript if element is new\n \n }\n\n let node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\\d+)/i);\n if ( node_wptb_element_kind_num ) {\n node.classList.remove( node_wptb_element_kind_num[0] );\n }\n if ( ! node.classList.contains( 'wptb-ph-element' ) ) {\n node.classList.add( 'wptb-ph-element' );\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\n }\n } else {\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\n }\n }\n new WPTB_ElementOptions( element, index, kindIndexProt );\n WPTB_Helper.elementStartScript( element.getDOMElement() );\n document.counter.increment(element.kind);\n }\n \n node.onmouseenter = function ( event ) {\n if( event.target.classList.contains( 'wptb-moving-mode' ) ) {\n return;\n }\n \n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.addActionField( 1, node );\n \n wptbActionsField.setParameters( node );\n \n node.classList.remove( 'wptb-ondragenter' );\n };\n \n node.onmouseleave = function ( event ) {\n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.leaveFromField( event, node );\n };\n};"]}
1
+ {"version":3,"sources":["WPTB_ActionsField.js","WPTB_Builder.js","WPTB_Cell.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementObject.js","WPTB_ElementOptions.js","WPTB_Helper.js","WPTB_Initializer.js","WPTB_LeftPanel.js","WPTB_MultipleSelect.js","WPTB_Parser.js","WPTB_Polyfills.js","WPTB_Settings.js","WPTB_Stringifier.js","WPTB_Table.js","WPTB_TableStateSaveManager.js","WPTB_innerElementSet.js","applyGenericItemSettings.js"],"names":["WPTB_ActionsField","wptbActions","document","getElementsByClassName","length","addActionField","actionType","thisNode","body","getElementsByTagName","actions","previousNode","activeElem","classList","remove","parentNode","removeChild","btnDelete","btnCopy","createElement","add","appendChild","type","onclick","event","act","target","el","infArr","className","match","hasOwnProperty","kind","thisRow","WPTB_Helper","rowIsTop","table","findAncestor","contains","dataTitleColumnSet","wptbActionsField","actionsRemove","wptbTableStateSaveManager","WPTB_TableStateSaveManager","tableStateSet","copy","activeElement","activeElemParent","Array","isArray","data","elemProt","tinyMceClear","WPTB_ElementObject","insertBefore","getDOMElement","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","actionsHide","ondragend","elementDragEndClear","coordinatesElement","getBoundingClientRect","wptbContainer","correctTop","top","parseFloat","removeEventListener","left","right","clientWidth","addEventListener","leaveFromField","node","relatedTarget","onmouseleave","opacity","WPTB_Builder","table_id","detectMode","http","XMLHttpRequest","urlSet","ajaxurl","open","setRequestHeader","onreadystatechange","d","readyState","status","ans","responseText","getElementById","value","wptbTableSetupEl","WPTB_Parser","WPTB_Table","element","querySelector","dataset","wptbTableContainerMaxWidth","maxWidth","tdDefaultWidth","WPTB_Settings","send","counter","ElementCounters","select","MultipleSelect","initializer","WPTB_Initializer","settings","url","window","location","href","regex","RegExp","results","exec","WPTB_Cell","callback","DOMElement","highlightRow","td","parentRow","columnCount","parseInt","tds","i","classToAdd","ttd","highlightColumn","index","rowCount","tr","padding","jQuery","val","innerBorderWidth","border","ondblclick","stopPropagation","currentTarget","newElementProxy","controlsChange","inputs","highlighted","controlUnicClassCommonPart","addColumnWidth","cellWidth","cellWidthFixedControl","checked","cellWidthFixed","width","getColumnWidth","addRowHeight","cellHeight","cellHeightFixed","height","getRowHeight","controlsInclude","wptbPhElement","wptbElementTypeClass","wptbTypeElementArr","split","wptbInternalActiveElement","j","wptbInternalActiveElementObj","setCoords","y","x","yIndex","xIndex","getCoords","coords","appendElement","getCellDimensions","tdStyleObj","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","offsetWidth","offsetHeight","tableFullStyleObj","tableBorderLeft","tableBorderRight","tableBorderTop","tableBorderBottom","nodeName","toLowerCase","firstChild","lastChild","WPTB_DropHandle","thisElem","e","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","ondragenter","ondragover","preventDefault","ondragleave","ondrop","getData","wptbMovingMode","text","getDOMParentElement","innerElement","innerElementNext","undefined","onscroll","localName","indics","types","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","increment","key","nextIndex","kindIndexProt","wpTemplateId","itemHtml","replace","trim","innerHTML","wptbElementMutch","elementClearFromTinyMce","inElems","querySelectorAll","inElemObj","WPTB_ElementOptions","elementOptionsSet","capture","hexToRgb","hex","result","rgbToHex","rgb","isHex","rgbm","Math","round","toString","toUpperCase","slice","test","icon_directory","hostName","protocol","hostname","img","src","wptbDropHandles","wptbDropBorderMarkers","linkHttpCheckChange","link","convertToAbs","currentLocation","origin","linkArr","linkClean","rows","rowHead","computedStyleRowHead","rowHeadChildren","children","contentsForHeader","tdElements","p","textContent","textAlign","fontSize","color","backgroundColor","thisRowChildren","wptbTitleColumn","wptbTitleColumnFontSize","wptbTitleColumnColor","wptbTitleBackgroundColor","wptbTitleAlign","cls","parentElement","row","parent","getSelectionText","txt","getSelection","selection","createRange","elementOptionsPanelClear","elementOptionsGroup","wpColorPickerCheckChangeForTableStateSaving","originalEvent","wpPickerContainer","irisStripMouseUpStateSaveManager","wpColorPickerClear","attribute","isId","input","newInput","setAttribute","decodeURIComponent","cell","xIndexes","yIndexes","wpColorPickerChange","ui","uiColor","classe","ps","number","affectedEl","ratingStar","span","fill","wptbTextMessageSize","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","ucfirst","str","charAt","eventName","details","CustomEvent","detail","bubbles","dispatchEvent","elementStartScript","WPTB_ElementsScriptsLauncher","deleteEventHandlers","off","elementChildren","replaceAll","string","search","join","mceContentBodys","k","dataMceStyle","removeAttribute","mceEditFocus","contentEditable","spellCheck","mceIds","elementOptionContainerCustomClassSet","targetInput","customClassForContainer","containerElement","elementOptionContainerAdditionalStyles","containerAdditionalStyles","containerStylesArrOne","containerStylesSet","containerStyleStr","containerStyleStrArr","functionHandler","controlConnectFunctionsName","name","elementKind","elementOptionsContainer","elementOptions","controlActiveElement","regularText","controlInfArr","controlUnicClassName","controls","controlName","control","targetControlValue","targetControlValueGet","push","oneControlInclude","wptbContrlStacksConfigId","tmplControlsConfig","container","jsonControlsConfigJson","jsonControlsConfig","controlClassName","innerElementCopyIncludeHandler","appearDependOnControl","dependOn","targetControlElementClass","dependOnControlName","dependOnControlElementClass","dependOnControlElement","targetControlElement","controlContainerElem","showHideDependOnControlElement","dependOnControlElements","controlsStateManager","targetControlClass","controlChangeIndic","targetControls","selectorElement","elementsSettingsTemplatesJs","elementSettings","elementsSettings","stringify","alignmentValue","elementControlsStateCopy","elementProt","copyElem","infArrProt","infArrCopy","elemProtKind","elemCopyKind","elementsSettingsTemplateJs","elementSettingsProt","elementSettingsCopy","Object","keys","forEach","elementSettingValue","elementSettingKeyCopy","elementControlsStateDelete","nameControl","wptbElementDatas","elementContainerClass","elementOptionClassIndic","elementOptionsGroupId","wptbelementOptionClass","wptbelementOptionsContainer","wptbelementOptionsScriptsContainer","cellEditActiveClass","activateSection","childNodes","elementOptionsGroupChildren","controlScriptsArr","controlappearDependOnControl","controlKey","tmplControlTemplate","elemContainer","elementControlTargetUnicClass","controlTemplate","wptbElementOptionContainer","helperJavascriptElem","helperJavascriptCode","innerText","script","managerExternalCssStyles","elementContainer","selector","cssName","cssValue","head","cssForThisElement","cssText","cssTextArrFirst","pop","selectorExists","cssTextArrSecond","cssTextArrThird","cssNameExists","cssTextArrFourth","splice","registerSections","sections","map","sectionElement","s","sectionDataId","displayType","triggerSectionEvent","prototype","call","visibility","setupSectionButtons","sectionButtons","from","vm","sectionName","wptbSectionButton","wptbSectionDisplayType","setupPanelToggleButtons","$","each","find","click","slideToggle","toggleClass","sectionEvent","setupSidebarToggle","toggleSelector","toggleButton","toggle","externalCssStylesDelete","externalCssStylesCopy","copyElement","activeElemClass","cssForActiveElement","cssForNewElement","infArrCopyEl","cssForActiveElementInnerHTML","cssForNewElementInnerHTML","elementsStylesConvertToObject","stylesElements","stylesObj","styleElemId","getAttribute","elementsStylesSetFromObject","jsonObject","styleCss","saveTable","startSaving","previewSaving","wptbTableStateNumberSave","wptbTableStateNumberShow","bar","toggleTableEditMode","wptb_admin_object","t","messagingArea","code","datas","postId","rs","wptbId","paramIdsNecessaryChange","codeClone","columns","WPTB_Stringifier","outerHTML","datas_containers","styleObjJson","messagingAreaText","setTimeout","params","title","content","elements_datas","elements_styles","security_code","preview_saving","id","action","builderPageUrl","history","pushState","wptbPreviewTable","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","clickOnFreeSpace","cellModeBackground","wpcdFixedToolbar","hasAttribute","elementAjax","dataAjaxData","element_name","element_ajax_data","close","leftScrollPanelCurtain","leftScrollPanelCellSettings","deactivateMultipleSelectMode","wptbPreviewTableTds","activateMultipleSelectMode","checkingDimensionValue","dimension","searchIndex","checkSetGetStyleSizeValue","styleName","computedStyleName","elemStyleValue","elementStyles","checkSetGetStyleColorValue","set","elemStyleColorValue","checkSetGetStyleValue","getValueMaxCountSameElementsInArray","arr","check","maxPropName","recalculateIndexes","trs","maxCols","maxColsFull","tdsArr","jMainIter","colSpan","rowSpan","z","tableRowsColorsReinstall","tableIndex","tableHeaderBackground","tableEvenRowBackground","tableOddRowBackground","MIN_COLUMNS","MIN_ROWS","MAX_COLUMNS","MAX_ROWS","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","WPTB_LeftPanel","wptbElementButtons","wptbElement","wptbTablesEditModeCloseButton","addRowToTheEnd","addRowToTheStart","addRowBefore","addRowAfter","addColumnEnd","addColumnStart","addColumnBefore","addColumnAfter","deleteColumn","deleteRow","mergeCells","splitCell","wptbBuilderPanel","wptbHeader","selectedCells","multipleCellMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","first","getLast","maxXIndex","maxYIndex","last","removeAllButFirst","div","columnTitleMobile","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","obj","TypeError","prop","elems","wptbUndo","tableStateGet","wptbUndoredo","wptbUndoRedoContainer","wptbRedo","shortcodePopupWindow","onbeforeunload","wptbSaveDisabled","previewId","floor","random","newHref","URL","searchParams","tableTitleField","onchange","codeMain","tableColumns","minWidth","innerElements","wptbActionsLength","dataMceBogus","columnNameDivContainer","columnNameDiv","array","wptb_preview_table","wptbTableSetup","maxAmountOfCells","maxAmountOfRows","mark","cs","noCells","singleCells","multipleCells","cellSettings","position","column","cellHighlighted","markedCells","controlElemIds","elementControlSizeUnicClass","elementControlSizeFixedUnicClass","sizeName","getSizeFunctionName","size","cellSizeInputs","cellSizeFixedInput","isSquare","realTimeArray","carried","cols","matriz","items","justAssigned","amount","carriedRowspans","cellsBuffer","cellPointer","xPosition","stepsToMove","celda","drawTable","a","undoSelect","fillTableArray","colspansSums","cells","colspanSumInRow","max","apply","getActualPointsInRow","points","skipInCols","reconstraction","insertRow","borderWidth","cleaner","dataXIndex","tableTdsFor","colspan","tableRows","widthIsSet","arrayTdsFromPreviousRow","wptbFixedWidth","tableTdsSumMaxWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","borderLeftWidth","borderRightWidth","tableBorderCommon","wptbTdWidthAuto","wptbCssTdAutoWidth","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","mergingСellsHorizontally","wptbFixedWidthSize","styleElementCreate","tableTdWidthAuto","tableTdsWidthAutoCommon","cssForTdsWidthAutoOld","wptbTableAlignment","float","dataYIndex","rowspan","heightIsSet","arrayTdsPrevious","wptbFixedHeight","mergingCellsVertically","forBreak","currentTable","currentTableTd","currentTdStyle","firstCell","c_pos","cellStyle","pos","pendingInsertion","bro","currentCell","l","r","aux","cellNew","rowChildren","rowChildrenLength","cellRowSpan","rowAfter","cellsColSpan","tableRowsIChildren","tableRIChildrenLength","rowIRowSpan","rNext","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","itemsEstimate","dimensions","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","Number","findRowspannedCells","difference","actualPoints","addLackingCells","sumRows","totalColspan","nextRow","nextRowChildren","nextRowChildrenLength","tdArr","nextRowChildrenK","jRowChildren","onresize","generate","wptbTableStateSaving","wptbNewTableSetup","wptbHighlighted","wptbDirectlyhovered","cssForTdsWidthAutoValue","wptbTableTitle","wptbSetupName","datawptbUndoredo","wptbTableSetupNew","wptbLeftScrollPanelCellSetting","tableStateClear","classId","elemKind","onmouseover","wptbElements","elementIndexesArr","elementIndexMax","wptbNodeattributes","attributes","attr","newDataAttributeName","newDataAttributeValue","nodeValue","kindIndexProtArr","node_wptb_element_kind_num","onmouseenter"],"mappings":"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","file":"admin.js","sourcesContent":["var WPTB_ActionsField = function() {\n //this.wptbBorderMarker;\n this.wptbActions;\n if( document.getElementsByClassName( 'wptb-actions' ).length != 0 ) {\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\n }\n \n this.addActionField = ( actionType, thisNode ) => {\n let body = document.getElementsByTagName( 'body' )[0];\n \n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length != 0 ) {\n let previousNode = actions[0].activeElem;\n if( previousNode ) {\n previousNode.classList.remove( 'wptb-directlyhovered' );\n }\n \n while( actions.length != 0 ) {\n actions[0].parentNode.removeChild( actions[0] );\n }\n }\n \n if( actionType == 1 ) {\n \n let btnDelete, btnCopy;\n\n btnDelete = document.createElement( 'span' ),\n btnCopy = document.createElement( 'span' ),\n actions = document.createElement( 'div' );\n\n actions.classList.add( 'wptb-actions' );\n btnDelete.classList.add( 'dashicons', 'dashicons-trash', 'wptb-delete-action' );\n btnCopy.classList.add( 'dashicons', 'dashicons-admin-page', 'wptb-duplicate-action' );\n \n actions.appendChild( btnCopy );\n actions.appendChild( btnDelete );\n \n body.appendChild( actions );\n\n actions.activeElem = thisNode;\n\n actions.type = 1;\n\n btnDelete.onclick = function( event ) {\n let act = event.target.parentNode.activeElem,\n el = act.parentNode;\n let infArr = act.className.match( /wptb-element-(.+)-(\\d+)/i );\n// if( act && infArr && Array.isArray( infArr ) ) {\n// WPTB_Helper.elementControlsStateDelete( act );\n// WPTB_Helper.externalCssStylesDelete( infArr[0] );\n// }\n \n if( act ) {\n el.removeChild( act );\n }\n\n if( act && typeof act === 'object' && act.hasOwnProperty( 'kind' ) && act.kind == 'text' ) {\n let thisRow = el.parentNode;\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n }\n\n let wptbActionsField = new WPTB_ActionsField();\n wptbActionsField.actionsRemove();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n btnCopy.onclick = ( event ) => {\n let copy,\n infArr,\n type;\n let activeElement = event.target.parentNode.activeElem;\n let activeElemParent = activeElement.parentNode;\n infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n type = infArr[1];\n let data = {};\n data.kind = type;\n data.elemProt = activeElement;\n data.tinyMceClear = true;\n copy = new WPTB_ElementObject( data );\n //WPTB_Helper.elementControlsStateCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.externalCssStylesCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.elementStartScript( copy.getDOMElement() );\n \n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n } else {\n copy = {};\n let elementCopy = activeElement.cloneNode( true );\n elementCopy.classList.remove( 'wptb-directlyhovered' );\n \n copy.getDOMElement = function() {\n return elementCopy;\n }\n \n applyGenericItemSettings( copy );\n \n activeElemParent.insertBefore( copy.getDOMElement(), activeElement.nextSibling );\n \n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-inner-element:copy', activeElement, copy.getDOMElement() );\n }\n \n WPTB_innerElementSet( copy.getDOMElement() );\n\n let wptbActionsField = new WPTB_ActionsField( 1, activeElement );\n wptbActionsField.setParameters( activeElement );\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n \n \n if( thisNode.classList.contains( 'wptb-ph-element' ) ) {\n let btnMove;\n btnMove = document.createElement( 'span' );\n btnMove.classList.add( \"dashicons\", \"dashicons-move\", 'wptb-move-action' );\n btnMove.draggable = true;\n actions.appendChild( btnMove );\n \n btnMove.ondragstart = ( event ) => {\n let wptbElementIconsDirectories = 'wptb-element-icons-directories';\n let tmplIconsDirectories = wp.template( wptbElementIconsDirectories );\n let data = {};\n let jsonIconsDirectories = tmplIconsDirectories( data );\n let IconsDirectories = JSON.parse( jsonIconsDirectories );\n\n let dragImages,\n actions = event.target.parentNode,\n activeElem = actions.activeElem,\n infArr,\n type;\n infArr = activeElem.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n type = infArr[1];\n activeElem.classList.add( 'wptb-moving-mode' );\n\n if( IconsDirectories && typeof IconsDirectories === 'object' && IconsDirectories[type] ) {\n dragImages = WPTB_Helper.getElementIcon( IconsDirectories[type] );\n }\n\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setDragImage( dragImages, 0, 0 );\n event.dataTransfer.setData( 'node', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\n event.dataTransfer.setData( 'wptb-moving-mode', 'wptb-element-' + infArr[1] + '-' + infArr[2] );\n event.dataTransfer.setData( 'wptbElIndic-' + infArr[1], 'wptbElIndic-' + infArr[1] );\n let act = event.target.parentNode.activeElem;\n if( act.kind == 'text' ) {\n let thisRow = act.parentNode.parentNode;\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n }\n } else {\n this.style.display = 'none';\n }\n\n this.actionsHide();\n };\n\n btnMove.ondragend = ( event ) => {\n WPTB_Helper.elementDragEndClear();\n }\n }\n\n actions.style.display = 'flex';\n\n this.wptbActions = actions;\n } \n }\n \n this.setParameters = ( thisNode ) => {\n \n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n } else {\n this.wptbActions = false;\n }\n }\n \n if( this.wptbActions && this.wptbActions.classList.contains( 'wptb-actions' ) ) {\n this.wptbActions.style.display = 'flex';\n } else {\n return;\n }\n \n let coordinatesElement = thisNode.getBoundingClientRect();\n \n let wptbContainer = document.getElementsByClassName( 'wptb-container' )[0];\n let correctTop = () => {\n let coordinatesElement = thisNode.getBoundingClientRect();\n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\n }\n wptbContainer.removeEventListener( 'scroll', correctTop, false );\n \n this.wptbActions.style.top = parseFloat( coordinatesElement.top ) - 15 + 'px';\n this.wptbActions.style.left = ( parseFloat( coordinatesElement.right ) - parseFloat( this.wptbActions.clientWidth ) ) + 1 + 'px';\n \n this.wptbActions.style.display = 'flex';\n thisNode.classList.add( 'wptb-directlyhovered' );\n \n wptbContainer.addEventListener( 'scroll', correctTop, false );\n }\n \n this.leaveFromField = ( event, node, actionType ) => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n } else {\n this.wptbActions = false;\n }\n }\n \n if( ! this.wptbActions ) {\n return;\n }\n \n if( event.relatedTarget ) {\n if ( event.relatedTarget.classList.contains( 'wptb-actions' ) ||\n event.relatedTarget.classList.contains( 'wptb-move-action' ) ||\n event.relatedTarget.classList.contains( 'wptb-duplicate-action' ) ||\n event.relatedTarget.classList.contains( 'wptb-delete-action' ) ) {\n if( ! this.wptbActions ) {\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\n }\n this.wptbActions.onmouseleave = ( event ) => {\n if( event.relatedTarget != null && ( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || \n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element') ) && event.relatedTarget != this.wptbActions.activeElem &&\n WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-directlyhovered' ) != this.wptbActions.activeElem ) {\n \n// this.wptbActions.style.display = 'none';\n// event.relatedTarget.parentNode.parentNode.classList.remove( 'wptb-directlyhovered' );\n//\n// let wptbActionsField = new WPTB_ActionsField();\n//\n// wptbActionsField.addActionField( 1, event.relatedTarget.parentNode.parentNode );\n//\n// wptbActionsField.setParameters( event.relatedTarget.parentNode.parentNode );\n } else {\n \n }\n \n let wptbActionsField = new WPTB_ActionsField();\n\n wptbActionsField.leaveFromField( event, event.relatedTarget.parentNode.parentNode );\n \n event.target.activeElem.classList.remove( 'wptb-directlyhovered' );\n }\n\n return;\n } \n }\n \n node.classList.remove( 'wptb-directlyhovered' );\n this.wptbActions.style.display = 'none';\n \n if( event.relatedTarget ) {\n if( event.relatedTarget.classList.contains( 'wptb-ph-element' ) || WPTB_Helper.findAncestor( event.relatedTarget, 'wptb-ph-element' ) ) {\n this.addActionField( 1, event.relatedTarget.parentNode );\n\n this.setParameters( event.relatedTarget.parentNode );\n }\n }\n }\n \n this.actionsRemove = () => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n }\n }\n \n if( this.wptbActions ) {\n this.wptbActions.parentNode.removeChild( this.wptbActions );\n }\n }\n \n this.actionsHide = () => {\n if( ! this.wptbActions ) {\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length > 0 ) {\n this.wptbActions = actions[0];\n }\n }\n \n if( this.wptbActions ) {\n this.wptbActions.style.opacity = 0;\n }\n }\n}","(function () {\n var WPTB_Builder = function () {\n var table_id = WPTB_Helper.detectMode();\n if ( table_id ) {\n var http = new XMLHttpRequest(),\n urlSet = ajaxurl + \"?action=get_table\" + '&id=' + table_id;\n http.open('GET', urlSet, true);\n http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n http.onreadystatechange = function (d) {\n if (this.readyState == 4 && this.status == 200) {\n var ans = JSON.parse( http.responseText );\n document.getElementById('wptb-setup-name').value = ans[0];\n \n if( ans[1] ) {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n let wptbTableSetupEl = document.getElementsByClassName('wptb-table-setup')[0];\n wptbTableSetupEl.appendChild( WPTB_Parser( ans[1] ) );\n \n let body = document.getElementsByTagName('body')[0];\n \n WPTB_Table();\n let element = document.querySelector( '.wptb-preview-table' );\n if( element ) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n if( ! infArr ) {\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\n }\n \n if( element.dataset.wptbTableContainerMaxWidth ) {\n wptbTableSetupEl.style.maxWidth = element.dataset.wptbTableContainerMaxWidth + 'px';\n \n element.tdDefaultWidth();\n }\n }\n \n //WPTB_LeftPanel();\n WPTB_Settings();\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n }\n \n return;\n }\n };\n http.send(null);\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n document.counter = new ElementCounters();\n document.select = new MultipleSelect();\n\n var initializer = WPTB_Initializer();\n settings = WPTB_Settings();\n };\n\n let url = window.location.href,\n regex = new RegExp('[?&]page=wptb-builder'),\n results = regex.exec( url );\n if ( results ) {\n document.addEventListener('DOMContentLoaded', WPTB_Builder);\n }\n})();","var WPTB_Cell = function ( callback, DOMElement ) {\n\n function highlightRow(td) {\n var parentRow = td.parentNode,\n columnCount = parseInt(document.getElementById('wptb-columns-number').value),\n tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\n for (var i = 0; i < tds.length; i++) {\n tds[i].classList.remove('wptb-highlighted-row-first', 'wptb-highlighted-row-last', 'wptb-highlighted-row-inner', 'wptb-highlighted-column-first', 'wptb-highlighted-column-last', 'wptb-highlighted-column-inner');\n }\n for (var i = 0; i < columnCount; i++) {\n\n var classToAdd = i == 0 ? 'wptb-highlighted-row-first' : i == columnCount - 1 ? 'wptb-highlighted-row-last' : 'wptb-highlighted-row-inner';\n var ttd = parentRow.getElementsByTagName('td')[i];\n if (ttd !== td) {\n ttd.classList.add(classToAdd);\n }\n }\n }\n\n function highlightColumn(td) {\n\n var index,\n parentRow = td.parentNode;\n columnCount = parseInt(document.getElementById('wptb-columns-number').value), rowCount = parseInt(document.getElementById('wptb-rows-number').value), table = document.getElementsByClassName('wptb-preview-table')[0];\n for (var i = 0; i < columnCount; i++) {\n if (parentRow.getElementsByTagName('td')[i] === td) {\n index = i;\n break;\n }\n }\n\n for (var i = 0; i < rowCount; i++) {\n var classToAdd = i == 0 ? 'wptb-highlighted-column-first' : i == rowCount - 1 ? 'wptb-highlighted-column-last' : 'wptb-highlighted-column-inner';\n var tr = table.getElementsByTagName('tr')[i];\n if (tr.getElementsByTagName('td')[index] !== td) {\n tr.getElementsByTagName('td')[index].classList.add(classToAdd);\n }\n }\n }\n \n if( ! DOMElement ) {\n DOMElement = document.createElement(\"td\");\n\n DOMElement.style.padding = jQuery('#wptb-table-padding-number').val() + 'px';\n\n var innerBorderWidth = jQuery('#wptb-table-inner-border-number').val();\n\n if (innerBorderWidth != '' && parseInt(innerBorderWidth) != 0) {\n DOMElement.style.border = innerBorderWidth + 'px solid ' + jQuery('#wptb-table-border-color').val();\n } \n\n DOMElement.classList.add('wptb-droppable', 'wptb-cell');\n }\n\n DOMElement.draggable = false;\n if ( callback ) {\n DOMElement.onclick = callback;\n }\n \n // Cell double click handler\n DOMElement.ondblclick = function( event ) {\n event.stopPropagation();\n if( ! WPTB_Helper.findAncestor( DOMElement, 'wptb-preview-table-manage-cells' ) && event.target == event.currentTarget ) {\n \n WPTB_Helper.wptbDocumentEventGenerate( 'table:cell:dblclick', event.target );\n \n let element = WPTB_Helper.newElementProxy( 'text' );\n element = element.getDOMElement();\n \n DOMElement.appendChild( element );\n \n WPTB_innerElementSet( element );\n }\n }\n \n WPTB_innerElementSet( DOMElement );\n\n function controlsChange( inputs, DOMElement ) {\n if( inputs && typeof inputs === 'object' ) {\n let table = WPTB_Helper.findAncestor( DOMElement, 'wptb-preview-table' ),\n highlighted = table.querySelector( '.wptb-highlighted' );\n if( highlighted ) {\n let infArr = highlighted.className.match(/wptb-element-((.+-)\\d+)/i);\n\n let controlUnicClassCommonPart = '';\n if(infArr && Array.isArray(infArr)) {\n controlUnicClassCommonPart = infArr[1]\n }\n\n if( inputs.hasOwnProperty( 'cellWidth' ) ) {\n table.addColumnWidth( inputs.cellWidth );\n\n if( controlUnicClassCommonPart ) {\n let cellWidthFixedControl = document.querySelector(`.wptb-el-${controlUnicClassCommonPart}-cellWidthFixed`);\n\n if(cellWidthFixedControl && !cellWidthFixedControl.checked) cellWidthFixedControl.checked = true;\n }\n } else if( inputs.hasOwnProperty( 'cellWidthFixed' ) ) {\n if( inputs.cellWidthFixed == 'checked' ) {\n let width = WPTB_Helper.getColumnWidth( table, highlighted );\n table.addColumnWidth( width );\n } else {\n table.addColumnWidth( false, true );\n }\n } else if( inputs.hasOwnProperty( 'cellHeight' ) ) {\n table.addRowHeight( inputs.cellHeight );\n\n if( controlUnicClassCommonPart ) {\n let cellWidthFixedControl = document.querySelector(`.wptb-el-${controlUnicClassCommonPart}-cellHeightFixed`);\n\n if(cellWidthFixedControl && !cellWidthFixedControl.checked) cellWidthFixedControl.checked = true;\n }\n } else if( inputs.hasOwnProperty( 'cellHeightFixed' ) ) {\n if( inputs.cellHeightFixed == 'checked' ) {\n let height = WPTB_Helper.getRowHeight( table, highlighted );\n table.addRowHeight( height );\n } else {\n table.addRowHeight( false, true );\n }\n }\n }\n }\n }\n WPTB_Helper.controlsInclude( DOMElement, controlsChange );\n \n let wptbPhElement = DOMElement.getElementsByClassName( 'wptb-ph-element' );\n \n if ( wptbPhElement.length > 0 ) {\n for( let i = 0; i < wptbPhElement.length; i++ ) {\n wptbPhElement[i].getDOMElement = function() {\n return wptbPhElement[i];\n }\n \n WPTB_innerElementSet( wptbPhElement[i] );\n \n let wptbElementTypeClass = wptbPhElement[i].className.match( /wptb-element-((.+-)\\d+)/i );\n if( wptbElementTypeClass && Array.isArray( wptbElementTypeClass ) ) {\n let wptbTypeElementArr = wptbElementTypeClass[1].split( '-' );\n wptbPhElement[i].kind = wptbTypeElementArr[0];\n applyGenericItemSettings( wptbPhElement[i], wptbElementTypeClass[1] );\n let wptbInternalActiveElement = wptbPhElement[i].getElementsByClassName( 'wptb-in-element' );\n if ( wptbInternalActiveElement.length > 0 ) {\n for ( let j = 0; j < wptbInternalActiveElement.length; j++ ) {\n let wptbInternalActiveElementObj = {};\n wptbInternalActiveElementObj.getDOMElement = function() {\n return wptbInternalActiveElement[j];\n }\n \n applyGenericItemSettings( wptbInternalActiveElementObj );\n }\n }\n }\n }\n }\n\n this.getDOMElement = function () {\n return DOMElement;\n };\n\n this.setCoords = function (y, x) {\n var el = this.getDOMElement();\n el.dataset.yIndex = y;\n el.dataset.xIndex = x;\n };\n\n this.getCoords = function () {\n var coords,\n el = this.getDOMElement();\n coords.x = el.dataset.xIndex;\n coords.y = el.dataset.yIndex;\n return coords;\n };\n\n this.appendElement = function (node) {\n getDOMElement().appendChild(node);\n };\n \n DOMElement.getCellDimensions = function() {\n \n let tdStyleObj = window.getComputedStyle( this, null );\n \n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n \n let tdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n \n let tdPaddingTop = tdStyleObj.getPropertyValue( 'padding-top' );\n let tdPaddingBottom = tdStyleObj.getPropertyValue( 'padding-bottom' );\n \n let tdBorderTopWidth = tdStyleObj.getPropertyValue( 'border-top-width' );\n let tdBorderBottomWidth = tdStyleObj.getPropertyValue( 'border-bottom-width' );\n \n let width = parseInt( this.offsetWidth, 10 ) - \n parseInt( tdPaddingLeft, 10 ) - \n parseInt( tdPaddingRight, 10 ) -\n ( parseInt( tdBorderLeftWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderRightWidth, 10 ) / 2 );\n \n let height = parseInt( this.offsetHeight, 10 ) - \n parseInt( tdPaddingTop, 10 ) - \n parseInt( tdPaddingBottom, 10 ) -\n ( parseInt( tdBorderTopWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderBottomWidth, 10 ) / 2 ); \n \n \n let table = WPTB_Helper.findAncestor( this, 'wptb-preview-table' );\n if( table ) {\n let tableFullStyleObj = window.getComputedStyle( table, null );\n let tableBorderLeft = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let tableBorderRight = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderTop = tableFullStyleObj.getPropertyValue( 'border-top-width' );\n let tableBorderBottom = tableFullStyleObj.getPropertyValue( 'border-bottom-width' );\n \n let tr = this.parentNode;\n if( tr && tr.nodeName.toLowerCase() === 'tr' ) {\n if( tr.firstChild && tr.firstChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderLeft, 10 ) > parseInt( tdBorderLeftWidth, 10 ) ) {\n width += -( parseInt( tableBorderLeft, 10 ) - parseInt( tdBorderLeftWidth, 10 ) ) / 2;\n }\n }\n\n if( tr.lastChild && tr.lastChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderRight, 10 ) > parseInt( tdBorderRightWidth, 10 ) ) {\n width += -( parseInt( tableBorderRight, 10 ) - parseInt( tdBorderRightWidth, 10 ) ) / 2;\n }\n }\n \n let body = tr.parentNode;\n if( body && body.nodeName.toLowerCase() === 'body' ) {\n if( body.firstChild && body.firstChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderTop, 10 ) > parseInt( tdBorderTopWidth, 10 ) ) {\n height += ( parseInt( tableBorderTop, 10 ) - parseInt( tdBorderTopWidth, 10 ) ) / 2;\n }\n }\n \n if( body.lastChild && body.lastChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderBottom, 10 ) > parseInt( tdBorderBottomWidth, 10 ) ) {\n height += ( parseInt( tableBorderBottom, 10 ) - parseInt( tdBorderBottomWidth, 10 ) ) / 2;\n }\n }\n }\n }\n }\n \n return {\n width: parseInt( width ), \n height: parseInt( height )\n };\n }\n\n return this;\n};","var WPTB_DropHandle = function (thisElem, e) {\n \n let wptbDropHandle,\n wptbDropBorderMarker,\n wptbDropBorderMarkerTop,\n wptbDropBorderMarkerRight,\n wptbDropBorderMarkerBottom,\n wptbDropBorderMarkerLeft;\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length == 0 ) {\n wptbDropHandle = document.createElement( 'div' );\n wptbDropHandle.classList.add( 'wptb-drop-handle' );\n \n wptbDropBorderMarker = document.createElement( 'div' );\n wptbDropBorderMarker.classList.add( 'wptb-drop-border-marker' );\n \n wptbDropBorderMarkerTop = document.createElement( 'div' ),\n wptbDropBorderMarkerRight = document.createElement( 'div' ),\n wptbDropBorderMarkerBottom = document.createElement( 'div' ),\n wptbDropBorderMarkerLeft = document.createElement( 'div' );\n \n wptbDropBorderMarkerTop.classList.add( 'wptb-drop-border-marker-top' );\n wptbDropBorderMarkerRight.classList.add( 'wptb-drop-border-marker-right' );\n wptbDropBorderMarkerBottom.classList.add( 'wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerLeft.classList.add( 'wptb-drop-border-marker-left' );\n \n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerTop );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerRight );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerBottom );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerLeft );\n \n let body = document.getElementsByTagName( 'body' );\n if ( body.length > 0 ) {\n body[0].appendChild( wptbDropHandle );\n body[0].appendChild( wptbDropBorderMarker );\n }\n \n wptbDropHandle.ondragenter = function () {\n\n }\n\n wptbDropHandle.ondragover = function (e) {\n e.preventDefault();\n }\n\n wptbDropHandle.ondragleave = function () {\n\n }\n wptbDropHandle.ondrop = function (e) {\n e.preventDefault();\n let element;\n \n if ( e.dataTransfer.getData('wptbElement') ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData('wptbElement') );\n element = element.getDOMElement();\n } else {\n element = document.getElementsByClassName( e.dataTransfer.getData('node') )[0];\n element.classList.remove( 'wptb-moving-mode' );\n element.classList.remove( 'wptb-moving-into-same-elem' );\n element.wptbMovingMode = 1;\n }\n \n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n thisElem = wptbDropHandle.getDOMParentElement();\n if ( thisElem.nodeName.toLowerCase() == 'td' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n }\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n \n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n \n WPTB_innerElementSet( element );\n if( ! element.classList.contains( 'wptb-image-container' ) || element.wptbMovingMode == 1 ) {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n element.wptbMovingMode == undefined;\n }\n }\n let wptbContainer = document.querySelector( '.wptb-container' );\n wptbContainer.onscroll = function() {\n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n }\n } else {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \n thisElem.getElementsByClassName( 'wptb-ph-element' ).length != 0 ) {\n return;\n }\n \n let thisRow;\n if ( thisElem.localName == 'td' ) {\n thisRow = thisElem.parentNode;\n } else if ( thisElem.localName == 'div' && thisElem.classList.contains( 'wptb-ph-element' ) ) {\n thisRow = thisElem.parentNode.parentNode;\n }\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n let indics = e.dataTransfer.types;\n let notDragEnter = false;\n for ( let i = 0; i < indics.length; i++ ) {\n let infArr = indics[i].match( /wptbelindic-([a-z]+)/i );\n if ( infArr && infArr[1] != 'text' ) {\n notDragEnter = true;\n break;\n }\n }\n if( notDragEnter ) {\n return;\n }\n }\n }\n \n wptbDropHandle.style.width = thisElem.offsetWidth + 'px';\n let height = thisElem.offsetHeight,\n coordinatesElement = thisElem.getBoundingClientRect(),\n left = parseFloat( coordinatesElement.left ),\n top;\n wptbDropHandle.style.left = left + 'px';\n \n if( e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) != -1 ) {\n let elementDrag = document.getElementsByClassName( 'wptb-moving-mode' )[0];\n if( thisElem == elementDrag ) {\n wptbDropHandle.classList.add('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.add('wptb-moving-into-same-elem');\n } else {\n wptbDropHandle.classList.remove('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.remove('wptb-moving-into-same-elem');\n }\n }\n \n wptbDropHandle.getDOMParentElement = function() {\n return thisElem;\n }\n \n wptbDropHandle.style.display = 'block';\n wptbDropBorderMarker.style.display = 'block';\n if( thisElem.nodeName.toLowerCase() != 'td' ) {\n let y = e.offsetY==undefined?e.layerY:e.offsetY;\n top = parseFloat( coordinatesElement.top ) - parseFloat( 11 );\n wptbDropHandle.dataset.text = 'Above Element';\n if ( y > height/2 ) {\n top = parseFloat( coordinatesElement.top ) + height - 1;\n wptbDropHandle.dataset.text = 'Below Element';\n }\n } else {\n wptbDropHandle.dataset.text = 'Drop Here';\n top = parseFloat( coordinatesElement.top ) + height/2 - 5;\n }\n wptbDropHandle.style.top = top + 'px';\n\n wptbDropBorderMarker.style.top = coordinatesElement.top + 'px';\n wptbDropBorderMarker.style.left = coordinatesElement.left + 'px';\n\n wptbDropBorderMarkerTop = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-top' );\n wptbDropBorderMarkerTop.style.width = ( parseFloat( thisElem.offsetWidth ) - parseFloat( 1 ) ) + 'px';\n\n wptbDropBorderMarkerRight = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-right' );\n wptbDropBorderMarkerRight.style.height = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) - 1 ) + 'px';\n wptbDropBorderMarkerRight.style.left = wptbDropBorderMarkerTop.style.width;\n\n wptbDropBorderMarkerBottom = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerBottom.style.width = wptbDropBorderMarkerTop.style.width;\n wptbDropBorderMarkerBottom.style.top = wptbDropBorderMarkerRight.style.height;\n\n wptbDropBorderMarkerLeft = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-left' );\n wptbDropBorderMarkerLeft.style.height = wptbDropBorderMarkerRight.style.height;\n}","var ElementCounters = function () {\n\n\tvar priv = [];\n\tpriv['text'] = 0;\n\tpriv['image'] = 0;\n\tpriv['list'] = 0;\n\tpriv['button'] = 0;\n\n\tthis.increment = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn;\n\t\t}\n\t\tpriv[key]++;\n\t}\n\n\tthis.nextIndex = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn priv[key] + 1;\n\t}\n\n\treturn this;\n\n};","var WPTB_ElementObject = function ( data ) {\n let DOMElement, kindIndexProt, copy;\n if( ! data.elemProt ) {\n DOMElement = document.createElement('div'),\n kindIndexProt = undefined,\n copy = false;\n DOMElement.classList.add( 'wptb-' + data.kind + '-container', 'wptb-ph-element' );\n \n let wpTemplateId = 'wptb-' + data.kind + '-content';\n let template = wp.template( wpTemplateId );\n data.node = DOMElement;\n let itemHtml = template( data );\n\n itemHtml = itemHtml.replace(/\\r|\\n|\\t/g, '').trim();\n DOMElement.innerHTML = itemHtml;\n } else {\n DOMElement = data.elemProt.cloneNode( true );\n DOMElement.classList.remove( 'wptb-directlyhovered' );\n let wptbElementMutch = data.elemProt.className.match( /wptb-element-((.+-)\\d+)/i );\n if ( wptbElementMutch && Array.isArray( wptbElementMutch ) ) {\n kindIndexProt = wptbElementMutch[1];\n };\n copy = true;\n \n if( data.tinyMceClear ) {\n DOMElement = WPTB_Helper.elementClearFromTinyMce( DOMElement );\n }\n }\n \n let inElems = DOMElement.querySelectorAll( '.wptb-in-element' );\n if( inElems.length > 0 ) {\n for ( let i = 0; i < inElems.length; i++ ) {\n let inElemObj = {};\n inElemObj.getDOMElement = function() {\n return inElems[i];\n }\n \n applyGenericItemSettings( inElemObj );\n }\n }\n \n window.addEventListener( 'item:onmouseenter', function( event ) {\n //console.log( event );\n }, false);\n \n \n this.kind = data.kind;\n this.getDOMElement = function () {\n return DOMElement;\n };\n \n applyGenericItemSettings( this, kindIndexProt, copy );\n return this;\n}\n\n\n","var WPTB_ElementOptions = function ( element, index, kindIndexProt ) {\n\n var node = element.getDOMElement();\n node.addEventListener( 'click', function() {\n WPTB_Helper.elementOptionsSet( element.kind, this );\n }, {capture: true} );\n};","var WPTB_Helper = {\n hexToRgb: function( hex ) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec( hex );\n return result ? 'rgb(' + parseInt( result[1], 16 ) + ',' + parseInt( result[2], 16 ) + ',' + parseInt( result[3], 16 ) + ')' : null;\n },\n rgbToHex: function ( rgb ) {\n if( rgb ) {\n if( WPTB_Helper.isHex( rgb ) ) return rgb;\n\n let rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?((?:[0-9]*[.])?[0-9]+)[\\s+]?\\)/i);\n if ( rgbm && rgbm.length === 5) {\n return \"#\" +\n ('0' + Math.round(parseFloat(rgbm[4], 10) * 255).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\n } else {\n rgbm = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgbm && rgbm.length === 4) {\n return \"#\" +\n (\"0\" + parseInt(rgbm[1], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[2], 10).toString(16).toUpperCase()).slice(-2) +\n (\"0\" + parseInt(rgbm[3], 10).toString(16).toUpperCase()).slice(-2);\n } else {\n return '';\n }\n }\n } else {\n return '';\n }\n\n },\n isHex: function( hex ) {\n let regex = new RegExp('^#(?:[A-Fa-f0-9]{3}){1,2}$');\n return regex.test( hex );\n },\n getElementIcon: function ( icon_directory ) {\n let hostName = location.protocol + '//' + location.hostname;\n let img = document.createElement( 'img' );\n img.src = icon_directory;\n return img;\n },\n elementDragEndClear: function() {\n let wptbMovingMode = document.getElementsByClassName( 'wptb-moving-mode' );\n if ( wptbMovingMode.length > 0 ) {\n for( let i = 0; i < wptbMovingMode.length; i++ ) {\n wptbMovingMode[i].classList.remove( 'wptb-moving-mode' );\n }\n }\n\n let wptbDropHandles = document.getElementsByClassName( 'wptb-drop-handle' );\n if ( wptbDropHandles.length > 0 ) {\n for( let i = 0; i < wptbDropHandles.length; i++ ) {\n wptbDropHandles[i].style.display = 'none';\n }\n }\n\n let wptbDropBorderMarkers = document.getElementsByClassName( 'wptb-drop-border-marker' );\n if ( wptbDropBorderMarkers.length > 0 ) {\n for( let i = 0; i < wptbDropBorderMarkers.length; i++ ) {\n wptbDropBorderMarkers[i].style.display = 'none';\n }\n }\n },\n linkHttpCheckChange: function( link, convertToAbs = false ) {\n if ( link ) {\n // even though it is not a best practice and a huge security risk, sometimes our users use javascript tag at href attributes, this check will make sure those tags will not be modified and returned as they are\n if(link.match(/^(javascript:)(.+)$/)){\n return link;\n }\n // relative link checking\n // if link starts with '/', assume it is a relative link to the origin of the current site\n else if( link.match(/^\\/([\\S]+)$/) ){\n if (convertToAbs) {\n const currentLocation = document.location;\n let {origin} = currentLocation;\n\n\n // strip out the '/' at the end of the origin name if there is any\n if (origin.match(/^(.+)\\/$/)) {\n origin = origin.slice(-1);\n }\n\n return `${origin}${link}`;\n }else{\n return link;\n }\n }\n else if ( link.indexOf( 'http://' ) == -1 && link.indexOf( 'https://' ) == -1 ) {\n let linkArr = link.split( '/' ),\n linkClean;\n if ( Array.isArray( linkArr ) && linkArr.length > 0 ) {\n linkClean = linkArr[linkArr.length - 1];\n }\n return document.location.protocol + '//' + linkClean;\n } else { \n return link;\n }\n } else {\n return '';\n }\n },\n dataTitleColumnSet: function( table ) {\n let rows = table.rows,\n rowHead = rows[0];\n let computedStyleRowHead = getComputedStyle( rowHead );\n \n let rowHeadChildren = rowHead.children;\n let contentsForHeader = {};\n for( let i = 0; i < rowHeadChildren.length; i++ ) {\n let tdElements = rowHeadChildren[i].children;\n \n for( let j = 0; j < tdElements.length; j++ ) {\n let element = tdElements[j];\n if( element.classList.contains( 'wptb-ph-element' ) ) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr[1] == 'text' ) {\n let p = element.querySelector( 'p' ),\n textContent = p.textContent,\n textAlign = p.style.textAlign;\n contentsForHeader[rowHeadChildren[i].dataset.xIndex] = [textContent, element.style.fontSize, \n element.style.color, computedStyleRowHead.backgroundColor, textAlign];\n break;\n }\n }\n }\n if( ! contentsForHeader[rowHeadChildren[i].dataset.xIndex] ) {\n contentsForHeader[rowHeadChildren[i].dataset.xIndex] = ['', '', \n '', computedStyleRowHead.backgroundColor, ''];\n }\n }\n for ( let i = 1; i < rows.length; i++ ) {\n let thisRow = rows[i],\n thisRowChildren = thisRow.children;\n for( let j = 0; j < thisRowChildren.length; j++ ) {\n if ( contentsForHeader[thisRowChildren[j].dataset.xIndex] ) {\n thisRowChildren[j].dataset.wptbTitleColumn = contentsForHeader[thisRowChildren[j].dataset.xIndex][0];\n thisRowChildren[j].dataset.wptbTitleColumnFontSize = contentsForHeader[thisRowChildren[j].dataset.xIndex][1];\n thisRowChildren[j].dataset.wptbTitleColumnColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][2];\n thisRowChildren[j].dataset.wptbTitleBackgroundColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][3];\n thisRowChildren[j].dataset.wptbTitleAlign = contentsForHeader[thisRowChildren[j].dataset.xIndex][4];\n } else {\n thisRowChildren[j].dataset.wptbTitleColumn = '';\n thisRowChildren[j].dataset.wptbTitleColumnFontSize = '';\n thisRowChildren[j].dataset.wptbTitleColumnColor = '';\n thisRowChildren[j].dataset.wptbTitleBackgroundColor = '';\n thisRowChildren[j].dataset.wptbTitleAlign = '';\n }\n }\n }\n },\n findAncestor: function( el, cls ) {\n while ( ( el = el.parentElement ) && !el.classList.contains( cls ) );\n return el;\n },\n rowIsTop: function( row ) {\n var parent = row.parentNode;\n if( parent.children[0] == row ) {\n return true;\n } else {\n return false;\n }\n },\n getSelectionText: function() {\n var txt = '';\n if (txt = window.getSelection) {\n txt = window.getSelection().toString();\n } else {\n txt = document.selection.createRange().text;\n }\n return txt;\n },\n elementOptionsPanelClear: function() {\n let elementOptionsGroup = document.getElementById( 'element-options-group' );\n if( elementOptionsGroup ) {\n elementOptionsGroup.innerHTML = '';\n }\n },\n wpColorPickerCheckChangeForTableStateSaving: function( event ) {\n if( event.originalEvent.type == 'external' ) {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } else {\n let wpPickerContainer = WPTB_Helper.findAncestor( event.target, 'wp-picker-container' );\n if( wpPickerContainer ) {\n if( event.originalEvent.type == 'square' || event.originalEvent.type == 'strip' ) {\n let body = document.getElementsByTagName( 'body' )[0];\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n body.addEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n }\n }\n }\n },\n irisStripMouseUpStateSaveManager: function() {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n \n let body = document.getElementsByTagName( 'body' )[0];\n body.removeEventListener( 'mouseup', WPTB_Helper.irisStripMouseUpStateSaveManager, false );\n },\n wpColorPickerClear: function( attribute, isId ) {\n let input;\n if( isId ) {\n input = [document.getElementById( attribute )];\n input.length = 1;\n } else {\n input = document.getElementsByClassName( attribute );\n }\n for( let i = 0; i < input.length; i++ ) {\n let wpPickerContainer = WPTB_Helper.findAncestor( input[i], 'wp-picker-container' );\n if( wpPickerContainer ) {\n let parent = wpPickerContainer.parentNode;\n parent.removeChild( wpPickerContainer );\n let newInput = document.createElement( 'input' );\n if( isId ) {\n newInput.setAttribute( 'id', attribute );\n } else {\n newInput.classList.add( 'wptb-element-property', attribute );\n }\n newInput.value = \"\";\n parent.appendChild( newInput );\n }\n }\n },\n detectMode: function() {\n var url = window.location.href,\n regex = new RegExp('[?&]table(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if ( ! results ) return false;\n if ( ! results[2] ) return '';\n return decodeURIComponent( results[2].replace(/\\+/g, ' ') );\n },\n getColumnWidth: function( table, cell ) {\n let xIndex = cell.dataset.xIndex;\n let xIndexes = table.querySelectorAll( '[data-x-index=\"' + xIndex + '\"]' );\n let cellWidth = cell.getCellDimensions().width;\n for( let i = 0; i < xIndexes.length; i++ ) {\n if( cellWidth > xIndexes[i].getCellDimensions().width ) {\n cellWidth = xIndexes[i].getCellDimensions().width;\n }\n }\n return cellWidth;\n },\n getRowHeight: function( table, cell ) {\n let yIndex = cell.dataset.yIndex;\n let yIndexes = table.querySelectorAll( '[data-y-index=\"' + yIndex + '\"]' );\n let cellHeight = cell.getCellDimensions().height;\n for( let i = 0; i < yIndexes.length; i++ ) {\n if( cellHeight > yIndexes[i].getCellDimensions().height ) {\n cellHeight = yIndexes[i].getCellDimensions().height;\n }\n }\n return cellHeight;\n },\n newElementProxy: function( el ) {\n if( el ) {\n let data = {kind: el};\n return new WPTB_ElementObject( data );\n }\n },\n wpColorPickerChange: function( event, ui ) {\n let uiColor;\n if( ui ) {\n uiColor = ui.color.toString();\n } else {\n uiColor = '';\n }\n \n let parent = WPTB_Helper.findAncestor( event.target, 'wp-picker-input-wrap' ).getElementsByClassName( 'wptb-color-picker' )[0], classe, type, ps, number;\n classe = parent.dataset.element.match(/wptb-options-(.+)-(\\d+)/i);\n type = classe[1];\n number = classe[2];\n let affectedEl = document.getElementsByClassName( 'wptb-element-' + type + '-' + number )[0];\n if ( type == 'button' ) {\n if ( parent.dataset.type == 'button-text-color' ) {\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.color = uiColor;\n } else {\n affectedEl.getElementsByClassName( 'wptb-button' )[0].style.backgroundColor = uiColor;\n }\n } else if( type == 'list' ) {\n let ps = affectedEl.querySelectorAll( 'p' );\n if( ps.length > 0 ) {\n for ( let i = 0; i < ps.length; i++ ) {\n ps[i].style.color = uiColor;\n }\n }\n } else if( type == 'star_rating' ) {\n if ( parent.dataset.type == 'star-color' ) {\n let ratingStar = affectedEl.querySelectorAll('li');\n for( let i = 0; i < ratingStar.length; i++ ) {\n let span = ratingStar[i].getElementsByTagName( 'span' );\n for( let j = 0; j < span.length; j++ ) {\n span[j].style.fill = uiColor;\n }\n }\n } else if( parent.dataset.type == 'numeral-rating-color' ) {\n let wptbTextMessageSize = affectedEl.querySelector('.wptb-number-rating');\n wptbTextMessageSize.style.color = uiColor;\n }\n\n } else {\n affectedEl.style.color = uiColor;\n }\n },\n numberImputSize: function ( wptbNumberInputs, maxCount, maxValue ) {\n wptbNumberInputs.onkeydown = function() {\n let thisValue = this.value;\n thisValue = String( thisValue );\n if ( thisValue[0] == 0 ) {\n this.value = \"\";\n } else {\n thisValue = thisValue.substring( 0, maxCount );\n this.value = thisValue;\n }\n }\n wptbNumberInputs.onkeyup = function( ) {\n let thisValue = this.value;\n if ( parseInt( thisValue, 10 ) > parseInt( maxValue, 10 ) ) {\n this.value = maxValue;\n }\n \n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n },\n ucfirst: function( str ) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n wptbDocumentEventGenerate: function( eventName, element, details ) {\n if( eventName && element ) {\n if( ! details ) {\n details = true;\n }\n let event = new CustomEvent( eventName, { detail: details, bubbles: true } );\n element.dispatchEvent( event );\n }\n },\n // run script for the pointed element\n elementStartScript: function( element, kind ) {\n //let script = element.getElementsByTagName( 'script' );\n if(!kind) {\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n if( infArr && Array.isArray( infArr ) ) {\n kind = infArr[1];\n }\n }\n\n if( kind ) {\n// let wpTemplateId = 'wptb-' + kind + '-script';\n// let template = wp.template( wpTemplateId );\n// let data = {elemClass: infArr[0]};\n// let elementScriptText = template( data );\n// elementScriptText = elementScriptText.replace(/\\r|\\n|\\t/g, '').trim();\n//\n// let scriptNew = document.createElement( 'script' );\n// scriptNew.setAttribute( 'type', 'text/javascript' );\n// scriptNew.innerHTML = elementScriptText;\n// element.parentNode.appendChild( scriptNew );\n\n// element.parentNode.removeChild( scriptNew );\n if( kind in WPTB_ElementsScriptsLauncher ) {\n WPTB_ElementsScriptsLauncher[kind]( element );\n }\n }\n },\n // deletes event handlers from the pointed option element and from all his daughter elements\n deleteEventHandlers: function( element ) {\n if( element ) {\n jQuery( element ).off();\n let elementChildren = element.children;\n if( elementChildren ) {\n for ( let i = 0; i < elementChildren.length; i++ ) {\n WPTB_Helper.deleteEventHandlers( elementChildren[i] );\n }\n }\n } else {\n return;\n }\n },\n // replace all occurrences in a string\n replaceAll: function( string, search, replace ){\n return string.split( search ).join( replace );\n },\n // clears code from TinyMCE attributes\n elementClearFromTinyMce: function( element ) {\n let mceContentBodys = element.querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n\n let dataMceStyle = element.querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n \n let mceEditFocus = element.querySelectorAll( '.mce-edit-focus' );\n if( mceEditFocus.length > 0 ) {\n for ( let k = 0; k < mceEditFocus.length; k++ ) {\n mceEditFocus[k].classList.remove( 'mce-edit-focus' );\n }\n }\n\n let contentEditable = element.querySelectorAll( '[contenteditable]' );\n if ( contentEditable.length > 0 ) {\n for ( let k = 0; k < contentEditable.length; k++ ) {\n contentEditable[k].removeAttribute( 'contenteditable' );\n }\n }\n\n let spellCheck = element.querySelectorAll( '[spellcheck]' );\n if ( spellCheck.length > 0 ) {\n for ( let k = 0; k < spellCheck.length; k++ ) {\n spellCheck[k].removeAttribute( 'spellcheck' );\n }\n }\n\n let mceIds = element.querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n \n return element;\n },\n elementOptionContainerCustomClassSet: function( targetInput, customClassForContainer ) {\n if( targetInput && customClassForContainer ) {\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\n if( containerElement ) {\n containerElement.classList.add( customClassForContainer );\n }\n }\n },\n elementOptionContainerAdditionalStyles: function( targetInput, containerAdditionalStyles ) {\n if( targetInput && containerAdditionalStyles ) {\n let containerElement = WPTB_Helper.findAncestor( targetInput, 'wptb-element-option' );\n let containerStylesArrOne = containerAdditionalStyles.split( ';' );\n\n if( containerElement && containerStylesArrOne ) {\n function containerStylesSet( containerStyleStr, containerElement ) {\n if( containerStyleStr ) {\n containerStyleStrArr = containerStyleStr.split( ':' );\n\n if( containerStyleStrArr && Array.isArray( containerStyleStrArr ) ) {\n containerElement.style[containerStyleStrArr[0]] = containerStyleStrArr[1];\n }\n }\n }\n if( containerStylesArrOne && Array.isArray( containerStylesArrOne ) ) {\n for( let i = 0; i < containerStylesArrOne.length; i++ ) {\n if( containerStylesArrOne[i] ) {\n containerStylesSet( containerStylesArrOne[i], containerElement );\n }\n }\n } else {\n containerStylesSet( containerStylesArrOne, containerElement );\n }\n }\n }\n },\n // function which set handler for event of changes of control\n controlsInclude: function( element, functionHandler ) {\n if( element && typeof element === 'object' && functionHandler && typeof functionHandler === 'function' ) {\n element.addEventListener( 'element:controls:active', function() {\n if(!element.hasOwnProperty('controlConnectFunctionsName') ||\n !Array.isArray(element.controlConnectFunctionsName) ||\n element.controlConnectFunctionsName.indexOf(functionHandler.name) == -1) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i ),\n elementKind;\n\n if( infArr && Array.isArray( infArr ) ) {\n elementKind = infArr[1];\n }\n\n// if( ! element.hasOwnProperty( 'сontrolsConnectIndic' ) || element.сontrolsConnectIndic !== true && elementKind ) {\n// let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\n// if( elementsSettingsTemplateJs.length > 0 ) {\n// elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\n//\n// let elementsSettings = elementsSettingsTemplateJs.innerHTML;\n// let controlClassesNames = [];\n// if( elementsSettings ) {\n// elementsSettings = elementsSettings.trim();\n// elementsSettings = JSON.parse( elementsSettings );\n// if( elementsSettings && typeof elementsSettings === 'object' ) {\n// if( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] in elementsSettings ) {\n// let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\n// if( elementSettings && typeof elementSettings === 'object' ) {\n// Object.keys( elementSettings ).forEach( function( key ) {\n// let regularText = new RegExp( 'data-wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n// let keyInfArr = key.match( regularText );\n// if( keyInfArr && Array.isArray( keyInfArr ) ) {\n// let controlClass = key.replace( 'data-', '' );\n// controlClassesNames.push( [controlClass, keyInfArr[2]] );\n// }\n// });\n// }\n// }\n// }\n// }\n// }\n// }\n if( elementKind ){\n let elementOptionsContainer = document.querySelector( '.wptb-element-options.wptb-options-' + infArr[1] + '-' + infArr[2] );\n\n // from time to time depend on table cells hierarchy, cell td items may catch mouse clicks which are intended for elements. since the active section is not cell management, this will gives and unharmfull error of not found element, simple check for null equality will be sufficient for now.\n if(!elementOptionsContainer){\n return;\n }\n\n let elementOptions = elementOptionsContainer.querySelectorAll( '.wptb-element-option' );\n\n\n for( let i = 0; i < elementOptions.length; i++ ) {\n let controlActiveElement = elementOptions[i].querySelector( '.wptb-element-property' );\n if( controlActiveElement ) {\n let regularText = new RegExp( 'wptb-el-' + elementKind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n let controlInfArr = controlActiveElement.className.match( regularText );\n if( controlInfArr && Array.isArray( controlInfArr ) ) {\n let controlUnicClassName = controlInfArr[0];\n\n element.addEventListener( 'wptb-control:' + controlUnicClassName, function() {\n let controls = {};\n let controlName = controlInfArr[2];\n let control = document.getElementsByClassName( controlUnicClassName );\n if( control.length > 0 && controlName ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n controls[controlName] = targetControlValue;\n }\n\n functionHandler( controls, element );\n }, false );\n }\n }\n }\n \n if(!element.controlConnectFunctionsName && !Array.isArray(element.controlConnectFunctionsName)) {\n element.controlConnectFunctionsName = [];\n }\n\n element.controlConnectFunctionsName.push( functionHandler.name );\n }\n }\n }, false );\n }\n },\n oneControlInclude: function( element, functionHandler, controlName ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' && typeof controlName === 'string' ) {\n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i ),\n elementKind;\n \n if( infArr && Array.isArray( infArr ) ) {\n elementKind = infArr[1].split( '-' )[0];\n \n let wptbContrlStacksConfigId = 'wptb-' + elementKind + '-control-stack';\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\n let data = {\n container: '.' + infArr[0]\n };\n let jsonControlsConfigJson = tmplControlsConfig( data );\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\n \n if( jsonControlsConfig && typeof jsonControlsConfig === 'object' && jsonControlsConfig.hasOwnProperty( controlName ) ) {\n let controlClassName = 'wptb-el-' + infArr[1] + '-' + controlName;\n \n element.addEventListener( 'wptb-control:' + controlClassName, function( event ) {\n let control = document.getElementsByClassName( controlClassName );\n if( control.length > 0 ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( control );\n\n functionHandler( targetControlValue, element );\n }\n }, false );\n }\n }\n } else {\n return false;\n }\n },\n //\n innerElementCopyIncludeHandler: function( element, functionHandler ) {\n if( element && typeof element === 'object' && typeof functionHandler === 'function' ) {\n element.addEventListener( 'wptb-inner-element:copy', function( event ) {\n let innerElement = event.detail;\n if( innerElement ) {\n WPTB_Helper.elementClearFromTinyMce( innerElement );\n functionHandler( innerElement, element );\n }\n }, false );\n }\n },\n //\n appearDependOnControl: function( dependOn, targetControlElementClass ) {\n if( Array.isArray( dependOn ) ) {\n let dependOnControlName = dependOn[0];\n let infArr = targetControlElementClass.match( /wptb-el-((.+-)\\d+)-(.+)/i );\n \n if( infArr && Array.isArray( infArr ) ) {\n let controlName = infArr[3];\n\n let dependOnControlElementClass = targetControlElementClass.replace( controlName, dependOnControlName );\n\n let dependOnControlElement = document.getElementsByClassName( dependOnControlElementClass );\n\n if( dependOnControlElement.length > 0 ) {\n dependOnControlElement = dependOnControlElement[0];\n let targetControlElement = document.getElementsByClassName( targetControlElementClass );\n if( targetControlElement.length > 0 ) {\n targetControlElement = targetControlElement[0];\n let controlContainerElem = WPTB_Helper.findAncestor( targetControlElement, 'wptb-element-option' );\n\n if( controlContainerElem ) {\n function showHideDependOnControlElement( dependOnControlElementClass, dependOn ) {\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 = elementsSettings.trim();\n// elementsSettings = JSON.parse( elementsSettings );\n// if( elementsSettings && typeof elementsSettings === 'object' && \n// ( 'tmpl-wptb-el-datas-' + dependOnControlElementKind ) in elementsSettings ) {\n// let elementSettings = elementsSettings['tmpl-wptb-el-datas-' + dependOnControlElementKind];\n// if( elementSettings && typeof elementSettings === 'object' && \n// ( 'data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName ) in elementSettings ) {\n// let elementSettingValue = elementSettings['data-wptb-el-' + dependOnControlElementKind + '-' + dependOnControlName];\n// \n// if( elementSettingValue ) {\n// if( dependOn[1] && Array.isArray( dependOn[1] ) && \n// ( dependOn[1].indexOf( elementSettingValue ) !== -1 ) ) {\n// controlContainerElem.style.display = 'block';\n// } else if( dependOn[2] && Array.isArray( dependOn[2] ) && \n// ( dependOn[2].indexOf( elementSettingValue ) !== -1 ) ) {\n// controlContainerElem.style.display = 'none';\n// }\n// }\n// }\n// }\n// }\n// }\n if( dependOnControlElementClass ) {\n let dependOnControlElements = document.getElementsByClassName( dependOnControlElementClass );\n if( dependOnControlElements.length > 0 ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( dependOnControlElements );\n \n if( dependOn[1] && Array.isArray( dependOn[1] ) && \n ( dependOn[1].indexOf( targetControlValue ) !== -1 ) ) {\n controlContainerElem.style.display = 'block';\n } else if( dependOn[2] && Array.isArray( dependOn[2] ) && \n ( dependOn[2].indexOf( targetControlValue ) !== -1 ) ) {\n controlContainerElem.style.display = 'none';\n }\n }\n }\n }\n\n showHideDependOnControlElement( dependOnControlElementClass, dependOn );\n\n dependOnControlElement.addEventListener( 'change', function( event ) {\n showHideDependOnControlElement( dependOnControlElementClass, dependOn );\n }, false );\n }\n }\n }\n }\n }\n },\n //\n controlsStateManager: function ( targetControlClass, controlChangeIndic ) {\n let targetControls = document.getElementsByClassName( targetControlClass );\n if( targetControls.length > 0 ) {\n //targetControls = targetControls[0];\n \n let infArr = targetControlClass.match( /wptb-el-((.+-)\\d+)-(.+)/i );\n \n if( infArr && Array.isArray( infArr ) ) {\n let selectorElement;\n selectorElement = document.querySelector( '.wptb-element-' + infArr[1] );\n \n if( selectorElement ) {\n let elementsSettingsTemplatesJs;\n let elementSettings = {};\n let elementsSettings;\n elementsSettingsTemplatesJs = document.getElementsByClassName( 'wptb-element-datas' );\n if( elementsSettingsTemplatesJs.length == 0 || elementsSettingsTemplatesJs[0].innerHTML == '' ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n elementSettings['data-' + targetControlClass] = targetControlValue;\n\n elementsSettings = {};\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = elementSettings;\n elementsSettings = JSON.stringify( elementsSettings );\n\n if( elementsSettingsTemplatesJs.length == 0 ) {\n elementsSettingsTemplatesJs = document.createElement( 'script' );\n elementsSettingsTemplatesJs.setAttribute( 'type', 'text/html' );\n elementsSettingsTemplatesJs.setAttribute( 'class', 'wptb-element-datas' );\n } else {\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\n }\n\n elementsSettingsTemplatesJs.innerHTML = elementsSettings;\n\n let body = document.getElementsByTagName('body')[0];\n body.appendChild( elementsSettingsTemplatesJs );\n } else {\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\n elementsSettings = elementsSettingsTemplatesJs.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n\n if( elementsSettings && typeof elementsSettings === 'object' ) {\n \n \n if( controlChangeIndic ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) || \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ! ( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) && \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' && \n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) ) {\n let targetControlValue = WPTB_Helper.targetControlValueGet( targetControls );\n if( ! ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) || \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] !== 'object') {\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] = {};\n }\n elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML = JSON.stringify( elementsSettings );\n } else if( ( ( 'tmpl-wptb-el-datas-' + infArr[1] ) in elementsSettings ) && \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] === 'object' && \n ( 'data-' + targetControlClass ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1]] ) {\n for( let i = 0; i < targetControls.length; i++ ) {\n if( targetControls[i].type == 'checkbox' ) {\n let targetControlValue;\n if( targetControls[i].name ) {\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass][targetControls[i].name];\n } else {\n targetControlValue = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\n }\n \n if( targetControlValue == 'checked' ) {\n targetControls[i].checked = true;\n } else if( targetControlValue == 'unchecked' ) {\n targetControls[i].checked = false;\n }\n } else {\n targetControls[i].value = elementsSettings['tmpl-wptb-el-datas-' + infArr[1]]['data-' + targetControlClass];\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n //\n targetControlValueGet: function( targetControls ) {\n let targetControlValue;\n for( let i = 0; i < targetControls.length; i++ ) {\n if( targetControls[i].type == 'checkbox' && targetControls[i].name ) {\n if( ! targetControlValue ) targetControlValue = {};\n if( targetControls[i].checked == true ) {\n targetControlValue[targetControls[i].name] = 'checked';\n } else {\n targetControlValue[targetControls[i].name] = 'unchecked';\n }\n } else if( targetControls[i].type == 'checkbox' ) {\n if( targetControls[i].checked == true ) {\n targetControlValue = 'checked';\n } else {\n targetControlValue = 'unchecked';\n }\n } else if( targetControls[i].type ) {\n targetControlValue = targetControls[i].value;\n } else if( targetControls[i].dataset.alignmentValue && targetControls[i].classList.contains( 'selected' ) ){\n targetControlValue = targetControls[i].dataset.alignmentValue;\n }\n }\n return targetControlValue;\n },\n //\n elementControlsStateCopy: function( elementProt, copyElem ) {\n if( elementProt && copyElem ) {\n let infArrProt = elementProt.className.match( /wptb-element-((.+-)\\d+)/i );\n let infArrCopy = copyElem.className.match( /wptb-element-((.+-)\\d+)/i );\n if( infArrProt && Array.isArray( infArrProt ) &&\n infArrCopy && Array.isArray( infArrCopy )) {\n let elemProtKind = infArrProt[1];\n let elemCopyKind = infArrCopy[1];\n let elementsSettingsTemplateJs = document.getElementsByClassName( 'wptb-element-datas' );\n if( elementsSettingsTemplateJs.length > 0 ) {\n elementsSettingsTemplateJs = elementsSettingsTemplateJs[0];\n \n let elementsSettings = elementsSettingsTemplateJs.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n \n if( elementsSettings && typeof elementsSettings === 'object' ) {\n let elementSettingsProt = elementsSettings['tmpl-wptb-el-datas-' + elemProtKind];\n if( elementSettingsProt && typeof elementSettingsProt === 'object' ) {\n let elementSettingsCopy = {};\n \n Object.keys( elementSettingsProt ).forEach( function( key ) {\n let elementSettingValue = elementSettingsProt[key];\n let elementSettingKeyCopy = key.replace( elemProtKind, elemCopyKind );\n elementSettingsCopy[elementSettingKeyCopy] = elementSettingValue;\n });\n \n if( Object.keys( elementSettingsCopy ).length > 0 ) {\n elementsSettings['tmpl-wptb-el-datas-' + elemCopyKind] = elementSettingsCopy;\n \n elementsSettings = JSON.stringify( elementsSettings );\n elementsSettingsTemplateJs.innerHTML = elementsSettings;\n }\n }\n }\n }\n }\n }\n }\n },\n //\n elementControlsStateDelete: function( element, nameControl ) {\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n let body = document.getElementsByTagName( 'body' )[0];\n let wptbElementDatas = body.getElementsByClassName( 'wptb-element-datas' );\n if( infArr && Array.isArray( infArr ) && wptbElementDatas.length > 0 ) {\n wptbElementDatas = wptbElementDatas[0];\n let elementsSettings = wptbElementDatas.innerHTML;\n if( elementsSettings ) {\n elementsSettings = elementsSettings.trim();\n elementsSettings = JSON.parse( elementsSettings );\n if( elementsSettings && typeof elementsSettings === 'object' &&\n ( ( 'tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2] ) in elementsSettings ) ) {\n if( ! nameControl ) {\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]];\n } else {\n if( elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] && \n typeof elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] === 'object' &&\n ( 'data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl ) in elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]] ) {\n delete elementsSettings['tmpl-wptb-el-datas-' + infArr[1] + '-' + infArr[2]]['data-wptb-el-' + infArr[1] + '-' + infArr[2] + '-' + nameControl];\n }\n }\n\n if( Object.keys( elementsSettings ).length == 0 ) {\n body.removeChild( wptbElementDatas );\n } else {\n elementsSettings = JSON.stringify( elementsSettings );\n wptbElementDatas.innerHTML = elementsSettings;\n }\n }\n }\n }\n },\n // \n elementOptionsSet: function( kind, element ) {\n // get controls config for this element\n let wptbContrlStacksConfigId = 'wptb-' + kind + '-control-stack';\n let tmplControlsConfig = wp.template( wptbContrlStacksConfigId );\n let data;\n let elementContainerClass;\n let elementOptionClassIndic;\n let elementOptionsGroup;\n let elementOptionsGroupId;\n let wptbelementOptionClass;\n \n // create containers for inserting controls of this item and their scripts\n let wptbelementOptionsContainer = document.createElement( 'div' );\n let wptbelementOptionsScriptsContainer = document.createElement( 'div' );\n \n let infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n if( ! infArr ) {\n let table_id = WPTB_Helper.detectMode();\n if (!table_id) {\n table_id = 'startedid-0';\n }\n if( element.classList.contains( 'wptb-preview-table' ) ) {\n element.classList.add( 'wptb-element-main-table_setting-' + table_id );\n } else if( element.classList.contains( 'wptb-cell' ) ) {\n let cellEditActiveClass = document.querySelector( '.wptb-element-table_cell_setting-' + table_id );\n if( cellEditActiveClass ) cellEditActiveClass.classList.remove( 'wptb-element-table_cell_setting-' + table_id );\n element.classList.add( 'wptb-element-table_cell_setting-' + table_id );\n }\n\n infArr = element.className.match( /wptb-element-((.+-)\\d+)/i );\n }\n\n data = {\n container: '.' + infArr[0]\n };\n\n elementContainerClass = infArr[0];\n elementOptionClassIndic = infArr[1];\n \n if( element.classList.contains( 'wptb-preview-table' ) ) {\n elementOptionsGroupId = 'table-settings-group';\n wptbelementOptionClass = 'wptb-element-option';\n } else if( element.classList.contains( 'wptb-cell' ) ) {\n elementOptionsGroupId = 'element-cell-options-group';\n wptbelementOptionClass = 'wptb-element-option';\n\n this.activateSection('cell_settings');\n } else {\n let children = document.getElementById( 'element-options-group' ).childNodes;\n for ( let i = 0; i < children.length; i++) {\n if ( children[i].style )\n children[i].style.display = 'none';\n }\n\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 this.activateSection('options_group');\n\n elementOptionsGroupId = 'element-options-group';\n wptbelementOptionClass = 'wptb-element-option';\n }\n \n wptbelementOptionsContainer.classList.add( 'wptb-element-options', 'wptb-options-' + infArr[1] );\n wptbelementOptionsScriptsContainer.classList.add( 'wptb-element-options-scripts', 'wptb-options-' + infArr[1] );\n\n let jsonControlsConfigJson = tmplControlsConfig( data );\n let jsonControlsConfig = JSON.parse( jsonControlsConfigJson );\n\n // clear elements from options group\n //document.getElementById( 'element-options-group' ).innerHTML = '';\n elementOptionsGroup = document.getElementById( elementOptionsGroupId );\n let elementOptionsGroupChildren = [...elementOptionsGroup.children];\n for( let i = 0; i < elementOptionsGroupChildren.length; i++ ) {\n elementOptionsGroup.removeChild( elementOptionsGroupChildren[i] );\n }\n\n \n // insert created container into element-option-group tag\n document.getElementById( elementOptionsGroupId ).appendChild( wptbelementOptionsContainer );\n document.getElementById( elementOptionsGroupId ).appendChild( wptbelementOptionsScriptsContainer );\n\n // show created container\n wptbelementOptionsContainer.style.display = 'block';\n \n // array for save all scrips for each controls\n let controlScriptsArr = [];\n\n // array for keep \"appear depend on\" parametrs\n let controlappearDependOnControl = [];\n\n // create controls\n let i = 0;\n Object.keys( jsonControlsConfig ).forEach( function( key ) {\n let data = jsonControlsConfig[key];\n data.controlKey = key;\n\n // get necessary wp js template\n let tmplControlTemplate = wp.template( 'wptb-' + data.type + '-control' );\n\n data.elemContainer = elementContainerClass;\n data.elementControlTargetUnicClass = 'wptb-el-' + elementOptionClassIndic + '-' + data.controlKey;\n let controlTemplate = tmplControlTemplate( data );\n\n if( 'appearDependOnControl' in data ) {\n if( Array.isArray( data.appearDependOnControl ) ) {\n controlappearDependOnControl.push( [data.appearDependOnControl, data.elementControlTargetUnicClass] );\n }\n }\n\n let wptbElementOptionContainer = document.createElement( 'div' );\n wptbElementOptionContainer.classList.add( wptbelementOptionClass, 'wptb-settings-items' );\n\n if( data.customClassForContainer ) {\n wptbElementOptionContainer.classList.add( data.customClassForContainer );\n }\n\n if( data.containerAdditionalStyles ) {\n wptbElementOptionContainer.setAttribute( 'style', data.containerAdditionalStyles );\n }\n\n wptbElementOptionContainer.innerHTML = controlTemplate;\n\n wptbelementOptionsContainer.appendChild( wptbElementOptionContainer );\n\n let helperJavascriptElem = wptbElementOptionContainer.getElementsByTagName( 'wptb-template-script' );\n if( helperJavascriptElem.length > 0 ) {\n helperJavascriptElem = helperJavascriptElem[0];\n let helperJavascriptCode = helperJavascriptElem.innerText;\n wptbElementOptionContainer.removeChild( helperJavascriptElem );\n let script = document.createElement( 'script' );\n script.setAttribute( 'type', 'text/javascript' );\n script.innerHTML = helperJavascriptCode.replace(/\\r|\\n|\\t/g, '').trim();\n controlScriptsArr.push( script );\n }\n\n i++;\n });\n\n // run the scripts of controls\n if( controlScriptsArr.length > 0 ) {\n for( let i = 0; i < controlScriptsArr.length; i++ ) {\n wptbelementOptionsScriptsContainer.appendChild( controlScriptsArr[i] );\n }\n }\n\n // run appearDependOnControl function\n for ( let i = 0; i < controlappearDependOnControl.length; i++ ) {\n WPTB_Helper.appearDependOnControl( controlappearDependOnControl[i][0], controlappearDependOnControl[i][1] );\n }\n\n WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', element );\n },\n // function for create, update css for element\n managerExternalCssStyles: function( elementContainer, selector, cssName, cssValue ) {\n let infArr = elementContainer.match( /wptb-element-main(.+)-(\\d+)/i );\n if( ! infArr || ! Array.isArray( infArr ) ) {\n let table = document.getElementsByClassName( 'wptb-preview-table' );\n \n if( table.length > 0 ) {\n table = table[0];\n \n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n selector = '.' + infArr[0] + ' ' + selector;\n }\n }\n }\n \n let head = document.head;\n if( head ) {\n let cssForThisElement = head.querySelector( '#styles-' + elementContainer );\n if( cssForThisElement ) {\n let cssText = cssForThisElement.innerHTML;\n if( cssText ) {\n let cssTextArrFirst = cssText.split( '}' );\n cssTextArrFirst.pop();\n let selectorExists = false;\n for( let i = 0; i < cssTextArrFirst.length; i++ ) {\n let cssTextArrSecond = cssTextArrFirst[i].split( '{' );\n if( cssTextArrSecond[0] === selector ) {\n let cssTextArrThird = cssTextArrSecond[1].split( ';' );\n cssTextArrThird.pop();\n let cssNameExists = false;\n for( let j = 0; j < cssTextArrThird.length; j++ ) {\n let cssTextArrFourth = cssTextArrThird[j].split( ':' );\n if( cssTextArrFourth[0] === cssName ) {\n if( cssValue ) {\n cssTextArrThird[j] = cssName + ':' + cssValue;\n } else {\n cssTextArrThird.splice( j, 1 );\n }\n \n cssTextArrSecond[1] = cssTextArrThird.join( ';' ) ? cssTextArrThird.join( ';' ) + ';' : '';\n cssNameExists = true;\n break;\n }\n }\n if( ! cssNameExists ) {\n if( cssValue ) {\n cssTextArrSecond[1] += cssName + ':' + cssValue + ';';\n }\n }\n if( cssTextArrSecond[1] ) {\n cssTextArrFirst[i] = cssTextArrSecond[0] + '{' + cssTextArrSecond[1]\n } else {\n cssTextArrFirst.splice( i, 1 );\n }\n if( cssTextArrFirst.join( '}' ) ) {\n cssForThisElement.innerHTML = cssTextArrFirst.join( '}' ) + '}';\n } else {\n head.removeChild( cssForThisElement );\n }\n \n selectorExists = true;\n break;\n }\n }\n\n if( ! selectorExists ) {\n if( cssValue ) {\n cssForThisElement.innerHTML = cssText + selector + '{' + cssName + ':' + cssValue + ';}';\n } else {\n cssForThisElement.innerHTML = cssText;\n }\n }\n } else {\n if( cssValue ) {\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\n } else {\n head.removeChild( cssForThisElement );\n }\n }\n } else {\n if( cssValue ) {\n let cssForThisElement = document.createElement( 'style' );\n cssForThisElement.setAttribute( 'id', 'styles-' + elementContainer );\n cssForThisElement.classList.add( 'styles-wptb-elements' );\n cssForThisElement.innerHTML = selector + '{' + cssName + ':' + cssValue + ';}';\n head.appendChild( cssForThisElement );\n }\n }\n }\n },\n /**\n *\n * Register section parts for sidebar\n *\n * @param {array} sections an array of section names\n */\n registerSections(sections) {\n this.sections = {};\n if (!Array.isArray(sections)) {\n sections = [sections];\n }\n\n sections.map(s => {\n const sectionElement = document.querySelector(`[data-wptb-section=${s}]`);\n if (sectionElement) {\n this.sections[s] = sectionElement;\n }\n })\n },\n /**\n * Activate a registered section and deactivates others\n *\n * @param {string} sectionDataId section name to be activated\n * @param {string} displayType display type override for section to be used in its display style property\n */\n activateSection(sectionDataId, displayType = 'block') {\n this.triggerSectionEvent(sectionDataId);\n Object.keys(this.sections).map(k => {\n if (Object.prototype.hasOwnProperty.call(this.sections, k)) {\n const visibility = sectionDataId === k ? displayType : 'none';\n this.sections[k].style = `display: ${visibility} !important`;\n }\n })\n },\n /**\n * Set up related buttons and links to trigger certain elements\n */\n setupSectionButtons() {\n const sectionButtons = Array.from( document.querySelectorAll('[data-wptb-section-button'));\n const vm = this;\n\n sectionButtons.map(s => {\n const sectionName = s.dataset.wptbSectionButton;\n s.addEventListener('click', function() {\n const displayType = s.dataset.wptbSectionDisplayType;\n vm.activateSection(sectionName, displayType);\n })\n\n document.addEventListener('sectionChanged', (e)=> {\n if(e.detail === sectionName){\n s.classList.remove('disabled');\n s.classList.add('active');\n }else{\n s.classList.remove('active');\n s.classList.add('disabled');\n }\n })\n })\n },\n setupPanelToggleButtons(){\n const $ = jQuery;\n\n $('.wptb-panel-toggle-group').each(function(){\n const vm = $(this);\n $(this).find('.toggle-icon').click(() => {\n vm.find('.wptb-panel-toggle-target').slideToggle();\n vm.toggleClass('wptb-panel-toggle-content');\n })\n })\n },\n /**\n * Trigger a section change event\n *\n * @param {string} sectionName section name\n */\n triggerSectionEvent(sectionName){\n const sectionEvent = new CustomEvent('sectionChanged', {detail: sectionName});\n\n document.dispatchEvent(sectionEvent);\n },\n /**\n * Setup sidebar toggle element\n *\n * @param {string} toggleSelector query selector for drawer toggle element\n */\n setupSidebarToggle(toggleSelector){\n const toggleButton = document.querySelector(toggleSelector);\n if(toggleButton){\n toggleButton.addEventListener('click', (e)=>{\n e.preventDefault();\n document.body.classList.toggle('collapsed');\n })\n }\n },\n // function for deleting all external CSS for the element\n externalCssStylesDelete: function( elementContainerClass ) {\n let head = document.head;\n if( head ) {\n let cssForThisElement = head.querySelector( '#styles-' + elementContainerClass );\n \n if( cssForThisElement ) {\n head.removeChild( cssForThisElement );\n }\n }\n },\n // function for copy all external CSS for the element\n externalCssStylesCopy: function( activeElement, copyElement ) {\n if( activeElement ) {\n let infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n let activeElemClass = infArr[0];\n \n let head = document.head;\n if( head ) {\n let cssForActiveElement = head.querySelector( '#styles-' + activeElemClass );\n\n if( cssForActiveElement ) {\n let cssForNewElement = cssForActiveElement.cloneNode( true );\n \n cssForNewElement.removeAttribute( 'id', 'styles-' + activeElemClass );\n \n let infArrCopyEl = copyElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArrCopyEl && Array.isArray( infArrCopyEl ) ) {\n cssForNewElement.setAttribute( 'id', 'styles-' + infArrCopyEl[0] );\n let cssForActiveElementInnerHTML = cssForActiveElement.innerHTML;\n let cssForNewElementInnerHTML = WPTB_Helper.replaceAll( cssForActiveElementInnerHTML, activeElemClass, infArrCopyEl[0] );\n cssForNewElement.innerHTML = cssForNewElementInnerHTML;\n head.appendChild( cssForNewElement );\n }\n }\n }\n }\n }\n },\n // function for convertation elements stiles in json\n elementsStylesConvertToObject: function() {\n let head = document.head;\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\n let stylesObj = {};\n for( let i = 0; i < stylesElements.length; i++ ) {\n let styleElemId = stylesElements[i].getAttribute( 'id' );\n if( styleElemId && stylesElements[i].innerHTML ) {\n stylesObj[styleElemId] = stylesElements[i].innerHTML;\n }\n }\n \n if( Object.keys( stylesObj ).length != 0 ) {\n return JSON.stringify( stylesObj );\n }\n return '';\n },\n // function for set scc styles tags to head\n elementsStylesSetFromObject: function( jsonObject ) {\n let head = document.head;\n if( head ) {\n let stylesElements = head.querySelectorAll( '.styles-wptb-elements' );\n if( stylesElements.length > 0 ) {\n stylesElements = [...stylesElements];\n for( let i = 0; i < stylesElements.length; i++ ) {\n head.removeChild( stylesElements[i] );\n }\n }\n if( jsonObject ) {\n let stylesObj = JSON.parse( jsonObject );\n if( Object.keys( stylesObj ).length != 0 ) {\n Object.keys( stylesObj ).forEach( function( key ) {\n let cssText = stylesObj[key];\n let styleCss = document.createElement( 'style' );\n styleCss.setAttribute( 'id', key );\n styleCss.classList.add( 'styles-wptb-elements' );\n styleCss.innerHTML = cssText;\n head.appendChild( styleCss );\n });\n }\n }\n }\n },\n // function for table saving\n saveTable: function( event, startSaving, previewSaving ) {\n if( ! previewSaving && ! startSaving ) {\n if( ( ! event.target.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \n window.wptbTableStateNumberShow == event.target.dataset.wptbTableStateNumberSave ) {\n //return;\n }\n }\n \n if( ! previewSaving ) {\n let bar = document.querySelector( '.wptb-edit-bar' );\n if ( bar && bar.classList.contains( 'visible' ) ) {\n let table = document.getElementsByClassName( 'wptb-preview-table' )[0];\n WPTB_Helper.toggleTableEditMode();\n }\n }\n\n let http = new XMLHttpRequest(),\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=save_table\",\n t = document.getElementById( 'wptb-setup-name' ).value.trim(),\n messagingArea,\n code,\n datas;\n \n code = document.getElementsByClassName( 'wptb-preview-table' );\n \n let postId;\n if (( rs = WPTB_Helper.detectMode() ) || ( rs = document.wptbId )) {\n postId = rs;\n }\n let paramIdsNecessaryChange = false;\n if( code.length > 0 ) {\n code = code[0];\n let codeClone = code.cloneNode( true );\n if( postId ) {\n if( codeClone.classList.contains( 'wptb-element-main-table_setting-startedid-0' ) ) {\n codeClone.classList.remove( 'wptb-element-main-table_setting-startedid-0' );\n codeClone.classList.add( 'wptb-element-main-table_setting-' + postId );\n paramIdsNecessaryChange = true;\n }\n }\n codeClone.columns = code.columns;\n code = WPTB_Stringifier( codeClone );\n code = code.outerHTML;\n } else { \n code = '';\n }\n \n if( ! previewSaving ) {\n datas = '';\n let datas_containers = document.getElementsByClassName( 'wptb-element-datas' );\n\n if( datas_containers.length > 0 ) {\n if( datas_containers[0].innerHTML ) {\n datas = datas_containers[0].innerHTML;\n\n if( paramIdsNecessaryChange ) {\n datas = WPTB_Helper.replaceAll( datas, 'tmpl-wptb-el-datas-main-table_setting-startedid-0', \n 'tmpl-wptb-el-datas-main-table_setting-' + postId );\n\n datas = WPTB_Helper.replaceAll( datas, 'data-wptb-el-main-table_setting-startedid-0', \n 'data-wptb-el-main-table_setting-' + postId );\n }\n }\n }\n }\n\n let styleObjJson = WPTB_Helper.elementsStylesConvertToObject();\n if( paramIdsNecessaryChange ) {\n styleObjJson = WPTB_Helper.replaceAll( styleObjJson, '.wptb-element-main-table_setting-startedid-0', \n '.wptb-element-main-table_setting-' + postId );\n }\n \n if ( t === '' && code === '' ) {\n let messagingAreaText = '';\n if( t === '' ) messagingAreaText += 'You must assign a name to the table before saving it.</br>';\n if( code === '' ) messagingAreaText += 'Table wasn\\'t created';\n messagingArea = document.getElementById( 'wptb-messaging-area' );\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Error: ' + messagingAreaText + '</div>';\n messagingArea.classList.add( 'wptb-warning' );\n setTimeout(function () {\n messagingArea.removeChild( messagingArea.firstChild );\n }, 4000 );\n return;\n }\n\n let params = {\n title: t,\n content: code,\n elements_datas: datas,\n elements_styles: styleObjJson,\n security_code: wptb_admin_object.security_code\n };\n \n \n if( previewSaving ) {\n params.preview_saving = previewSaving;\n }\n \n if ( postId ) {\n params.id = postId;\n }\n params = JSON.stringify( params );\n\n http.open('POST', url, true);\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\n\n http.onreadystatechange = function ( action ) {\n if ( this.readyState == 4 && this.status == 200 ) {\n var data = JSON.parse( http.responseText );\n messagingArea = document.getElementById( 'wptb-messaging-area' );\n\n if ( data[0] == 'saved' ) {\n let builderPageUrl = document.location.href.replace( '#', '' );\n let regex = new RegExp( '&table=(.+)', \"i\" );\n builderPageUrl = builderPageUrl.replace( regex, '' );\n window.history.pushState( null, null, builderPageUrl + '&table=' + data[1] );\n \n WPTB_Helper.saveTable( event, true );\n return;\n } else if( data[0] == 'edited' && startSaving ) {\n document.wptbId = data[1];\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully saved.</div>';\n document.getElementsByClassName( 'wptb-embed-btn' )[0].classList.remove( 'wptb-button-disable' );\n document.getElementById( 'wptb-embed-shortcode' ).value = '[wptb id=' + data[1] + ']';\n let wptbPreviewTable = document.querySelector( '.wptb-preview-table' );\n let wptbPreviewBtn = document.getElementsByClassName( 'wptb-preview-btn' );\n if( wptbPreviewBtn.length > 0 ) {\n wptbPreviewBtn = wptbPreviewBtn[0];\n wptbPreviewBtn.classList.remove( 'wptb-button-disable' );\n let wptbPreviewBtnHref = wptbPreviewBtn.dataset.previewHref;\n wptbPreviewBtnHref = wptbPreviewBtnHref.replace( 'empty', data[1] );\n wptbPreviewBtn.setAttribute( 'href', wptbPreviewBtnHref );\n }\n \n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else if( data[0] == 'edited' ) {\n messagingArea.innerHTML = '<div class=\"wptb-success wptb-message\">Table \"' + t + '\" was successfully updated.</div>';\n event.target.dataset.wptbTableStateNumberSave = window.wptbTableStateNumberShow;\n \n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else if( data[0] == 'preview_edited' ) {\n return;\n } else {\n messagingArea.innerHTML = '<div class=\"wptb-error wptb-message\">Safety problems</div>';\n }\n messagingArea.classList.add( 'wptb-success' );\n setTimeout( function () {\n messagingArea.removeChild( messagingArea.firstChild );\n }, 4000 );\n }\n }\n http.send( params );\n },\n //\n clickOnFreeSpace: function() {\n let cellModeBackground = document.querySelector( '#wptb-cell_mode_background' );\n if( cellModeBackground && cellModeBackground.classList.contains( 'visible' ) ) {\n return;\n }\n // document.getElementsByClassName( 'wptb-elements-container' )[0].style.display = 'table';\n // document.getElementsByClassName( 'wptb-settings-section' )[0].style.display = 'block';\n // document.getElementById( 'element-options-group' ).style.display = 'none';\n this.activateSection('elements');\n\n let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\n if( wpcdFixedToolbar.hasAttribute( 'data-toolbar-active-id' ) ) {\n document.getElementById( wpcdFixedToolbar.getAttribute( 'data-toolbar-active-id' ) ).classList.remove( 'toolbar-active' );\n }\n let element = document.querySelector( '.wptb-preview-table' );\n if( element ) {\n WPTB_Helper.elementOptionsSet( 'table_setting', element );\n }\n },\n\n /*\n * function for sending of element ajax request\n */\n elementAjax: function( dataAjaxData, element ) {\n let http = new XMLHttpRequest(),\n url = ( wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl ) + \"?action=wptb_element_ajax\";\n let element_name;\n let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n element_name = infArr[1];\n }\n \n let params = {\n element_ajax_data: dataAjaxData,\n element_name: element_name,\n security_code: wptb_admin_object.security_code\n };\n params = JSON.stringify( params );\n\n http.open( 'POST', url, true );\n http.setRequestHeader( 'Content-type', 'application/json; charset=utf-8' );\n\n http.onreadystatechange = function ( action ) {\n if ( this.readyState == 4 && this.status == 200 ) {\n var data = JSON.parse( http.responseText );\n let detail;\n if ( data && Array.isArray( data ) && data[0] == 'element_ajax_responce' ) {\n detail = {value: data[1]};\n } else {\n detail = '';\n }\n WPTB_Helper.wptbDocumentEventGenerate( 'wptb-element:ajax-response', element, detail );\n }\n }\n http.send( params );\n },\n\n /*\n * This just toggles visibility of cell edit bar, and toggles\n * cell selecting mode.\n */\n toggleTableEditMode: function ( close = false ) {\n let bar = document.getElementsByClassName('wptb-edit-bar'),\n cellModeBackground = document.getElementById('wptb-cell_mode_background'),\n leftScrollPanelCurtain = document.getElementById('wptb-left-scroll-panel-curtain'),\n leftScrollPanelCellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n wptbPreviewTable = document.getElementsByClassName('wptb-preview-table');\n if (wptbPreviewTable.length > 0) {\n wptbPreviewTable = wptbPreviewTable[0];\n }\n\n if ( bar.length > 0 ) {\n 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 if( ! close ) {\n document.select.activateMultipleSelectMode();\n bar[i].classList.add( 'visible' );\n cellModeBackground.classList.add( 'visible' );\n leftScrollPanelCurtain.classList.add( 'visible' );\n wptbPreviewTable.parentNode.classList.add( 'wptb-preview-table-manage-cells' );\n }\n }\n\n }\n },\n\n /*\n * checking of dimension of value\n */\n checkingDimensionValue: function ( value, dimension ) {\n value = String( value );\n dimension = String( dimension );\n if( value && dimension ) {\n let searchIndex = value.indexOf( dimension );\n if ( searchIndex != -1 && searchIndex == ( value.length - dimension.length ) ) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n },\n\n /*\n * if dimension is included - checking and if it necessary setting value\n * without dimension - return value\n */\n checkSetGetStyleSizeValue: function( element, styleName, computedStyleName, dimension ) {\n let elemStyleValue = element.style[styleName];\n elemStyleValue = String( elemStyleValue );\n\n if( ! elemStyleValue || dimension ? ! ( WPTB_Helper.checkingDimensionValue( elemStyleValue, dimension ) ) : false ){\n let elementStyles = window.getComputedStyle( element );\n if( computedStyleName && elementStyles.getPropertyValue( computedStyleName ) && dimension ? WPTB_Helper.checkingDimensionValue( elementStyles.getPropertyValue( computedStyleName ), dimension ) : true ) {\n if( ! dimension ) {\n return elementStyles.getPropertyValue( computedStyleName );\n } else {\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\n }\n } else {\n if( ! dimension ) {\n return false;\n } else {\n element.style[styleName] = null;\n }\n }\n } else if( ! dimension ) {\n return elemStyleValue;\n }\n\n return element.style[styleName];\n },\n\n /*\n * function checking that element has the style\n * if this style is present - checking the format color\n * if param set is true - setting style for element (consider hex format of color)\n * if param set is false - getting style from element\n */\n checkSetGetStyleColorValue: function ( element, styleName, computedStyleName, set = false ) {\n let elemStyleColorValue = element.style[styleName];\n\n if( ! elemStyleColorValue ) {\n let elementStyles = window.getComputedStyle( element, null );\n\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\n\n if( set ) {\n elemStyleColorValue = WPTB_Helper.rgbToHex( elementStyles.getPropertyValue( computedStyleName ) );\n if( WPTB_Helper.isHex( elemStyleColorValue ) ) {\n element.style[styleName] = elemStyleColorValue;\n } else {\n element.style[styleName] = '';\n }\n } else {\n return elementStyles.getPropertyValue( computedStyleName );\n }\n\n } else {\n if( set ) {\n element.style[styleName] = '';\n } else {\n return '';\n }\n }\n } else if( ! set ) {\n return elemStyleColorValue;\n }\n },\n\n /*\n * function checking that element has the style\n * if this style is present - checking the format color\n * if param set is true - setting style for element (consider hex format of color)\n * if param set is false - getting style from element\n */\n checkSetGetStyleValue: function ( element, styleName, computedStyleName, set = false ) {\n let elemStyleColorValue = element.style[styleName];\n\n if( ! elemStyleColorValue ) {\n let elementStyles = window.getComputedStyle( element, null );\n\n if( elementStyles && elementStyles.getPropertyValue( computedStyleName ) ) {\n\n if( set ) {\n element.style[styleName] = elementStyles.getPropertyValue( computedStyleName );\n } else {\n return elementStyles.getPropertyValue( computedStyleName );\n }\n\n } else if( ! set ) {\n return '';\n }\n } else if( ! set ) {\n return elemStyleColorValue;\n }\n },\n\n /*\n * get the value of the same elements that have the most count\n */\n getValueMaxCountSameElementsInArray: function ( arr ) {\n if( arr && Array.isArray( arr ) ) {\n let check = {};\n for( let i = 0; i < arr.length; i++ ) {\n if( check[arr[i]] ) {\n check[arr[i]]++;\n } else {\n check[arr[i]] = 1;\n }\n }\n\n let maxPropName;\n for ( let key in check ) {\n if( ! maxPropName ) {\n maxPropName = key;\n continue;\n } else {\n if( check[maxPropName] < check[key] ) {\n maxPropName = key;\n }\n }\n }\n\n return maxPropName;\n }\n },\n\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table.\n */\n recalculateIndexes: function ( table ) {\n let trs = table.getElementsByTagName( 'tr' ),\n tds, maxCols = 0, maxColsFull = 0, tdsArr = [];\n\n for ( let i = 0; i < trs.length; i++ ) {\n tds = trs[i].getElementsByTagName( 'td' );\n\n if ( tdsArr[i] == undefined ) {\n tdsArr[i] = [];\n }\n\n let jMainIter = 0;\n for ( let j = 0; j < tds.length; j++ ) {\n if ( tdsArr[i][j] != undefined ) {\n for ( let y = 0; y < 100; y++ ) {\n if ( tdsArr[i][jMainIter] != undefined ) {\n jMainIter++;\n continue;\n }\n tdsArr[i][jMainIter] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n break;\n }\n } else {\n tdsArr[i][j] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n }\n tds[j].dataset.yIndex = i;\n\n if ( tds[j].colSpan > 1 ) {\n for ( let k = 1; k < tds[j].colSpan; k++ ) {\n jMainIter++;\n tdsArr[i][jMainIter] = 'tdDummy';\n }\n }\n\n if ( tds[j].rowSpan > 1 ) {\n for ( let x = 1; x < tds[j].rowSpan; x++ ) {\n if ( tdsArr[i + x] == undefined ) {\n tdsArr[i + x] = [];\n }\n for ( let z = 0; z < tds[j].colSpan; z++ ) {\n tdsArr[i + x][jMainIter - tds[j].colSpan + 1 + z ] = 'tdDummy';\n }\n }\n }\n jMainIter++;\n\n if ( j > maxCols ) {\n maxCols = j;\n }\n }\n\n if( i == 0 ) {\n maxColsFull = jMainIter;\n }\n }\n table.columns = maxCols;\n table.maxCols = maxColsFull;\n },\n\n /**\n * Table Rows colors reinstall\n */\n tableRowsColorsReinstall: function ( table ) {\n let infArr = table.className.match( /wptb-element-main(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n let tableIndex = '';\n if( infArr[infArr.length -1] == '0' ) {\n tableIndex = 'startedid-0';\n } else {\n tableIndex = infArr[infArr.length -1];\n }\n\n let tableHeaderBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableHeaderBackground' );\n if( tableHeaderBackground ) {\n let details = {value: tableHeaderBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableHeaderBackground, details );\n }\n\n let tableEvenRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableEvenRowBackground' );\n if( tableEvenRowBackground ) {\n let details = {value: tableEvenRowBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableEvenRowBackground, details );\n }\n\n let tableOddRowBackground = document.querySelector('.wptb-el-main-table_setting-' + tableIndex + '-tableOddRowBackground' );\n if( tableOddRowBackground ) {\n let details = {value: tableOddRowBackground.value};\n WPTB_Helper.wptbDocumentEventGenerate( 'controlColor:change', tableOddRowBackground, details );\n }\n }\n }\n}\n","var WPTB_Initializer = function () {\n\n const MIN_COLUMNS = 1,\n MIN_ROWS = 1,\n MAX_COLUMNS = 30,\n MAX_ROWS = 30;\n\n var tableGenerator = document.body;\n columnsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[0],\n columnsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[0],\n rowsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[1],\n rowsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[1],\n columnsInput = document.getElementById('wptb-columns-number'),\n rowsInput = document.getElementById('wptb-rows-number');\n \n columnsDecrementButton.onclick = function () {\n if (columnsInput.value > MIN_COLUMNS) {\n columnsInput.value--;\n }\n };\n\n columnsIncrementButton.onclick = function () {\n if (columnsInput.value < MAX_COLUMNS) {\n columnsInput.value++;\n }\n };\n\n rowsDecrementButton.onclick = function () {\n if (rowsInput.value > MIN_ROWS) {\n rowsInput.value--;\n }\n };\n\n rowsIncrementButton.onclick = function () {\n if (rowsInput.value < MAX_ROWS) {\n rowsInput.value++;\n }\n };\n\n document.getElementById( 'wptb-generate-table' ).onclick = function ( ) {\n var columns = document.getElementById('wptb-columns-number').value,\n rows = document.getElementById('wptb-rows-number').value;\n\n //wptbTableStateSaveManager.tableStateClear();\n \n WPTB_Table(columns, rows);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n WPTB_Helper.registerSections(['elements', 'table_settings', 'cell_settings', 'options_group']);\n WPTB_Helper.setupSectionButtons();\n WPTB_Helper.activateSection('elements');\n WPTB_Helper.setupSidebarToggle('.wptb-panel-drawer-toggle');\n WPTB_Helper.setupPanelToggleButtons();\n};\n","var WPTB_LeftPanel = function () {\r\n\r\n let table = document.getElementsByClassName('wptb-preview-table')[0],\r\n wptbElementButtons = document.getElementsByClassName('wptb-element');\r\n\r\n for (var i = 0; i < wptbElementButtons.length; i++) {\r\n wptbElementButtons[i].ondragstart = function (e) {\r\n e.dataTransfer.setData('wptbElement', this.dataset.wptbElement);\r\n e.dataTransfer.setData( 'wptbElIndic-' + this.dataset.wptbElement, 'wptbElIndic-' + this.dataset.wptbElement );\r\n }\r\n };\r\n \r\n if( table ) {\r\n let wptbTablesEditModeCloseButton = document.getElementsByClassName( 'wptb-table-edit-mode-close' );\r\n for ( let i = 0; i < wptbTablesEditModeCloseButton.length; i++ ) {\r\n wptbTablesEditModeCloseButton[i].onclick = WPTB_Helper.toggleTableEditMode;\r\n }\r\n document.getElementById('wptb-add-end-row').onclick = table.addRowToTheEnd;\r\n document.getElementById('wptb-add-start-row').onclick = table.addRowToTheStart;\r\n document.getElementById('wptb-add-row-before').onclick = table.addRowBefore;\r\n document.getElementById('wptb-add-row-after').onclick = table.addRowAfter;\r\n document.getElementById('wptb-add-end-column').onclick = table.addColumnEnd;\r\n document.getElementById('wptb-add-start-column').onclick = table.addColumnStart;\r\n document.getElementById('wptb-add-column-before').onclick = table.addColumnBefore;\r\n document.getElementById('wptb-add-column-after').onclick = table.addColumnAfter;\r\n document.getElementById('wptb-delete-column').onclick = table.deleteColumn;\r\n document.getElementById('wptb-delete-row').onclick = table.deleteRow;\r\n document.getElementById('wptb-merge-cells').onclick = table.mergeCells;\r\n document.getElementById('wptb-split-cell').onclick = table.splitCell;\r\n };\r\n\r\n // this code hides the \"element parameters\" area\r\n // when clicked outside this element and its \"tinymce\" toolbar \r\n let wptbBuilderPanel = document.getElementsByClassName( 'wptb-builder-panel' )[0];\r\n wptbBuilderPanel.onclick = function( e ) {\r\n if( ! e.target.classList.contains( 'wptb-ph-element' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-ph-element' ) && \r\n ! e.target.classList.contains( 'wptb-fixed-toolbar' ) && ! WPTB_Helper.findAncestor( e.target, 'wptb-fixed-toolbar' ) ) {\r\n WPTB_Helper.clickOnFreeSpace();\r\n } \r\n };\r\n \r\n let wptbHeader = document.getElementsByClassName( 'wptb-header' );\r\n if( wptbHeader.length > 0 ) wptbHeader = wptbHeader[0];\r\n wptbHeader.onclick = function() {\r\n WPTB_Helper.clickOnFreeSpace();\r\n };\r\n};","var MultipleSelect = function () {\n\n\tvar selectedCells = [],\n\t\tmultipleCellMode = false;\n\n\tthis.activateMultipleSelectMode = function () {\n\t\tselectedCells = [];\n\t\tvar tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\n\t\tfor (var i = 0; i < tds.length; i++) {\n\t\t\ttds[i].classList.remove('wptb-highlighted');\n\t\t}\n\t\tmultipleCellMode = true;\n\t}\n\n\tthis.deactivateMultipleSelectMode = function () {\n\t\tmultipleCellMode = false;\n\t}\n\n\tthis.isActivated = function () {\n\t\treturn multipleCellMode;\n\t}\n\n\tthis.pushSelectedCell = function (cell) {\n\t\tif (!multipleCellMode) {\n\t\t\treturn;\n\t\t}\n\t\tselectedCells.push(cell);\n\t\tcell.classList.add('wptb-highlighted');\n\t};\n\n\tthis.selectedCells = function () {\n\t\treturn selectedCells;\n\t}\n\n\tthis.flushSelectedCells = function () {\n\t\tselectedCells = [];\n\t}\n\n\tthis.getFirst = function () {\n\t\tvar minXIndex = 1000, minYIndex = 1000, first;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (minXIndex >= selectedCells[i].dataset.xIndex\n\t\t\t\t&& minYIndex >= selectedCells[i].dataset.yIndex) {\n\t\t\t\tfirst = selectedCells[i];\n\t\t\t\tminXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tminYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn first;\n\t}\n\n\tthis.getLast = function () {\n\t\tvar maxXIndex = -1, maxYIndex = -1, last;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (maxXIndex <= selectedCells[i].dataset.xIndex\n\t\t\t\t&& maxYIndex <= selectedCells[i].dataset.yIndex) {\n\t\t\t\tlast = selectedCells[i];\n\t\t\t\tmaxXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tmaxYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn last;\n\t}\n\n\tthis.removeAllButFirst = function () {\n\t\tvar td = this.getFirst();\n\t\tfor (var i = 1; i < selectedCells.length; i++) {\n\t\t\tselectedCells[i].classList.add('wptb-fused-cell-' + td.dataset.xIndex + '-' + td.dataset.yIndex);\n\t\t}\n\t}\n\n\treturn this;\n\n};","var WPTB_Parser = function ( code ) {\n let div = document.createElement( 'div' );\n div.innerHTML = code;\n \n let table = div.children[0];\n let columnTitleMobile = [...table.querySelectorAll( '.wptb-column-title-mobile-container' )];\n \n for( let i = 0; i < columnTitleMobile.length; i++ ) {\n let parent = columnTitleMobile[i].parentNode;\n parent.removeChild( columnTitleMobile[i] );\n }\n \n let tds = table.querySelectorAll( 'td' );\n for ( let i = 0; i < tds.length; i++ ) {\n tds[i].classList.add( 'wptb-droppable' );\n tds[i].classList.remove( 'wptb-column-title-mobile-not-elements' );\n }\n \n return table;\n}","// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\nif (!Object.keys) {\n Object.keys = (function () {\n 'use strict';\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\n dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ],\n dontEnumsLength = dontEnums.length;\n\n return function (obj) {\n if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n var result = [], prop, i;\n\n for (prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n return result;\n };\n }());\n}","var WPTB_Settings = function () {\n var elems = document.getElementsByClassName('wptb-element');\n\n for ( var i = 0; i < elems.length; i++ ) {\n elems[i].ondragstart = function ( event ) {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData( 'wptbElement', event.target.dataset.wptbElement );\n event.dataTransfer.setData( 'wptbElIndic-' + event.target.dataset.wptbElement, 'wptbElIndic-' + event.target.dataset.wptbElement );\n }\n elems[i].ondragend = function () {\n WPTB_Helper.elementDragEndClear();\n }\n };\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n wptbUndo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n }\n }\n }\n }\n }\n \n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n \n wptbRedo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n }\n }\n }\n \n }\n }\n \n let shortcodePopupWindow = document.getElementsByClassName( 'wptb-popup-window-modal' )[0];\n document.getElementsByClassName( 'wptb-embed-btn' )[0].onclick = function () {\n if( ! this.classList.contains( 'wptb-button-disable' ) ) {\n shortcodePopupWindow.classList.add( 'wptb-popup-show' );\n }\n }\n \n window.onbeforeunload = function(e) {\n let wptbSaveDisabled = document.getElementsByClassName( 'wptb-save-disabled' );\n if( wptbSaveDisabled.length == 0 ) {\n return true;\n } else {\n return null;\n }\n };\n \n \n document.getElementsByClassName( 'wptb-popup-dark-area' )[0].onclick = function () {\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\n }\n \n document.getElementsByClassName( 'wptb-popup-window-close-icon' )[0].onclick = function () {\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\n }\n \n document.getElementsByClassName( 'wptb-preview-btn' )[0].onclick = function ( event ) {\n if( this.classList.contains( 'wptb-button-disable' ) ) {\n return;\n } \n \n let previewId = Math.floor( Math.random() * 10000 );\n \n var newHref = new URL( event.target.href );\n newHref.searchParams.set( 'preview_id', previewId );\n event.target.href = newHref.toString();\n WPTB_Helper.saveTable( event, false, previewId );\n }\n\n document.getElementsByClassName( 'wptb-save-btn' )[0].onclick = function ( event ) {\n if( ! this.classList.contains( 'wptb-save-disabled' ) ) {\n WPTB_Helper.saveTable( event );\n }\n }\n\n let tableTitleField = document.querySelector( '#wptb-setup-name' );\n if( tableTitleField ) {\n tableTitleField.onchange = function () {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n};\n","var WPTB_Stringifier = function ( codeMain ) {\n if ( codeMain ) {\n let code = codeMain.cloneNode( true );\n code.dataset.tableColumns = codeMain.columns;\n code.style.width = null;\n code.style.minWidth = null;\n code.style.maxWidth = null;\n \n let tds = code.getElementsByTagName( 'td' );\n if ( tds.length > 0 ) {\n for ( let i = 0; i < tds.length; i++ ) {\n \n if ( codeMain.querySelector( 'wptb-table-preview-head' ) ) {\n tds[i].removeAttribute( 'data-x-index' );\n }\n tds[i].removeAttribute( 'data-y-index' );\n tds[i].removeAttribute( 'draggable' );\n tds[i].classList.remove( 'wptb-droppable' );\n let innerElements = tds[i].getElementsByClassName( 'wptb-ph-element' );\n \n if ( innerElements.length > 0 ) {\n for ( let j = 0; j < innerElements.length; j++ ) {\n \n let mceContentBodys = innerElements[j].querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n \n let dataMceStyle = innerElements[j].querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n \n let contentEditable = innerElements[j].querySelectorAll( '[contenteditable]' );\n if ( contentEditable.length > 0 ) {\n for ( let k = 0; k < contentEditable.length; k++ ) {\n contentEditable[k].removeAttribute( 'contenteditable' );\n }\n }\n \n let spellCheck = innerElements[j].querySelectorAll( '[spellcheck]' );\n if ( spellCheck.length > 0 ) {\n for ( let k = 0; k < spellCheck.length; k++ ) {\n spellCheck[k].removeAttribute( 'spellcheck' );\n }\n }\n \n let mceIds = innerElements[j].querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n \n let wptbActions = innerElements[j].querySelectorAll( '.wptb-actions' );\n let wptbActionsLength = wptbActions.length;\n while ( wptbActionsLength > 0 ) {\n if( wptbActions[0] && wptbActions[0].parentNode ) {\n wptbActions[0].parentNode.removeChild( wptbActions[0] );\n wptbActionsLength--;\n } else {\n break;\n }\n \n } \n \n let dataMceBogus = innerElements[j].querySelectorAll( '[data-mce-bogus]' );\n if( dataMceBogus.length > 0 ) {\n dataMceBogus = [...dataMceBogus];\n for( let k = 0; k < dataMceBogus.length; k++ ) {\n if( dataMceBogus[k] && dataMceBogus[k].parentNode ) {\n dataMceBogus[k].parentNode.removeChild( dataMceBogus[k] );\n }\n }\n }\n }\n }\n \n if( tds[i].hasAttribute( 'data-wptb-title-column' ) ) {\n let columnNameDivContainer = document.createElement( 'div' ),\n columnNameDiv = document.createElement( 'div' );\n columnNameDivContainer.classList.add( 'wptb-column-title-mobile-container' );\n columnNameDiv.classList.add( 'wptb-column-title-mobile' );\n columnNameDiv.dataset.wptbTitleColumn = tds[i].dataset.wptbTitleColumn;\n columnNameDiv.setAttribute( 'style', 'font-size:' + tds[i].dataset.wptbTitleColumnFontSize + '; \\n\\\n color:' + tds[i].dataset.wptbTitleColumnColor + '; background-color:' + tds[i].dataset.wptbTitleBackgroundColor + '; text-align:' + tds[i].dataset.wptbTitleAlign + ';' );\n columnNameDiv.style.padding = tds[i].style.padding;\n if( tds[i].children.length == 0 ) {\n tds[i].classList.add( 'wptb-column-title-mobile-not-elements' );\n }\n columnNameDivContainer.appendChild( columnNameDiv );\n tds[i].insertBefore( columnNameDivContainer, tds[i].firstChild );\n }\n }\n }\n \n return code;\n }\n}","var array = [], WPTB_Table = function ( columns, rows, wptb_preview_table ) {\n\n /* The members of the class */\n var settings = document.getElementsByClassName('wptb-settings-items'),\n wptbTableSetup = document.getElementsByClassName(\"wptb-table-setup\")[0],\n table, row, cell,\n maxAmountOfCells,\n maxAmountOfRows;\n\n //HERE ARE THE PRIVATE FUNCTIONS\n /*\n * This function toggles buttons visibility in cell edit mode\n * (according to the amount of currently selected cells), and\n * highlights visually the clicked cell if it is not highlighted, or\n * removes highlight if clicked cell is already highlighted. \n * It too toggles the bits of our abstract representation.\n * @param Event this is the event instance of the click performed over a cell.\n */\n var mark = function ( event ) {\n var rs = this.rowSpan,\n cs = this.colSpan,\n noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n position = getCoords(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 let cellHighlighted = document.getElementsByClassName('wptb-highlighted'),\n markedCells = cellHighlighted.length;\n if (markedCells === 0) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n } else if (markedCells === 1) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.add('visible');\n singleCells[i].removeAttribute('disabled');\n }\n\n cellHighlighted = cellHighlighted[0];\n WPTB_Helper.elementOptionsSet( 'table_cell_setting', cellHighlighted );\n\n let infArr = cellHighlighted.className.match( /wptb-element-((.+-)\\d+)/i );\n\n const controlElemIds = ['cellWidth', 'cellHeight'];\n\n controlElemIds.map(s => {\n let elementControlSizeUnicClass = `wptb-el-${infArr[1]}-${s}`,\n elementControlSizeFixedUnicClass = `wptb-el-${infArr[1]}-${s}Fixed`;\n if(s === 'cellWidth' || s === 'cellHeight') {\n let sizeName = '',\n getSizeFunctionName = '';\n if(s === 'cellWidth') {\n sizeName = 'width';\n getSizeFunctionName = 'getColumnWidth';\n } else if(s === 'cellHeight') {\n sizeName = 'height';\n getSizeFunctionName = 'getRowHeight';\n }\n let size = cellHighlighted.style[sizeName],\n cellSizeInputs = document.querySelectorAll( '.' + elementControlSizeUnicClass ),\n cellSizeFixedInput = document.querySelector( '.' + elementControlSizeFixedUnicClass );\n cellSizeInputs = [...cellSizeInputs];\n\n if(!size && !cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`]) {\n size = WPTB_Helper[getSizeFunctionName](table, cellHighlighted);\n cellSizeInputs.map(s => {\n s.value = size;\n });\n\n cellSizeFixedInput.checked = false;\n } else {\n cellSizeInputs.map(s => {\n if( size ) {\n s.value = parseFloat( size, 10 );\n } else if( cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`] ) {\n s.value = cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`];\n }\n });\n\n cellSizeFixedInput.checked = true;\n }\n }\n });\n\n cellSettings.classList.add( 'visible' );\n } else {\n for (var i = 0; i < multipleCells.length; i++) {\n if (table.isSquare(array)) {\n multipleCells[i].classList.add('visible');\n multipleCells[i].removeAttribute('disabled');\n } else {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n }\n };\n\n /* \n * This function fills an array with 1's according to the actual design\n * of HTML table.\n * @returns an array of arrays containing an abstract representation\n * of HTML table.\n * @deprecated\n * */\n\n var realTimeArray = function () {\n var carried = [], tds, cols, matriz = [];\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carried[i] = 0;\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n cols = [];\n\n var tds = table.rows[i].getElementsByTagName('td');\n\n for (items = 0; items < tds.length; items++) {\n\n for (var k = 0; k < tds[items].colSpan; k++) {\n cols.push(1);\n }\n\n if (tds[items].rowSpan > 1) {\n for (var k = 0; k < tds[items].colSpan; k++) {\n carried[items + k] = {\n justAssigned: true,\n amount: tds[items].rowSpan\n };\n }\n }\n }\n\n for (var k = 0; k < maxAmountOfCells; k++) {\n if (typeof carried[k] == 'object' && carried[k].amount > 0) {\n carried[k].amount--;\n if (carried[k].justAssigned) {\n carried[k].justAssigned = false;\n } else {\n cols.push(1);\n }\n }\n }\n\n matriz.push(cols);\n\n }\n return matriz;\n };\n\n /*\n * This function gets the number and position of cell spaces in current row that are occuped \n * by upper rowspanned cells.\n * @param number the number of row where we wish to calculate the carried rowspans up to.\n * @return an array with the remaining rowspans in each column.\n */\n var carriedRowspans = function (row) {\n var carried = [], tds, cols;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n carried[i] = 0;\n }\n\n if (row == -1) {\n return carried;\n }\n\n for (var i = 0; i <= row; i++) {\n cellsBuffer = table.rows[i].getElementsByTagName('td');\n cellPointer = 0;\n\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (carried[xPosition]) {\n carried[xPosition]--;\n } else {\n celda = cellsBuffer[cellPointer++];\n if (celda.rowSpan > 1) {\n for (k = 0; k < celda.colSpan; k++) {\n carried[xPosition + k] = celda.rowSpan - 1;\n }\n stepsToMove = celda.colSpan;\n } else if (celda.colSpan > 1) {\n stepsToMove = celda.colSpan;\n }\n }\n }\n\n }\n return carried;\n };\n\n /*\n * A helpful function for showing\n * the abstract table in console.\n * @param Array our abstract table.\n */\n var drawTable = function (a) {\n var string = 'DRAWING TABLE:\\n';\n for (var i = 0; i < a.length; i++) {\n\n for (var j = 0; j < a[i].length; j++) {\n string += ' ' + a[i][j];\n }\n string += '\\n';\n }\n table.isSquare(a);\n };\n\n /*\n * It resets all the bits of our abstract representation\n * to 0 and removes the highlighting class of all cells.\n */\n\n var undoSelect = function () {\n var noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n tds = table.getElementsByClassName('wptb-highlighted');\n while (tds.length) {\n tds[0].classList.remove('wptb-highlighted');\n }\n cellSettings.classList.remove( 'visible' );\n for (var i = 0; i < array.length; i++) {\n for (var j = 0; j < array[i].length; j++) {\n array[i][j] = 0;\n }\n }\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n };\n\n /*\n * This fills the abstract representation of our table with \n * zeros, at the start. the max amount of cells is the greatest sum\n * of all colspans for row.\n */\n\n var fillTableArray = function () {\n var colspansSums = [], a = [];\n\n //calculate max amount of cells inside a row\n for (var i = 0; i < table.rows.length; i++) {\n var cells = table.rows[i].getElementsByTagName('td'),\n colspanSumInRow = 0;\n for (var j = 0; j < cells.length; j++) {\n colspanSumInRow += cells[j].colSpan;\n }\n colspansSums.push(colspanSumInRow);\n }\n\n maxAmountOfCells = Math.max.apply(null, colspansSums);\n //calculate max rows\n var maxAmountOfRows = table.rows.length;\n\n // fill with zeros from both values\n for (var i = 0; i < maxAmountOfRows; i++) {\n a[i] = [];\n for (var j = 0; j < maxAmountOfCells; j++) {\n a[i].push(0);\n }\n }\n drawTable(a);\n return a;\n };\n\n /*\n * This function gets the sum of all colspans in a row.\n * @param number the number of row to be used as reference.\n */\n var getActualPointsInRow = function (row) {\n var tds = table.rows[row].getElementsByTagName('td'),\n points = 0;\n for (var i = 0; i < tds.length; i++) {\n points += tds[i].colSpan;\n }\n return points;\n }\n\n /*\n * This function gets us the exact coordinates of\n * an exact cell, in a more reliable way than xIndex and yIndex,\n * these last ones were meant to be used for getting the cell trough them.\n * @param DOMElement the cell to get the coordinates.\n */\n var getCoords = function (search) {\n var skipInCols = [], cell;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n skipInCols[i] = 0;\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var cellsBuffer = table.rows[i].getElementsByTagName('td');\n cellPointer = 0;\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (skipInCols[xPosition]) {\n skipInCols[xPosition]--;\n } else {\n var td = cellsBuffer[cellPointer++];\n if (td == search) {\n return [i, xPosition];\n }\n if (td.rowSpan > 1) {\n for ( let k = 0; k < td.colSpan; k++ ) {\n skipInCols[xPosition + k] = td.rowSpan - 1;\n }\n stepsToMove = td.colSpan;\n } else if (td.colSpan > 1) {\n stepsToMove = td.colSpan;\n }\n }\n }\n }\n };\n\n jQuery('#wptb-table-border-color').val('');\n jQuery('#wptb-table-padding-number,#wptb-table-padding-slider').val('15');\n\n if ( columns || rows ) {\n //END OF PRIVATE FUNCTIONS\n for (var i = 0; i < settings.length; i++) {\n if (settings[i].id !== 'wptb-apply-inner-border') {\n settings[i].classList.add('visible');\n }\n }\n\n //Create a HTML Table element.\n table = document.createElement( 'table' );\n table.classList.add( 'wptb-preview-table', 'wptb-element-main-table_setting-startedid-0' );\n table.style.border = '0px solid';\n table.dataset.reconstraction = 1;\n //table.dataset.wptbAdaptiveTable = 1;\n //Add the data rows.\n for (var i = 0; i < rows; i++) {\n\n row = table.insertRow(-1);\n row.classList.add( 'wptb-row' );\n\n for (var j = 0; j < columns; j++) {\n cell = new WPTB_Cell(mark);\n cell.setCoords(i, j);\n cell.getDOMElement().style.borderWidth = '1px';\n row.appendChild(cell.getDOMElement());\n }\n }\n } else {\n if( ! wptb_preview_table ) wptb_preview_table = document.querySelector( '.wptb-preview-table' );\n\n if ( wptb_preview_table ) {\n table = wptb_preview_table;\n\n let cells = table.getElementsByTagName('td');\n\n if (cells.length > 0) {\n for (let i = 0; i < cells.length; i++) {\n WPTB_Cell(mark, cells[i]);\n }\n }\n } else {\n return;\n }\n }\n\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table. \n */\n\n table.recalculateIndexes = function () {\n WPTB_Helper.recalculateIndexes( this );\n }\n \n table.addColumnWidth = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataXIndex = highlighted[k].dataset.xIndex;\n if( dataXIndex ) {\n function tableTdsFor( dataXIndex, colspan ) {\n let tableRows = table.rows;\n let widthIsSet = false;\n let arrayTdsFromPreviousRow = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.xIndex == dataXIndex ) {\n if( value ) {\n if( td.colSpan == colspan ) {\n td.style.width = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n widthIsSet = true;\n } else {\n td.style.width = null;\n td.dataset.wptbFixedWidth = value;\n if( i == tableRows.length - 1 && ! widthIsSet ) {\n tableTdsFor( dataXIndex, colspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.width = null;\n td.removeAttribute( 'data-wptb-fixed-width' );\n } else {\n if( td.dataset.wptbFixedWidth ) {\n if( td.colSpan == colspan ) {\n td.style.width = td.dataset.wptbFixedWidth + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n } \n } else if( td.style.width ) {\n for( let z = 0; z < arrayTdsFromPreviousRow.length; z++ ) {\n arrayTdsFromPreviousRow[z].style.width = td.style.width;\n }\n arrayTdsFromPreviousRow = [];\n } else {\n arrayTdsFromPreviousRow.push( td );\n }\n }\n break;\n } \n }\n }\n }\n \n tableTdsFor( dataXIndex, 1 );\n }\n }\n \n table.tdDefaultWidth();\n }\n }\n \n table.tdDefaultWidth = function() {\n let rows = table.rows;\n \n let tableTdsSumMaxWidth = 0;\n let tableTdsSumMaxWidthFixed = 0;\n let tableTdsSumMaxWidthAuto = 0;\n \n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' )[0];\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n \n let arrayCellsWidthFixedHelper = [];\n let arrayCellsWidthAutoHelper = [];\n let tdPaddingCommon = 0;\n let tableTdBorderCommonWidth = 0;\n let cssForTdsWidthAuto = '';\n \n \n let tableFullStyleObj = window.getComputedStyle( table, null );\n let borderLeftWidth = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let borderRightWidth = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderCommon = parseFloat( borderLeftWidth, 10 ) + parseFloat( borderRightWidth, 10 );\n \n for( let i = 0; i < rows.length; i++ ) {\n let tds = rows[i].children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n \n if( ! arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( td.style.width ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] = parseFloat( td.style.width );\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n } else {\n if( ! td.dataset.wptbFixedWidth ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] = table.dataset.wptbTdWidthAuto ? parseFloat( table.dataset.wptbTdWidthAuto, 10 ) : 100;\n td.dataset.wptbCssTdAutoWidth = true;\n }\n }\n \n if( window.getComputedStyle( td, null ) ) {\n let tdStyleObj = window.getComputedStyle( td, null );\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n tdPaddingCommon = parseFloat( tdPaddingLeft, 10 ) + parseFloat( tdPaddingRight, 10 );\n\n let tableTdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tableTdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n tableTdBorderCommonWidth = parseFloat( tableTdBorderLeftWidth, 10 ) + parseFloat( tableTdBorderRightWidth, 10 );\n tableTdBorderCommonWidth = tableTdBorderCommonWidth / 2;\n \n if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n \n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n \n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n }\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( ! td.dataset.wptbFixedWidth ) {\n td.dataset.wptbCssTdAutoWidth = true;\n }\n } else if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n }\n }\n }\n \n for( let i = 0; i < arrayCellsWidthFixedHelper.length; i++ ) {\n if( arrayCellsWidthFixedHelper[i] ) {\n tableTdsSumMaxWidthFixed += arrayCellsWidthFixedHelper[i];\n }\n }\n \n let CellsWidthAutoCount = 0;\n for( let i = 0; i < arrayCellsWidthAutoHelper.length; i++ ) {\n if( arrayCellsWidthAutoHelper[i] ) {\n tableTdsSumMaxWidthAuto += arrayCellsWidthAutoHelper[i];\n CellsWidthAutoCount++;\n }\n }\n \n tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto;\n \n table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;\n if( CellsWidthAutoCount ) {\n table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;\n if( table.mergingСellsHorizontally ) {\n table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed;\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n }\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n table.removeAttribute( 'data-wptb-cells-width-auto-count' );\n }\n \n let styleElementCreate = false;\n let tableTdWidthAuto;\n if( tableTdsSumMaxWidth < wptbTableSetupWidth ) {\n if( CellsWidthAutoCount ) {\n table.style.minWidth = '100%';\n if( table.mergingСellsHorizontally ) {\n table.style.width = 'auto';\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed;\n tableTdWidthAuto = tableTdsWidthAutoCommon / CellsWidthAutoCount;\n tableTdWidthAuto = tableTdWidthAuto - tdPaddingCommon - tableTdBorderCommonWidth;\n styleElementCreate = true;\n } else {\n table.style.width = '100%';\n }\n } else {\n table.style.width = 'auto';\n table.style.minWidth = null;\n table.style.maxWidth = null;\n }\n } else {\n table.style.maxWidth = null;\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\n table.style.width = 'auto';\n tableTdWidthAuto = table.dataset.wptbTdWidthAuto ? table.dataset.wptbTdWidthAuto : '100';\n styleElementCreate = true;\n }\n \n let head = document.head;\n if( head ) {\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAutoOld ) {\n head.removeChild( cssForTdsWidthAutoOld );\n }\n }\n \n if( styleElementCreate ) {\n cssForTdsWidthAuto = document.createElement( 'style' );\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\n cssForTdsWidthAuto.innerHTML = '[data-wptb-css-td-auto-width=true]{width:' + tableTdWidthAuto + 'px}';\n if( head ) {\n head.appendChild( cssForTdsWidthAuto );\n }\n }\n \n if( table.dataset.wptbTableAlignment ) {\n let wptbTableAlignment = table.dataset.wptbTableAlignment;\n\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n if( wptbTableSetupWidth < table.offsetWidth ) {\n table.style.float = null;\n } else {\n if( wptbTableAlignment == 'center' ) {\n table.style.float = null;\n } else {\n table.style.float = wptbTableAlignment;\n }\n }\n\n if( wptbTableAlignment == 'center' ) {\n wptbTableSetup.style.float = null;\n } else {\n wptbTableSetup.style.float = wptbTableAlignment;\n }\n \n if( tableTdWidthAuto && table.dataset.wptbTableContainerMaxWidth && table.offsetWidth < table.dataset.wptbTableContainerMaxWidth ) {\n table.style.width = '100%';\n }\n } else {\n table.style.float = null;\n }\n }\n \n table.addRowHeight = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataYIndex = highlighted[k].dataset.yIndex;\n if( dataYIndex ) {\n function tableTdsFor( dataYIndex, rowspan ) {\n let tableRows = table.rows;\n let heightIsSet = false;\n let arrayTdsPrevious = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.yIndex == dataYIndex ) {\n if( value ) {\n if( td.rowSpan == rowspan ) {\n td.style.height = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n heightIsSet = true;\n continue;\n } else {\n td.style.height = null;\n td.dataset.wptbFixedHeight = value;\n if( j == tds.length - 1 && ! heightIsSet ) {\n tableTdsFor( dataYIndex , rowspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.height = null;\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n } else {\n if( td.dataset.wptbFixedHeight ) {\n if( td.rowSpan = rowspan ) {\n td.style.height = td.dataset.wptbFixedHeight + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n }\n } else if( td.style.height ) {\n for( let z = 0; z < arrayTdsPrevious.length; z++ ) {\n arrayTdsPrevious[z].style.height = td.style.height;\n }\n arrayTdsPrevious = [];\n } else {\n arrayTdsPrevious.push( td );\n }\n }\n } \n }\n }\n }\n \n tableTdsFor( dataYIndex, 1 );\n }\n }\n }\n }\n \n table.reconstraction = function() {\n let tds = table.getElementsByTagName( 'td' );\n table.mergingСellsHorizontally = false;\n table.mergingCellsVertically = false;\n table.dataset.reconstraction = 1;\n let forBreak = 0;\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].colSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingСellsHorizontally = true;\n forBreak++;\n }\n \n if( tds[i].rowSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingCellsVertically = true;\n forBreak++;\n }\n \n if( forBreak == 2 ) {\n break;\n }\n }\n }\n\n /*\n * As simple as it is: adds a column to the end of table.\n */\n table.addColumnEnd = function () {\n let td,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if (currentTable.length > 0) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if (currentTableTd) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n \n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n \n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n }\n \n table.rows[i].appendChild(td.getDOMElement());\n array[i].push(0);\n }\n \n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * As simple as it looks: adds a column to the start of table.\n */\n\n table.addColumnStart = function () {\n let td,\n firstCell,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if ( currentTable.length > 0 ) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if ( currentTableTd ) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n \n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n }\n firstCell = table.rows[i].getElementsByTagName('td')[0];\n if (firstCell) {\n table.rows[i].insertBefore(td.getDOMElement(), firstCell);\n } else {\n table.rows[i].appendChild(td.getDOMElement());\n }\n array[i].push(0);\n }\n\n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Well, not so simple as previous functions.\n * It adds a column after a certain column of reference.\n * @param integer the column number to be used as reference.\n *\tIf empty, then the first highlighted cell is used as reference.\n */\n\n table.addColumnAfter = function (c_pos) {\n let rows = table.rows,\n 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\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /*\n * For preventing us to take a lot of time,\n * This is just calling the function addColumnAfter, but\n * using the previous column to current one as reference.\n * @see addColumnAfter\n */\n\n table.addColumnBefore = function () {\n var cell = document.querySelector('.wptb-highlighted'),\n pos = getCoords(cell)[1];\n\n if (pos === 0) {\n table.addColumnStart();\n } else {\n table.addColumnAfter(pos - 1);\n }\n };\n\n /*\n * Luckily, thisfunction is simple, \n * it just add a row to the end of table.\n */\n\n table.addRowToTheEnd = function () {\n let r = table.insertRow(-1),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table');\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n \n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n \n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n \n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /*\n * Yet another simple function, \n * it just add a row to the start of table.\n */\n\n table.addRowToTheStart = function () {\n let r = table.insertRow(0),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n \n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n \n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n \n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /* \n * This function adds a row before the current one.\n * Since the biggest factor of problem is a not-started but ongoing rowspan,\n * the most of the troubles is not here.\n */\n\n table.addRowBefore = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellNew;\n for( let i = row - 1; i >= 0; i-- ) {\n let rowChildren = table.rows[i].children;\n let rowChildrenLength = rowChildren.length;\n if( rowChildrenLength > 0 ) {\n for( let j = 0; j < rowChildrenLength; j++ ) {\n if( rowChildren[j].rowSpan == 1 ) {\n row = i;\n cellNew = true;\n break;\n }\n }\n }\n if ( cellNew ) {\n break;\n }\n }\n\n if (row === 0) {\n table.addRowToTheStart();\n } else {\n table.addRowAfter( row, cellStyle );\n }\n };\n\n /*\n * Well... by the name convention of the previous 3 functions,\n * it's pretty obvious that this functions attaches a new\n * row after highlighted cell row. The greatest obstacle it was\n * the possibility of a TR not having the exact amount of columns\n * occuped by actual node but rowspanned upper cells. For that purpose\n * it was created the function realTimeArray.\n * @see realTimeArray\n */\n\n table.addRowAfter = function ( row, cellStyle ) {\n let cellRowSpan,\n rowAfter,\n aux;\n \n if ( ( row == undefined || typeof row !== 'number' ) && cellStyle == undefined ) {\n let cell = document.querySelector('.wptb-highlighted');\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellRowSpan = cell.rowSpan,\n rowAfter = row + cellRowSpan - 1;\n } else {\n rowAfter = row;\n }\n \n \n let cellsColSpan = 0;\n if ( rowAfter < table.rows.length -1 ) {\n for( let i = 0; i <= rowAfter ; i++ ) {\n let tableRowsIChildren = table.rows[i].children,\n tableRIChildrenLength = tableRowsIChildren.length;\n if( tableRIChildrenLength > 0 ) {\n for( let j = 0; j < tableRIChildrenLength; j++ ) {\n let rowIRowSpan = tableRowsIChildren[j].rowSpan;\n\n if ( rowIRowSpan - 1 + i > rowAfter ) {\n tableRowsIChildren[j].rowSpan++;\n }\n }\n }\n }\n \n let rNext = table.rows[rowAfter + 1],\n rNextChildren = rNext.children,\n rNextChildrenLength = rNextChildren.length;\n \n if( rNextChildrenLength > 0 ) {\n for ( let i = 0; i < rNextChildrenLength; i++ ) {\n cellsColSpan += rNextChildren[i].colSpan;\n }\n }\n } else {\n cellsColSpan = array[0].length;\n }\n \n let r = table.insertRow( rowAfter + 1 );\n r.classList.add( 'wptb-row' );\n \n for ( j = 0; j < cellsColSpan; j++ ) {\n let td = new WPTB_Cell( mark );\n 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 WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after');\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This function checks the current selected cells\n * make a rectangular shape.\n * @param Array the abstract table.\n * @return false, if not making a rectangle, or\n *\tArray an array containing number of rows and columns, if selection makes a rectangle.\n */\n\n table.isSquare = function (a) {\n var rowStart = -1,\n columnStart = -1,\n rowEnd = -1,\n columnEnd = -1,\n height,\n width,\n itemsEstimate = 0,\n items = 0;\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n if ( j < columnStart || columnStart == -1 ) {\n columnStart = j;\n }\n if ( i < rowStart || rowStart == -1 ) {\n rowStart = i;\n }\n }\n }\n \n }\n\n for (var i = a.length - 1; i > -1; i--) {\n for (var j = a[i].length - 1; j > -1; j--) {\n if (a[i][j] == 1) {\n if ( j > columnEnd ) {\n columnEnd = j;\n }\n if ( i > rowEnd ) {\n rowEnd = i;\n }\n }\n }\n }\n\n for (var i = rowStart; i < rowEnd; i++) {\n for (var j = columnStart; j < columnEnd; j++) {\n if (a[i][j] == 0 || a[i][j] == undefined) {\n return false;\n }\n }\n }\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n items++;\n }\n }\n }\n\n height = rowEnd - rowStart + 1;\n width = columnEnd - columnStart + 1;\n itemsEstimate = height * width;\n\n if (itemsEstimate !== items) {\n return false;\n }\n return [height, width];\n };\n\n /*\n * This function merges all selected cells.\n * Well, actually sets the colspan and rowspan of first \n * upper left cell in selection and deletes the another selected cells.\n */\n\n table.mergeCells = function () {\n var dimensions = table.isSquare(array),\n rowspan = dimensions[0],\n colspan = dimensions[1],\n first = document.querySelector('.wptb-highlighted'),\n tds = [].slice.call(document.getElementsByClassName('wptb-highlighted'), 1),\n tdsChildrenNew = [];\n\n for (let i = 0; i < tds.length; i++) {\n let tdsInternalElements = tds[i].getElementsByClassName('wptb-ph-element');\n if (tdsInternalElements.length > 0) {\n let tdsIntElemLength = tdsInternalElements.length;\n for (let j = 0; j < tdsIntElemLength; j++) {\n tdsChildrenNew.push(tdsInternalElements[j]);\n }\n }\n let p = tds[i].parentNode;\n p.removeChild(tds[i]);\n }\n if (tdsChildrenNew.length > 0) {\n for (let i = 0; i < tdsChildrenNew.length; i++) {\n first.appendChild(tdsChildrenNew[i]);\n }\n }\n\n first.colSpan = colspan;\n first.rowSpan = rowspan;\n table.recalculateIndexes();\n table.reconstraction();\n let firstWidth = first.style.width;\n let firstDataFixedWidth = first.dataset.wptbFixedWidth;\n if( firstWidth ) {\n table.addColumnWidth( parseFloat( firstWidth, 10 ) );\n } else if( firstDataFixedWidth ) {\n table.addColumnWidth();\n } else {\n table.addColumnWidth( false, true );\n }\n \n let firstHeight = first.style.height;\n let firstDataFixedHeight = first.dataset.wptbFixedHeight;\n if( firstHeight ) {\n table.addRowHeight( parseFloat( firstHeight, 10 ) );\n } else if( firstDataFixedHeight ) {\n table.addRowHeight();\n } else {\n table.addRowHeight( false, true );\n }\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This functions makes the exact inverse as above.\n * It resets colspan and rowspan and appends \n * the same amount in cells to the table.\n * @bug\n */\n\n table.splitCell = function () {\n var cell = document.getElementsByClassName('wptb-highlighted')[0],\n rowspan = cell.rowSpan,\n colspan = cell.colSpan,\n cellStyles = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n thisRow = table.rows[row],\n cellXIndex =cell.dataset.xIndex;\n \n cell.rowSpan = 1;\n cell.colSpan = 1;\n \n for (let i = 1; i < colspan; i++) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().classList.add( 'wptb-highlighted' );\n if ( cell.nextSibling ) {\n thisRow.insertBefore( td.getDOMElement(), cell.nextSibling );\n } else {\n thisRow.appendChild( td.getDOMElement() );\n }\n \n }\n\n if (rowspan > 1) {\n for (let i = 1; i < rowspan; i++) {\n let rowChildInsertBefore = undefined,\n rowNext = table.rows[row + i],\n rowChildren = rowNext.children,\n rowChildrenLength = rowChildren.length;\n \n if ( rowChildrenLength > 0 ) {\n for ( let k = 0; k < rowChildrenLength; k++ ) {\n if ( Number( rowChildren[k].dataset.xIndex ) > Number( cellXIndex ) ) {\n rowChildInsertBefore = rowChildren[k];\n break;\n } \n }\n }\n for ( let j = 0; j < colspan; j++ ) {\n let td = new WPTB_Cell( mark );\n td.getDOMElement().setAttribute( 'style', cellStyles );\n if ( rowChildInsertBefore != undefined ) {\n rowNext.insertBefore( td.getDOMElement(), rowChildInsertBefore );\n } else {\n rowNext.appendChild( td.getDOMElement() );\n }\n }\n }\n }\n\n table.recalculateIndexes();\n table.reconstraction();\n table.addColumnWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Searches for rowspanned cells up to row number meeting it.\n * @param number the number of row where the function\n * must search up to.\n */\n\n table.findRowspannedCells = function (row) {\n var array = [],\n difference;\n actualPoints = getActualPointsInRow(row);\n if (actualPoints === maxAmountOfCells) {\n return [];\n }\n difference = maxAmountOfCells - actualPoints;\n\n for (var i = row - 1; i >= 0 && difference; i--) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var i = 0; i < tds.length; i++) {\n if (tds[i].rowSpan > 1) {\n array.push(tds[i]);\n difference -= tds[i].colSpan;\n }\n }\n }\n return array;\n\n }\n\n /*\n * This function explores the table and adds \n * a cell for each lacking one for each row\n * to meet an even amount of cells.\n */\n\n table.addLackingCells = function () {\n var sumRows = [];\n for (var i = 0; i < table.rows.length; i++) {\n sumRows.push(0);\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var j = 0; j < tds.length; j++) {\n if (tds[j].rowSpan > 1) {\n for (var k = 1; k < tds[j].rowSpan; k++) {\n sumRows[i + k]++;\n }\n }\n }\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td'),\n totalColspan = 0;\n for (var j = 0; j < tds.length; j++) {\n totalColspan += tds[j].colSpan;\n }\n totalColspan += sumRows[i];\n difference = maxAmountOfCells - totalColspan;\n for (var j = 0; j < difference; j++) {\n var td = new WPTB_Cell(mark);\n table.rows[i].appendChild(td.getDOMElement());\n //table.rows[i].insertBefore( td.getDOMElement(), rows[i].nextSibling );\n }\n }\n };\n\n /*\n * This function deletes the row of currently\n * selected cell. \n */\n\n table.deleteRow = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyles = cell.getAttribute('style'),\n rowspan = cell.rowSpan,\n row = getCoords(cell)[0],\n thisRow,\n aux;\n \n if ( rowspan == undefined ) rowspan = 1;\n \n for ( let i = 0; i < rowspan; i++ ) {\n thisRow = table.rows[row];\n let thisRowChildren = thisRow.children,\n nextRow = table.rows[row + 1],\n nextRowChildren,\n nextRowChildrenLength,\n tdArr = [];\n\n if( nextRow != undefined ) {\n nextRowChildren = nextRow.children;\n nextRowChildrenLength = nextRowChildren.length;\n for (let j = 0; j < thisRowChildren.length; j++) {\n if ( thisRowChildren[j].rowSpan > 1 ) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().colSpan = thisRowChildren[j].colSpan;\n td.getDOMElement().rowSpan = thisRowChildren[j].rowSpan - 1;\n\n let nextRowChildrenK = undefined;\n for ( let k = 0; k < nextRowChildrenLength; k++ ) {\n if ( Number( nextRowChildren[k].dataset.xIndex ) > Number( thisRowChildren[j].dataset.xIndex ) ) {\n nextRowChildrenK = nextRowChildren[k];\n break;\n } \n }\n\n if ( nextRowChildrenK ) {\n tdArr.push( [td, nextRowChildrenK] );\n } else {\n tdArr.push( [td] );\n }\n }\n }\n\n if ( tdArr.length > 0 ) {\n for ( let k = 0; k < tdArr.length; k++ ) {\n if ( tdArr[k][1] != undefined ) {\n nextRow.insertBefore( tdArr[k][0].getDOMElement(), tdArr[k][1] );\n } else {\n nextRow.appendChild( tdArr[k][0].getDOMElement() );\n }\n }\n }\n }\n \n let tableRows = table.rows;\n if ( tableRows.length > 0 ) {\n for ( let j = 0; j < row; j++ ) {\n let jRowChildren = tableRows[j].children;\n if ( jRowChildren.length > 0 ) {\n for ( let x = 0; x < jRowChildren.length; x++ ) {\n if ( jRowChildren[x].rowSpan - 1 >= row - j ) {\n jRowChildren[x].rowSpan--;\n }\n }\n }\n }\n }\n aux = Array.from(array[0]);\n array.pop(aux);\n drawTable(array);\n table.getElementsByTagName('tbody')[0].removeChild(table.rows[row]);\n \n if( table.rows.length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n \n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n \n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n /*\n * This function deletes the column of currently\n * selected cell. Again, this is way more complicated than\n * delete row case.\n */\n\n table.deleteColumn = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellXIndex = cell.dataset.xIndex,\n colspan = cell.colSpan;\n \n for ( let i = 0; i < colspan; i++ ) {\n for ( let j = 0; j < table.rows.length; j++ ) {\n let rowChildren = table.rows[j].children;\n let rowChildrenLength = rowChildren.length;\n if( rowChildrenLength > 0 ) {\n for ( let k = rowChildrenLength - 1; k >= 0; k-- ) {\n if ( Number( rowChildren[k].dataset.xIndex ) == Number( cellXIndex ) ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n } else {\n table.rows[j].removeChild( rowChildren[k] );\n }\n break;\n } else if( Number( rowChildren[k].dataset.xIndex ) < Number( cellXIndex ) && \n Number( rowChildren[k].dataset.xIndex ) + \n Number( rowChildren[k].colSpan -1 ) >= cellXIndex ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n }\n break;\n }\n }\n }\n }\n \n for ( let j = 0; j < table.rows.length; j++ ) {\n if (array[j] != undefined)\n array[j].pop();\n }\n \n maxAmountOfCells--;\n \n if( table.querySelectorAll( 'td' ).length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n \n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n table.tdDefaultWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n \n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n\n array = fillTableArray();\n\n undoSelect();\n drawTable(array);\n\n wptbTableSetup.appendChild(table);\n //if (columns || rows) {\n table.recalculateIndexes( true );\n //}\n table.reconstraction();\n table.tdDefaultWidth();\n \n wptbTableSetup.onresize = function() {\n table.tdDefaultWidth();\n };\n\n WPTB_LeftPanel();\n\n WPTB_Helper.elementStartScript( table, 'table_setting' );\n WPTB_Helper.elementOptionsSet( 'table_setting', table );\n \n // this code gets the ID of the active element in the toolbar \n // and stores it in the data attribute of the common container element \"wpcd_fixed_toolbar\"\n// let wptbPhElement = document.getElementsByClassName( 'wptb-ph-element' );\n// let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\n// for ( let i = 0; i < wptbPhElement.length; i++ ) {\n// wptbPhElement[i].addEventListener( 'click', function( e ) {\n// let wptbToolbar = document.getElementById( 'wpcd_fixed_toolbar' ).children;\n// for ( let j = 0; j < wptbToolbar.length; j++ ) {\n// let elementStyles = window.getComputedStyle( wptbToolbar[j], 'null' );\n// if( elementStyles.getPropertyValue( 'display' ) == 'block' ) {\n// wpcdFixedToolbar.dataset.toolbarActiveId = wptbToolbar[j].getAttribute( 'id' );\n// }\n// }\n// }, false );\n// }\n \n// let wptbPanelLeft = document.getElementsByClassName( 'wptb-panel-left' );\n// if( wptbPanelLeft.length > 0 ) {\n// wptbPanelLeft[0].addEventListener( 'click', function( e ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }, false );\n// }\n \n// let body = document.getElementsByTagName( 'body' );\n// if( body.length > 0 ) {\n// body[0].addEventListener( 'click', function( e ) {\n// if ( e.target.classList.contains( 'wptb-panel-left' ) || WPTB_Helper.findAncestor( e.target, 'wptb-panel-left' ) ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }\n// }, false );\n// }\n};","var WPTB_TableStateSaveManager = function() {\n this.tableStateSet = ( generate ) => {\n \n if( generate && window.wptbTableStateSaving && Array.isArray( window.wptbTableStateSaving ) ) {\n return;\n }\n \n // get table setup\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' );\n let wptbPreviewTable = '';\n if( wptbTableSetup.length > 0 ) {\n wptbTableSetup = wptbTableSetup[0];\n\n wptbPreviewTable = wptbTableSetup.querySelector( '.wptb-preview-table' );\n } else {\n wptbTableSetup = '';\n }\n\n\n \n // check if a global array doesn't exist with saved versions of the table \n // them create it\n if( ! window.wptbTableStateSaving && ! Array.isArray( window.wptbTableStateSaving ) ) {\n window.wptbTableStateSaving = [];\n } \n\n // remove the extra part of the array after changing the table \n // when it is showed in the not last modified version\n if( window.wptbTableStateSaving.length > window.wptbTableStateNumberShow ) {\n window.wptbTableStateSaving = window.wptbTableStateSaving.slice( 0, window.wptbTableStateNumberShow + 1 );\n }\n\n //add new state of table\n let wptbNewTableSetup = '';\n if( wptbTableSetup ) {\n wptbNewTableSetup = wptbTableSetup.cloneNode( true );\n let wptbHighlighted = wptbNewTableSetup.getElementsByClassName( 'wptb-highlighted' );\n for( let i = 0; i < wptbHighlighted.length; i++ ) {\n wptbHighlighted[i].classList.remove( 'wptb-highlighted' );\n }\n let wptbDirectlyhovered = wptbNewTableSetup.getElementsByClassName( 'wptb-directlyhovered' );\n for( let i = 0; i < wptbDirectlyhovered.length; i++ ) {\n wptbDirectlyhovered[i].classList.remove( 'wptb-directlyhovered' );\n }\n let mceContentBodys = wptbNewTableSetup.querySelectorAll( '.mce-content-body' );\n if( mceContentBodys.length > 0 ) {\n for ( let k = 0; k < mceContentBodys.length; k++ ) {\n mceContentBodys[k].classList.remove( 'mce-content-body' );\n }\n }\n let dataMceStyle = wptbNewTableSetup.querySelectorAll( '[data-mce-style]' );\n if ( dataMceStyle.length > 0 ) {\n for ( let k = 0; k < dataMceStyle.length; k++ ) {\n dataMceStyle[k].removeAttribute( 'data-mce-style' );\n }\n }\n let mceIds = wptbNewTableSetup.querySelectorAll( '[id^=mce_]' );\n if ( mceIds.length > 0 ) {\n for ( let k = 0; k < mceIds.length; k++ ) {\n mceIds[k].removeAttribute( 'id' );\n }\n }\n }\n\n let cssForTdsWidthAutoValue = '';\n let head = document.head;\n if( head ) {\n let cssForTdsWidthAuto = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAuto ) {\n cssForTdsWidthAutoValue = cssForTdsWidthAuto.innerHTML;\n }\n }\n\n let wptbTableTitle = '';\n let wptbSetupName = document.getElementById( 'wptb-setup-name' );\n if( wptbSetupName ) wptbTableTitle = wptbSetupName.value;\n\n window.wptbTableStateSaving.push( [wptbNewTableSetup, cssForTdsWidthAutoValue, wptbTableTitle] );\n\n // set new number of state which is showed now\n window.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;\n\n // make undo arrow active when the table was changed\n if( window.wptbTableStateSaving.length - 1 > 0 ) {\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n\n wptbUndo.classList.remove( 'wptb-undoredo-disabled' );\n }\n }\n\n // make redo arrow not active when the table was changed\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\n }\n\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n if( ( ! wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \n window.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave || ! wptbPreviewTable ) {\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n } else {\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\n wptbSaveBtn.classList.add('active');\n }\n }\n }\n \n this.tableStateGet = ( datawptbUndoredo ) => {\n if( datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length > 0 ) {\n \n // changes the number of the state which displays now\n if( datawptbUndoredo == 'undo' ) {\n if( window.wptbTableStateNumberShow > 0 ) {\n window.wptbTableStateNumberShow--;\n } else {\n return false;\n }\n } else if( datawptbUndoredo == 'redo' ) {\n if( window.wptbTableStateNumberShow < window.wptbTableStateSaving.length ) {\n window.wptbTableStateNumberShow++;\n } else {\n return false;\n }\n }\n \n // add or delete class \"wptb-undoredo-disabled\" for undo button\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n if( window.wptbTableStateNumberShow == 0 ) {\n if( wptbUndo ) {\n wptbUndo.classList.add( 'wptb-undoredo-disabled' );\n }\n } else if( window.wptbTableStateNumberShow > 0 ) {\n if( wptbUndo ) {\n wptbUndo.classList.remove( 'wptb-undoredo-disabled' );\n }\n }\n }\n \n // add or delete class \"wptb-undoredo-disabled\" for redo button\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n \n if( window.wptbTableStateNumberShow == window.wptbTableStateSaving.length - 1 ) {\n if( wptbRedo ) {\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\n }\n } else if( window.wptbTableStateNumberShow < window.wptbTableStateSaving.length - 1 ) {\n if( wptbRedo ) {\n wptbRedo.classList.remove( 'wptb-undoredo-disabled' );\n }\n }\n }\n \n // add or delete class \"wptb-save-disabled\" for save button\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n if( ( ! wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0 ) || \n window.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave ) {\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n } else {\n wptbSaveBtn.classList.add('active');\n wptbSaveBtn.classList.remove( 'wptb-save-disabled' );\n }\n }\n \n // load necessary saved table state\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' );\n if( wptbTableSetup.length > 0 ) {\n wptbTableSetup = wptbTableSetup[0];\n\n //wptbTableSetup.outerHTML = '';\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow] ) {\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] && \n typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] === 'object' ) {\n if( 'outerHTML' in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] ) {\n wptbTableSetup.outerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;\n }\n }\n\n let wptbTableSetupNew = document.querySelector( '.wptb-table-setup' );\n if( wptbTableSetupNew && wptbTableSetupNew.children.length == 0 ) {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n } else {\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n }\n\n // add or change or delete style element in the head for table cells who have auto width\n let head = document.head;\n if( head ) {\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAutoOld ) {\n head.removeChild( cssForTdsWidthAutoOld );\n }\n\n if( window.wptbTableStateSaving[window.wptbTableStateNumberShow][1] ) {\n let cssForTdsWidthAuto = document.createElement( 'style' );\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\n cssForTdsWidthAuto.innerHTML = window.wptbTableStateSaving[window.wptbTableStateNumberShow][1];\n head.appendChild( cssForTdsWidthAuto );\n }\n }\n\n // change value of table title field\n let wptbSetupName = document.getElementById( 'wptb-setup-name' );\n if( typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][2] != 'undefined' ) {\n if( wptbSetupName ) wptbSetupName.value = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];\n }\n }\n \n let body = document.getElementsByTagName( 'body' );\n if( body.length > 0 ) {\n body = body[0];\n }\n\n WPTB_Helper.elementOptionsPanelClear();\n WPTB_LeftPanel();\n\n let wptbLeftScrollPanelCellSetting = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ); \n if( wptbLeftScrollPanelCellSetting ) {\n wptbLeftScrollPanelCellSetting.classList.remove( 'visible' );\n }\n }\n }\n }\n \n this.tableStateClear = function() {\n delete window.wptbTableStateSaving;\n delete window.wptbTableStateNumberShow;\n \n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n \n wptbSaveBtn.removeAttribute( 'data-wptb-table-state-number-save' );\n }\n \n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n \n wptbUndo.classList.add( 'wptb-undoredo-disabled' );\n }\n \n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n\n wptbRedo.classList.add( 'wptb-undoredo-disabled' );\n }\n }\n}","var WPTB_innerElementSet = function ( element ) {\n \n element.ondragenter = function (e) {\n var div;\n if ( e.dataTransfer.types.indexOf( 'wptbelement' ) == -1 && e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) == -1 ) {\n return;\n }\n WPTB_DropHandle(this, e);\n \n element.classList.add( 'wptb-ondragenter' );\n }\n element.ondragover = function (e) {\n e.preventDefault();\n WPTB_DropHandle(this, e);\n }\n element.ondragleave = function () {\n \n }\n element.ondrop = function(e) {\n this.classList.remove( 'wptb-ondragenter' );\n let element, classId;\n e.preventDefault();\n e.stopPropagation();\n\n if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {\n return;\n }\n let wptbDropHandle,\n wptbDropBorderMarker;\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length > 0 ) {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n }\n if( document.getElementsByClassName( 'wptb-drop-border-marker' ).length > 0 ) {\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n\n if ( e.dataTransfer.getData( 'wptbElement' ) ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData( 'wptbElement' ) );\n element = element.getDOMElement();\n } else {\n classId = e.dataTransfer.getData( 'node' );\n element = document.getElementsByClassName( classId )[0];\n //element.classList.remove( 'wptb-moving-mode' );\n }\n \n if( wptbDropHandle.style.display == 'block' ) {\n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) { \n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n // start item javascript if item is new\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n let elemKind = infArr[1];\n if ( e.dataTransfer.getData( 'wptbElement' ) && ( elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list' ) ) {\n //WPTB_Helper.elementStartScript( element );\n }\n } else {\n return;\n }\n \n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n\n WPTB_innerElementSet( element );\n \n if( ! element.classList.contains( 'wptb-image-container' ) || element.classList.contains( 'wptb-moving-mode' ) ) {\n element.classList.remove( 'wptb-moving-mode' );\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } \n return true;\n }\n element.onmouseover = function(e) {\n element.classList.remove( 'wptb-ondragenter' );\n }\n}","var applyGenericItemSettings = function ( element, kindIndexProt, copy = false ) {\n var node = element.getDOMElement(),\n index,\n copy;\n if( node.classList.contains( 'wptb-ph-element' ) ) {\n if ( kindIndexProt == undefined || copy == true ) {\n //index = document.counter.nextIndex( element.kind );\n let wptbElements = document.getElementsByClassName( 'wptb-ph-element' );\n let elementIndexesArr = [];\n for( let i = 0; i < wptbElements.length; i++ ) {\n var regex = new RegExp( 'wptb-element-' + element.kind + '-(\\\\d+)', \"i\" );\n let infArr = wptbElements[i].className.match( regex );\n if( infArr ) {\n elementIndexesArr.push( infArr[1] );\n }\n }\n if( elementIndexesArr.length > 0 ) {\n let elementIndexMax = Math.max( ...elementIndexesArr );\n index = elementIndexMax + 1;\n } else { \n index = 1;\n }\n\n if( copy ) {\n // change all data-elements which save parameters for different controls\n let wptbNodeattributes = [...node.attributes];\n for( let i = 0; i < wptbNodeattributes.length; i++ ) {\n if( wptbNodeattributes[i] && typeof wptbNodeattributes[i] === 'object' && wptbNodeattributes[i].nodeName ) {\n let regularText = new RegExp( 'data-wptb-el-' + element.kind + '-(\\\\d+)-([a-zA-Z0-9_-]+)', \"i\" );\n let attr = wptbNodeattributes[i].nodeName.match( regularText );\n if( attr && Array.isArray( attr ) ) {\n let newDataAttributeName = wptbNodeattributes[i].nodeName.replace( element.kind + '-' + attr[1], element.kind + '-' + index );\n let newDataAttributeValue = wptbNodeattributes[i].nodeValue;\n node.removeAttribute( wptbNodeattributes[i].nodeName );\n node.setAttribute( newDataAttributeName, newDataAttributeValue );\n }\n }\n }\n }\n } else if ( kindIndexProt && ! copy ) {\n let kindIndexProtArr = kindIndexProt.split('-');\n index = kindIndexProtArr[kindIndexProtArr.length - 1];\n // start element javascript if element is new\n \n }\n\n let node_wptb_element_kind_num = node.className.match(/wptb-element-(.+)-(\\d+)/i);\n if ( node_wptb_element_kind_num ) {\n node.classList.remove( node_wptb_element_kind_num[0] );\n }\n if ( ! node.classList.contains( 'wptb-ph-element' ) ) {\n node.classList.add( 'wptb-ph-element' );\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\n }\n } else {\n if( ! node.classList.contains( 'wptb-element-' + element.kind + '-' + index ) ) {\n node.classList.add( 'wptb-element-' + element.kind + '-' + index );\n }\n }\n WPTB_Helper.elementStartScript( element.getDOMElement() );\n new WPTB_ElementOptions( element, index, kindIndexProt );\n document.counter.increment(element.kind);\n }\n \n node.onmouseenter = function ( event ) {\n if( event.target.classList.contains( 'wptb-moving-mode' ) ) {\n return;\n }\n \n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.addActionField( 1, node );\n \n wptbActionsField.setParameters( node );\n \n node.classList.remove( 'wptb-ondragenter' );\n };\n \n node.onmouseleave = function ( event ) {\n let wptbActionsField = new WPTB_ActionsField();\n \n wptbActionsField.leaveFromField( event, node );\n };\n};"]}
inc/admin/js/admin.min.js CHANGED
@@ -1 +1 @@
1
- var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},WPTB_ActionsField=function s(){var c=this;this.wptbActions,0!=document.getElementsByClassName("wptb-actions").length&&(this.wptbActions=document.getElementsByClassName("wptb-actions")[0]),this.addActionField=function(e,t){var a=document.getElementsByTagName("body")[0],n=document.getElementsByClassName("wptb-actions");if(0!=n.length){var l=n[0].activeElem;for(l&&l.classList.remove("wptb-directlyhovered");0!=n.length;)n[0].parentNode.removeChild(n[0])}if(1==e){var r=void 0,o=void 0;if(r=document.createElement("span"),o=document.createElement("span"),(n=document.createElement("div")).classList.add("wptb-actions"),r.classList.add("dashicons","dashicons-trash","wptb-delete-action"),o.classList.add("dashicons","dashicons-admin-page","wptb-duplicate-action"),n.appendChild(o),n.appendChild(r),a.appendChild(n),n.activeElem=t,n.type=1,r.onclick=function(e){var t=e.target.parentNode.activeElem,a=t.parentNode;t.className.match(/wptb-element-(.+)-(\d+)/i);if(t&&a.removeChild(t),t&&"object"===(void 0===t?"undefined":_typeof(t))&&t.hasOwnProperty("kind")&&"text"==t.kind){var n=a.parentNode;if(WPTB_Helper.rowIsTop(n)){var l=WPTB_Helper.findAncestor(n,"wptb-preview-table");l.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(l)}}(new s).actionsRemove(),(new WPTB_TableStateSaveManager).tableStateSet()},o.onclick=function(e){var t,a=void 0,n=void 0,l=e.target.parentNode.activeElem,r=l.parentNode;if((t=l.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){n=t[1];var o={};o.kind=n,o.elemProt=l,o.tinyMceClear=!0,a=new WPTB_ElementObject(o),r.insertBefore(a.getDOMElement(),l.nextSibling)}else{a={};var i=l.cloneNode(!0);i.classList.remove("wptb-directlyhovered"),a.getDOMElement=function(){return i},applyGenericItemSettings(a),r.insertBefore(a.getDOMElement(),l.nextSibling),WPTB_Helper.wptbDocumentEventGenerate("wptb-inner-element:copy",l,a.getDOMElement())}WPTB_innerElementSet(a.getDOMElement()),new s(1,l).setParameters(l),(new WPTB_TableStateSaveManager).tableStateSet()},t.classList.contains("wptb-ph-element")){var i=void 0;(i=document.createElement("span")).classList.add("dashicons","dashicons-move","wptb-move-action"),i.draggable=!0,n.appendChild(i),i.ondragstart=function(e){var t,a=wp.template("wptb-element-icons-directories")({}),n=JSON.parse(a),l=void 0,r=e.target.parentNode.activeElem,o=void 0;if((t=r.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){o=t[1],r.classList.add("wptb-moving-mode"),n&&"object"===(void 0===n?"undefined":_typeof(n))&&n[o]&&(l=WPTB_Helper.getElementIcon(n[o])),e.dataTransfer.effectAllowed="move",e.dataTransfer.setDragImage(l,0,0),e.dataTransfer.setData("node","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptb-moving-mode","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptbElIndic-"+t[1],"wptbElIndic-"+t[1]);var i=e.target.parentNode.activeElem;if("text"==i.kind){var s=i.parentNode.parentNode;if(WPTB_Helper.rowIsTop(s)){var d=WPTB_Helper.findAncestor(s,"wptb-preview-table");d.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(d)}}}else c.style.display="none";c.actionsHide()},i.ondragend=function(e){WPTB_Helper.elementDragEndClear()}}n.style.display="flex",c.wptbActions=n}},this.setParameters=function(t){if(!c.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length?c.wptbActions=e[0]:c.wptbActions=!1}if(c.wptbActions&&c.wptbActions.classList.contains("wptb-actions")){c.wptbActions.style.display="flex";var a=t.getBoundingClientRect(),n=document.getElementsByClassName("wptb-container")[0],l=function(){var e=t.getBoundingClientRect();c.wptbActions.style.top=parseFloat(e.top)-15+"px"};n.removeEventListener("scroll",l,!1),c.wptbActions.style.top=parseFloat(a.top)-15+"px",c.wptbActions.style.left=parseFloat(a.right)-parseFloat(c.wptbActions.clientWidth)+1+"px",c.wptbActions.style.display="flex",t.classList.add("wptb-directlyhovered"),n.addEventListener("scroll",l,!1)}},this.leaveFromField=function(e,t,a){if(!c.wptbActions){var n=document.getElementsByClassName("wptb-actions");0<n.length?c.wptbActions=n[0]:c.wptbActions=!1}if(c.wptbActions){if(e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-actions")||e.relatedTarget.classList.contains("wptb-move-action")||e.relatedTarget.classList.contains("wptb-duplicate-action")||e.relatedTarget.classList.contains("wptb-delete-action")))return c.wptbActions||(c.wptbActions=document.getElementsByClassName("wptb-actions")[0]),void(c.wptbActions.onmouseleave=function(e){null!=e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&e.relatedTarget!=c.wptbActions.activeElem&&(WPTB_Helper.findAncestor(e.relatedTarget,"wptb-directlyhovered"),c.wptbActions.activeElem),(new s).leaveFromField(e,e.relatedTarget.parentNode.parentNode),e.target.activeElem.classList.remove("wptb-directlyhovered")});t.classList.remove("wptb-directlyhovered"),c.wptbActions.style.display="none",e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&(c.addActionField(1,e.relatedTarget.parentNode),c.setParameters(e.relatedTarget.parentNode))}},this.actionsRemove=function(){if(!c.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(c.wptbActions=e[0])}c.wptbActions&&c.wptbActions.parentNode.removeChild(c.wptbActions)},this.actionsHide=function(){if(!c.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(c.wptbActions=e[0])}c.wptbActions&&(c.wptbActions.style.opacity=0)}};!function(){var e=window.location.href;new RegExp("[?&]page=wptb-builder").exec(e)&&document.addEventListener("DOMContentLoaded",function(){var l=WPTB_Helper.detectMode();if(l){var r=new XMLHttpRequest,e=ajaxurl+"?action=get_table&id="+l;r.open("GET",e,!0),r.setRequestHeader("Content-type","application/x-www-form-urlencoded"),r.onreadystatechange=function(e){if(4!=this.readyState||200!=this.status);else{var t=JSON.parse(r.responseText);if(document.getElementById("wptb-setup-name").value=t[0],t[1]){document.getElementsByClassName("wptb-table-generator")[0].style.display="none";var a=document.getElementsByClassName("wptb-table-setup")[0];a.appendChild(WPTB_Parser(t[1])),document.getElementsByTagName("body")[0],WPTB_Table();var n=document.querySelector(".wptb-preview-table");n&&(n.className.match(/wptb-element-((.+-)\d+)/i)||n.classList.add("wptb-element-main-table_setting-"+l),n.dataset.wptbTableContainerMaxWidth&&(a.style.maxWidth=n.dataset.wptbTableContainerMaxWidth+"px",n.tdDefaultWidth())),WPTB_Settings(),(new WPTB_TableStateSaveManager).tableStateSet(),WPTB_Helper.elementOptionsSet("table_setting",n),WPTB_Helper.elementStartScript(n,"table_setting"),WPTB_Helper.wptbDocumentEventGenerate("element:controls:active",n)}else document.getElementsByClassName("wptb-table-generator")[0].style.display="table"}},r.send(null)}else document.getElementsByClassName("wptb-table-generator")[0].style.display="table",(new WPTB_TableStateSaveManager).tableStateSet();document.counter=new ElementCounters,document.select=new MultipleSelect;WPTB_Initializer();settings=WPTB_Settings()})}();_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var WPTB_Cell=function(e,a){if(!a){(a=document.createElement("td")).style.padding=jQuery("#wptb-table-padding-number").val()+"px";var t=jQuery("#wptb-table-inner-border-number").val();""!=t&&0!=parseInt(t)&&(a.style.border=t+"px solid "+jQuery("#wptb-table-border-color").val()),a.classList.add("wptb-droppable","wptb-cell")}a.draggable=!1,e&&(a.onclick=e),a.ondblclick=function(e){if(e.stopPropagation(),!WPTB_Helper.findAncestor(a,"wptb-preview-table-manage-cells")&&e.target==e.currentTarget){WPTB_Helper.wptbDocumentEventGenerate("table:cell:dblclick",e.target);var t=WPTB_Helper.newElementProxy("text");t=t.getDOMElement(),a.appendChild(t),WPTB_innerElementSet(t)}},WPTB_innerElementSet(a),WPTB_Helper.controlsInclude(a,function(e,t){if(e&&"object"===(void 0===e?"undefined":_typeof(e))){var a=WPTB_Helper.findAncestor(t,"wptb-preview-table"),n=a.querySelector(".wptb-highlighted");if(n){var l=n.className.match(/wptb-element-((.+-)\d+)/i),r="";if(l&&Array.isArray(l)&&(r=l[1]),e.hasOwnProperty("cellWidth")){if(a.addColumnWidth(e.cellWidth),r){var o=document.querySelector(".wptb-el-"+r+"-cellWidthFixed");o&&!o.checked&&(o.checked=!0)}}else if(e.hasOwnProperty("cellWidthFixed"))if("checked"==e.cellWidthFixed){var i=WPTB_Helper.getColumnWidth(a,n);a.addColumnWidth(i)}else a.addColumnWidth(!1,!0);else if(e.hasOwnProperty("cellHeight")){if(a.addRowHeight(e.cellHeight),r){var s=document.querySelector(".wptb-el-"+r+"-cellHeightFixed");s&&!s.checked&&(s.checked=!0)}}else if(e.hasOwnProperty("cellHeightFixed"))if("checked"==e.cellHeightFixed){var d=WPTB_Helper.getRowHeight(a,n);a.addRowHeight(d)}else a.addRowHeight(!1,!0)}}});var o=a.getElementsByClassName("wptb-ph-element");if(0<o.length)for(var n=function(l){o[l].getDOMElement=function(){return o[l]},WPTB_innerElementSet(o[l]);var r=o[l].className.match(/wptb-element-((.+-)\d+)/i);r&&Array.isArray(r)&&function(){var e=r[1].split("-");o[l].kind=e[0],applyGenericItemSettings(o[l],r[1]);var a=o[l].getElementsByClassName("wptb-in-element");if(0<a.length)for(var t=function(e){var t={getDOMElement:function(){return a[e]}};applyGenericItemSettings(t)},n=0;n<a.length;n++)t(n)}()},l=0;l<o.length;l++)n(l);return this.getDOMElement=function(){return a},this.setCoords=function(e,t){var a=this.getDOMElement();a.dataset.yIndex=e,a.dataset.xIndex=t},this.getCoords=function(){var e,t=this.getDOMElement();return e.x=t.dataset.xIndex,e.y=t.dataset.yIndex,e},this.appendElement=function(e){getDOMElement().appendChild(e)},a.getCellDimensions=function(){var e=window.getComputedStyle(this,null),t=e.getPropertyValue("padding-left"),a=e.getPropertyValue("padding-right"),n=e.getPropertyValue("border-left-width"),l=e.getPropertyValue("border-right-width"),r=e.getPropertyValue("padding-top"),o=e.getPropertyValue("padding-bottom"),i=e.getPropertyValue("border-top-width"),s=e.getPropertyValue("border-bottom-width"),d=parseInt(this.offsetWidth,10)-parseInt(t,10)-parseInt(a,10)-parseInt(n,10)/2-parseInt(l,10)/2,c=parseInt(this.offsetHeight,10)-parseInt(r,10)-parseInt(o,10)-parseInt(i,10)/2-parseInt(s,10)/2,p=WPTB_Helper.findAncestor(this,"wptb-preview-table");if(p){var m=window.getComputedStyle(p,null),b=m.getPropertyValue("border-left-width"),u=m.getPropertyValue("border-right-width"),w=m.getPropertyValue("border-top-width"),g=m.getPropertyValue("border-bottom-width"),v=this.parentNode;if(v&&"tr"===v.nodeName.toLowerCase()){v.firstChild&&v.firstChild.dataset.xIndex===this.dataset.xIndex&&parseInt(b,10)>parseInt(n,10)&&(d+=-(parseInt(b,10)-parseInt(n,10))/2),v.lastChild&&v.lastChild.dataset.xIndex===this.dataset.xIndex&&parseInt(u,10)>parseInt(l,10)&&(d+=-(parseInt(u,10)-parseInt(l,10))/2);var f=v.parentNode;f&&"body"===f.nodeName.toLowerCase()&&(f.firstChild&&f.firstChild.firstChild.dataset.yIndex===this.dataset.yIndex&&parseInt(w,10)>parseInt(i,10)&&(c+=(parseInt(w,10)-parseInt(i,10))/2),f.lastChild&&f.lastChild.firstChild.dataset.yIndex===this.dataset.yIndex&&parseInt(g,10)>parseInt(s,10)&&(c+=(parseInt(g,10)-parseInt(s,10))/2))}}return{width:parseInt(d),height:parseInt(c)}},this},WPTB_DropHandle=function(i,e){var s=void 0,d=void 0,t=void 0,a=void 0,n=void 0,l=void 0;if(0==document.getElementsByClassName("wptb-drop-handle").length){(s=document.createElement("div")).classList.add("wptb-drop-handle"),(d=document.createElement("div")).classList.add("wptb-drop-border-marker"),t=document.createElement("div"),a=document.createElement("div"),n=document.createElement("div"),l=document.createElement("div"),t.classList.add("wptb-drop-border-marker-top"),a.classList.add("wptb-drop-border-marker-right"),n.classList.add("wptb-drop-border-marker-bottom"),l.classList.add("wptb-drop-border-marker-left"),d.appendChild(t),d.appendChild(a),d.appendChild(n),d.appendChild(l);var r=document.getElementsByTagName("body");0<r.length&&(r[0].appendChild(s),r[0].appendChild(d)),s.ondragenter=function(){},s.ondragover=function(e){e.preventDefault()},s.ondragleave=function(){},s.ondrop=function(e){e.preventDefault();var t=void 0;e.dataTransfer.getData("wptbElement")?t=(t=WPTB_Helper.newElementProxy(e.dataTransfer.getData("wptbElement"))).getDOMElement():((t=document.getElementsByClassName(e.dataTransfer.getData("node"))[0]).classList.remove("wptb-moving-mode"),t.classList.remove("wptb-moving-into-same-elem"),t.wptbMovingMode=1);var a=void 0;if("Drop Here"==s.dataset.text)"td"==(i=s.getDOMParentElement()).nodeName.toLowerCase()&&(a=s.getDOMParentElement()).appendChild(t);else{var n=s.getDOMParentElement();if(a=n.parentNode,"Above Element"==s.dataset.text)a.insertBefore(t,n);else if("Below Element"==s.dataset.text){var l=n.nextSibling;a.insertBefore(t,l)}}var r=a.parentNode;if(WPTB_Helper.rowIsTop(r)){var o=WPTB_Helper.findAncestor(r,"wptb-preview-table");o.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(o)}(s.style.display="none",d.style.display="none",WPTB_innerElementSet(t),t.classList.contains("wptb-image-container")&&1!=t.wptbMovingMode)||((new WPTB_TableStateSaveManager).tableStateSet(),t.wptbMovingMode)},document.querySelector(".wptb-container").onscroll=function(){s.style.display="none",d.style.display="none"}}else s=document.getElementsByClassName("wptb-drop-handle")[0],d=document.getElementsByClassName("wptb-drop-border-marker")[0];if(!i||"td"!=i.nodeName.toLowerCase()||0==i.getElementsByClassName("wptb-ph-element").length){var o=void 0;if("td"==i.localName?o=i.parentNode:"div"==i.localName&&i.classList.contains("wptb-ph-element")&&(o=i.parentNode.parentNode),WPTB_Helper.rowIsTop(o))if(WPTB_Helper.findAncestor(o,"wptb-preview-table").classList.contains("wptb-table-preview-head")){for(var c=e.dataTransfer.types,p=!1,m=0;m<c.length;m++){var b=c[m].match(/wptbelindic-([a-z]+)/i);if(b&&"text"!=b[1]){p=!0;break}}if(p)return}s.style.width=i.offsetWidth+"px";var u=i.offsetHeight,w=i.getBoundingClientRect(),g=parseFloat(w.left),v=void 0;if(s.style.left=g+"px",-1!=e.dataTransfer.types.indexOf("wptb-moving-mode")){var f=document.getElementsByClassName("wptb-moving-mode")[0];i==f?(s.classList.add("wptb-moving-into-same-elem"),d.classList.add("wptb-moving-into-same-elem")):(s.classList.remove("wptb-moving-into-same-elem"),d.classList.remove("wptb-moving-into-same-elem"))}if(s.getDOMParentElement=function(){return i},s.style.display="block",d.style.display="block","td"!=i.nodeName.toLowerCase()){var h=null==e.offsetY?e.layerY:e.offsetY;v=parseFloat(w.top)-parseFloat(11),s.dataset.text="Above Element",u/2<h&&(v=parseFloat(w.top)+u-1,s.dataset.text="Below Element")}else s.dataset.text="Drop Here",v=parseFloat(w.top)+u/2-5;s.style.top=v+"px",d.style.top=w.top+"px",d.style.left=w.left+"px",(t=d.querySelector(".wptb-drop-border-marker-top")).style.width=parseFloat(i.offsetWidth)-parseFloat(1)+"px",(a=d.querySelector(".wptb-drop-border-marker-right")).style.height=parseFloat(w.bottom)-parseFloat(w.top)-1+"px",a.style.left=t.style.width,(n=d.querySelector(".wptb-drop-border-marker-bottom")).style.width=t.style.width,n.style.top=a.style.height,(l=d.querySelector(".wptb-drop-border-marker-left")).style.height=a.style.height}},ElementCounters=function(){var t=[];return t.text=0,t.image=0,t.list=0,t.button=0,this.increment=function(e){e in t&&t[e]++},this.nextIndex=function(e){if(e in t)return t[e]+1},this},WPTB_ElementObject=function(e){var t=void 0,a=void 0,n=void 0;if(e.elemProt){(t=e.elemProt.cloneNode(!0)).classList.remove("wptb-directlyhovered");var l=e.elemProt.className.match(/wptb-element-((.+-)\d+)/i);l&&Array.isArray(l)&&(a=l[1]),n=!0,e.tinyMceClear&&(t=WPTB_Helper.elementClearFromTinyMce(t))}else{a=void 0,n=!1,(t=document.createElement("div")).classList.add("wptb-"+e.kind+"-container","wptb-ph-element");var r="wptb-"+e.kind+"-content",o=wp.template(r);e.node=t;var i=o(e);i=i.replace(/\r|\n|\t/g,"").trim(),t.innerHTML=i}var s=t.querySelectorAll(".wptb-in-element");if(0<s.length)for(var d=function(e){var t={getDOMElement:function(){return s[e]}};applyGenericItemSettings(t)},c=0;c<s.length;c++)d(c);return window.addEventListener("item:onmouseenter",function(e){},!1),this.kind=e.kind,this.getDOMElement=function(){return t},applyGenericItemSettings(this,a,n),this},WPTB_ElementOptions=function(e,t,a){e.getDOMElement().addEventListener("click",function(){WPTB_Helper.elementOptionsSet(e.kind,this)},{capture:!0})};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var WPTB_Helper={hexToRgb:function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?"rgb("+parseInt(t[1],16)+","+parseInt(t[2],16)+","+parseInt(t[3],16)+")":null},rgbToHex:function(e){if(e){if(WPTB_Helper.isHex(e))return e;var t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?((?:[0-9]*[.])?[0-9]+)[\s+]?\)/i);return t&&5===t.length?"#"+("0"+Math.round(255*parseFloat(t[4],10)).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[1],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[2],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[3],10).toString(16).toUpperCase()).slice(-2):(t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===t.length?"#"+("0"+parseInt(t[1],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[2],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[3],10).toString(16).toUpperCase()).slice(-2):""}return""},isHex:function(e){return new RegExp("^#(?:[A-Fa-f0-9]{3}){1,2}$").test(e)},getElementIcon:function(e){location.protocol,location.hostname;var t=document.createElement("img");return t.src=e,t},elementDragEndClear:function(){var e=document.getElementsByClassName("wptb-moving-mode");if(0<e.length)for(var t=0;t<e.length;t++)e[t].classList.remove("wptb-moving-mode");var a=document.getElementsByClassName("wptb-drop-handle");if(0<a.length)for(var n=0;n<a.length;n++)a[n].style.display="none";var l=document.getElementsByClassName("wptb-drop-border-marker");if(0<l.length)for(var r=0;r<l.length;r++)l[r].style.display="none"},linkHttpCheckChange:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1];if(e){if(e.match(/^(javascript:)(.+)$/))return e;if(e.match(/^\/([\S]+)$/)){if(t){var a=document.location.origin;return a.match(/^(.+)\/$/)&&(a=a.slice(-1)),""+a+e}return e}if(-1!=e.indexOf("http://")||-1!=e.indexOf("https://"))return e;var n=e.split("/"),l=void 0;return Array.isArray(n)&&0<n.length&&(l=n[n.length-1]),document.location.protocol+"//"+l}return""},dataTitleColumnSet:function(e){for(var t=e.rows,a=t[0],n=getComputedStyle(a),l=a.children,r={},o=0;o<l.length;o++){for(var i=l[o].children,s=0;s<i.length;s++){var d=i[s];if(d.classList.contains("wptb-ph-element"))if("text"==d.className.match(/wptb-element-(.+)-(\d+)/i)[1]){var c=d.querySelector("p"),p=c.textContent,m=c.style.textAlign;r[l[o].dataset.xIndex]=[p,d.style.fontSize,d.style.color,n.backgroundColor,m];break}}r[l[o].dataset.xIndex]||(r[l[o].dataset.xIndex]=["","","",n.backgroundColor,""])}for(var b=1;b<t.length;b++)for(var u=t[b].children,w=0;w<u.length;w++)r[u[w].dataset.xIndex]?(u[w].dataset.wptbTitleColumn=r[u[w].dataset.xIndex][0],u[w].dataset.wptbTitleColumnFontSize=r[u[w].dataset.xIndex][1],u[w].dataset.wptbTitleColumnColor=r[u[w].dataset.xIndex][2],u[w].dataset.wptbTitleBackgroundColor=r[u[w].dataset.xIndex][3],u[w].dataset.wptbTitleAlign=r[u[w].dataset.xIndex][4]):(u[w].dataset.wptbTitleColumn="",u[w].dataset.wptbTitleColumnFontSize="",u[w].dataset.wptbTitleColumnColor="",u[w].dataset.wptbTitleBackgroundColor="",u[w].dataset.wptbTitleAlign="")},findAncestor:function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e},rowIsTop:function(e){return e.parentNode.children[0]==e},getSelectionText:function(){return window.getSelection?window.getSelection().toString():document.selection.createRange().text},elementOptionsPanelClear:function(){var e=document.getElementById("element-options-group");e&&(e.innerHTML="")},wpColorPickerCheckChangeForTableStateSaving:function(e){if("external"==e.originalEvent.type)(new WPTB_TableStateSaveManager).tableStateSet();else if(WPTB_Helper.findAncestor(e.target,"wp-picker-container")&&("square"==e.originalEvent.type||"strip"==e.originalEvent.type)){var t=document.getElementsByTagName("body")[0];t.removeEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1),t.addEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1)}},irisStripMouseUpStateSaveManager:function(){(new WPTB_TableStateSaveManager).tableStateSet(),document.getElementsByTagName("body")[0].removeEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1)},wpColorPickerClear:function(e,t){var a=void 0;t?(a=[document.getElementById(e)]).length=1:a=document.getElementsByClassName(e);for(var n=0;n<a.length;n++){var l=WPTB_Helper.findAncestor(a[n],"wp-picker-container");if(l){var r=l.parentNode;r.removeChild(l);var o=document.createElement("input");t?o.setAttribute("id",e):o.classList.add("wptb-element-property",e),o.value="",r.appendChild(o)}}},detectMode:function(){var e=window.location.href,t=new RegExp("[?&]table(=([^&#]*)|&|#|$)").exec(e);return!!t&&(t[2]?decodeURIComponent(t[2].replace(/\+/g," ")):"")},getColumnWidth:function(e,t){for(var a=t.dataset.xIndex,n=e.querySelectorAll('[data-x-index="'+a+'"]'),l=t.getCellDimensions().width,r=0;r<n.length;r++)l>n[r].getCellDimensions().width&&(l=n[r].getCellDimensions().width);return l},getRowHeight:function(e,t){for(var a=t.dataset.yIndex,n=e.querySelectorAll('[data-y-index="'+a+'"]'),l=t.getCellDimensions().height,r=0;r<n.length;r++)l>n[r].getCellDimensions().height&&(l=n[r].getCellDimensions().height);return l},newElementProxy:function(e){if(e)return new WPTB_ElementObject({kind:e})},wpColorPickerChange:function(e,t){var a=void 0;a=t?t.color.toString():"";var n,l,r,o=WPTB_Helper.findAncestor(e.target,"wp-picker-input-wrap").getElementsByClassName("wptb-color-picker")[0];l=(n=o.dataset.element.match(/wptb-options-(.+)-(\d+)/i))[1],r=n[2];var i=document.getElementsByClassName("wptb-element-"+l+"-"+r)[0];if("button"==l)"button-text-color"==o.dataset.type?i.getElementsByClassName("wptb-button")[0].style.color=a:i.getElementsByClassName("wptb-button")[0].style.backgroundColor=a;else if("list"==l){var s=i.querySelectorAll("p");if(0<s.length)for(var d=0;d<s.length;d++)s[d].style.color=a}else if("star_rating"==l){if("star-color"==o.dataset.type)for(var c=i.querySelectorAll("li"),p=0;p<c.length;p++)for(var m=c[p].getElementsByTagName("span"),b=0;b<m.length;b++)m[b].style.fill=a;else if("numeral-rating-color"==o.dataset.type){i.querySelector(".wptb-number-rating").style.color=a}}else i.style.color=a},numberImputSize:function(e,t,a){e.onkeydown=function(){var e=this.value;0==(e=String(e))[0]?this.value="":(e=e.substring(0,t),this.value=e)},e.onkeyup=function(){var e=this.value;parseInt(e,10)>parseInt(a,10)&&(this.value=a),(new WPTB_TableStateSaveManager).tableStateSet()}},ucfirst:function(e){return e.charAt(0).toUpperCase()+e.slice(1)},wptbDocumentEventGenerate:function(e,t,a){if(e&&t){a||(a=!0);var n=new CustomEvent(e,{detail:a,bubbles:!0});t.dispatchEvent(n)}},elementStartScript:function(e,t){if(!t){var a=e.className.match(/wptb-element-(.+)-(\d+)/i);a&&Array.isArray(a)&&(t=a[1])}t&&t in WPTB_ElementsScriptsLauncher&&WPTB_ElementsScriptsLauncher[t](e)},deleteEventHandlers:function(e){if(e){jQuery(e).off();var t=e.children;if(t)for(var a=0;a<t.length;a++)WPTB_Helper.deleteEventHandlers(t[a])}},replaceAll:function(e,t,a){return e.split(t).join(a)},elementClearFromTinyMce:function(e){var t=e.querySelectorAll(".mce-content-body");if(0<t.length)for(var a=0;a<t.length;a++)t[a].classList.remove("mce-content-body");var n=e.querySelectorAll("[data-mce-style]");if(0<n.length)for(var l=0;l<n.length;l++)n[l].removeAttribute("data-mce-style");var r=e.querySelectorAll(".mce-edit-focus");if(0<r.length)for(var o=0;o<r.length;o++)r[o].classList.remove("mce-edit-focus");var i=e.querySelectorAll("[contenteditable]");if(0<i.length)for(var s=0;s<i.length;s++)i[s].removeAttribute("contenteditable");var d=e.querySelectorAll("[spellcheck]");if(0<d.length)for(var c=0;c<d.length;c++)d[c].removeAttribute("spellcheck");var p=e.querySelectorAll("[id^=mce_]");if(0<p.length)for(var m=0;m<p.length;m++)p[m].removeAttribute("id");return e},elementOptionContainerCustomClassSet:function(e,t){if(e&&t){var a=WPTB_Helper.findAncestor(e,"wptb-element-option");a&&a.classList.add(t)}},elementOptionContainerAdditionalStyles:function(e,t){if(e&&t){var a=WPTB_Helper.findAncestor(e,"wptb-element-option"),n=t.split(";");if(a&&n){var l=function(e,t){e&&(containerStyleStrArr=e.split(":"),containerStyleStrArr&&Array.isArray(containerStyleStrArr)&&(t.style[containerStyleStrArr[0]]=containerStyleStrArr[1]))};if(n&&Array.isArray(n))for(var r=0;r<n.length;r++)n[r]&&l(n[r],a);else l(n,a)}}},controlsInclude:function(i,s){i&&"object"===(void 0===i?"undefined":_typeof(i))&&s&&"function"==typeof s&&i.addEventListener("element:controls:active",function(){if(!i.hasOwnProperty("controlConnectFunctionsName")||!Array.isArray(i.controlConnectFunctionsName)||-1==i.controlConnectFunctionsName.indexOf(s.name)){var e=i.className.match(/wptb-element-(.+)-(\d+)/i),t=void 0;if(e&&Array.isArray(e)&&(t=e[1]),t){var a=document.querySelector(".wptb-element-options.wptb-options-"+e[1]+"-"+e[2]);if(!a)return;for(var n=a.querySelectorAll(".wptb-element-option"),l=0;l<n.length;l++){var o=n[l].querySelector(".wptb-element-property");o&&function(){var e=new RegExp("wptb-el-"+t+"-(\\d+)-([a-zA-Z0-9_-]+)","i"),l=o.className.match(e);if(l&&Array.isArray(l)){var r=l[0];i.addEventListener("wptb-control:"+r,function(){var e={},t=l[2],a=document.getElementsByClassName(r);if(0<a.length&&t){var n=WPTB_Helper.targetControlValueGet(a);e[t]=n}s(e,i)},!1)}}()}i.controlConnectFunctionsName||Array.isArray(i.controlConnectFunctionsName)||(i.controlConnectFunctionsName=[]),i.controlConnectFunctionsName.push(s.name)}}},!1)},oneControlInclude:function(n,l,e){if(!n||"object"!==(void 0===n?"undefined":_typeof(n))||"function"!=typeof l||"string"!=typeof e)return!1;var t=n.className.match(/wptb-element-((.+-)\d+)/i);if(t&&Array.isArray(t)){var a="wptb-"+t[1].split("-")[0]+"-control-stack",r=wp.template(a)({container:"."+t[0]}),o=JSON.parse(r);if(o&&"object"===(void 0===o?"undefined":_typeof(o))&&o.hasOwnProperty(e)){var i="wptb-el-"+t[1]+"-"+e;n.addEventListener("wptb-control:"+i,function(e){var t=document.getElementsByClassName(i);if(0<t.length){var a=WPTB_Helper.targetControlValueGet(t);l(a,n)}},!1)}}},innerElementCopyIncludeHandler:function(a,n){a&&"object"===(void 0===a?"undefined":_typeof(a))&&"function"==typeof n&&a.addEventListener("wptb-inner-element:copy",function(e){var t=e.detail;t&&(WPTB_Helper.elementClearFromTinyMce(t),n(t,a))},!1)},appearDependOnControl:function(t,e){if(Array.isArray(t)){var a=t[0],n=e.match(/wptb-el-((.+-)\d+)-(.+)/i);if(n&&Array.isArray(n)){var l=n[3],r=e.replace(l,a),o=document.getElementsByClassName(r);if(0<o.length){o=o[0];var i=document.getElementsByClassName(e);if(0<i.length){i=i[0];var s=WPTB_Helper.findAncestor(i,"wptb-element-option");if(s){var d=function(e,t){if(e){var a=document.getElementsByClassName(e);if(0<a.length){var n=WPTB_Helper.targetControlValueGet(a);t[1]&&Array.isArray(t[1])&&-1!==t[1].indexOf(n)?s.style.display="block":t[2]&&Array.isArray(t[2])&&-1!==t[2].indexOf(n)&&(s.style.display="none")}}};d(r,t),o.addEventListener("change",function(e){d(r,t)},!1)}}}}}},controlsStateManager:function(e,t){var a=document.getElementsByClassName(e);if(0<a.length){var n=e.match(/wptb-el-((.+-)\d+)-(.+)/i);if(n&&Array.isArray(n)){if(document.querySelector(".wptb-element-"+n[1])){var l=void 0,r={},o=void 0;if(0==(l=document.getElementsByClassName("wptb-element-datas")).length||""==l[0].innerHTML){var i=WPTB_Helper.targetControlValueGet(a);r["data-"+e]=i,(o={})["tmpl-wptb-el-datas-"+n[1]]=r,o=JSON.stringify(o),0==l.length?((l=document.createElement("script")).setAttribute("type","text/html"),l.setAttribute("class","wptb-element-datas")):l=l[0],l.innerHTML=o,document.getElementsByTagName("body")[0].appendChild(l)}else if((o=(l=l[0]).innerHTML)&&(o=o.trim(),(o=JSON.parse(o))&&"object"===(void 0===o?"undefined":_typeof(o))))if(t){var s=WPTB_Helper.targetControlValueGet(a);"tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])||(o["tmpl-wptb-el-datas-"+n[1]]={}),o["tmpl-wptb-el-datas-"+n[1]]["data-"+e]=s,l.innerHTML=JSON.stringify(o)}else if("tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])&&"data-"+e in o["tmpl-wptb-el-datas-"+n[1]]){if("tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])&&"data-"+e in o["tmpl-wptb-el-datas-"+n[1]])for(var d=0;d<a.length;d++)if("checkbox"==a[d].type){var c=void 0;"checked"==(c=a[d].name?o["tmpl-wptb-el-datas-"+n[1]]["data-"+e][a[d].name]:o["tmpl-wptb-el-datas-"+n[1]]["data-"+e])?a[d].checked=!0:"unchecked"==c&&(a[d].checked=!1)}else a[d].value=o["tmpl-wptb-el-datas-"+n[1]]["data-"+e]}else{var p=WPTB_Helper.targetControlValueGet(a);"tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])||(o["tmpl-wptb-el-datas-"+n[1]]={}),o["tmpl-wptb-el-datas-"+n[1]]["data-"+e]=p,l.innerHTML=JSON.stringify(o)}}}}},targetControlValueGet:function(e){for(var t=void 0,a=0;a<e.length;a++)"checkbox"==e[a].type&&e[a].name?(t||(t={}),1==e[a].checked?t[e[a].name]="checked":t[e[a].name]="unchecked"):"checkbox"==e[a].type?t=1==e[a].checked?"checked":"unchecked":e[a].type?t=e[a].value:e[a].dataset.alignmentValue&&e[a].classList.contains("selected")&&(t=e[a].dataset.alignmentValue);return t},elementControlsStateCopy:function(e,t){if(e&&t){var a=e.className.match(/wptb-element-((.+-)\d+)/i),n=t.className.match(/wptb-element-((.+-)\d+)/i);if(a&&Array.isArray(a)&&n&&Array.isArray(n)){var l=a[1],r=n[1],o=document.getElementsByClassName("wptb-element-datas");if(0<o.length){var i=(o=o[0]).innerHTML;if(i&&(i=i.trim(),(i=JSON.parse(i))&&"object"===(void 0===i?"undefined":_typeof(i)))){var s=i["tmpl-wptb-el-datas-"+l];if(s&&"object"===(void 0===s?"undefined":_typeof(s))){var d={};Object.keys(s).forEach(function(e){var t=s[e],a=e.replace(l,r);d[a]=t}),0<Object.keys(d).length&&(i["tmpl-wptb-el-datas-"+r]=d,i=JSON.stringify(i),o.innerHTML=i)}}}}}},elementControlsStateDelete:function(e,t){var a=e.className.match(/wptb-element-(.+)-(\d+)/i),n=document.getElementsByTagName("body")[0],l=n.getElementsByClassName("wptb-element-datas");if(a&&Array.isArray(a)&&0<l.length){var r=(l=l[0]).innerHTML;r&&(r=r.trim(),(r=JSON.parse(r))&&"object"===(void 0===r?"undefined":_typeof(r))&&"tmpl-wptb-el-datas-"+a[1]+"-"+a[2]in r&&(t?r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]]&&"object"===_typeof(r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]])&&"data-wptb-el-"+a[1]+"-"+a[2]+"-"+t in r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]]&&delete r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]]["data-wptb-el-"+a[1]+"-"+a[2]+"-"+t]:delete r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]],0==Object.keys(r).length?n.removeChild(l):(r=JSON.stringify(r),l.innerHTML=r)))}},elementOptionsSet:function(e,t){var a,s,d,n="wptb-"+e+"-control-stack",l=wp.template(n),r=void 0,o=void 0,c=void 0,p=document.createElement("div"),i=document.createElement("div"),m=t.className.match(/wptb-element-((.+-)\d+)/i);if(!m){var b=WPTB_Helper.detectMode();if(t.classList.contains("wptb-preview-table"))t.classList.add("wptb-element-main-table_setting-"+b);else if(t.classList.contains("wptb-cell")){var u=document.querySelector(".wptb-element-table_cell_setting-"+b);u&&u.classList.remove("wptb-element-table_cell_setting-"+b),t.classList.add("wptb-element-table_cell_setting-"+b)}m=t.className.match(/wptb-element-((.+-)\d+)/i)}if(a={container:"."+m[0]},s=m[0],d=m[1],t.classList.contains("wptb-preview-table"))o="table-settings-group",c="wptb-element-option";else if(t.classList.contains("wptb-cell"))o="element-cell-options-group",c="wptb-element-option",this.activateSection("cell_settings");else{for(var w=document.getElementById("element-options-group").childNodes,g=0;g<w.length;g++)w[g].style&&(w[g].style.display="none");this.activateSection("options_group"),o="element-options-group",c="wptb-element-option"}p.classList.add("wptb-element-options","wptb-options-"+m[1]),i.classList.add("wptb-element-options-scripts","wptb-options-"+m[1]);var v=l(a),f=JSON.parse(v);r=document.getElementById(o);for(var h=[].concat(_toConsumableArray(r.children)),y=0;y<h.length;y++)r.removeChild(h[y]);document.getElementById(o).appendChild(p),document.getElementById(o).appendChild(i),p.style.display="block";var S=[],T=[];if(Object.keys(f).forEach(function(e){var t=f[e];t.controlKey=e;var a=wp.template("wptb-"+t.type+"-control");t.elemContainer=s,t.elementControlTargetUnicClass="wptb-el-"+d+"-"+t.controlKey;var n=a(t);"appearDependOnControl"in t&&Array.isArray(t.appearDependOnControl)&&T.push([t.appearDependOnControl,t.elementControlTargetUnicClass]);var l=document.createElement("div");l.classList.add(c,"wptb-settings-items"),t.customClassForContainer&&l.classList.add(t.customClassForContainer),t.containerAdditionalStyles&&l.setAttribute("style",t.containerAdditionalStyles),l.innerHTML=n,p.appendChild(l);var r=l.getElementsByTagName("wptb-template-script");if(0<r.length){var o=(r=r[0]).innerText;l.removeChild(r);var i=document.createElement("script");i.setAttribute("type","text/javascript"),i.innerHTML=o.replace(/\r|\n|\t/g,"").trim(),S.push(i)}0}),0<S.length)for(var C=0;C<S.length;C++)i.appendChild(S[C]);for(var B=0;B<T.length;B++)WPTB_Helper.appearDependOnControl(T[B][0],T[B][1]);WPTB_Helper.wptbDocumentEventGenerate("element:controls:active",t)},managerExternalCssStyles:function(e,t,a,n){var l=e.match(/wptb-element-main(.+)-(\d+)/i);if(!l||!Array.isArray(l)){var r=document.getElementsByClassName("wptb-preview-table");if(0<r.length){var o=(r=r[0]).className.match(/wptb-element-main(.+)-(\d+)/i);o&&Array.isArray(o)&&(t="."+o[0]+" "+t)}}var i=document.head;if(i){var s=i.querySelector("#styles-"+e);if(s){var d=s.innerHTML;if(d){var c=d.split("}");c.pop();for(var p=!1,m=0;m<c.length;m++){var b=c[m].split("{");if(b[0]===t){var u=b[1].split(";");u.pop();for(var w=!1,g=0;g<u.length;g++){if(u[g].split(":")[0]===a){n?u[g]=a+":"+n:u.splice(g,1),b[1]=u.join(";")?u.join(";")+";":"",w=!0;break}}w||n&&(b[1]+=a+":"+n+";"),b[1]?c[m]=b[0]+"{"+b[1]:c.splice(m,1),c.join("}")?s.innerHTML=c.join("}")+"}":i.removeChild(s),p=!0;break}}p||(s.innerHTML=n?d+t+"{"+a+":"+n+";}":d)}else n?s.innerHTML=t+"{"+a+":"+n+";}":i.removeChild(s)}else if(n){var v=document.createElement("style");v.setAttribute("id","styles-"+e),v.classList.add("styles-wptb-elements"),v.innerHTML=t+"{"+a+":"+n+";}",i.appendChild(v)}}},registerSections:function(e){var a=this;this.sections={},Array.isArray(e)||(e=[e]),e.map(function(e){var t=document.querySelector("[data-wptb-section="+e+"]");t&&(a.sections[e]=t)})},activateSection:function(a){var n=this,l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"block";this.triggerSectionEvent(a),Object.keys(this.sections).map(function(e){if(Object.prototype.hasOwnProperty.call(n.sections,e)){var t=a===e?l:"none";n.sections[e].style="display: "+t+" !important"}})},setupSectionButtons:function(){var e=Array.from(document.querySelectorAll("[data-wptb-section-button")),n=this;e.map(function(t){var a=t.dataset.wptbSectionButton;t.addEventListener("click",function(){var e=t.dataset.wptbSectionDisplayType;n.activateSection(a,e)}),document.addEventListener("sectionChanged",function(e){e.detail===a?(t.classList.remove("disabled"),t.classList.add("active")):(t.classList.remove("active"),t.classList.add("disabled"))})})},setupPanelToggleButtons:function(){var t=jQuery;t(".wptb-panel-toggle-group").each(function(){var e=t(this);t(this).find(".toggle-icon").click(function(){e.find(".wptb-panel-toggle-target").slideToggle(),e.toggleClass("wptb-panel-toggle-content")})})},triggerSectionEvent:function(e){var t=new CustomEvent("sectionChanged",{detail:e});document.dispatchEvent(t)},setupSidebarToggle:function(e){var t=document.querySelector(e);t&&t.addEventListener("click",function(e){e.preventDefault(),document.body.classList.toggle("collapsed")})},externalCssStylesDelete:function(e){var t=document.head;if(t){var a=t.querySelector("#styles-"+e);a&&t.removeChild(a)}},externalCssStylesCopy:function(e,t){if(e){var a=e.className.match(/wptb-element-(.+)-(\d+)/i);if(a&&Array.isArray(a)){var n=a[0],l=document.head;if(l){var r=l.querySelector("#styles-"+n);if(r){var o=r.cloneNode(!0);o.removeAttribute("id","styles-"+n);var i=t.className.match(/wptb-element-(.+)-(\d+)/i);if(i&&Array.isArray(i)){o.setAttribute("id","styles-"+i[0]);var s=r.innerHTML,d=WPTB_Helper.replaceAll(s,n,i[0]);o.innerHTML=d,l.appendChild(o)}}}}}},elementsStylesConvertToObject:function(){for(var e=document.head.querySelectorAll(".styles-wptb-elements"),t={},a=0;a<e.length;a++){var n=e[a].getAttribute("id");n&&e[a].innerHTML&&(t[n]=e[a].innerHTML)}return 0!=Object.keys(t).length?JSON.stringify(t):""},elementsStylesSetFromObject:function(e){var n=document.head;if(n){var t=n.querySelectorAll(".styles-wptb-elements");if(0<t.length){t=[].concat(_toConsumableArray(t));for(var a=0;a<t.length;a++)n.removeChild(t[a])}if(e){var l=JSON.parse(e);0!=Object.keys(l).length&&Object.keys(l).forEach(function(e){var t=l[e],a=document.createElement("style");a.setAttribute("id",e),a.classList.add("styles-wptb-elements"),a.innerHTML=t,n.appendChild(a)})}}},saveTable:function(s,d,e){if(e||d||!s.target.dataset.wptbTableStateNumberSave&&0==window.wptbTableStateNumberShow||(window.wptbTableStateNumberShow,s.target.dataset.wptbTableStateNumberSave),!e){var t=document.querySelector(".wptb-edit-bar");if(t&&t.classList.contains("visible")){document.getElementsByClassName("wptb-preview-table")[0];WPTB_Helper.toggleTableEditMode()}}var c=new XMLHttpRequest,a=(wptb_admin_object?wptb_admin_object.ajaxurl:ajaxurl)+"?action=save_table",p=document.getElementById("wptb-setup-name").value.trim(),m=void 0,n=void 0,l=void 0;n=document.getElementsByClassName("wptb-preview-table");var r=void 0;((rs=WPTB_Helper.detectMode())||(rs=document.wptbId))&&(r=rs);var o=!1;if(0<n.length){var i=(n=n[0]).cloneNode(!0);r&&i.classList.contains("wptb-element-main-table_setting-startedid-0")&&(i.classList.remove("wptb-element-main-table_setting-startedid-0"),i.classList.add("wptb-element-main-table_setting-"+r),o=!0),i.columns=n.columns,n=(n=WPTB_Stringifier(i)).outerHTML}else n="";if(!e){l="";var b=document.getElementsByClassName("wptb-element-datas");0<b.length&&b[0].innerHTML&&(l=b[0].innerHTML,o&&(l=WPTB_Helper.replaceAll(l,"tmpl-wptb-el-datas-main-table_setting-startedid-0","tmpl-wptb-el-datas-main-table_setting-"+r),l=WPTB_Helper.replaceAll(l,"data-wptb-el-main-table_setting-startedid-0","data-wptb-el-main-table_setting-"+r)))}var u=WPTB_Helper.elementsStylesConvertToObject();if(o&&(u=WPTB_Helper.replaceAll(u,".wptb-element-main-table_setting-startedid-0",".wptb-element-main-table_setting-"+r)),""===p&&""===n){var w="";return""===p&&(w+="You must assign a name to the table before saving it.</br>"),""===n&&(w+="Table wasn't created"),(m=document.getElementById("wptb-messaging-area")).innerHTML='<div class="wptb-error wptb-message">Error: '+w+"</div>",m.classList.add("wptb-warning"),void setTimeout(function(){m.removeChild(m.firstChild)},4e3)}var g={title:p,content:n,elements_datas:l,elements_styles:u,security_code:wptb_admin_object.security_code};e&&(g.preview_saving=e),r&&(g.id=r),g=JSON.stringify(g),c.open("POST",a,!0),c.setRequestHeader("Content-type","application/json; charset=utf-8"),c.onreadystatechange=function(e){if(4==this.readyState&&200==this.status){var t=JSON.parse(c.responseText);if(m=document.getElementById("wptb-messaging-area"),"saved"==t[0]){var a=document.location.href.replace("#",""),n=new RegExp("&table=(.+)","i");return a=a.replace(n,""),window.history.pushState(null,null,a+"&table="+t[1]),void WPTB_Helper.saveTable(s,!0)}if("edited"==t[0]&&d){document.wptbId=t[1],m.innerHTML='<div class="wptb-success wptb-message">Table "'+p+'" was successfully saved.</div>',document.getElementsByClassName("wptb-embed-btn")[0].classList.remove("wptb-button-disable"),document.getElementById("wptb-embed-shortcode").value="[wptb id="+t[1]+"]";document.querySelector(".wptb-preview-table");var l=document.getElementsByClassName("wptb-preview-btn");if(0<l.length){(l=l[0]).classList.remove("wptb-button-disable");var r=l.dataset.previewHref;r=r.replace("empty",t[1]),l.setAttribute("href",r)}s.target.dataset.wptbTableStateNumberSave=window.wptbTableStateNumberShow;var o=document.getElementsByClassName("wptb-save-btn");0<o.length&&((o=o[0]).classList.add("wptb-save-disabled"),o.classList.remove("active"))}else if("edited"==t[0]){m.innerHTML='<div class="wptb-success wptb-message">Table "'+p+'" was successfully updated.</div>',s.target.dataset.wptbTableStateNumberSave=window.wptbTableStateNumberShow;var i=document.getElementsByClassName("wptb-save-btn");0<i.length&&((i=i[0]).classList.add("wptb-save-disabled"),i.classList.remove("active"))}else{if("preview_edited"==t[0])return;m.innerHTML='<div class="wptb-error wptb-message">Safety problems</div>'}m.classList.add("wptb-success"),setTimeout(function(){m.removeChild(m.firstChild)},4e3)}},c.send(g)},clickOnFreeSpace:function(){var e=document.querySelector("#wptb-cell_mode_background");if(!e||!e.classList.contains("visible")){this.activateSection("elements");var t=document.getElementById("wpcd_fixed_toolbar");t.hasAttribute("data-toolbar-active-id")&&document.getElementById(t.getAttribute("data-toolbar-active-id")).classList.remove("toolbar-active");var a=document.querySelector(".wptb-preview-table");a&&WPTB_Helper.elementOptionsSet("table_setting",a)}},elementAjax:function(e,n){var l=new XMLHttpRequest,t=(wptb_admin_object?wptb_admin_object.ajaxurl:ajaxurl)+"?action=wptb_element_ajax",a=void 0,r=n.className.match(/wptb-element-(.+)-(\d+)/i);r&&Array.isArray(r)&&(a=r[1]);var o={element_ajax_data:e,element_name:a,security_code:wptb_admin_object.security_code};o=JSON.stringify(o),l.open("POST",t,!0),l.setRequestHeader("Content-type","application/json; charset=utf-8"),l.onreadystatechange=function(e){if(4==this.readyState&&200==this.status){var t=JSON.parse(l.responseText),a=void 0;a=t&&Array.isArray(t)&&"element_ajax_responce"==t[0]?{value:t[1]}:"",WPTB_Helper.wptbDocumentEventGenerate("wptb-element:ajax-response",n,a)}},l.send(o)},toggleTableEditMode:function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0],t=document.getElementsByClassName("wptb-edit-bar"),a=document.getElementById("wptb-cell_mode_background"),n=document.getElementById("wptb-left-scroll-panel-curtain"),l=document.getElementById("wptb-left-scroll-panel-cell-settings"),r=document.getElementsByClassName("wptb-preview-table");if(0<r.length&&(r=r[0]),0<t.length)for(var o=0;o<t.length;o++)if(t[o].classList.contains("visible")){document.select.deactivateMultipleSelectMode(),t[o].classList.remove("visible"),a.classList.remove("visible"),n.classList.remove("visible"),l.classList.remove("visible"),r.parentNode.classList.remove("wptb-preview-table-manage-cells");var i=r.getElementsByTagName("td");if(0<i.length)for(var s=0;s<i.length;s++)i[s].classList.remove("wptb-highlighted")}else e||(document.select.activateMultipleSelectMode(),t[o].classList.add("visible"),a.classList.add("visible"),n.classList.add("visible"),r.parentNode.classList.add("wptb-preview-table-manage-cells"))},checkingDimensionValue:function(e,t){if(e=String(e),t=String(t),e&&t){var a=e.indexOf(t);return-1!=a&&a==e.length-t.length}return!1},checkSetGetStyleSizeValue:function(e,t,a,n){var l=e.style[t];if((l=String(l))&&!n||WPTB_Helper.checkingDimensionValue(l,n)){if(!n)return l}else{var r=window.getComputedStyle(e);if(a&&r.getPropertyValue(a)&&n&&!WPTB_Helper.checkingDimensionValue(r.getPropertyValue(a),n)){if(!n)return!1;e.style[t]=null}else{if(!n)return r.getPropertyValue(a);e.style[t]=r.getPropertyValue(a)}}return e.style[t]},checkSetGetStyleColorValue:function(e,t,a){var n=3<arguments.length&&void 0!==arguments[3]&&arguments[3],l=e.style[t];if(l){if(!n)return l}else{var r=window.getComputedStyle(e,null);if(r&&r.getPropertyValue(a)){if(!n)return r.getPropertyValue(a);l=WPTB_Helper.rgbToHex(r.getPropertyValue(a)),WPTB_Helper.isHex(l)?e.style[t]=l:e.style[t]=""}else{if(!n)return"";e.style[t]=""}}},checkSetGetStyleValue:function(e,t,a){var n=3<arguments.length&&void 0!==arguments[3]&&arguments[3],l=e.style[t];if(l){if(!n)return l}else{var r=window.getComputedStyle(e,null);if(r&&r.getPropertyValue(a)){if(!n)return r.getPropertyValue(a);e.style[t]=r.getPropertyValue(a)}else if(!n)return""}},getValueMaxCountSameElementsInArray:function(e){if(e&&Array.isArray(e)){for(var t={},a=0;a<e.length;a++)t[e[a]]?t[e[a]]++:t[e[a]]=1;var n=void 0;for(var l in t)n?t[n]<t[l]&&(n=l):n=l;return n}},recalculateIndexes:function(e){for(var t=e.getElementsByTagName("tr"),a=void 0,n=0,l=0,r=[],o=0;o<t.length;o++){a=t[o].getElementsByTagName("td"),null==r[o]&&(r[o]=[]);for(var i=0,s=0;s<a.length;s++){if(null!=r[o][s])for(var d=0;d<100;d++){if(null==r[o][i]){r[o][i]=a[s],a[s].dataset.xIndex=i;break}i++}else r[o][s]=a[s],a[s].dataset.xIndex=i;if(a[s].dataset.yIndex=o,1<a[s].colSpan)for(var c=1;c<a[s].colSpan;c++)i++,r[o][i]="tdDummy";if(1<a[s].rowSpan)for(var p=1;p<a[s].rowSpan;p++){null==r[o+p]&&(r[o+p]=[]);for(var m=0;m<a[s].colSpan;m++)r[o+p][i-a[s].colSpan+1+m]="tdDummy"}i++,n<s&&(n=s)}0==o&&(l=i)}e.columns=n,e.maxCols=l},tableRowsColorsReinstall:function(e){var t=e.className.match(/wptb-element-main(.+)-(\d+)/i);if(t&&Array.isArray(t)){var a="";a="0"==t[t.length-1]?"startedid-0":t[t.length-1];var n=document.querySelector(".wptb-el-main-table_setting-"+a+"-tableHeaderBackground");if(n){var l={value:n.value};WPTB_Helper.wptbDocumentEventGenerate("controlColor:change",n,l)}var r=document.querySelector(".wptb-el-main-table_setting-"+a+"-tableEvenRowBackground");if(r){var o={value:r.value};WPTB_Helper.wptbDocumentEventGenerate("controlColor:change",r,o)}var i=document.querySelector(".wptb-el-main-table_setting-"+a+"-tableOddRowBackground");if(i){var s={value:i.value};WPTB_Helper.wptbDocumentEventGenerate("controlColor:change",i,s)}}}},WPTB_Initializer=function(){var e=document.body;columnsDecrementButton=e.getElementsByClassName("wptb-input-number-decrement")[0],columnsIncrementButton=e.getElementsByClassName("wptb-input-number-increment")[0],rowsDecrementButton=e.getElementsByClassName("wptb-input-number-decrement")[1],rowsIncrementButton=e.getElementsByClassName("wptb-input-number-increment")[1],columnsInput=document.getElementById("wptb-columns-number"),rowsInput=document.getElementById("wptb-rows-number"),columnsDecrementButton.onclick=function(){1<columnsInput.value&&columnsInput.value--},columnsIncrementButton.onclick=function(){columnsInput.value<30&&columnsInput.value++},rowsDecrementButton.onclick=function(){1<rowsInput.value&&rowsInput.value--},rowsIncrementButton.onclick=function(){rowsInput.value<30&&rowsInput.value++},document.getElementById("wptb-generate-table").onclick=function(){var e=document.getElementById("wptb-columns-number").value,t=document.getElementById("wptb-rows-number").value;WPTB_Table(e,t),(new WPTB_TableStateSaveManager).tableStateSet()},WPTB_Helper.registerSections(["elements","table_settings","cell_settings","options_group"]),WPTB_Helper.setupSectionButtons(),WPTB_Helper.activateSection("elements"),WPTB_Helper.setupSidebarToggle(".wptb-panel-drawer-toggle"),WPTB_Helper.setupPanelToggleButtons()},WPTB_LeftPanel=function(){for(var e=document.getElementsByClassName("wptb-preview-table")[0],t=document.getElementsByClassName("wptb-element"),a=0;a<t.length;a++)t[a].ondragstart=function(e){e.dataTransfer.setData("wptbElement",this.dataset.wptbElement),e.dataTransfer.setData("wptbElIndic-"+this.dataset.wptbElement,"wptbElIndic-"+this.dataset.wptbElement)};if(e){for(var n=document.getElementsByClassName("wptb-table-edit-mode-close"),l=0;l<n.length;l++)n[l].onclick=WPTB_Helper.toggleTableEditMode;document.getElementById("wptb-add-end-row").onclick=e.addRowToTheEnd,document.getElementById("wptb-add-start-row").onclick=e.addRowToTheStart,document.getElementById("wptb-add-row-before").onclick=e.addRowBefore,document.getElementById("wptb-add-row-after").onclick=e.addRowAfter,document.getElementById("wptb-add-end-column").onclick=e.addColumnEnd,document.getElementById("wptb-add-start-column").onclick=e.addColumnStart,document.getElementById("wptb-add-column-before").onclick=e.addColumnBefore,document.getElementById("wptb-add-column-after").onclick=e.addColumnAfter,document.getElementById("wptb-delete-column").onclick=e.deleteColumn,document.getElementById("wptb-delete-row").onclick=e.deleteRow,document.getElementById("wptb-merge-cells").onclick=e.mergeCells,document.getElementById("wptb-split-cell").onclick=e.splitCell}document.getElementsByClassName("wptb-builder-panel")[0].onclick=function(e){e.target.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.target,"wptb-ph-element")||e.target.classList.contains("wptb-fixed-toolbar")||WPTB_Helper.findAncestor(e.target,"wptb-fixed-toolbar")||WPTB_Helper.clickOnFreeSpace()};var r=document.getElementsByClassName("wptb-header");0<r.length&&(r=r[0]),r.onclick=function(){WPTB_Helper.clickOnFreeSpace()}},MultipleSelect=function(){var l=[],a=!1;return this.activateMultipleSelectMode=function(){l=[];for(var e=document.getElementsByClassName("wptb-preview-table")[0].getElementsByTagName("td"),t=0;t<e.length;t++)e[t].classList.remove("wptb-highlighted");a=!0},this.deactivateMultipleSelectMode=function(){a=!1},this.isActivated=function(){return a},this.pushSelectedCell=function(e){a&&(l.push(e),e.classList.add("wptb-highlighted"))},this.selectedCells=function(){return l},this.flushSelectedCells=function(){l=[]},this.getFirst=function(){for(var e,t=1e3,a=1e3,n=l.length-1;0<=n;n--)t>=l[n].dataset.xIndex&&a>=l[n].dataset.yIndex&&(e=l[n],t=l[n].dataset.xIndex,a=l[n].dataset.yIndex);return e},this.getLast=function(){for(var e,t=-1,a=-1,n=l.length-1;0<=n;n--)t<=l[n].dataset.xIndex&&a<=l[n].dataset.yIndex&&(e=l[n],t=l[n].dataset.xIndex,a=l[n].dataset.yIndex);return e},this.removeAllButFirst=function(){for(var e=this.getFirst(),t=1;t<l.length;t++)l[t].classList.add("wptb-fused-cell-"+e.dataset.xIndex+"-"+e.dataset.yIndex)},this};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var WPTB_Parser=function(e){var t=document.createElement("div");t.innerHTML=e;for(var a=t.children[0],n=[].concat(_toConsumableArray(a.querySelectorAll(".wptb-column-title-mobile-container"))),l=0;l<n.length;l++){n[l].parentNode.removeChild(n[l])}for(var r=a.querySelectorAll("td"),o=0;o<r.length;o++)r[o].classList.add("wptb-droppable"),r[o].classList.remove("wptb-column-title-mobile-not-elements");return a};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};Object.keys||(Object.keys=function(){"use strict";var l=Object.prototype.hasOwnProperty,r=!{toString:null}.propertyIsEnumerable("toString"),o=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],i=o.length;return function(e){if("object"!==(void 0===e?"undefined":_typeof(e))&&("function"!=typeof e||null===e))throw new TypeError("Object.keys called on non-object");var t,a,n=[];for(t in e)l.call(e,t)&&n.push(t);if(r)for(a=0;a<i;a++)l.call(e,o[a])&&n.push(o[a]);return n}}());var WPTB_Settings=function(){for(var e=document.getElementsByClassName("wptb-element"),t=0;t<e.length;t++)e[t].ondragstart=function(e){e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("wptbElement",e.target.dataset.wptbElement),e.dataTransfer.setData("wptbElIndic-"+e.target.dataset.wptbElement,"wptbElIndic-"+e.target.dataset.wptbElement)},e[t].ondragend=function(){WPTB_Helper.elementDragEndClear()};var a=new WPTB_TableStateSaveManager,n=document.getElementsByClassName("wptb-undo");0<n.length&&((n=n[0]).onclick=function(e){if(!this.classList.contains("wptb-undoredo-disabled")){a.tableStateGet(this.dataset.wptbUndoredo);var t=document.getElementsByClassName("wptb-undo-redo-container");0<t.length&&((t=t[0]).onmouseleave=function(e){e.target.onmouseleave="";var t=document.querySelector(".wptb-preview-table");WPTB_Table(),WPTB_Helper.elementOptionsSet("table_setting",t),WPTB_Helper.elementStartScript(t,"table_setting"),WPTB_Helper.wptbDocumentEventGenerate("element:controls:active",t)})}});var l=document.getElementsByClassName("wptb-redo");0<l.length&&((l=l[0]).onclick=function(e){if(!this.classList.contains("wptb-undoredo-disabled")){a.tableStateGet(this.dataset.wptbUndoredo);var t=document.getElementsByClassName("wptb-undo-redo-container");0<t.length&&((t=t[0]).onmouseleave=function(e){e.target.onmouseleave="";var t=document.querySelector(".wptb-preview-table");WPTB_Table(),WPTB_Helper.elementOptionsSet("table_setting",t),WPTB_Helper.elementStartScript(t,"table_setting"),WPTB_Helper.wptbDocumentEventGenerate("element:controls:active",t)})}});var r=document.getElementsByClassName("wptb-popup-window-modal")[0];document.getElementsByClassName("wptb-embed-btn")[0].onclick=function(){this.classList.contains("wptb-button-disable")||r.classList.add("wptb-popup-show")},window.onbeforeunload=function(e){return 0==document.getElementsByClassName("wptb-save-disabled").length||null},document.getElementsByClassName("wptb-popup-dark-area")[0].onclick=function(){r.classList.remove("wptb-popup-show")},document.getElementsByClassName("wptb-popup-window-close-icon")[0].onclick=function(){r.classList.remove("wptb-popup-show")},document.getElementsByClassName("wptb-preview-btn")[0].onclick=function(e){if(!this.classList.contains("wptb-button-disable")){var t=Math.floor(1e4*Math.random()),a=new URL(e.target.href);a.searchParams.set("preview_id",t),e.target.href=a.toString(),WPTB_Helper.saveTable(e,!1,t)}},document.getElementsByClassName("wptb-save-btn")[0].onclick=function(e){this.classList.contains("wptb-save-disabled")||WPTB_Helper.saveTable(e)};var o=document.querySelector("#wptb-setup-name");o&&(o.onchange=function(){(new WPTB_TableStateSaveManager).tableStateSet()})};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var WPTB_Stringifier=function(e){if(e){var t=e.cloneNode(!0);t.dataset.tableColumns=e.columns,t.style.width=null,t.style.minWidth=null,t.style.maxWidth=null;var a=t.getElementsByTagName("td");if(0<a.length)for(var n=0;n<a.length;n++){e.querySelector("wptb-table-preview-head")&&a[n].removeAttribute("data-x-index"),a[n].removeAttribute("data-y-index"),a[n].removeAttribute("draggable"),a[n].classList.remove("wptb-droppable");var l=a[n].getElementsByClassName("wptb-ph-element");if(0<l.length)for(var r=0;r<l.length;r++){var o=l[r].querySelectorAll(".mce-content-body");if(0<o.length)for(var i=0;i<o.length;i++)o[i].classList.remove("mce-content-body");var s=l[r].querySelectorAll("[data-mce-style]");if(0<s.length)for(var d=0;d<s.length;d++)s[d].removeAttribute("data-mce-style");var c=l[r].querySelectorAll("[contenteditable]");if(0<c.length)for(var p=0;p<c.length;p++)c[p].removeAttribute("contenteditable");var m=l[r].querySelectorAll("[spellcheck]");if(0<m.length)for(var b=0;b<m.length;b++)m[b].removeAttribute("spellcheck");var u=l[r].querySelectorAll("[id^=mce_]");if(0<u.length)for(var w=0;w<u.length;w++)u[w].removeAttribute("id");for(var g=l[r].querySelectorAll(".wptb-actions"),v=g.length;0<v&&g[0]&&g[0].parentNode;)g[0].parentNode.removeChild(g[0]),v--;var f=l[r].querySelectorAll("[data-mce-bogus]");if(0<f.length){f=[].concat(_toConsumableArray(f));for(var h=0;h<f.length;h++)f[h]&&f[h].parentNode&&f[h].parentNode.removeChild(f[h])}}if(a[n].hasAttribute("data-wptb-title-column")){var y=document.createElement("div"),S=document.createElement("div");y.classList.add("wptb-column-title-mobile-container"),S.classList.add("wptb-column-title-mobile"),S.dataset.wptbTitleColumn=a[n].dataset.wptbTitleColumn,S.setAttribute("style","font-size:"+a[n].dataset.wptbTitleColumnFontSize+"; \n color:"+a[n].dataset.wptbTitleColumnColor+"; background-color:"+a[n].dataset.wptbTitleBackgroundColor+"; text-align:"+a[n].dataset.wptbTitleAlign+";"),S.style.padding=a[n].style.padding,0==a[n].children.length&&a[n].classList.add("wptb-column-title-mobile-not-elements"),y.appendChild(S),a[n].insertBefore(y,a[n].firstChild)}}return t}};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var array=[],WPTB_Table=function(e,t,a){var L,n,l,v,r=document.getElementsByClassName("wptb-settings-items"),S=document.getElementsByClassName("wptb-table-setup")[0],T=function(e){var t=this.rowSpan,a=this.colSpan,n=document.getElementsByClassName("wptb-no-cell-action"),l=document.getElementsByClassName("wptb-single-action"),r=document.getElementsByClassName("wptb-multiple-select-action"),o=document.getElementById("wptb-left-scroll-panel-cell-settings"),i=E(this),s=i[0],d=i[1];if(document.select.isActivated()){if(this.className.match(/wptb-highlighted/)){this.classList.remove("wptb-highlighted");for(var c=0;c<t;c++)for(var p=0;p<a;p++)array[s+c][d+p]=0}else{this.classList.add("wptb-highlighted");for(c=0;c<t;c++)for(p=0;p<a;p++)array[s+c][d+p]=1}var m=document.getElementsByClassName("wptb-highlighted"),b=m.length;if(0===b){for(c=0;c<r.length;c++)r[c].classList.remove("visible"),r[c].setAttribute("disabled","disabled");for(c=0;c<n.length;c++)n[c].classList.add("visible"),n[c].removeAttribute("disabled");for(c=0;c<l.length;c++)l[c].classList.remove("visible"),l[c].setAttribute("disabled","disabled");o.classList.remove("visible")}else if(1===b){for(c=0;c<r.length;c++)r[c].classList.remove("visible"),r[c].setAttribute("disabled","disabled");for(c=0;c<n.length;c++)n[c].classList.remove("visible"),n[c].setAttribute("disabled","disabled");for(c=0;c<l.length;c++)l[c].classList.add("visible"),l[c].removeAttribute("disabled");m=m[0],WPTB_Helper.elementOptionsSet("table_cell_setting",m);var u=m.className.match(/wptb-element-((.+-)\d+)/i);["cellWidth","cellHeight"].map(function(e){var t="wptb-el-"+u[1]+"-"+e,a="wptb-el-"+u[1]+"-"+e+"Fixed";if("cellWidth"===e||"cellHeight"===e){var n="",l="";"cellWidth"===e?(n="width",l="getColumnWidth"):"cellHeight"===e&&(n="height",l="getRowHeight");var r=m.style[n],o=document.querySelectorAll("."+t),i=document.querySelector("."+a);o=[].concat(_toConsumableArray(o)),r||m.dataset["wptbFixed"+n.toUpperCase()]?(o.map(function(e){r?e.value=parseFloat(r,10):m.dataset["wptbFixed"+n.toUpperCase()]&&(e.value=m.dataset["wptbFixed"+n.toUpperCase()])}),i.checked=!0):(r=WPTB_Helper[l](L,m),o.map(function(e){e.value=r}),i.checked=!1)}}),o.classList.add("visible")}else{for(c=0;c<r.length;c++)L.isSquare(array)?(r[c].classList.add("visible"),r[c].removeAttribute("disabled")):(r[c].classList.remove("visible"),r[c].setAttribute("disabled","disabled"));for(c=0;c<n.length;c++)n[c].classList.remove("visible"),n[c].setAttribute("disabled","disabled");for(c=0;c<l.length;c++)l[c].classList.remove("visible"),l[c].setAttribute("disabled","disabled");o.classList.remove("visible")}}},C=function(e){for(var t=0;t<e.length;t++){for(var a=0;a<e[t].length;a++)" "+e[t][a];"\n"}L.isSquare(e)},B=function(){for(var e=document.getElementsByClassName("wptb-no-cell-action"),t=document.getElementsByClassName("wptb-single-action"),a=document.getElementsByClassName("wptb-multiple-select-action"),n=document.getElementById("wptb-left-scroll-panel-cell-settings"),l=L.getElementsByClassName("wptb-highlighted");l.length;)l[0].classList.remove("wptb-highlighted");n.classList.remove("visible");for(var r=0;r<array.length;r++)for(var o=0;o<array[r].length;o++)array[r][o]=0;for(r=0;r<a.length;r++)a[r].classList.remove("visible"),a[r].setAttribute("disabled","disabled");for(r=0;r<e.length;r++)e[r].classList.add("visible"),e[r].removeAttribute("disabled");for(r=0;r<t.length;r++)t[r].classList.remove("visible"),t[r].setAttribute("disabled","disabled")},E=function(e){for(var t=[],a=0;a<v;a++)t[a]=0;for(a=0;a<L.rows.length;a++)for(var n=L.rows[a].getElementsByTagName("td"),l=cellPointer=0;l<v;l+=stepsToMove)if(stepsToMove=1,t[l])t[l]--;else{var r=n[cellPointer++];if(r==e)return[a,l];if(1<r.rowSpan){for(var o=0;o<r.colSpan;o++)t[l+o]=r.rowSpan-1;stepsToMove=r.colSpan}else 1<r.colSpan&&(stepsToMove=r.colSpan)}};if(jQuery("#wptb-table-border-color").val(""),jQuery("#wptb-table-padding-number,#wptb-table-padding-slider").val("15"),e||t){for(var o=0;o<r.length;o++)"wptb-apply-inner-border"!==r[o].id&&r[o].classList.add("visible");(L=document.createElement("table")).classList.add("wptb-preview-table","wptb-element-main-table_setting-startedid-0"),L.style.border="0px solid",L.dataset.reconstraction=1;for(o=0;o<t;o++){(n=L.insertRow(-1)).classList.add("wptb-row");for(var w=0;w<e;w++)(l=new WPTB_Cell(T)).setCoords(o,w),l.getDOMElement().style.borderWidth="1px",n.appendChild(l.getDOMElement())}}else{if(a||(a=document.querySelector(".wptb-preview-table")),!a)return;var i=(L=a).getElementsByTagName("td");if(0<i.length)for(var s=0;s<i.length;s++)WPTB_Cell(T,i[s])}L.recalculateIndexes=function(){WPTB_Helper.recalculateIndexes(this)},L.addColumnWidth=function(p,m){var e=L.getElementsByClassName("wptb-highlighted");if(0<e.length){for(var t=0;t<e.length;t++){var a=e[t].dataset.xIndex;a&&function e(t,a){for(var n=L.rows,l=!1,r=[],o=0;o<n.length;o++)for(var i=n[o].children,s=0;s<i.length;s++){var d=i[s];if(d.dataset.xIndex==t){if(p)d.colSpan==a?(d.style.width=p+"px",d.removeAttribute("data-wptb-fixed-width"),l=!0):(d.style.width=null,d.dataset.wptbFixedWidth=p,o!=n.length-1||l||e(t,a+1));else if(m)d.style.width=null,d.removeAttribute("data-wptb-fixed-width");else if(d.dataset.wptbFixedWidth)d.colSpan==a&&(d.style.width=d.dataset.wptbFixedWidth+"px",d.removeAttribute("data-wptb-fixed-width"));else if(d.style.width){for(var c=0;c<r.length;c++)r[c].style.width=d.style.width;r=[]}else r.push(d);break}}}(a,1)}L.tdDefaultWidth()}},L.tdDefaultWidth=function(){for(var e,t=L.rows,a=0,n=0,l=document.getElementsByClassName("wptb-table-setup")[0],r=l.offsetWidth,o=[],i=[],s=0,d=0,c="",p=window.getComputedStyle(L,null),m=p.getPropertyValue("border-left-width"),b=p.getPropertyValue("border-right-width"),u=parseFloat(m,10)+parseFloat(b,10),w=0;w<t.length;w++)for(var g=t[w].children,v=0;v<g.length;v++){var f=g[v];if(o[parseFloat(f.dataset.xIndex)]||i[parseFloat(f.dataset.xIndex)])i[parseFloat(f.dataset.xIndex)]?f.dataset.wptbFixedWidth||(f.dataset.wptbCssTdAutoWidth=!0):o[parseFloat(f.dataset.xIndex)]&&f.removeAttribute("data-wptb-css-td-auto-width");else if(f.style.width?(o[parseFloat(f.dataset.xIndex)]=parseFloat(f.style.width),f.removeAttribute("data-wptb-css-td-auto-width")):f.dataset.wptbFixedWidth||(i[parseFloat(f.dataset.xIndex)]=L.dataset.wptbTdWidthAuto?parseFloat(L.dataset.wptbTdWidthAuto,10):100,f.dataset.wptbCssTdAutoWidth=!0),window.getComputedStyle(f,null)){var h=window.getComputedStyle(f,null),y=h.getPropertyValue("padding-left"),S=h.getPropertyValue("padding-right");s=parseFloat(y,10)+parseFloat(S,10);var T=h.getPropertyValue("border-left-width"),C=h.getPropertyValue("border-right-width");d=parseFloat(T,10)+parseFloat(C,10),d/=2,o[parseFloat(f.dataset.xIndex)]?(o[parseFloat(f.dataset.xIndex)]+=s,o[parseFloat(f.dataset.xIndex)]+=d,0==v&&u/2<=parseFloat(T,10)?o[parseFloat(f.dataset.xIndex)]+=parseFloat(T,10)/2:0==v&&u/2>parseFloat(T,10)&&(o[parseFloat(f.dataset.xIndex)]+=u/2-parseFloat(C,10)/2),v==g.length-1&&u/2<=parseFloat(C,10)?o[parseFloat(f.dataset.xIndex)]+=parseFloat(C,10)/2:v==g.length-1&&u/2>parseFloat(C,10)&&(o[parseFloat(f.dataset.xIndex)]+=u/2-parseFloat(C,10)/2)):i[parseFloat(f.dataset.xIndex)]&&(i[parseFloat(f.dataset.xIndex)]+=s,i[parseFloat(f.dataset.xIndex)]+=d,0==v&&u/2<=parseFloat(T,10)?i[parseFloat(f.dataset.xIndex)]+=parseFloat(T,10)/2:0==v&&u/2>parseFloat(T,10)&&(i[parseFloat(f.dataset.xIndex)]+=u/2-parseFloat(T,10)/2),v==g.length-1&&u/2<=parseFloat(C,10)?i[parseFloat(f.dataset.xIndex)]+=parseFloat(C,10)/2:v==g.length-1&&u/2>parseFloat(C,10)&&(i[parseFloat(f.dataset.xIndex)]+=u/2-parseFloat(T,10)/2))}}for(var B=0;B<o.length;B++)o[B]&&(a+=o[B]);for(var E=0,A=0;A<i.length;A++)i[A]&&(n+=i[A],E++);e=a+n,L.dataset.wptbTableTdsSumMaxWidth=e,E?(L.dataset.wptbCellsWidthAutoCount=E,L.mergingСellsHorizontally?L.dataset.wptbFixedWidthSize=a:L.removeAttribute("data-wptb-fixed-width-size")):(L.removeAttribute("data-wptb-fixed-width-size"),L.removeAttribute("data-wptb-cells-width-auto-count"));var _=!1,x=void 0;e<r?E?(L.style.minWidth="100%",L.mergingСellsHorizontally?(L.style.width="auto",x=(x=(r-a)/E)-s-d,_=!0):L.style.width="100%"):(L.style.width="auto",L.style.minWidth=null,L.style.maxWidth=null):(L.style.maxWidth=null,L.style.minWidth=e+"px",L.style.width="auto",x=L.dataset.wptbTdWidthAuto?L.dataset.wptbTdWidthAuto:"100",_=!0);var N=document.head;if(N){var P=N.querySelector('style[data-wptb-td-auto-width="true"]');P&&N.removeChild(P)}if(_&&((c=document.createElement("style")).setAttribute("data-wptb-td-auto-width",!0),c.innerHTML="[data-wptb-css-td-auto-width=true]{width:"+x+"px}",N&&N.appendChild(c)),L.dataset.wptbTableAlignment){var W=L.dataset.wptbTableAlignment;l.offsetWidth<L.offsetWidth?L.style.float=null:L.style.float="center"==W?null:W,l.style.float="center"==W?null:W,x&&L.dataset.wptbTableContainerMaxWidth&&L.offsetWidth<L.dataset.wptbTableContainerMaxWidth&&(L.style.width="100%")}else L.style.float=null},L.addRowHeight=function(p,m){var e=L.getElementsByClassName("wptb-highlighted");if(0<e.length)for(var t=0;t<e.length;t++){var a=e[t].dataset.yIndex;a&&function e(t,a){for(var n=L.rows,l=!1,r=[],o=0;o<n.length;o++)for(var i=n[o].children,s=0;s<i.length;s++){var d=i[s];if(d.dataset.yIndex==t)if(p){if(d.rowSpan==a){d.style.height=p+"px",d.removeAttribute("data-wptb-fixed-heidht"),l=!0;continue}d.style.height=null,d.dataset.wptbFixedHeight=p,s!=i.length-1||l||e(t,a+1)}else if(m)d.style.height=null,d.removeAttribute("data-wptb-fixed-heidht");else if(d.dataset.wptbFixedHeight)(d.rowSpan=a)&&(d.style.height=d.dataset.wptbFixedHeight+"px",d.removeAttribute("data-wptb-fixed-width"));else if(d.style.height){for(var c=0;c<r.length;c++)r[c].style.height=d.style.height;r=[]}else r.push(d)}}(a,1)}},L.reconstraction=function(){var e=L.getElementsByTagName("td");L.mergingСellsHorizontally=!1,L.mergingCellsVertically=!1,L.dataset.reconstraction=1;for(var t=0,a=0;a<e.length&&(1<e[a].colSpan&&(L.dataset.reconstraction=0,L.mergingСellsHorizontally=!0,t++),1<e[a].rowSpan&&(L.dataset.reconstraction=0,L.mergingCellsVertically=!0,t++),2!=t);a++);},L.addColumnEnd=function(){var e=void 0,t=document.getElementsByClassName("wptb-preview-table"),a=void 0,n=void 0;0<t.length&&(a=t[0].querySelector("td")),a&&(n=a.getAttribute("style"));for(var l=0;l<L.rows.length;l++)e=new WPTB_Cell(T),n&&(e.getDOMElement().setAttribute("style",n),e.getDOMElement().style.width=null,e.getDOMElement().style.height=null),L.rows[l].appendChild(e.getDOMElement()),array[l].push(0);v++,L.recalculateIndexes(),L.tdDefaultWidth(),L.addRowHeight(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.addColumnStart=function(){var e=void 0,t=void 0,a=document.getElementsByClassName("wptb-preview-table"),n=void 0,l=void 0;0<a.length&&(n=a[0].querySelector("td")),n&&(l=n.getAttribute("style"));for(var r=0;r<L.rows.length;r++)e=new WPTB_Cell(T),l&&(e.getDOMElement().setAttribute("style",l),e.getDOMElement().style.width=null,e.getDOMElement().style.height=null),(t=L.rows[r].getElementsByTagName("td")[0])?L.rows[r].insertBefore(e.getDOMElement(),t):L.rows[r].appendChild(e.getDOMElement()),array[r].push(0);v++,L.recalculateIndexes(),L.tdDefaultWidth(),L.addRowHeight(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.addColumnAfter=function(e){var t=L.rows,a=void 0,n=void 0,l=document.querySelector(".wptb-highlighted"),r=l.getAttribute("style"),o=null!=e&&"number"==typeof e?e:E(l)[1];if(v-o-l.colSpan+1==1)L.addColumnEnd();else{for(var i=!1,s=void 0,d=void 0,c=void 0,p=[],m=void 0,b=0;b<v;b++)p.push(0);for(b=0;b<t.length;b++){a=0,n=t[b].getElementsByTagName("td"),i=!1;for(var u=0;u<v;u+=s){if(s=1,i){d=new WPTB_Cell(T),r&&(d.getDOMElement().setAttribute("style",r),d.getDOMElement().style.width=null,d.getDOMElement().style.height=null),m&&t[b].contains(m)?(c=m.nextSibling)?t[b].insertBefore(d.getDOMElement(),c):t[b].appendChild(d.getDOMElement()):t[b].insertBefore(d.getDOMElement(),n[0]);break}if(0<p[u])o==u&&(i=!0);else if(1<(m=n[a++]).rowSpan){s=m.colSpan;for(var w=0;w<m.colSpan;w++)p[u+w]=m.rowSpan,u+w==o&&(i=!0)}else if(1<m.colSpan){s=m.colSpan;for(w=0;w<m.colSpan;w++)u+w==o&&(i=!0)}else u==o&&(i=!0)}for(var g=0;g<v;g++)0<p[g]&&p[g]--}for(b=0;b<array.length;b++)array[b].push(0);v++,C(array),L.recalculateIndexes(),L.addColumnWidth(),L.addRowHeight(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()}},L.addColumnBefore=function(){var e=document.querySelector(".wptb-highlighted"),t=E(e)[1];0===t?L.addColumnStart():L.addColumnAfter(t-1)},L.addRowToTheEnd=function(){var e=L.insertRow(-1),t=void 0,a=void 0,n=document.getElementsByClassName("wptb-preview-table");if(e.classList.add("wptb-row"),0<n.length){n=n[0];for(var l=0;l<v;l++){t=new WPTB_Cell(T);var r=n.querySelector('[data-x-index="'+l+'"]');if(r){var o=r.getAttribute("style");t.getDOMElement().setAttribute("style",o),t.getDOMElement().style.height=null}e.appendChild(t.getDOMElement())}a=Array.from(array[0]),array.push(a),C(array),L.recalculateIndexes(),WPTB_Helper.tableRowsColorsReinstall(L),L.addColumnWidth(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()}},L.addRowToTheStart=function(){var e=L.insertRow(0),t=void 0,a=void 0,n=document.getElementsByClassName("wptb-preview-table");if(e.classList.add("wptb-row"),0<n.length){n=n[0];for(var l=0;l<v;l++){t=new WPTB_Cell(T);var r=n.querySelector('[data-x-index="'+l+'"]');if(r){var o=r.getAttribute("style");t.getDOMElement().setAttribute("style",o),t.getDOMElement().style.height=null}e.appendChild(t.getDOMElement())}a=Array.from(array[0]),array.push(a),C(array),L.recalculateIndexes(),WPTB_Helper.tableRowsColorsReinstall(L),L.addColumnWidth(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()}},L.addRowBefore=function(){for(var e=document.querySelector(".wptb-highlighted"),t=e.getAttribute("style"),a=E(e)[0],n=void 0,l=a-1;0<=l;l--){var r=L.rows[l].children,o=r.length;if(0<o)for(var i=0;i<o;i++)if(1==r[i].rowSpan){a=l,n=!0;break}if(n)break}0===a?L.addRowToTheStart():L.addRowAfter(a,t)},L.addRowAfter=function(e,t){var a,n=void 0;if(null!=e&&"number"==typeof e||null!=t)n=e;else{var l=document.querySelector(".wptb-highlighted");t=l.getAttribute("style"),n=(e=E(l)[0])+l.rowSpan-1}var r=0;if(n<L.rows.length-1){for(var o=0;o<=n;o++){var i=L.rows[o].children,s=i.length;if(0<s)for(var d=0;d<s;d++){n<i[d].rowSpan-1+o&&i[d].rowSpan++}}var c=L.rows[n+1].children,p=c.length;if(0<p)for(var m=0;m<p;m++)r+=c[m].colSpan}else r=array[0].length;var b=L.insertRow(n+1);for(b.classList.add("wptb-row"),w=0;w<r;w++){var u=new WPTB_Cell(T);u.getDOMElement().setAttribute("style",t),u.getDOMElement().style.width=null,u.getDOMElement().style.height=null,b.appendChild(u.getDOMElement())}a=Array.from(array[0]),array.push(a),C(array),L.recalculateIndexes(),WPTB_Helper.tableRowsColorsReinstall(L),L.addColumnWidth(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after"),(new WPTB_TableStateSaveManager).tableStateSet()},L.isSquare=function(e){for(var t,a,n=-1,l=-1,r=-1,o=-1,i=0,s=0;s<e.length;s++)for(var d=0;d<e[s].length;d++)1==e[s][d]&&((d<l||-1==l)&&(l=d),(s<n||-1==n)&&(n=s));for(s=e.length-1;-1<s;s--)for(d=e[s].length-1;-1<d;d--)1==e[s][d]&&(o<d&&(o=d),r<s&&(r=s));for(s=n;s<r;s++)for(d=l;d<o;d++)if(0==e[s][d]||null==e[s][d])return!1;for(s=0;s<e.length;s++)for(d=0;d<e[s].length;d++)1==e[s][d]&&i++;return(t=r-n+1)*(a=o-l+1)===i&&[t,a]},L.mergeCells=function(){for(var e=L.isSquare(array),t=e[0],a=e[1],n=document.querySelector(".wptb-highlighted"),l=[].slice.call(document.getElementsByClassName("wptb-highlighted"),1),r=[],o=0;o<l.length;o++){var i=l[o].getElementsByClassName("wptb-ph-element");if(0<i.length)for(var s=i.length,d=0;d<s;d++)r.push(i[d]);l[o].parentNode.removeChild(l[o])}if(0<r.length)for(var c=0;c<r.length;c++)n.appendChild(r[c]);n.colSpan=a,n.rowSpan=t,L.recalculateIndexes(),L.reconstraction();var p=n.style.width,m=n.dataset.wptbFixedWidth;p?L.addColumnWidth(parseFloat(p,10)):m?L.addColumnWidth():L.addColumnWidth(!1,!0);var b=n.style.height,u=n.dataset.wptbFixedHeight;b?L.addRowHeight(parseFloat(b,10)):u?L.addRowHeight():L.addRowHeight(!1,!0),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.splitCell=function(){var e=document.getElementsByClassName("wptb-highlighted")[0],t=e.rowSpan,a=e.colSpan,n=e.getAttribute("style"),l=E(e)[0],r=L.rows[l],o=e.dataset.xIndex;e.rowSpan=1;for(var i=e.colSpan=1;i<a;i++){var s=new WPTB_Cell(T);s.getDOMElement().setAttribute("style",n),s.getDOMElement().classList.add("wptb-highlighted"),e.nextSibling?r.insertBefore(s.getDOMElement(),e.nextSibling):r.appendChild(s.getDOMElement())}if(1<t)for(var d=1;d<t;d++){var c=void 0,p=L.rows[l+d],m=p.children,b=m.length;if(0<b)for(var u=0;u<b;u++)if(Number(m[u].dataset.xIndex)>Number(o)){c=m[u];break}for(var w=0;w<a;w++){var g=new WPTB_Cell(T);g.getDOMElement().setAttribute("style",n),null!=c?p.insertBefore(g.getDOMElement(),c):p.appendChild(g.getDOMElement())}}L.recalculateIndexes(),L.reconstraction(),L.addColumnWidth(),L.addRowHeight(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.findRowspannedCells=function(e){var t,a=[];if(actualPoints=function(e){for(var t=L.rows[e].getElementsByTagName("td"),a=0,n=0;n<t.length;n++)a+=t[n].colSpan;return a}(e),actualPoints===v)return[];t=v-actualPoints;for(var n=e-1;0<=n&&t;n--){var l=L.rows[n].getElementsByTagName("td");for(n=0;n<l.length;n++)1<l[n].rowSpan&&(a.push(l[n]),t-=l[n].colSpan)}return a},L.addLackingCells=function(){for(var e=[],t=0;t<L.rows.length;t++)e.push(0);for(t=0;t<L.rows.length;t++)for(var a=L.rows[t].getElementsByTagName("td"),n=0;n<a.length;n++)if(1<a[n].rowSpan)for(var l=1;l<a[n].rowSpan;l++)e[t+l]++;for(t=0;t<L.rows.length;t++){a=L.rows[t].getElementsByTagName("td");var r=0;for(n=0;n<a.length;n++)r+=a[n].colSpan;r+=e[t],difference=v-r;for(n=0;n<difference;n++){var o=new WPTB_Cell(T);L.rows[t].appendChild(o.getDOMElement())}}},L.deleteRow=function(){var e=document.querySelector(".wptb-highlighted"),t=e.getAttribute("style"),a=e.rowSpan,n=E(e)[0],l=void 0;null==a&&(a=1);for(var r=0;r<a;r++){var o=L.rows[n].children,i=L.rows[n+1],s=void 0,d=void 0,c=[];if(null!=i){d=(s=i.children).length;for(var p=0;p<o.length;p++)if(1<o[p].rowSpan){var m=new WPTB_Cell(T);m.getDOMElement().setAttribute("style",t),m.getDOMElement().colSpan=o[p].colSpan,m.getDOMElement().rowSpan=o[p].rowSpan-1;for(var b=void 0,u=0;u<d;u++)if(Number(s[u].dataset.xIndex)>Number(o[p].dataset.xIndex)){b=s[u];break}b?c.push([m,b]):c.push([m])}if(0<c.length)for(var w=0;w<c.length;w++)null!=c[w][1]?i.insertBefore(c[w][0].getDOMElement(),c[w][1]):i.appendChild(c[w][0].getDOMElement())}var g=L.rows;if(0<g.length)for(var v=0;v<n;v++){var f=g[v].children;if(0<f.length)for(var h=0;h<f.length;h++)f[h].rowSpan-1>=n-v&&f[h].rowSpan--}if(l=Array.from(array[0]),array.pop(l),C(array),L.getElementsByTagName("tbody")[0].removeChild(L.rows[n]),0==L.rows.length){WPTB_Helper.toggleTableEditMode(),S.innerHTML="",document.getElementsByClassName("wptb-table-generator")[0].style.display="table";var y=document.getElementsByClassName("wptb-save-btn");0<y.length&&((y=y[0]).classList.add("wptb-save-disabled"),y.classList.remove("active"))}else L.recalculateIndexes(),WPTB_Helper.tableRowsColorsReinstall(L),WPTB_Helper.dataTitleColumnSet(L),L.reconstraction()}B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.deleteColumn=function(){for(var e=document.querySelector(".wptb-highlighted"),t=e.dataset.xIndex,a=e.colSpan,n=0;n<a;n++){for(var l=0;l<L.rows.length;l++){var r=L.rows[l].children,o=r.length;if(0<o)for(var i=o-1;0<=i;i--){if(Number(r[i].dataset.xIndex)==Number(t)){1<r[i].colSpan?r[i].colSpan--:L.rows[l].removeChild(r[i]);break}if(Number(r[i].dataset.xIndex)<Number(t)&&Number(r[i].dataset.xIndex)+Number(r[i].colSpan-1)>=t){1<r[i].colSpan&&r[i].colSpan--;break}}}for(var s=0;s<L.rows.length;s++)null!=array[s]&&array[s].pop();if(v--,0==L.querySelectorAll("td").length){WPTB_Helper.toggleTableEditMode(),S.innerHTML="",document.getElementsByClassName("wptb-table-generator")[0].style.display="table";var d=document.getElementsByClassName("wptb-save-btn");0<d.length&&((d=d[0]).classList.add("wptb-save-disabled"),d.classList.remove("active"))}else L.recalculateIndexes(),L.tdDefaultWidth(),WPTB_Helper.dataTitleColumnSet(L),L.reconstraction()}B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementsByClassName("wptb-table-generator")[0].style.display="none",array=function(){for(var e=[],t=[],a=0;a<L.rows.length;a++){for(var n=L.rows[a].getElementsByTagName("td"),l=0,r=0;r<n.length;r++)l+=n[r].colSpan;e.push(l)}v=Math.max.apply(null,e);var o=L.rows.length;for(a=0;a<o;a++)for(t[a]=[],r=0;r<v;r++)t[a].push(0);return C(t),t}(),B(),C(array),S.appendChild(L),L.recalculateIndexes(!0),L.reconstraction(),L.tdDefaultWidth(),S.onresize=function(){L.tdDefaultWidth()},WPTB_LeftPanel()},WPTB_TableStateSaveManager=(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},function(){this.tableStateSet=function(e){if(!(e&&window.wptbTableStateSaving&&Array.isArray(window.wptbTableStateSaving))){var t=document.getElementsByClassName("wptb-table-setup"),a="";0<t.length?a=(t=t[0]).querySelector(".wptb-preview-table"):t="",window.wptbTableStateSaving||Array.isArray(window.wptbTableStateSaving)||(window.wptbTableStateSaving=[]),window.wptbTableStateSaving.length>window.wptbTableStateNumberShow&&(window.wptbTableStateSaving=window.wptbTableStateSaving.slice(0,window.wptbTableStateNumberShow+1));var n="";if(t){for(var l=(n=t.cloneNode(!0)).getElementsByClassName("wptb-highlighted"),r=0;r<l.length;r++)l[r].classList.remove("wptb-highlighted");for(var o=n.getElementsByClassName("wptb-directlyhovered"),i=0;i<o.length;i++)o[i].classList.remove("wptb-directlyhovered");var s=n.querySelectorAll(".mce-content-body");if(0<s.length)for(var d=0;d<s.length;d++)s[d].classList.remove("mce-content-body");var c=n.querySelectorAll("[data-mce-style]");if(0<c.length)for(var p=0;p<c.length;p++)c[p].removeAttribute("data-mce-style");var m=n.querySelectorAll("[id^=mce_]");if(0<m.length)for(var b=0;b<m.length;b++)m[b].removeAttribute("id")}var u="",w=document.head;if(w){var g=w.querySelector('style[data-wptb-td-auto-width="true"]');g&&(u=g.innerHTML)}var v="",f=document.getElementById("wptb-setup-name");if(f&&(v=f.value),window.wptbTableStateSaving.push([n,u,v]),window.wptbTableStateNumberShow=window.wptbTableStateSaving.length-1,0<window.wptbTableStateSaving.length-1){var h=document.getElementsByClassName("wptb-undo");0<h.length&&(h=h[0]).classList.remove("wptb-undoredo-disabled")}var y=document.getElementsByClassName("wptb-redo");0<y.length&&(y=y[0]).classList.add("wptb-undoredo-disabled");var S=document.getElementsByClassName("wptb-save-btn");0<S.length&&(!(S=S[0]).dataset.wptbTableStateNumberSave&&0==window.wptbTableStateNumberShow||window.wptbTableStateNumberShow==S.dataset.wptbTableStateNumberSave||!a?(S.classList.add("wptb-save-disabled"),S.classList.remove("active")):(S.classList.remove("wptb-save-disabled"),S.classList.add("active")))}},this.tableStateGet=function(e){if(e&&window.wptbTableStateSaving&&0<window.wptbTableStateSaving.length){if("undo"==e){if(!(0<window.wptbTableStateNumberShow))return!1;window.wptbTableStateNumberShow--}else if("redo"==e){if(!(window.wptbTableStateNumberShow<window.wptbTableStateSaving.length))return!1;window.wptbTableStateNumberShow++}var t=document.getElementsByClassName("wptb-undo");0<t.length&&(t=t[0],0==window.wptbTableStateNumberShow?t&&t.classList.add("wptb-undoredo-disabled"):0<window.wptbTableStateNumberShow&&t&&t.classList.remove("wptb-undoredo-disabled"));var a=document.getElementsByClassName("wptb-redo");0<a.length&&(a=a[0],window.wptbTableStateNumberShow==window.wptbTableStateSaving.length-1?a&&a.classList.add("wptb-undoredo-disabled"):window.wptbTableStateNumberShow<window.wptbTableStateSaving.length-1&&a&&a.classList.remove("wptb-undoredo-disabled"));var n=document.getElementsByClassName("wptb-save-btn");0<n.length&&(!(n=n[0]).dataset.wptbTableStateNumberSave&&0==window.wptbTableStateNumberShow||window.wptbTableStateNumberShow==n.dataset.wptbTableStateNumberSave?(n.classList.add("wptb-save-disabled"),n.classList.remove("active")):(n.classList.add("active"),n.classList.remove("wptb-save-disabled")));var l=document.getElementsByClassName("wptb-table-setup");if(0<l.length){if(l=l[0],window.wptbTableStateSaving[window.wptbTableStateNumberShow]){window.wptbTableStateSaving[window.wptbTableStateNumberShow][0]&&"object"===_typeof(window.wptbTableStateSaving[window.wptbTableStateNumberShow][0])&&"outerHTML"in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0]&&(l.outerHTML=window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML);var r=document.querySelector(".wptb-table-setup");r&&0==r.children.length?(document.getElementsByClassName("wptb-table-generator")[0].style.display="table",n.classList.add("wptb-save-disabled"),n.classList.remove("active")):document.getElementsByClassName("wptb-table-generator")[0].style.display="none";var o=document.head;if(o){var i=o.querySelector('style[data-wptb-td-auto-width="true"]');if(i&&o.removeChild(i),window.wptbTableStateSaving[window.wptbTableStateNumberShow][1]){var s=document.createElement("style");s.setAttribute("data-wptb-td-auto-width",!0),s.innerHTML=window.wptbTableStateSaving[window.wptbTableStateNumberShow][1],o.appendChild(s)}}var d=document.getElementById("wptb-setup-name");void 0!==window.wptbTableStateSaving[window.wptbTableStateNumberShow][2]&&d&&(d.value=window.wptbTableStateSaving[window.wptbTableStateNumberShow][2])}var c=document.getElementsByTagName("body");0<c.length&&(c=c[0]),WPTB_Helper.elementOptionsPanelClear(),WPTB_LeftPanel();var p=document.getElementById("wptb-left-scroll-panel-cell-settings");p&&p.classList.remove("visible")}}},this.tableStateClear=function(){delete window.wptbTableStateSaving,delete window.wptbTableStateNumberShow;var e=document.getElementsByClassName("wptb-save-btn");0<e.length&&(e=e[0]).removeAttribute("data-wptb-table-state-number-save");var t=document.getElementsByClassName("wptb-undo");0<t.length&&(t=t[0]).classList.add("wptb-undoredo-disabled");var a=document.getElementsByClassName("wptb-redo");0<a.length&&(a=a[0]).classList.add("wptb-undoredo-disabled")}}),WPTB_innerElementSet=function c(t){t.ondragenter=function(e){-1==e.dataTransfer.types.indexOf("wptbelement")&&-1==e.dataTransfer.types.indexOf("wptb-moving-mode")||(WPTB_DropHandle(this,e),t.classList.add("wptb-ondragenter"))},t.ondragover=function(e){e.preventDefault(),WPTB_DropHandle(this,e)},t.ondragleave=function(){},t.ondrop=function(e){this.classList.remove("wptb-ondragenter");var t=void 0,a=void 0;if(e.preventDefault(),e.stopPropagation(),e.dataTransfer.getData("wptbElement")||e.dataTransfer.getData("node")){var n=void 0,l=void 0;if(0<document.getElementsByClassName("wptb-drop-handle").length&&(n=document.getElementsByClassName("wptb-drop-handle")[0]),0<document.getElementsByClassName("wptb-drop-border-marker").length&&(l=document.getElementsByClassName("wptb-drop-border-marker")[0]),t=e.dataTransfer.getData("wptbElement")?(t=WPTB_Helper.newElementProxy(e.dataTransfer.getData("wptbElement"))).getDOMElement():(a=e.dataTransfer.getData("node"),document.getElementsByClassName(a)[0]),"block"==n.style.display){var r=void 0;if("Drop Here"==n.dataset.text)(r=n.getDOMParentElement()).appendChild(t);else{var o=n.getDOMParentElement();if(r=o.parentNode,"Above Element"==n.dataset.text)r.insertBefore(t,o);else if("Below Element"==n.dataset.text){var i=o.nextSibling;r.insertBefore(t,i)}}var s=r.parentNode;if(WPTB_Helper.rowIsTop(s)){var d=WPTB_Helper.findAncestor(s,"wptb-preview-table");d.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(d)}t.className.match(/wptb-element-(.+)-(\d+)/i)[1];if(e.dataTransfer.getData("wptbElement"),n.style.display="none",l.style.display="none",c(t),!t.classList.contains("wptb-image-container")||t.classList.contains("wptb-moving-mode"))t.classList.remove("wptb-moving-mode"),(new WPTB_TableStateSaveManager).tableStateSet();return!0}}},t.onmouseover=function(e){t.classList.remove("wptb-ondragenter")}};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var applyGenericItemSettings=function(e,t){var a,n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],l=e.getDOMElement();if(l.classList.contains("wptb-ph-element")){if(null==t||1==n){for(var r=document.getElementsByClassName("wptb-ph-element"),o=[],i=0;i<r.length;i++){var s=new RegExp("wptb-element-"+e.kind+"-(\\d+)","i"),d=r[i].className.match(s);d&&o.push(d[1])}if(0<o.length)a=Math.max.apply(Math,o)+1;else a=1;if(n)for(var c=[].concat(_toConsumableArray(l.attributes)),p=0;p<c.length;p++)if(c[p]&&"object"===_typeof(c[p])&&c[p].nodeName){var m=new RegExp("data-wptb-el-"+e.kind+"-(\\d+)-([a-zA-Z0-9_-]+)","i"),b=c[p].nodeName.match(m);if(b&&Array.isArray(b)){var u=c[p].nodeName.replace(e.kind+"-"+b[1],e.kind+"-"+a),w=c[p].nodeValue;l.removeAttribute(c[p].nodeName),l.setAttribute(u,w)}}}else if(t&&!n){var g=t.split("-");a=g[g.length-1]}var v=l.className.match(/wptb-element-(.+)-(\d+)/i);v&&l.classList.remove(v[0]),l.classList.contains("wptb-ph-element")||l.classList.add("wptb-ph-element"),l.classList.contains("wptb-element-"+e.kind+"-"+a)||l.classList.add("wptb-element-"+e.kind+"-"+a),new WPTB_ElementOptions(e,a,t),WPTB_Helper.elementStartScript(e.getDOMElement()),document.counter.increment(e.kind)}l.onmouseenter=function(e){if(!e.target.classList.contains("wptb-moving-mode")){var t=new WPTB_ActionsField;t.addActionField(1,l),t.setParameters(l),l.classList.remove("wptb-ondragenter")}},l.onmouseleave=function(e){(new WPTB_ActionsField).leaveFromField(e,l)}};
1
+ var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var applyGenericItemSettings=function(e,t){var a,n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],l=e.getDOMElement();if(l.classList.contains("wptb-ph-element")){if(null==t||1==n){for(var r=document.getElementsByClassName("wptb-ph-element"),o=[],i=0;i<r.length;i++){var s=new RegExp("wptb-element-"+e.kind+"-(\\d+)","i"),d=r[i].className.match(s);d&&o.push(d[1])}if(0<o.length)a=Math.max.apply(Math,o)+1;else a=1;if(n)for(var c=[].concat(_toConsumableArray(l.attributes)),p=0;p<c.length;p++)if(c[p]&&"object"===_typeof(c[p])&&c[p].nodeName){var m=new RegExp("data-wptb-el-"+e.kind+"-(\\d+)-([a-zA-Z0-9_-]+)","i"),b=c[p].nodeName.match(m);if(b&&Array.isArray(b)){var u=c[p].nodeName.replace(e.kind+"-"+b[1],e.kind+"-"+a),w=c[p].nodeValue;l.removeAttribute(c[p].nodeName),l.setAttribute(u,w)}}}else if(t&&!n){var g=t.split("-");a=g[g.length-1]}var v=l.className.match(/wptb-element-(.+)-(\d+)/i);v&&l.classList.remove(v[0]),l.classList.contains("wptb-ph-element")||l.classList.add("wptb-ph-element"),l.classList.contains("wptb-element-"+e.kind+"-"+a)||l.classList.add("wptb-element-"+e.kind+"-"+a),WPTB_Helper.elementStartScript(e.getDOMElement()),new WPTB_ElementOptions(e,a,t),document.counter.increment(e.kind)}l.onmouseenter=function(e){if(!e.target.classList.contains("wptb-moving-mode")){var t=new WPTB_ActionsField;t.addActionField(1,l),t.setParameters(l),l.classList.remove("wptb-ondragenter")}},l.onmouseleave=function(e){(new WPTB_ActionsField).leaveFromField(e,l)}},WPTB_ActionsField=(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},function s(){var c=this;this.wptbActions,0!=document.getElementsByClassName("wptb-actions").length&&(this.wptbActions=document.getElementsByClassName("wptb-actions")[0]),this.addActionField=function(e,t){var a=document.getElementsByTagName("body")[0],n=document.getElementsByClassName("wptb-actions");if(0!=n.length){var l=n[0].activeElem;for(l&&l.classList.remove("wptb-directlyhovered");0!=n.length;)n[0].parentNode.removeChild(n[0])}if(1==e){var r=void 0,o=void 0;if(r=document.createElement("span"),o=document.createElement("span"),(n=document.createElement("div")).classList.add("wptb-actions"),r.classList.add("dashicons","dashicons-trash","wptb-delete-action"),o.classList.add("dashicons","dashicons-admin-page","wptb-duplicate-action"),n.appendChild(o),n.appendChild(r),a.appendChild(n),n.activeElem=t,n.type=1,r.onclick=function(e){var t=e.target.parentNode.activeElem,a=t.parentNode;t.className.match(/wptb-element-(.+)-(\d+)/i);if(t&&a.removeChild(t),t&&"object"===(void 0===t?"undefined":_typeof(t))&&t.hasOwnProperty("kind")&&"text"==t.kind){var n=a.parentNode;if(WPTB_Helper.rowIsTop(n)){var l=WPTB_Helper.findAncestor(n,"wptb-preview-table");l.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(l)}}(new s).actionsRemove(),(new WPTB_TableStateSaveManager).tableStateSet()},o.onclick=function(e){var t,a=void 0,n=void 0,l=e.target.parentNode.activeElem,r=l.parentNode;if((t=l.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){n=t[1];var o={};o.kind=n,o.elemProt=l,o.tinyMceClear=!0,a=new WPTB_ElementObject(o),r.insertBefore(a.getDOMElement(),l.nextSibling)}else{a={};var i=l.cloneNode(!0);i.classList.remove("wptb-directlyhovered"),a.getDOMElement=function(){return i},applyGenericItemSettings(a),r.insertBefore(a.getDOMElement(),l.nextSibling),WPTB_Helper.wptbDocumentEventGenerate("wptb-inner-element:copy",l,a.getDOMElement())}WPTB_innerElementSet(a.getDOMElement()),new s(1,l).setParameters(l),(new WPTB_TableStateSaveManager).tableStateSet()},t.classList.contains("wptb-ph-element")){var i=void 0;(i=document.createElement("span")).classList.add("dashicons","dashicons-move","wptb-move-action"),i.draggable=!0,n.appendChild(i),i.ondragstart=function(e){var t,a=wp.template("wptb-element-icons-directories")({}),n=JSON.parse(a),l=void 0,r=e.target.parentNode.activeElem,o=void 0;if((t=r.className.match(/wptb-element-(.+)-(\d+)/i))&&Array.isArray(t)){o=t[1],r.classList.add("wptb-moving-mode"),n&&"object"===(void 0===n?"undefined":_typeof(n))&&n[o]&&(l=WPTB_Helper.getElementIcon(n[o])),e.dataTransfer.effectAllowed="move",e.dataTransfer.setDragImage(l,0,0),e.dataTransfer.setData("node","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptb-moving-mode","wptb-element-"+t[1]+"-"+t[2]),e.dataTransfer.setData("wptbElIndic-"+t[1],"wptbElIndic-"+t[1]);var i=e.target.parentNode.activeElem;if("text"==i.kind){var s=i.parentNode.parentNode;if(WPTB_Helper.rowIsTop(s)){var d=WPTB_Helper.findAncestor(s,"wptb-preview-table");d.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(d)}}}else c.style.display="none";c.actionsHide()},i.ondragend=function(e){WPTB_Helper.elementDragEndClear()}}n.style.display="flex",c.wptbActions=n}},this.setParameters=function(t){if(!c.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length?c.wptbActions=e[0]:c.wptbActions=!1}if(c.wptbActions&&c.wptbActions.classList.contains("wptb-actions")){c.wptbActions.style.display="flex";var a=t.getBoundingClientRect(),n=document.getElementsByClassName("wptb-container")[0],l=function(){var e=t.getBoundingClientRect();c.wptbActions.style.top=parseFloat(e.top)-15+"px"};n.removeEventListener("scroll",l,!1),c.wptbActions.style.top=parseFloat(a.top)-15+"px",c.wptbActions.style.left=parseFloat(a.right)-parseFloat(c.wptbActions.clientWidth)+1+"px",c.wptbActions.style.display="flex",t.classList.add("wptb-directlyhovered"),n.addEventListener("scroll",l,!1)}},this.leaveFromField=function(e,t,a){if(!c.wptbActions){var n=document.getElementsByClassName("wptb-actions");0<n.length?c.wptbActions=n[0]:c.wptbActions=!1}if(c.wptbActions){if(e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-actions")||e.relatedTarget.classList.contains("wptb-move-action")||e.relatedTarget.classList.contains("wptb-duplicate-action")||e.relatedTarget.classList.contains("wptb-delete-action")))return c.wptbActions||(c.wptbActions=document.getElementsByClassName("wptb-actions")[0]),void(c.wptbActions.onmouseleave=function(e){null!=e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&e.relatedTarget!=c.wptbActions.activeElem&&(WPTB_Helper.findAncestor(e.relatedTarget,"wptb-directlyhovered"),c.wptbActions.activeElem),(new s).leaveFromField(e,e.relatedTarget.parentNode.parentNode),e.target.activeElem.classList.remove("wptb-directlyhovered")});t.classList.remove("wptb-directlyhovered"),c.wptbActions.style.display="none",e.relatedTarget&&(e.relatedTarget.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.relatedTarget,"wptb-ph-element"))&&(c.addActionField(1,e.relatedTarget.parentNode),c.setParameters(e.relatedTarget.parentNode))}},this.actionsRemove=function(){if(!c.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(c.wptbActions=e[0])}c.wptbActions&&c.wptbActions.parentNode.removeChild(c.wptbActions)},this.actionsHide=function(){if(!c.wptbActions){var e=document.getElementsByClassName("wptb-actions");0<e.length&&(c.wptbActions=e[0])}c.wptbActions&&(c.wptbActions.style.opacity=0)}});!function(){var e=window.location.href;new RegExp("[?&]page=wptb-builder").exec(e)&&document.addEventListener("DOMContentLoaded",function(){var l=WPTB_Helper.detectMode();if(l){var r=new XMLHttpRequest,e=ajaxurl+"?action=get_table&id="+l;r.open("GET",e,!0),r.setRequestHeader("Content-type","application/x-www-form-urlencoded"),r.onreadystatechange=function(e){if(4!=this.readyState||200!=this.status);else{var t=JSON.parse(r.responseText);if(document.getElementById("wptb-setup-name").value=t[0],t[1]){document.getElementsByClassName("wptb-table-generator")[0].style.display="none";var a=document.getElementsByClassName("wptb-table-setup")[0];a.appendChild(WPTB_Parser(t[1])),document.getElementsByTagName("body")[0],WPTB_Table();var n=document.querySelector(".wptb-preview-table");n&&(n.className.match(/wptb-element-((.+-)\d+)/i)||n.classList.add("wptb-element-main-table_setting-"+l),n.dataset.wptbTableContainerMaxWidth&&(a.style.maxWidth=n.dataset.wptbTableContainerMaxWidth+"px",n.tdDefaultWidth())),WPTB_Settings(),(new WPTB_TableStateSaveManager).tableStateSet()}else document.getElementsByClassName("wptb-table-generator")[0].style.display="table"}},r.send(null)}else document.getElementsByClassName("wptb-table-generator")[0].style.display="table",(new WPTB_TableStateSaveManager).tableStateSet();document.counter=new ElementCounters,document.select=new MultipleSelect;WPTB_Initializer();settings=WPTB_Settings()})}();_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var WPTB_Cell=function(e,a){if(!a){(a=document.createElement("td")).style.padding=jQuery("#wptb-table-padding-number").val()+"px";var t=jQuery("#wptb-table-inner-border-number").val();""!=t&&0!=parseInt(t)&&(a.style.border=t+"px solid "+jQuery("#wptb-table-border-color").val()),a.classList.add("wptb-droppable","wptb-cell")}a.draggable=!1,e&&(a.onclick=e),a.ondblclick=function(e){if(e.stopPropagation(),!WPTB_Helper.findAncestor(a,"wptb-preview-table-manage-cells")&&e.target==e.currentTarget){WPTB_Helper.wptbDocumentEventGenerate("table:cell:dblclick",e.target);var t=WPTB_Helper.newElementProxy("text");t=t.getDOMElement(),a.appendChild(t),WPTB_innerElementSet(t)}},WPTB_innerElementSet(a),WPTB_Helper.controlsInclude(a,function(e,t){if(e&&"object"===(void 0===e?"undefined":_typeof(e))){var a=WPTB_Helper.findAncestor(t,"wptb-preview-table"),n=a.querySelector(".wptb-highlighted");if(n){var l=n.className.match(/wptb-element-((.+-)\d+)/i),r="";if(l&&Array.isArray(l)&&(r=l[1]),e.hasOwnProperty("cellWidth")){if(a.addColumnWidth(e.cellWidth),r){var o=document.querySelector(".wptb-el-"+r+"-cellWidthFixed");o&&!o.checked&&(o.checked=!0)}}else if(e.hasOwnProperty("cellWidthFixed"))if("checked"==e.cellWidthFixed){var i=WPTB_Helper.getColumnWidth(a,n);a.addColumnWidth(i)}else a.addColumnWidth(!1,!0);else if(e.hasOwnProperty("cellHeight")){if(a.addRowHeight(e.cellHeight),r){var s=document.querySelector(".wptb-el-"+r+"-cellHeightFixed");s&&!s.checked&&(s.checked=!0)}}else if(e.hasOwnProperty("cellHeightFixed"))if("checked"==e.cellHeightFixed){var d=WPTB_Helper.getRowHeight(a,n);a.addRowHeight(d)}else a.addRowHeight(!1,!0)}}});var o=a.getElementsByClassName("wptb-ph-element");if(0<o.length)for(var n=function(l){o[l].getDOMElement=function(){return o[l]},WPTB_innerElementSet(o[l]);var r=o[l].className.match(/wptb-element-((.+-)\d+)/i);r&&Array.isArray(r)&&function(){var e=r[1].split("-");o[l].kind=e[0],applyGenericItemSettings(o[l],r[1]);var a=o[l].getElementsByClassName("wptb-in-element");if(0<a.length)for(var t=function(e){var t={getDOMElement:function(){return a[e]}};applyGenericItemSettings(t)},n=0;n<a.length;n++)t(n)}()},l=0;l<o.length;l++)n(l);return this.getDOMElement=function(){return a},this.setCoords=function(e,t){var a=this.getDOMElement();a.dataset.yIndex=e,a.dataset.xIndex=t},this.getCoords=function(){var e,t=this.getDOMElement();return e.x=t.dataset.xIndex,e.y=t.dataset.yIndex,e},this.appendElement=function(e){getDOMElement().appendChild(e)},a.getCellDimensions=function(){var e=window.getComputedStyle(this,null),t=e.getPropertyValue("padding-left"),a=e.getPropertyValue("padding-right"),n=e.getPropertyValue("border-left-width"),l=e.getPropertyValue("border-right-width"),r=e.getPropertyValue("padding-top"),o=e.getPropertyValue("padding-bottom"),i=e.getPropertyValue("border-top-width"),s=e.getPropertyValue("border-bottom-width"),d=parseInt(this.offsetWidth,10)-parseInt(t,10)-parseInt(a,10)-parseInt(n,10)/2-parseInt(l,10)/2,c=parseInt(this.offsetHeight,10)-parseInt(r,10)-parseInt(o,10)-parseInt(i,10)/2-parseInt(s,10)/2,p=WPTB_Helper.findAncestor(this,"wptb-preview-table");if(p){var m=window.getComputedStyle(p,null),b=m.getPropertyValue("border-left-width"),u=m.getPropertyValue("border-right-width"),w=m.getPropertyValue("border-top-width"),g=m.getPropertyValue("border-bottom-width"),v=this.parentNode;if(v&&"tr"===v.nodeName.toLowerCase()){v.firstChild&&v.firstChild.dataset.xIndex===this.dataset.xIndex&&parseInt(b,10)>parseInt(n,10)&&(d+=-(parseInt(b,10)-parseInt(n,10))/2),v.lastChild&&v.lastChild.dataset.xIndex===this.dataset.xIndex&&parseInt(u,10)>parseInt(l,10)&&(d+=-(parseInt(u,10)-parseInt(l,10))/2);var f=v.parentNode;f&&"body"===f.nodeName.toLowerCase()&&(f.firstChild&&f.firstChild.firstChild.dataset.yIndex===this.dataset.yIndex&&parseInt(w,10)>parseInt(i,10)&&(c+=(parseInt(w,10)-parseInt(i,10))/2),f.lastChild&&f.lastChild.firstChild.dataset.yIndex===this.dataset.yIndex&&parseInt(g,10)>parseInt(s,10)&&(c+=(parseInt(g,10)-parseInt(s,10))/2))}}return{width:parseInt(d),height:parseInt(c)}},this},WPTB_DropHandle=function(i,e){var s=void 0,d=void 0,t=void 0,a=void 0,n=void 0,l=void 0;if(0==document.getElementsByClassName("wptb-drop-handle").length){(s=document.createElement("div")).classList.add("wptb-drop-handle"),(d=document.createElement("div")).classList.add("wptb-drop-border-marker"),t=document.createElement("div"),a=document.createElement("div"),n=document.createElement("div"),l=document.createElement("div"),t.classList.add("wptb-drop-border-marker-top"),a.classList.add("wptb-drop-border-marker-right"),n.classList.add("wptb-drop-border-marker-bottom"),l.classList.add("wptb-drop-border-marker-left"),d.appendChild(t),d.appendChild(a),d.appendChild(n),d.appendChild(l);var r=document.getElementsByTagName("body");0<r.length&&(r[0].appendChild(s),r[0].appendChild(d)),s.ondragenter=function(){},s.ondragover=function(e){e.preventDefault()},s.ondragleave=function(){},s.ondrop=function(e){e.preventDefault();var t=void 0;e.dataTransfer.getData("wptbElement")?t=(t=WPTB_Helper.newElementProxy(e.dataTransfer.getData("wptbElement"))).getDOMElement():((t=document.getElementsByClassName(e.dataTransfer.getData("node"))[0]).classList.remove("wptb-moving-mode"),t.classList.remove("wptb-moving-into-same-elem"),t.wptbMovingMode=1);var a=void 0;if("Drop Here"==s.dataset.text)"td"==(i=s.getDOMParentElement()).nodeName.toLowerCase()&&(a=s.getDOMParentElement()).appendChild(t);else{var n=s.getDOMParentElement();if(a=n.parentNode,"Above Element"==s.dataset.text)a.insertBefore(t,n);else if("Below Element"==s.dataset.text){var l=n.nextSibling;a.insertBefore(t,l)}}var r=a.parentNode;if(WPTB_Helper.rowIsTop(r)){var o=WPTB_Helper.findAncestor(r,"wptb-preview-table");o.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(o)}(s.style.display="none",d.style.display="none",WPTB_innerElementSet(t),t.classList.contains("wptb-image-container")&&1!=t.wptbMovingMode)||((new WPTB_TableStateSaveManager).tableStateSet(),t.wptbMovingMode)},document.querySelector(".wptb-container").onscroll=function(){s.style.display="none",d.style.display="none"}}else s=document.getElementsByClassName("wptb-drop-handle")[0],d=document.getElementsByClassName("wptb-drop-border-marker")[0];if(!i||"td"!=i.nodeName.toLowerCase()||0==i.getElementsByClassName("wptb-ph-element").length){var o=void 0;if("td"==i.localName?o=i.parentNode:"div"==i.localName&&i.classList.contains("wptb-ph-element")&&(o=i.parentNode.parentNode),WPTB_Helper.rowIsTop(o))if(WPTB_Helper.findAncestor(o,"wptb-preview-table").classList.contains("wptb-table-preview-head")){for(var c=e.dataTransfer.types,p=!1,m=0;m<c.length;m++){var b=c[m].match(/wptbelindic-([a-z]+)/i);if(b&&"text"!=b[1]){p=!0;break}}if(p)return}s.style.width=i.offsetWidth+"px";var u=i.offsetHeight,w=i.getBoundingClientRect(),g=parseFloat(w.left),v=void 0;if(s.style.left=g+"px",-1!=e.dataTransfer.types.indexOf("wptb-moving-mode")){var f=document.getElementsByClassName("wptb-moving-mode")[0];i==f?(s.classList.add("wptb-moving-into-same-elem"),d.classList.add("wptb-moving-into-same-elem")):(s.classList.remove("wptb-moving-into-same-elem"),d.classList.remove("wptb-moving-into-same-elem"))}if(s.getDOMParentElement=function(){return i},s.style.display="block",d.style.display="block","td"!=i.nodeName.toLowerCase()){var h=null==e.offsetY?e.layerY:e.offsetY;v=parseFloat(w.top)-parseFloat(11),s.dataset.text="Above Element",u/2<h&&(v=parseFloat(w.top)+u-1,s.dataset.text="Below Element")}else s.dataset.text="Drop Here",v=parseFloat(w.top)+u/2-5;s.style.top=v+"px",d.style.top=w.top+"px",d.style.left=w.left+"px",(t=d.querySelector(".wptb-drop-border-marker-top")).style.width=parseFloat(i.offsetWidth)-parseFloat(1)+"px",(a=d.querySelector(".wptb-drop-border-marker-right")).style.height=parseFloat(w.bottom)-parseFloat(w.top)-1+"px",a.style.left=t.style.width,(n=d.querySelector(".wptb-drop-border-marker-bottom")).style.width=t.style.width,n.style.top=a.style.height,(l=d.querySelector(".wptb-drop-border-marker-left")).style.height=a.style.height}},ElementCounters=function(){var t=[];return t.text=0,t.image=0,t.list=0,t.button=0,this.increment=function(e){e in t&&t[e]++},this.nextIndex=function(e){if(e in t)return t[e]+1},this},WPTB_ElementObject=function(e){var t=void 0,a=void 0,n=void 0;if(e.elemProt){(t=e.elemProt.cloneNode(!0)).classList.remove("wptb-directlyhovered");var l=e.elemProt.className.match(/wptb-element-((.+-)\d+)/i);l&&Array.isArray(l)&&(a=l[1]),n=!0,e.tinyMceClear&&(t=WPTB_Helper.elementClearFromTinyMce(t))}else{a=void 0,n=!1,(t=document.createElement("div")).classList.add("wptb-"+e.kind+"-container","wptb-ph-element");var r="wptb-"+e.kind+"-content",o=wp.template(r);e.node=t;var i=o(e);i=i.replace(/\r|\n|\t/g,"").trim(),t.innerHTML=i}var s=t.querySelectorAll(".wptb-in-element");if(0<s.length)for(var d=function(e){var t={getDOMElement:function(){return s[e]}};applyGenericItemSettings(t)},c=0;c<s.length;c++)d(c);return window.addEventListener("item:onmouseenter",function(e){},!1),this.kind=e.kind,this.getDOMElement=function(){return t},applyGenericItemSettings(this,a,n),this},WPTB_ElementOptions=function(e,t,a){e.getDOMElement().addEventListener("click",function(){WPTB_Helper.elementOptionsSet(e.kind,this)},{capture:!0})};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var WPTB_Helper={hexToRgb:function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?"rgb("+parseInt(t[1],16)+","+parseInt(t[2],16)+","+parseInt(t[3],16)+")":null},rgbToHex:function(e){if(e){if(WPTB_Helper.isHex(e))return e;var t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?((?:[0-9]*[.])?[0-9]+)[\s+]?\)/i);return t&&5===t.length?"#"+("0"+Math.round(255*parseFloat(t[4],10)).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[1],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[2],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[3],10).toString(16).toUpperCase()).slice(-2):(t=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===t.length?"#"+("0"+parseInt(t[1],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[2],10).toString(16).toUpperCase()).slice(-2)+("0"+parseInt(t[3],10).toString(16).toUpperCase()).slice(-2):""}return""},isHex:function(e){return new RegExp("^#(?:[A-Fa-f0-9]{3}){1,2}$").test(e)},getElementIcon:function(e){location.protocol,location.hostname;var t=document.createElement("img");return t.src=e,t},elementDragEndClear:function(){var e=document.getElementsByClassName("wptb-moving-mode");if(0<e.length)for(var t=0;t<e.length;t++)e[t].classList.remove("wptb-moving-mode");var a=document.getElementsByClassName("wptb-drop-handle");if(0<a.length)for(var n=0;n<a.length;n++)a[n].style.display="none";var l=document.getElementsByClassName("wptb-drop-border-marker");if(0<l.length)for(var r=0;r<l.length;r++)l[r].style.display="none"},linkHttpCheckChange:function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1];if(e){if(e.match(/^(javascript:)(.+)$/))return e;if(e.match(/^\/([\S]+)$/)){if(t){var a=document.location.origin;return a.match(/^(.+)\/$/)&&(a=a.slice(-1)),""+a+e}return e}if(-1!=e.indexOf("http://")||-1!=e.indexOf("https://"))return e;var n=e.split("/"),l=void 0;return Array.isArray(n)&&0<n.length&&(l=n[n.length-1]),document.location.protocol+"//"+l}return""},dataTitleColumnSet:function(e){for(var t=e.rows,a=t[0],n=getComputedStyle(a),l=a.children,r={},o=0;o<l.length;o++){for(var i=l[o].children,s=0;s<i.length;s++){var d=i[s];if(d.classList.contains("wptb-ph-element"))if("text"==d.className.match(/wptb-element-(.+)-(\d+)/i)[1]){var c=d.querySelector("p"),p=c.textContent,m=c.style.textAlign;r[l[o].dataset.xIndex]=[p,d.style.fontSize,d.style.color,n.backgroundColor,m];break}}r[l[o].dataset.xIndex]||(r[l[o].dataset.xIndex]=["","","",n.backgroundColor,""])}for(var b=1;b<t.length;b++)for(var u=t[b].children,w=0;w<u.length;w++)r[u[w].dataset.xIndex]?(u[w].dataset.wptbTitleColumn=r[u[w].dataset.xIndex][0],u[w].dataset.wptbTitleColumnFontSize=r[u[w].dataset.xIndex][1],u[w].dataset.wptbTitleColumnColor=r[u[w].dataset.xIndex][2],u[w].dataset.wptbTitleBackgroundColor=r[u[w].dataset.xIndex][3],u[w].dataset.wptbTitleAlign=r[u[w].dataset.xIndex][4]):(u[w].dataset.wptbTitleColumn="",u[w].dataset.wptbTitleColumnFontSize="",u[w].dataset.wptbTitleColumnColor="",u[w].dataset.wptbTitleBackgroundColor="",u[w].dataset.wptbTitleAlign="")},findAncestor:function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e},rowIsTop:function(e){return e.parentNode.children[0]==e},getSelectionText:function(){return window.getSelection?window.getSelection().toString():document.selection.createRange().text},elementOptionsPanelClear:function(){var e=document.getElementById("element-options-group");e&&(e.innerHTML="")},wpColorPickerCheckChangeForTableStateSaving:function(e){if("external"==e.originalEvent.type)(new WPTB_TableStateSaveManager).tableStateSet();else if(WPTB_Helper.findAncestor(e.target,"wp-picker-container")&&("square"==e.originalEvent.type||"strip"==e.originalEvent.type)){var t=document.getElementsByTagName("body")[0];t.removeEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1),t.addEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1)}},irisStripMouseUpStateSaveManager:function(){(new WPTB_TableStateSaveManager).tableStateSet(),document.getElementsByTagName("body")[0].removeEventListener("mouseup",WPTB_Helper.irisStripMouseUpStateSaveManager,!1)},wpColorPickerClear:function(e,t){var a=void 0;t?(a=[document.getElementById(e)]).length=1:a=document.getElementsByClassName(e);for(var n=0;n<a.length;n++){var l=WPTB_Helper.findAncestor(a[n],"wp-picker-container");if(l){var r=l.parentNode;r.removeChild(l);var o=document.createElement("input");t?o.setAttribute("id",e):o.classList.add("wptb-element-property",e),o.value="",r.appendChild(o)}}},detectMode:function(){var e=window.location.href,t=new RegExp("[?&]table(=([^&#]*)|&|#|$)").exec(e);return!!t&&(t[2]?decodeURIComponent(t[2].replace(/\+/g," ")):"")},getColumnWidth:function(e,t){for(var a=t.dataset.xIndex,n=e.querySelectorAll('[data-x-index="'+a+'"]'),l=t.getCellDimensions().width,r=0;r<n.length;r++)l>n[r].getCellDimensions().width&&(l=n[r].getCellDimensions().width);return l},getRowHeight:function(e,t){for(var a=t.dataset.yIndex,n=e.querySelectorAll('[data-y-index="'+a+'"]'),l=t.getCellDimensions().height,r=0;r<n.length;r++)l>n[r].getCellDimensions().height&&(l=n[r].getCellDimensions().height);return l},newElementProxy:function(e){if(e)return new WPTB_ElementObject({kind:e})},wpColorPickerChange:function(e,t){var a=void 0;a=t?t.color.toString():"";var n,l,r,o=WPTB_Helper.findAncestor(e.target,"wp-picker-input-wrap").getElementsByClassName("wptb-color-picker")[0];l=(n=o.dataset.element.match(/wptb-options-(.+)-(\d+)/i))[1],r=n[2];var i=document.getElementsByClassName("wptb-element-"+l+"-"+r)[0];if("button"==l)"button-text-color"==o.dataset.type?i.getElementsByClassName("wptb-button")[0].style.color=a:i.getElementsByClassName("wptb-button")[0].style.backgroundColor=a;else if("list"==l){var s=i.querySelectorAll("p");if(0<s.length)for(var d=0;d<s.length;d++)s[d].style.color=a}else if("star_rating"==l){if("star-color"==o.dataset.type)for(var c=i.querySelectorAll("li"),p=0;p<c.length;p++)for(var m=c[p].getElementsByTagName("span"),b=0;b<m.length;b++)m[b].style.fill=a;else if("numeral-rating-color"==o.dataset.type){i.querySelector(".wptb-number-rating").style.color=a}}else i.style.color=a},numberImputSize:function(e,t,a){e.onkeydown=function(){var e=this.value;0==(e=String(e))[0]?this.value="":(e=e.substring(0,t),this.value=e)},e.onkeyup=function(){var e=this.value;parseInt(e,10)>parseInt(a,10)&&(this.value=a),(new WPTB_TableStateSaveManager).tableStateSet()}},ucfirst:function(e){return e.charAt(0).toUpperCase()+e.slice(1)},wptbDocumentEventGenerate:function(e,t,a){if(e&&t){a||(a=!0);var n=new CustomEvent(e,{detail:a,bubbles:!0});t.dispatchEvent(n)}},elementStartScript:function(e,t){if(!t){var a=e.className.match(/wptb-element-(.+)-(\d+)/i);a&&Array.isArray(a)&&(t=a[1])}t&&t in WPTB_ElementsScriptsLauncher&&WPTB_ElementsScriptsLauncher[t](e)},deleteEventHandlers:function(e){if(e){jQuery(e).off();var t=e.children;if(t)for(var a=0;a<t.length;a++)WPTB_Helper.deleteEventHandlers(t[a])}},replaceAll:function(e,t,a){return e.split(t).join(a)},elementClearFromTinyMce:function(e){var t=e.querySelectorAll(".mce-content-body");if(0<t.length)for(var a=0;a<t.length;a++)t[a].classList.remove("mce-content-body");var n=e.querySelectorAll("[data-mce-style]");if(0<n.length)for(var l=0;l<n.length;l++)n[l].removeAttribute("data-mce-style");var r=e.querySelectorAll(".mce-edit-focus");if(0<r.length)for(var o=0;o<r.length;o++)r[o].classList.remove("mce-edit-focus");var i=e.querySelectorAll("[contenteditable]");if(0<i.length)for(var s=0;s<i.length;s++)i[s].removeAttribute("contenteditable");var d=e.querySelectorAll("[spellcheck]");if(0<d.length)for(var c=0;c<d.length;c++)d[c].removeAttribute("spellcheck");var p=e.querySelectorAll("[id^=mce_]");if(0<p.length)for(var m=0;m<p.length;m++)p[m].removeAttribute("id");return e},elementOptionContainerCustomClassSet:function(e,t){if(e&&t){var a=WPTB_Helper.findAncestor(e,"wptb-element-option");a&&a.classList.add(t)}},elementOptionContainerAdditionalStyles:function(e,t){if(e&&t){var a=WPTB_Helper.findAncestor(e,"wptb-element-option"),n=t.split(";");if(a&&n){var l=function(e,t){e&&(containerStyleStrArr=e.split(":"),containerStyleStrArr&&Array.isArray(containerStyleStrArr)&&(t.style[containerStyleStrArr[0]]=containerStyleStrArr[1]))};if(n&&Array.isArray(n))for(var r=0;r<n.length;r++)n[r]&&l(n[r],a);else l(n,a)}}},controlsInclude:function(i,s){i&&"object"===(void 0===i?"undefined":_typeof(i))&&s&&"function"==typeof s&&i.addEventListener("element:controls:active",function(){if(!i.hasOwnProperty("controlConnectFunctionsName")||!Array.isArray(i.controlConnectFunctionsName)||-1==i.controlConnectFunctionsName.indexOf(s.name)){var e=i.className.match(/wptb-element-(.+)-(\d+)/i),t=void 0;if(e&&Array.isArray(e)&&(t=e[1]),t){var a=document.querySelector(".wptb-element-options.wptb-options-"+e[1]+"-"+e[2]);if(!a)return;for(var n=a.querySelectorAll(".wptb-element-option"),l=0;l<n.length;l++){var o=n[l].querySelector(".wptb-element-property");o&&function(){var e=new RegExp("wptb-el-"+t+"-(\\d+)-([a-zA-Z0-9_-]+)","i"),l=o.className.match(e);if(l&&Array.isArray(l)){var r=l[0];i.addEventListener("wptb-control:"+r,function(){var e={},t=l[2],a=document.getElementsByClassName(r);if(0<a.length&&t){var n=WPTB_Helper.targetControlValueGet(a);e[t]=n}s(e,i)},!1)}}()}i.controlConnectFunctionsName||Array.isArray(i.controlConnectFunctionsName)||(i.controlConnectFunctionsName=[]),i.controlConnectFunctionsName.push(s.name)}}},!1)},oneControlInclude:function(n,l,e){if(!n||"object"!==(void 0===n?"undefined":_typeof(n))||"function"!=typeof l||"string"!=typeof e)return!1;var t=n.className.match(/wptb-element-((.+-)\d+)/i);if(t&&Array.isArray(t)){var a="wptb-"+t[1].split("-")[0]+"-control-stack",r=wp.template(a)({container:"."+t[0]}),o=JSON.parse(r);if(o&&"object"===(void 0===o?"undefined":_typeof(o))&&o.hasOwnProperty(e)){var i="wptb-el-"+t[1]+"-"+e;n.addEventListener("wptb-control:"+i,function(e){var t=document.getElementsByClassName(i);if(0<t.length){var a=WPTB_Helper.targetControlValueGet(t);l(a,n)}},!1)}}},innerElementCopyIncludeHandler:function(a,n){a&&"object"===(void 0===a?"undefined":_typeof(a))&&"function"==typeof n&&a.addEventListener("wptb-inner-element:copy",function(e){var t=e.detail;t&&(WPTB_Helper.elementClearFromTinyMce(t),n(t,a))},!1)},appearDependOnControl:function(t,e){if(Array.isArray(t)){var a=t[0],n=e.match(/wptb-el-((.+-)\d+)-(.+)/i);if(n&&Array.isArray(n)){var l=n[3],r=e.replace(l,a),o=document.getElementsByClassName(r);if(0<o.length){o=o[0];var i=document.getElementsByClassName(e);if(0<i.length){i=i[0];var s=WPTB_Helper.findAncestor(i,"wptb-element-option");if(s){var d=function(e,t){if(e){var a=document.getElementsByClassName(e);if(0<a.length){var n=WPTB_Helper.targetControlValueGet(a);t[1]&&Array.isArray(t[1])&&-1!==t[1].indexOf(n)?s.style.display="block":t[2]&&Array.isArray(t[2])&&-1!==t[2].indexOf(n)&&(s.style.display="none")}}};d(r,t),o.addEventListener("change",function(e){d(r,t)},!1)}}}}}},controlsStateManager:function(e,t){var a=document.getElementsByClassName(e);if(0<a.length){var n=e.match(/wptb-el-((.+-)\d+)-(.+)/i);if(n&&Array.isArray(n)){if(document.querySelector(".wptb-element-"+n[1])){var l=void 0,r={},o=void 0;if(0==(l=document.getElementsByClassName("wptb-element-datas")).length||""==l[0].innerHTML){var i=WPTB_Helper.targetControlValueGet(a);r["data-"+e]=i,(o={})["tmpl-wptb-el-datas-"+n[1]]=r,o=JSON.stringify(o),0==l.length?((l=document.createElement("script")).setAttribute("type","text/html"),l.setAttribute("class","wptb-element-datas")):l=l[0],l.innerHTML=o,document.getElementsByTagName("body")[0].appendChild(l)}else if((o=(l=l[0]).innerHTML)&&(o=o.trim(),(o=JSON.parse(o))&&"object"===(void 0===o?"undefined":_typeof(o))))if(t){var s=WPTB_Helper.targetControlValueGet(a);"tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])||(o["tmpl-wptb-el-datas-"+n[1]]={}),o["tmpl-wptb-el-datas-"+n[1]]["data-"+e]=s,l.innerHTML=JSON.stringify(o)}else if("tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])&&"data-"+e in o["tmpl-wptb-el-datas-"+n[1]]){if("tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])&&"data-"+e in o["tmpl-wptb-el-datas-"+n[1]])for(var d=0;d<a.length;d++)if("checkbox"==a[d].type){var c=void 0;"checked"==(c=a[d].name?o["tmpl-wptb-el-datas-"+n[1]]["data-"+e][a[d].name]:o["tmpl-wptb-el-datas-"+n[1]]["data-"+e])?a[d].checked=!0:"unchecked"==c&&(a[d].checked=!1)}else a[d].value=o["tmpl-wptb-el-datas-"+n[1]]["data-"+e]}else{var p=WPTB_Helper.targetControlValueGet(a);"tmpl-wptb-el-datas-"+n[1]in o&&"object"===_typeof(o["tmpl-wptb-el-datas-"+n[1]])||(o["tmpl-wptb-el-datas-"+n[1]]={}),o["tmpl-wptb-el-datas-"+n[1]]["data-"+e]=p,l.innerHTML=JSON.stringify(o)}}}}},targetControlValueGet:function(e){for(var t=void 0,a=0;a<e.length;a++)"checkbox"==e[a].type&&e[a].name?(t||(t={}),1==e[a].checked?t[e[a].name]="checked":t[e[a].name]="unchecked"):"checkbox"==e[a].type?t=1==e[a].checked?"checked":"unchecked":e[a].type?t=e[a].value:e[a].dataset.alignmentValue&&e[a].classList.contains("selected")&&(t=e[a].dataset.alignmentValue);return t},elementControlsStateCopy:function(e,t){if(e&&t){var a=e.className.match(/wptb-element-((.+-)\d+)/i),n=t.className.match(/wptb-element-((.+-)\d+)/i);if(a&&Array.isArray(a)&&n&&Array.isArray(n)){var l=a[1],r=n[1],o=document.getElementsByClassName("wptb-element-datas");if(0<o.length){var i=(o=o[0]).innerHTML;if(i&&(i=i.trim(),(i=JSON.parse(i))&&"object"===(void 0===i?"undefined":_typeof(i)))){var s=i["tmpl-wptb-el-datas-"+l];if(s&&"object"===(void 0===s?"undefined":_typeof(s))){var d={};Object.keys(s).forEach(function(e){var t=s[e],a=e.replace(l,r);d[a]=t}),0<Object.keys(d).length&&(i["tmpl-wptb-el-datas-"+r]=d,i=JSON.stringify(i),o.innerHTML=i)}}}}}},elementControlsStateDelete:function(e,t){var a=e.className.match(/wptb-element-(.+)-(\d+)/i),n=document.getElementsByTagName("body")[0],l=n.getElementsByClassName("wptb-element-datas");if(a&&Array.isArray(a)&&0<l.length){var r=(l=l[0]).innerHTML;r&&(r=r.trim(),(r=JSON.parse(r))&&"object"===(void 0===r?"undefined":_typeof(r))&&"tmpl-wptb-el-datas-"+a[1]+"-"+a[2]in r&&(t?r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]]&&"object"===_typeof(r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]])&&"data-wptb-el-"+a[1]+"-"+a[2]+"-"+t in r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]]&&delete r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]]["data-wptb-el-"+a[1]+"-"+a[2]+"-"+t]:delete r["tmpl-wptb-el-datas-"+a[1]+"-"+a[2]],0==Object.keys(r).length?n.removeChild(l):(r=JSON.stringify(r),l.innerHTML=r)))}},elementOptionsSet:function(e,t){var a,s,d,n="wptb-"+e+"-control-stack",l=wp.template(n),r=void 0,o=void 0,c=void 0,p=document.createElement("div"),i=document.createElement("div"),m=t.className.match(/wptb-element-((.+-)\d+)/i);if(!m){var b=WPTB_Helper.detectMode();if(b||(b="startedid-0"),t.classList.contains("wptb-preview-table"))t.classList.add("wptb-element-main-table_setting-"+b);else if(t.classList.contains("wptb-cell")){var u=document.querySelector(".wptb-element-table_cell_setting-"+b);u&&u.classList.remove("wptb-element-table_cell_setting-"+b),t.classList.add("wptb-element-table_cell_setting-"+b)}m=t.className.match(/wptb-element-((.+-)\d+)/i)}if(a={container:"."+m[0]},s=m[0],d=m[1],t.classList.contains("wptb-preview-table"))o="table-settings-group",c="wptb-element-option";else if(t.classList.contains("wptb-cell"))o="element-cell-options-group",c="wptb-element-option",this.activateSection("cell_settings");else{for(var w=document.getElementById("element-options-group").childNodes,g=0;g<w.length;g++)w[g].style&&(w[g].style.display="none");this.activateSection("options_group"),o="element-options-group",c="wptb-element-option"}p.classList.add("wptb-element-options","wptb-options-"+m[1]),i.classList.add("wptb-element-options-scripts","wptb-options-"+m[1]);var v=l(a),f=JSON.parse(v);r=document.getElementById(o);for(var h=[].concat(_toConsumableArray(r.children)),y=0;y<h.length;y++)r.removeChild(h[y]);document.getElementById(o).appendChild(p),document.getElementById(o).appendChild(i),p.style.display="block";var S=[],T=[];if(Object.keys(f).forEach(function(e){var t=f[e];t.controlKey=e;var a=wp.template("wptb-"+t.type+"-control");t.elemContainer=s,t.elementControlTargetUnicClass="wptb-el-"+d+"-"+t.controlKey;var n=a(t);"appearDependOnControl"in t&&Array.isArray(t.appearDependOnControl)&&T.push([t.appearDependOnControl,t.elementControlTargetUnicClass]);var l=document.createElement("div");l.classList.add(c,"wptb-settings-items"),t.customClassForContainer&&l.classList.add(t.customClassForContainer),t.containerAdditionalStyles&&l.setAttribute("style",t.containerAdditionalStyles),l.innerHTML=n,p.appendChild(l);var r=l.getElementsByTagName("wptb-template-script");if(0<r.length){var o=(r=r[0]).innerText;l.removeChild(r);var i=document.createElement("script");i.setAttribute("type","text/javascript"),i.innerHTML=o.replace(/\r|\n|\t/g,"").trim(),S.push(i)}0}),0<S.length)for(var C=0;C<S.length;C++)i.appendChild(S[C]);for(var B=0;B<T.length;B++)WPTB_Helper.appearDependOnControl(T[B][0],T[B][1]);WPTB_Helper.wptbDocumentEventGenerate("element:controls:active",t)},managerExternalCssStyles:function(e,t,a,n){var l=e.match(/wptb-element-main(.+)-(\d+)/i);if(!l||!Array.isArray(l)){var r=document.getElementsByClassName("wptb-preview-table");if(0<r.length){var o=(r=r[0]).className.match(/wptb-element-main(.+)-(\d+)/i);o&&Array.isArray(o)&&(t="."+o[0]+" "+t)}}var i=document.head;if(i){var s=i.querySelector("#styles-"+e);if(s){var d=s.innerHTML;if(d){var c=d.split("}");c.pop();for(var p=!1,m=0;m<c.length;m++){var b=c[m].split("{");if(b[0]===t){var u=b[1].split(";");u.pop();for(var w=!1,g=0;g<u.length;g++){if(u[g].split(":")[0]===a){n?u[g]=a+":"+n:u.splice(g,1),b[1]=u.join(";")?u.join(";")+";":"",w=!0;break}}w||n&&(b[1]+=a+":"+n+";"),b[1]?c[m]=b[0]+"{"+b[1]:c.splice(m,1),c.join("}")?s.innerHTML=c.join("}")+"}":i.removeChild(s),p=!0;break}}p||(s.innerHTML=n?d+t+"{"+a+":"+n+";}":d)}else n?s.innerHTML=t+"{"+a+":"+n+";}":i.removeChild(s)}else if(n){var v=document.createElement("style");v.setAttribute("id","styles-"+e),v.classList.add("styles-wptb-elements"),v.innerHTML=t+"{"+a+":"+n+";}",i.appendChild(v)}}},registerSections:function(e){var a=this;this.sections={},Array.isArray(e)||(e=[e]),e.map(function(e){var t=document.querySelector("[data-wptb-section="+e+"]");t&&(a.sections[e]=t)})},activateSection:function(a){var n=this,l=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"block";this.triggerSectionEvent(a),Object.keys(this.sections).map(function(e){if(Object.prototype.hasOwnProperty.call(n.sections,e)){var t=a===e?l:"none";n.sections[e].style="display: "+t+" !important"}})},setupSectionButtons:function(){var e=Array.from(document.querySelectorAll("[data-wptb-section-button")),n=this;e.map(function(t){var a=t.dataset.wptbSectionButton;t.addEventListener("click",function(){var e=t.dataset.wptbSectionDisplayType;n.activateSection(a,e)}),document.addEventListener("sectionChanged",function(e){e.detail===a?(t.classList.remove("disabled"),t.classList.add("active")):(t.classList.remove("active"),t.classList.add("disabled"))})})},setupPanelToggleButtons:function(){var t=jQuery;t(".wptb-panel-toggle-group").each(function(){var e=t(this);t(this).find(".toggle-icon").click(function(){e.find(".wptb-panel-toggle-target").slideToggle(),e.toggleClass("wptb-panel-toggle-content")})})},triggerSectionEvent:function(e){var t=new CustomEvent("sectionChanged",{detail:e});document.dispatchEvent(t)},setupSidebarToggle:function(e){var t=document.querySelector(e);t&&t.addEventListener("click",function(e){e.preventDefault(),document.body.classList.toggle("collapsed")})},externalCssStylesDelete:function(e){var t=document.head;if(t){var a=t.querySelector("#styles-"+e);a&&t.removeChild(a)}},externalCssStylesCopy:function(e,t){if(e){var a=e.className.match(/wptb-element-(.+)-(\d+)/i);if(a&&Array.isArray(a)){var n=a[0],l=document.head;if(l){var r=l.querySelector("#styles-"+n);if(r){var o=r.cloneNode(!0);o.removeAttribute("id","styles-"+n);var i=t.className.match(/wptb-element-(.+)-(\d+)/i);if(i&&Array.isArray(i)){o.setAttribute("id","styles-"+i[0]);var s=r.innerHTML,d=WPTB_Helper.replaceAll(s,n,i[0]);o.innerHTML=d,l.appendChild(o)}}}}}},elementsStylesConvertToObject:function(){for(var e=document.head.querySelectorAll(".styles-wptb-elements"),t={},a=0;a<e.length;a++){var n=e[a].getAttribute("id");n&&e[a].innerHTML&&(t[n]=e[a].innerHTML)}return 0!=Object.keys(t).length?JSON.stringify(t):""},elementsStylesSetFromObject:function(e){var n=document.head;if(n){var t=n.querySelectorAll(".styles-wptb-elements");if(0<t.length){t=[].concat(_toConsumableArray(t));for(var a=0;a<t.length;a++)n.removeChild(t[a])}if(e){var l=JSON.parse(e);0!=Object.keys(l).length&&Object.keys(l).forEach(function(e){var t=l[e],a=document.createElement("style");a.setAttribute("id",e),a.classList.add("styles-wptb-elements"),a.innerHTML=t,n.appendChild(a)})}}},saveTable:function(s,d,e){if(e||d||!s.target.dataset.wptbTableStateNumberSave&&0==window.wptbTableStateNumberShow||(window.wptbTableStateNumberShow,s.target.dataset.wptbTableStateNumberSave),!e){var t=document.querySelector(".wptb-edit-bar");if(t&&t.classList.contains("visible")){document.getElementsByClassName("wptb-preview-table")[0];WPTB_Helper.toggleTableEditMode()}}var c=new XMLHttpRequest,a=(wptb_admin_object?wptb_admin_object.ajaxurl:ajaxurl)+"?action=save_table",p=document.getElementById("wptb-setup-name").value.trim(),m=void 0,n=void 0,l=void 0;n=document.getElementsByClassName("wptb-preview-table");var r=void 0;((rs=WPTB_Helper.detectMode())||(rs=document.wptbId))&&(r=rs);var o=!1;if(0<n.length){var i=(n=n[0]).cloneNode(!0);r&&i.classList.contains("wptb-element-main-table_setting-startedid-0")&&(i.classList.remove("wptb-element-main-table_setting-startedid-0"),i.classList.add("wptb-element-main-table_setting-"+r),o=!0),i.columns=n.columns,n=(n=WPTB_Stringifier(i)).outerHTML}else n="";if(!e){l="";var b=document.getElementsByClassName("wptb-element-datas");0<b.length&&b[0].innerHTML&&(l=b[0].innerHTML,o&&(l=WPTB_Helper.replaceAll(l,"tmpl-wptb-el-datas-main-table_setting-startedid-0","tmpl-wptb-el-datas-main-table_setting-"+r),l=WPTB_Helper.replaceAll(l,"data-wptb-el-main-table_setting-startedid-0","data-wptb-el-main-table_setting-"+r)))}var u=WPTB_Helper.elementsStylesConvertToObject();if(o&&(u=WPTB_Helper.replaceAll(u,".wptb-element-main-table_setting-startedid-0",".wptb-element-main-table_setting-"+r)),""===p&&""===n){var w="";return""===p&&(w+="You must assign a name to the table before saving it.</br>"),""===n&&(w+="Table wasn't created"),(m=document.getElementById("wptb-messaging-area")).innerHTML='<div class="wptb-error wptb-message">Error: '+w+"</div>",m.classList.add("wptb-warning"),void setTimeout(function(){m.removeChild(m.firstChild)},4e3)}var g={title:p,content:n,elements_datas:l,elements_styles:u,security_code:wptb_admin_object.security_code};e&&(g.preview_saving=e),r&&(g.id=r),g=JSON.stringify(g),c.open("POST",a,!0),c.setRequestHeader("Content-type","application/json; charset=utf-8"),c.onreadystatechange=function(e){if(4==this.readyState&&200==this.status){var t=JSON.parse(c.responseText);if(m=document.getElementById("wptb-messaging-area"),"saved"==t[0]){var a=document.location.href.replace("#",""),n=new RegExp("&table=(.+)","i");return a=a.replace(n,""),window.history.pushState(null,null,a+"&table="+t[1]),void WPTB_Helper.saveTable(s,!0)}if("edited"==t[0]&&d){document.wptbId=t[1],m.innerHTML='<div class="wptb-success wptb-message">Table "'+p+'" was successfully saved.</div>',document.getElementsByClassName("wptb-embed-btn")[0].classList.remove("wptb-button-disable"),document.getElementById("wptb-embed-shortcode").value="[wptb id="+t[1]+"]";document.querySelector(".wptb-preview-table");var l=document.getElementsByClassName("wptb-preview-btn");if(0<l.length){(l=l[0]).classList.remove("wptb-button-disable");var r=l.dataset.previewHref;r=r.replace("empty",t[1]),l.setAttribute("href",r)}s.target.dataset.wptbTableStateNumberSave=window.wptbTableStateNumberShow;var o=document.getElementsByClassName("wptb-save-btn");0<o.length&&((o=o[0]).classList.add("wptb-save-disabled"),o.classList.remove("active"))}else if("edited"==t[0]){m.innerHTML='<div class="wptb-success wptb-message">Table "'+p+'" was successfully updated.</div>',s.target.dataset.wptbTableStateNumberSave=window.wptbTableStateNumberShow;var i=document.getElementsByClassName("wptb-save-btn");0<i.length&&((i=i[0]).classList.add("wptb-save-disabled"),i.classList.remove("active"))}else{if("preview_edited"==t[0])return;m.innerHTML='<div class="wptb-error wptb-message">Safety problems</div>'}m.classList.add("wptb-success"),setTimeout(function(){m.removeChild(m.firstChild)},4e3)}},c.send(g)},clickOnFreeSpace:function(){var e=document.querySelector("#wptb-cell_mode_background");if(!e||!e.classList.contains("visible")){this.activateSection("elements");var t=document.getElementById("wpcd_fixed_toolbar");t.hasAttribute("data-toolbar-active-id")&&document.getElementById(t.getAttribute("data-toolbar-active-id")).classList.remove("toolbar-active");var a=document.querySelector(".wptb-preview-table");a&&WPTB_Helper.elementOptionsSet("table_setting",a)}},elementAjax:function(e,n){var l=new XMLHttpRequest,t=(wptb_admin_object?wptb_admin_object.ajaxurl:ajaxurl)+"?action=wptb_element_ajax",a=void 0,r=n.className.match(/wptb-element-(.+)-(\d+)/i);r&&Array.isArray(r)&&(a=r[1]);var o={element_ajax_data:e,element_name:a,security_code:wptb_admin_object.security_code};o=JSON.stringify(o),l.open("POST",t,!0),l.setRequestHeader("Content-type","application/json; charset=utf-8"),l.onreadystatechange=function(e){if(4==this.readyState&&200==this.status){var t=JSON.parse(l.responseText),a=void 0;a=t&&Array.isArray(t)&&"element_ajax_responce"==t[0]?{value:t[1]}:"",WPTB_Helper.wptbDocumentEventGenerate("wptb-element:ajax-response",n,a)}},l.send(o)},toggleTableEditMode:function(){var e=0<arguments.length&&void 0!==arguments[0]&&arguments[0],t=document.getElementsByClassName("wptb-edit-bar"),a=document.getElementById("wptb-cell_mode_background"),n=document.getElementById("wptb-left-scroll-panel-curtain"),l=document.getElementById("wptb-left-scroll-panel-cell-settings"),r=document.getElementsByClassName("wptb-preview-table");if(0<r.length&&(r=r[0]),0<t.length)for(var o=0;o<t.length;o++)if(t[o].classList.contains("visible")){document.select.deactivateMultipleSelectMode(),t[o].classList.remove("visible"),a.classList.remove("visible"),n.classList.remove("visible"),l.classList.remove("visible"),r.parentNode.classList.remove("wptb-preview-table-manage-cells");var i=r.getElementsByTagName("td");if(0<i.length)for(var s=0;s<i.length;s++)i[s].classList.remove("wptb-highlighted")}else e||(document.select.activateMultipleSelectMode(),t[o].classList.add("visible"),a.classList.add("visible"),n.classList.add("visible"),r.parentNode.classList.add("wptb-preview-table-manage-cells"))},checkingDimensionValue:function(e,t){if(e=String(e),t=String(t),e&&t){var a=e.indexOf(t);return-1!=a&&a==e.length-t.length}return!1},checkSetGetStyleSizeValue:function(e,t,a,n){var l=e.style[t];if((l=String(l))&&!n||WPTB_Helper.checkingDimensionValue(l,n)){if(!n)return l}else{var r=window.getComputedStyle(e);if(a&&r.getPropertyValue(a)&&n&&!WPTB_Helper.checkingDimensionValue(r.getPropertyValue(a),n)){if(!n)return!1;e.style[t]=null}else{if(!n)return r.getPropertyValue(a);e.style[t]=r.getPropertyValue(a)}}return e.style[t]},checkSetGetStyleColorValue:function(e,t,a){var n=3<arguments.length&&void 0!==arguments[3]&&arguments[3],l=e.style[t];if(l){if(!n)return l}else{var r=window.getComputedStyle(e,null);if(r&&r.getPropertyValue(a)){if(!n)return r.getPropertyValue(a);l=WPTB_Helper.rgbToHex(r.getPropertyValue(a)),WPTB_Helper.isHex(l)?e.style[t]=l:e.style[t]=""}else{if(!n)return"";e.style[t]=""}}},checkSetGetStyleValue:function(e,t,a){var n=3<arguments.length&&void 0!==arguments[3]&&arguments[3],l=e.style[t];if(l){if(!n)return l}else{var r=window.getComputedStyle(e,null);if(r&&r.getPropertyValue(a)){if(!n)return r.getPropertyValue(a);e.style[t]=r.getPropertyValue(a)}else if(!n)return""}},getValueMaxCountSameElementsInArray:function(e){if(e&&Array.isArray(e)){for(var t={},a=0;a<e.length;a++)t[e[a]]?t[e[a]]++:t[e[a]]=1;var n=void 0;for(var l in t)n?t[n]<t[l]&&(n=l):n=l;return n}},recalculateIndexes:function(e){for(var t=e.getElementsByTagName("tr"),a=void 0,n=0,l=0,r=[],o=0;o<t.length;o++){a=t[o].getElementsByTagName("td"),null==r[o]&&(r[o]=[]);for(var i=0,s=0;s<a.length;s++){if(null!=r[o][s])for(var d=0;d<100;d++){if(null==r[o][i]){r[o][i]=a[s],a[s].dataset.xIndex=i;break}i++}else r[o][s]=a[s],a[s].dataset.xIndex=i;if(a[s].dataset.yIndex=o,1<a[s].colSpan)for(var c=1;c<a[s].colSpan;c++)i++,r[o][i]="tdDummy";if(1<a[s].rowSpan)for(var p=1;p<a[s].rowSpan;p++){null==r[o+p]&&(r[o+p]=[]);for(var m=0;m<a[s].colSpan;m++)r[o+p][i-a[s].colSpan+1+m]="tdDummy"}i++,n<s&&(n=s)}0==o&&(l=i)}e.columns=n,e.maxCols=l},tableRowsColorsReinstall:function(e){var t=e.className.match(/wptb-element-main(.+)-(\d+)/i);if(t&&Array.isArray(t)){var a="";a="0"==t[t.length-1]?"startedid-0":t[t.length-1];var n=document.querySelector(".wptb-el-main-table_setting-"+a+"-tableHeaderBackground");if(n){var l={value:n.value};WPTB_Helper.wptbDocumentEventGenerate("controlColor:change",n,l)}var r=document.querySelector(".wptb-el-main-table_setting-"+a+"-tableEvenRowBackground");if(r){var o={value:r.value};WPTB_Helper.wptbDocumentEventGenerate("controlColor:change",r,o)}var i=document.querySelector(".wptb-el-main-table_setting-"+a+"-tableOddRowBackground");if(i){var s={value:i.value};WPTB_Helper.wptbDocumentEventGenerate("controlColor:change",i,s)}}}},WPTB_Initializer=function(){var e=document.body;columnsDecrementButton=e.getElementsByClassName("wptb-input-number-decrement")[0],columnsIncrementButton=e.getElementsByClassName("wptb-input-number-increment")[0],rowsDecrementButton=e.getElementsByClassName("wptb-input-number-decrement")[1],rowsIncrementButton=e.getElementsByClassName("wptb-input-number-increment")[1],columnsInput=document.getElementById("wptb-columns-number"),rowsInput=document.getElementById("wptb-rows-number"),columnsDecrementButton.onclick=function(){1<columnsInput.value&&columnsInput.value--},columnsIncrementButton.onclick=function(){columnsInput.value<30&&columnsInput.value++},rowsDecrementButton.onclick=function(){1<rowsInput.value&&rowsInput.value--},rowsIncrementButton.onclick=function(){rowsInput.value<30&&rowsInput.value++},document.getElementById("wptb-generate-table").onclick=function(){var e=document.getElementById("wptb-columns-number").value,t=document.getElementById("wptb-rows-number").value;WPTB_Table(e,t),(new WPTB_TableStateSaveManager).tableStateSet()},WPTB_Helper.registerSections(["elements","table_settings","cell_settings","options_group"]),WPTB_Helper.setupSectionButtons(),WPTB_Helper.activateSection("elements"),WPTB_Helper.setupSidebarToggle(".wptb-panel-drawer-toggle"),WPTB_Helper.setupPanelToggleButtons()},WPTB_innerElementSet=function c(t){t.ondragenter=function(e){-1==e.dataTransfer.types.indexOf("wptbelement")&&-1==e.dataTransfer.types.indexOf("wptb-moving-mode")||(WPTB_DropHandle(this,e),t.classList.add("wptb-ondragenter"))},t.ondragover=function(e){e.preventDefault(),WPTB_DropHandle(this,e)},t.ondragleave=function(){},t.ondrop=function(e){this.classList.remove("wptb-ondragenter");var t=void 0,a=void 0;if(e.preventDefault(),e.stopPropagation(),e.dataTransfer.getData("wptbElement")||e.dataTransfer.getData("node")){var n=void 0,l=void 0;if(0<document.getElementsByClassName("wptb-drop-handle").length&&(n=document.getElementsByClassName("wptb-drop-handle")[0]),0<document.getElementsByClassName("wptb-drop-border-marker").length&&(l=document.getElementsByClassName("wptb-drop-border-marker")[0]),t=e.dataTransfer.getData("wptbElement")?(t=WPTB_Helper.newElementProxy(e.dataTransfer.getData("wptbElement"))).getDOMElement():(a=e.dataTransfer.getData("node"),document.getElementsByClassName(a)[0]),"block"==n.style.display){var r=void 0;if("Drop Here"==n.dataset.text)(r=n.getDOMParentElement()).appendChild(t);else{var o=n.getDOMParentElement();if(r=o.parentNode,"Above Element"==n.dataset.text)r.insertBefore(t,o);else if("Below Element"==n.dataset.text){var i=o.nextSibling;r.insertBefore(t,i)}}var s=r.parentNode;if(WPTB_Helper.rowIsTop(s)){var d=WPTB_Helper.findAncestor(s,"wptb-preview-table");d.classList.contains("wptb-table-preview-head")&&WPTB_Helper.dataTitleColumnSet(d)}t.className.match(/wptb-element-(.+)-(\d+)/i)[1];if(e.dataTransfer.getData("wptbElement"),n.style.display="none",l.style.display="none",c(t),!t.classList.contains("wptb-image-container")||t.classList.contains("wptb-moving-mode"))t.classList.remove("wptb-moving-mode"),(new WPTB_TableStateSaveManager).tableStateSet();return!0}}},t.onmouseover=function(e){t.classList.remove("wptb-ondragenter")}},WPTB_LeftPanel=function(){for(var e=document.getElementsByClassName("wptb-preview-table")[0],t=document.getElementsByClassName("wptb-element"),a=0;a<t.length;a++)t[a].ondragstart=function(e){e.dataTransfer.setData("wptbElement",this.dataset.wptbElement),e.dataTransfer.setData("wptbElIndic-"+this.dataset.wptbElement,"wptbElIndic-"+this.dataset.wptbElement)};if(e){for(var n=document.getElementsByClassName("wptb-table-edit-mode-close"),l=0;l<n.length;l++)n[l].onclick=WPTB_Helper.toggleTableEditMode;document.getElementById("wptb-add-end-row").onclick=e.addRowToTheEnd,document.getElementById("wptb-add-start-row").onclick=e.addRowToTheStart,document.getElementById("wptb-add-row-before").onclick=e.addRowBefore,document.getElementById("wptb-add-row-after").onclick=e.addRowAfter,document.getElementById("wptb-add-end-column").onclick=e.addColumnEnd,document.getElementById("wptb-add-start-column").onclick=e.addColumnStart,document.getElementById("wptb-add-column-before").onclick=e.addColumnBefore,document.getElementById("wptb-add-column-after").onclick=e.addColumnAfter,document.getElementById("wptb-delete-column").onclick=e.deleteColumn,document.getElementById("wptb-delete-row").onclick=e.deleteRow,document.getElementById("wptb-merge-cells").onclick=e.mergeCells,document.getElementById("wptb-split-cell").onclick=e.splitCell}document.getElementsByClassName("wptb-builder-panel")[0].onclick=function(e){e.target.classList.contains("wptb-ph-element")||WPTB_Helper.findAncestor(e.target,"wptb-ph-element")||e.target.classList.contains("wptb-fixed-toolbar")||WPTB_Helper.findAncestor(e.target,"wptb-fixed-toolbar")||WPTB_Helper.clickOnFreeSpace()};var r=document.getElementsByClassName("wptb-header");0<r.length&&(r=r[0]),r.onclick=function(){WPTB_Helper.clickOnFreeSpace()}},MultipleSelect=function(){var l=[],a=!1;return this.activateMultipleSelectMode=function(){l=[];for(var e=document.getElementsByClassName("wptb-preview-table")[0].getElementsByTagName("td"),t=0;t<e.length;t++)e[t].classList.remove("wptb-highlighted");a=!0},this.deactivateMultipleSelectMode=function(){a=!1},this.isActivated=function(){return a},this.pushSelectedCell=function(e){a&&(l.push(e),e.classList.add("wptb-highlighted"))},this.selectedCells=function(){return l},this.flushSelectedCells=function(){l=[]},this.getFirst=function(){for(var e,t=1e3,a=1e3,n=l.length-1;0<=n;n--)t>=l[n].dataset.xIndex&&a>=l[n].dataset.yIndex&&(e=l[n],t=l[n].dataset.xIndex,a=l[n].dataset.yIndex);return e},this.getLast=function(){for(var e,t=-1,a=-1,n=l.length-1;0<=n;n--)t<=l[n].dataset.xIndex&&a<=l[n].dataset.yIndex&&(e=l[n],t=l[n].dataset.xIndex,a=l[n].dataset.yIndex);return e},this.removeAllButFirst=function(){for(var e=this.getFirst(),t=1;t<l.length;t++)l[t].classList.add("wptb-fused-cell-"+e.dataset.xIndex+"-"+e.dataset.yIndex)},this};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var WPTB_Parser=function(e){var t=document.createElement("div");t.innerHTML=e;for(var a=t.children[0],n=[].concat(_toConsumableArray(a.querySelectorAll(".wptb-column-title-mobile-container"))),l=0;l<n.length;l++){n[l].parentNode.removeChild(n[l])}for(var r=a.querySelectorAll("td"),o=0;o<r.length;o++)r[o].classList.add("wptb-droppable"),r[o].classList.remove("wptb-column-title-mobile-not-elements");return a};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};Object.keys||(Object.keys=function(){"use strict";var l=Object.prototype.hasOwnProperty,r=!{toString:null}.propertyIsEnumerable("toString"),o=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],i=o.length;return function(e){if("object"!==(void 0===e?"undefined":_typeof(e))&&("function"!=typeof e||null===e))throw new TypeError("Object.keys called on non-object");var t,a,n=[];for(t in e)l.call(e,t)&&n.push(t);if(r)for(a=0;a<i;a++)l.call(e,o[a])&&n.push(o[a]);return n}}());var WPTB_Settings=function(){for(var e=document.getElementsByClassName("wptb-element"),t=0;t<e.length;t++)e[t].ondragstart=function(e){e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("wptbElement",e.target.dataset.wptbElement),e.dataTransfer.setData("wptbElIndic-"+e.target.dataset.wptbElement,"wptbElIndic-"+e.target.dataset.wptbElement)},e[t].ondragend=function(){WPTB_Helper.elementDragEndClear()};var a=new WPTB_TableStateSaveManager,n=document.getElementsByClassName("wptb-undo");0<n.length&&((n=n[0]).onclick=function(e){if(!this.classList.contains("wptb-undoredo-disabled")){a.tableStateGet(this.dataset.wptbUndoredo);var t=document.getElementsByClassName("wptb-undo-redo-container");0<t.length&&((t=t[0]).onmouseleave=function(e){e.target.onmouseleave="";document.querySelector(".wptb-preview-table");WPTB_Table()})}});var l=document.getElementsByClassName("wptb-redo");0<l.length&&((l=l[0]).onclick=function(e){if(!this.classList.contains("wptb-undoredo-disabled")){a.tableStateGet(this.dataset.wptbUndoredo);var t=document.getElementsByClassName("wptb-undo-redo-container");0<t.length&&((t=t[0]).onmouseleave=function(e){e.target.onmouseleave="";document.querySelector(".wptb-preview-table");WPTB_Table()})}});var r=document.getElementsByClassName("wptb-popup-window-modal")[0];document.getElementsByClassName("wptb-embed-btn")[0].onclick=function(){this.classList.contains("wptb-button-disable")||r.classList.add("wptb-popup-show")},window.onbeforeunload=function(e){return 0==document.getElementsByClassName("wptb-save-disabled").length||null},document.getElementsByClassName("wptb-popup-dark-area")[0].onclick=function(){r.classList.remove("wptb-popup-show")},document.getElementsByClassName("wptb-popup-window-close-icon")[0].onclick=function(){r.classList.remove("wptb-popup-show")},document.getElementsByClassName("wptb-preview-btn")[0].onclick=function(e){if(!this.classList.contains("wptb-button-disable")){var t=Math.floor(1e4*Math.random()),a=new URL(e.target.href);a.searchParams.set("preview_id",t),e.target.href=a.toString(),WPTB_Helper.saveTable(e,!1,t)}},document.getElementsByClassName("wptb-save-btn")[0].onclick=function(e){this.classList.contains("wptb-save-disabled")||WPTB_Helper.saveTable(e)};var o=document.querySelector("#wptb-setup-name");o&&(o.onchange=function(){(new WPTB_TableStateSaveManager).tableStateSet()})};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var WPTB_Stringifier=function(e){if(e){var t=e.cloneNode(!0);t.dataset.tableColumns=e.columns,t.style.width=null,t.style.minWidth=null,t.style.maxWidth=null;var a=t.getElementsByTagName("td");if(0<a.length)for(var n=0;n<a.length;n++){e.querySelector("wptb-table-preview-head")&&a[n].removeAttribute("data-x-index"),a[n].removeAttribute("data-y-index"),a[n].removeAttribute("draggable"),a[n].classList.remove("wptb-droppable");var l=a[n].getElementsByClassName("wptb-ph-element");if(0<l.length)for(var r=0;r<l.length;r++){var o=l[r].querySelectorAll(".mce-content-body");if(0<o.length)for(var i=0;i<o.length;i++)o[i].classList.remove("mce-content-body");var s=l[r].querySelectorAll("[data-mce-style]");if(0<s.length)for(var d=0;d<s.length;d++)s[d].removeAttribute("data-mce-style");var c=l[r].querySelectorAll("[contenteditable]");if(0<c.length)for(var p=0;p<c.length;p++)c[p].removeAttribute("contenteditable");var m=l[r].querySelectorAll("[spellcheck]");if(0<m.length)for(var b=0;b<m.length;b++)m[b].removeAttribute("spellcheck");var u=l[r].querySelectorAll("[id^=mce_]");if(0<u.length)for(var w=0;w<u.length;w++)u[w].removeAttribute("id");for(var g=l[r].querySelectorAll(".wptb-actions"),v=g.length;0<v&&g[0]&&g[0].parentNode;)g[0].parentNode.removeChild(g[0]),v--;var f=l[r].querySelectorAll("[data-mce-bogus]");if(0<f.length){f=[].concat(_toConsumableArray(f));for(var h=0;h<f.length;h++)f[h]&&f[h].parentNode&&f[h].parentNode.removeChild(f[h])}}if(a[n].hasAttribute("data-wptb-title-column")){var y=document.createElement("div"),S=document.createElement("div");y.classList.add("wptb-column-title-mobile-container"),S.classList.add("wptb-column-title-mobile"),S.dataset.wptbTitleColumn=a[n].dataset.wptbTitleColumn,S.setAttribute("style","font-size:"+a[n].dataset.wptbTitleColumnFontSize+"; \n color:"+a[n].dataset.wptbTitleColumnColor+"; background-color:"+a[n].dataset.wptbTitleBackgroundColor+"; text-align:"+a[n].dataset.wptbTitleAlign+";"),S.style.padding=a[n].style.padding,0==a[n].children.length&&a[n].classList.add("wptb-column-title-mobile-not-elements"),y.appendChild(S),a[n].insertBefore(y,a[n].firstChild)}}return t}};_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}return Array.from(e)}var array=[],WPTB_Table=function(e,t,a){var L,n,l,v,r=document.getElementsByClassName("wptb-settings-items"),S=document.getElementsByClassName("wptb-table-setup")[0],T=function(e){var t=this.rowSpan,a=this.colSpan,n=document.getElementsByClassName("wptb-no-cell-action"),l=document.getElementsByClassName("wptb-single-action"),r=document.getElementsByClassName("wptb-multiple-select-action"),o=document.getElementById("wptb-left-scroll-panel-cell-settings"),i=E(this),s=i[0],d=i[1];if(document.select.isActivated()){if(this.className.match(/wptb-highlighted/)){this.classList.remove("wptb-highlighted");for(var c=0;c<t;c++)for(var p=0;p<a;p++)array[s+c][d+p]=0}else{this.classList.add("wptb-highlighted");for(c=0;c<t;c++)for(p=0;p<a;p++)array[s+c][d+p]=1}var m=document.getElementsByClassName("wptb-highlighted"),b=m.length;if(0===b){for(c=0;c<r.length;c++)r[c].classList.remove("visible"),r[c].setAttribute("disabled","disabled");for(c=0;c<n.length;c++)n[c].classList.add("visible"),n[c].removeAttribute("disabled");for(c=0;c<l.length;c++)l[c].classList.remove("visible"),l[c].setAttribute("disabled","disabled");o.classList.remove("visible")}else if(1===b){for(c=0;c<r.length;c++)r[c].classList.remove("visible"),r[c].setAttribute("disabled","disabled");for(c=0;c<n.length;c++)n[c].classList.remove("visible"),n[c].setAttribute("disabled","disabled");for(c=0;c<l.length;c++)l[c].classList.add("visible"),l[c].removeAttribute("disabled");m=m[0],WPTB_Helper.elementOptionsSet("table_cell_setting",m);var u=m.className.match(/wptb-element-((.+-)\d+)/i);["cellWidth","cellHeight"].map(function(e){var t="wptb-el-"+u[1]+"-"+e,a="wptb-el-"+u[1]+"-"+e+"Fixed";if("cellWidth"===e||"cellHeight"===e){var n="",l="";"cellWidth"===e?(n="width",l="getColumnWidth"):"cellHeight"===e&&(n="height",l="getRowHeight");var r=m.style[n],o=document.querySelectorAll("."+t),i=document.querySelector("."+a);o=[].concat(_toConsumableArray(o)),r||m.dataset["wptbFixed"+n.toUpperCase()]?(o.map(function(e){r?e.value=parseFloat(r,10):m.dataset["wptbFixed"+n.toUpperCase()]&&(e.value=m.dataset["wptbFixed"+n.toUpperCase()])}),i.checked=!0):(r=WPTB_Helper[l](L,m),o.map(function(e){e.value=r}),i.checked=!1)}}),o.classList.add("visible")}else{for(c=0;c<r.length;c++)L.isSquare(array)?(r[c].classList.add("visible"),r[c].removeAttribute("disabled")):(r[c].classList.remove("visible"),r[c].setAttribute("disabled","disabled"));for(c=0;c<n.length;c++)n[c].classList.remove("visible"),n[c].setAttribute("disabled","disabled");for(c=0;c<l.length;c++)l[c].classList.remove("visible"),l[c].setAttribute("disabled","disabled");o.classList.remove("visible")}}},C=function(e){for(var t=0;t<e.length;t++){for(var a=0;a<e[t].length;a++)" "+e[t][a];"\n"}L.isSquare(e)},B=function(){for(var e=document.getElementsByClassName("wptb-no-cell-action"),t=document.getElementsByClassName("wptb-single-action"),a=document.getElementsByClassName("wptb-multiple-select-action"),n=document.getElementById("wptb-left-scroll-panel-cell-settings"),l=L.getElementsByClassName("wptb-highlighted");l.length;)l[0].classList.remove("wptb-highlighted");n.classList.remove("visible");for(var r=0;r<array.length;r++)for(var o=0;o<array[r].length;o++)array[r][o]=0;for(r=0;r<a.length;r++)a[r].classList.remove("visible"),a[r].setAttribute("disabled","disabled");for(r=0;r<e.length;r++)e[r].classList.add("visible"),e[r].removeAttribute("disabled");for(r=0;r<t.length;r++)t[r].classList.remove("visible"),t[r].setAttribute("disabled","disabled")},E=function(e){for(var t=[],a=0;a<v;a++)t[a]=0;for(a=0;a<L.rows.length;a++)for(var n=L.rows[a].getElementsByTagName("td"),l=cellPointer=0;l<v;l+=stepsToMove)if(stepsToMove=1,t[l])t[l]--;else{var r=n[cellPointer++];if(r==e)return[a,l];if(1<r.rowSpan){for(var o=0;o<r.colSpan;o++)t[l+o]=r.rowSpan-1;stepsToMove=r.colSpan}else 1<r.colSpan&&(stepsToMove=r.colSpan)}};if(jQuery("#wptb-table-border-color").val(""),jQuery("#wptb-table-padding-number,#wptb-table-padding-slider").val("15"),e||t){for(var o=0;o<r.length;o++)"wptb-apply-inner-border"!==r[o].id&&r[o].classList.add("visible");(L=document.createElement("table")).classList.add("wptb-preview-table","wptb-element-main-table_setting-startedid-0"),L.style.border="0px solid",L.dataset.reconstraction=1;for(o=0;o<t;o++){(n=L.insertRow(-1)).classList.add("wptb-row");for(var w=0;w<e;w++)(l=new WPTB_Cell(T)).setCoords(o,w),l.getDOMElement().style.borderWidth="1px",n.appendChild(l.getDOMElement())}}else{if(a||(a=document.querySelector(".wptb-preview-table")),!a)return;var i=(L=a).getElementsByTagName("td");if(0<i.length)for(var s=0;s<i.length;s++)WPTB_Cell(T,i[s])}L.recalculateIndexes=function(){WPTB_Helper.recalculateIndexes(this)},L.addColumnWidth=function(p,m){var e=L.getElementsByClassName("wptb-highlighted");if(0<e.length){for(var t=0;t<e.length;t++){var a=e[t].dataset.xIndex;a&&function e(t,a){for(var n=L.rows,l=!1,r=[],o=0;o<n.length;o++)for(var i=n[o].children,s=0;s<i.length;s++){var d=i[s];if(d.dataset.xIndex==t){if(p)d.colSpan==a?(d.style.width=p+"px",d.removeAttribute("data-wptb-fixed-width"),l=!0):(d.style.width=null,d.dataset.wptbFixedWidth=p,o!=n.length-1||l||e(t,a+1));else if(m)d.style.width=null,d.removeAttribute("data-wptb-fixed-width");else if(d.dataset.wptbFixedWidth)d.colSpan==a&&(d.style.width=d.dataset.wptbFixedWidth+"px",d.removeAttribute("data-wptb-fixed-width"));else if(d.style.width){for(var c=0;c<r.length;c++)r[c].style.width=d.style.width;r=[]}else r.push(d);break}}}(a,1)}L.tdDefaultWidth()}},L.tdDefaultWidth=function(){for(var e,t=L.rows,a=0,n=0,l=document.getElementsByClassName("wptb-table-setup")[0],r=l.offsetWidth,o=[],i=[],s=0,d=0,c="",p=window.getComputedStyle(L,null),m=p.getPropertyValue("border-left-width"),b=p.getPropertyValue("border-right-width"),u=parseFloat(m,10)+parseFloat(b,10),w=0;w<t.length;w++)for(var g=t[w].children,v=0;v<g.length;v++){var f=g[v];if(o[parseFloat(f.dataset.xIndex)]||i[parseFloat(f.dataset.xIndex)])i[parseFloat(f.dataset.xIndex)]?f.dataset.wptbFixedWidth||(f.dataset.wptbCssTdAutoWidth=!0):o[parseFloat(f.dataset.xIndex)]&&f.removeAttribute("data-wptb-css-td-auto-width");else if(f.style.width?(o[parseFloat(f.dataset.xIndex)]=parseFloat(f.style.width),f.removeAttribute("data-wptb-css-td-auto-width")):f.dataset.wptbFixedWidth||(i[parseFloat(f.dataset.xIndex)]=L.dataset.wptbTdWidthAuto?parseFloat(L.dataset.wptbTdWidthAuto,10):100,f.dataset.wptbCssTdAutoWidth=!0),window.getComputedStyle(f,null)){var h=window.getComputedStyle(f,null),y=h.getPropertyValue("padding-left"),S=h.getPropertyValue("padding-right");s=parseFloat(y,10)+parseFloat(S,10);var T=h.getPropertyValue("border-left-width"),C=h.getPropertyValue("border-right-width");d=parseFloat(T,10)+parseFloat(C,10),d/=2,o[parseFloat(f.dataset.xIndex)]?(o[parseFloat(f.dataset.xIndex)]+=s,o[parseFloat(f.dataset.xIndex)]+=d,0==v&&u/2<=parseFloat(T,10)?o[parseFloat(f.dataset.xIndex)]+=parseFloat(T,10)/2:0==v&&u/2>parseFloat(T,10)&&(o[parseFloat(f.dataset.xIndex)]+=u/2-parseFloat(C,10)/2),v==g.length-1&&u/2<=parseFloat(C,10)?o[parseFloat(f.dataset.xIndex)]+=parseFloat(C,10)/2:v==g.length-1&&u/2>parseFloat(C,10)&&(o[parseFloat(f.dataset.xIndex)]+=u/2-parseFloat(C,10)/2)):i[parseFloat(f.dataset.xIndex)]&&(i[parseFloat(f.dataset.xIndex)]+=s,i[parseFloat(f.dataset.xIndex)]+=d,0==v&&u/2<=parseFloat(T,10)?i[parseFloat(f.dataset.xIndex)]+=parseFloat(T,10)/2:0==v&&u/2>parseFloat(T,10)&&(i[parseFloat(f.dataset.xIndex)]+=u/2-parseFloat(T,10)/2),v==g.length-1&&u/2<=parseFloat(C,10)?i[parseFloat(f.dataset.xIndex)]+=parseFloat(C,10)/2:v==g.length-1&&u/2>parseFloat(C,10)&&(i[parseFloat(f.dataset.xIndex)]+=u/2-parseFloat(T,10)/2))}}for(var B=0;B<o.length;B++)o[B]&&(a+=o[B]);for(var E=0,A=0;A<i.length;A++)i[A]&&(n+=i[A],E++);e=a+n,L.dataset.wptbTableTdsSumMaxWidth=e,E?(L.dataset.wptbCellsWidthAutoCount=E,L.mergingСellsHorizontally?L.dataset.wptbFixedWidthSize=a:L.removeAttribute("data-wptb-fixed-width-size")):(L.removeAttribute("data-wptb-fixed-width-size"),L.removeAttribute("data-wptb-cells-width-auto-count"));var _=!1,x=void 0;e<r?E?(L.style.minWidth="100%",L.mergingСellsHorizontally?(L.style.width="auto",x=(x=(r-a)/E)-s-d,_=!0):L.style.width="100%"):(L.style.width="auto",L.style.minWidth=null,L.style.maxWidth=null):(L.style.maxWidth=null,L.style.minWidth=e+"px",L.style.width="auto",x=L.dataset.wptbTdWidthAuto?L.dataset.wptbTdWidthAuto:"100",_=!0);var N=document.head;if(N){var P=N.querySelector('style[data-wptb-td-auto-width="true"]');P&&N.removeChild(P)}if(_&&((c=document.createElement("style")).setAttribute("data-wptb-td-auto-width",!0),c.innerHTML="[data-wptb-css-td-auto-width=true]{width:"+x+"px}",N&&N.appendChild(c)),L.dataset.wptbTableAlignment){var W=L.dataset.wptbTableAlignment;l.offsetWidth<L.offsetWidth?L.style.float=null:L.style.float="center"==W?null:W,l.style.float="center"==W?null:W,x&&L.dataset.wptbTableContainerMaxWidth&&L.offsetWidth<L.dataset.wptbTableContainerMaxWidth&&(L.style.width="100%")}else L.style.float=null},L.addRowHeight=function(p,m){var e=L.getElementsByClassName("wptb-highlighted");if(0<e.length)for(var t=0;t<e.length;t++){var a=e[t].dataset.yIndex;a&&function e(t,a){for(var n=L.rows,l=!1,r=[],o=0;o<n.length;o++)for(var i=n[o].children,s=0;s<i.length;s++){var d=i[s];if(d.dataset.yIndex==t)if(p){if(d.rowSpan==a){d.style.height=p+"px",d.removeAttribute("data-wptb-fixed-heidht"),l=!0;continue}d.style.height=null,d.dataset.wptbFixedHeight=p,s!=i.length-1||l||e(t,a+1)}else if(m)d.style.height=null,d.removeAttribute("data-wptb-fixed-heidht");else if(d.dataset.wptbFixedHeight)(d.rowSpan=a)&&(d.style.height=d.dataset.wptbFixedHeight+"px",d.removeAttribute("data-wptb-fixed-width"));else if(d.style.height){for(var c=0;c<r.length;c++)r[c].style.height=d.style.height;r=[]}else r.push(d)}}(a,1)}},L.reconstraction=function(){var e=L.getElementsByTagName("td");L.mergingСellsHorizontally=!1,L.mergingCellsVertically=!1,L.dataset.reconstraction=1;for(var t=0,a=0;a<e.length&&(1<e[a].colSpan&&(L.dataset.reconstraction=0,L.mergingСellsHorizontally=!0,t++),1<e[a].rowSpan&&(L.dataset.reconstraction=0,L.mergingCellsVertically=!0,t++),2!=t);a++);},L.addColumnEnd=function(){var e=void 0,t=document.getElementsByClassName("wptb-preview-table"),a=void 0,n=void 0;0<t.length&&(a=t[0].querySelector("td")),a&&(n=a.getAttribute("style"));for(var l=0;l<L.rows.length;l++)e=new WPTB_Cell(T),n&&(e.getDOMElement().setAttribute("style",n),e.getDOMElement().style.width=null,e.getDOMElement().style.height=null),L.rows[l].appendChild(e.getDOMElement()),array[l].push(0);v++,L.recalculateIndexes(),L.tdDefaultWidth(),L.addRowHeight(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.addColumnStart=function(){var e=void 0,t=void 0,a=document.getElementsByClassName("wptb-preview-table"),n=void 0,l=void 0;0<a.length&&(n=a[0].querySelector("td")),n&&(l=n.getAttribute("style"));for(var r=0;r<L.rows.length;r++)e=new WPTB_Cell(T),l&&(e.getDOMElement().setAttribute("style",l),e.getDOMElement().style.width=null,e.getDOMElement().style.height=null),(t=L.rows[r].getElementsByTagName("td")[0])?L.rows[r].insertBefore(e.getDOMElement(),t):L.rows[r].appendChild(e.getDOMElement()),array[r].push(0);v++,L.recalculateIndexes(),L.tdDefaultWidth(),L.addRowHeight(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.addColumnAfter=function(e){var t=L.rows,a=void 0,n=void 0,l=document.querySelector(".wptb-highlighted"),r=l.getAttribute("style"),o=null!=e&&"number"==typeof e?e:E(l)[1];if(v-o-l.colSpan+1==1)L.addColumnEnd();else{for(var i=!1,s=void 0,d=void 0,c=void 0,p=[],m=void 0,b=0;b<v;b++)p.push(0);for(b=0;b<t.length;b++){a=0,n=t[b].getElementsByTagName("td"),i=!1;for(var u=0;u<v;u+=s){if(s=1,i){d=new WPTB_Cell(T),r&&(d.getDOMElement().setAttribute("style",r),d.getDOMElement().style.width=null,d.getDOMElement().style.height=null),m&&t[b].contains(m)?(c=m.nextSibling)?t[b].insertBefore(d.getDOMElement(),c):t[b].appendChild(d.getDOMElement()):t[b].insertBefore(d.getDOMElement(),n[0]);break}if(0<p[u])o==u&&(i=!0);else if(1<(m=n[a++]).rowSpan){s=m.colSpan;for(var w=0;w<m.colSpan;w++)p[u+w]=m.rowSpan,u+w==o&&(i=!0)}else if(1<m.colSpan){s=m.colSpan;for(w=0;w<m.colSpan;w++)u+w==o&&(i=!0)}else u==o&&(i=!0)}for(var g=0;g<v;g++)0<p[g]&&p[g]--}for(b=0;b<array.length;b++)array[b].push(0);v++,C(array),L.recalculateIndexes(),L.addColumnWidth(),L.addRowHeight(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()}},L.addColumnBefore=function(){var e=document.querySelector(".wptb-highlighted"),t=E(e)[1];0===t?L.addColumnStart():L.addColumnAfter(t-1)},L.addRowToTheEnd=function(){var e=L.insertRow(-1),t=void 0,a=void 0,n=document.getElementsByClassName("wptb-preview-table");if(e.classList.add("wptb-row"),0<n.length){n=n[0];for(var l=0;l<v;l++){t=new WPTB_Cell(T);var r=n.querySelector('[data-x-index="'+l+'"]');if(r){var o=r.getAttribute("style");t.getDOMElement().setAttribute("style",o),t.getDOMElement().style.height=null}e.appendChild(t.getDOMElement())}a=Array.from(array[0]),array.push(a),C(array),L.recalculateIndexes(),WPTB_Helper.tableRowsColorsReinstall(L),L.addColumnWidth(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()}},L.addRowToTheStart=function(){var e=L.insertRow(0),t=void 0,a=void 0,n=document.getElementsByClassName("wptb-preview-table");if(e.classList.add("wptb-row"),0<n.length){n=n[0];for(var l=0;l<v;l++){t=new WPTB_Cell(T);var r=n.querySelector('[data-x-index="'+l+'"]');if(r){var o=r.getAttribute("style");t.getDOMElement().setAttribute("style",o),t.getDOMElement().style.height=null}e.appendChild(t.getDOMElement())}a=Array.from(array[0]),array.push(a),C(array),L.recalculateIndexes(),WPTB_Helper.tableRowsColorsReinstall(L),L.addColumnWidth(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()}},L.addRowBefore=function(){for(var e=document.querySelector(".wptb-highlighted"),t=e.getAttribute("style"),a=E(e)[0],n=void 0,l=a-1;0<=l;l--){var r=L.rows[l].children,o=r.length;if(0<o)for(var i=0;i<o;i++)if(1==r[i].rowSpan){a=l,n=!0;break}if(n)break}0===a?L.addRowToTheStart():L.addRowAfter(a,t)},L.addRowAfter=function(e,t){var a,n=void 0;if(null!=e&&"number"==typeof e||null!=t)n=e;else{var l=document.querySelector(".wptb-highlighted");t=l.getAttribute("style"),n=(e=E(l)[0])+l.rowSpan-1}var r=0;if(n<L.rows.length-1){for(var o=0;o<=n;o++){var i=L.rows[o].children,s=i.length;if(0<s)for(var d=0;d<s;d++){n<i[d].rowSpan-1+o&&i[d].rowSpan++}}var c=L.rows[n+1].children,p=c.length;if(0<p)for(var m=0;m<p;m++)r+=c[m].colSpan}else r=array[0].length;var b=L.insertRow(n+1);for(b.classList.add("wptb-row"),w=0;w<r;w++){var u=new WPTB_Cell(T);u.getDOMElement().setAttribute("style",t),u.getDOMElement().style.width=null,u.getDOMElement().style.height=null,b.appendChild(u.getDOMElement())}a=Array.from(array[0]),array.push(a),C(array),L.recalculateIndexes(),WPTB_Helper.tableRowsColorsReinstall(L),L.addColumnWidth(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after"),(new WPTB_TableStateSaveManager).tableStateSet()},L.isSquare=function(e){for(var t,a,n=-1,l=-1,r=-1,o=-1,i=0,s=0;s<e.length;s++)for(var d=0;d<e[s].length;d++)1==e[s][d]&&((d<l||-1==l)&&(l=d),(s<n||-1==n)&&(n=s));for(s=e.length-1;-1<s;s--)for(d=e[s].length-1;-1<d;d--)1==e[s][d]&&(o<d&&(o=d),r<s&&(r=s));for(s=n;s<r;s++)for(d=l;d<o;d++)if(0==e[s][d]||null==e[s][d])return!1;for(s=0;s<e.length;s++)for(d=0;d<e[s].length;d++)1==e[s][d]&&i++;return(t=r-n+1)*(a=o-l+1)===i&&[t,a]},L.mergeCells=function(){for(var e=L.isSquare(array),t=e[0],a=e[1],n=document.querySelector(".wptb-highlighted"),l=[].slice.call(document.getElementsByClassName("wptb-highlighted"),1),r=[],o=0;o<l.length;o++){var i=l[o].getElementsByClassName("wptb-ph-element");if(0<i.length)for(var s=i.length,d=0;d<s;d++)r.push(i[d]);l[o].parentNode.removeChild(l[o])}if(0<r.length)for(var c=0;c<r.length;c++)n.appendChild(r[c]);n.colSpan=a,n.rowSpan=t,L.recalculateIndexes(),L.reconstraction();var p=n.style.width,m=n.dataset.wptbFixedWidth;p?L.addColumnWidth(parseFloat(p,10)):m?L.addColumnWidth():L.addColumnWidth(!1,!0);var b=n.style.height,u=n.dataset.wptbFixedHeight;b?L.addRowHeight(parseFloat(b,10)):u?L.addRowHeight():L.addRowHeight(!1,!0),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.splitCell=function(){var e=document.getElementsByClassName("wptb-highlighted")[0],t=e.rowSpan,a=e.colSpan,n=e.getAttribute("style"),l=E(e)[0],r=L.rows[l],o=e.dataset.xIndex;e.rowSpan=1;for(var i=e.colSpan=1;i<a;i++){var s=new WPTB_Cell(T);s.getDOMElement().setAttribute("style",n),s.getDOMElement().classList.add("wptb-highlighted"),e.nextSibling?r.insertBefore(s.getDOMElement(),e.nextSibling):r.appendChild(s.getDOMElement())}if(1<t)for(var d=1;d<t;d++){var c=void 0,p=L.rows[l+d],m=p.children,b=m.length;if(0<b)for(var u=0;u<b;u++)if(Number(m[u].dataset.xIndex)>Number(o)){c=m[u];break}for(var w=0;w<a;w++){var g=new WPTB_Cell(T);g.getDOMElement().setAttribute("style",n),null!=c?p.insertBefore(g.getDOMElement(),c):p.appendChild(g.getDOMElement())}}L.recalculateIndexes(),L.reconstraction(),L.addColumnWidth(),L.addRowHeight(),WPTB_Helper.dataTitleColumnSet(L),B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.findRowspannedCells=function(e){var t,a=[];if(actualPoints=function(e){for(var t=L.rows[e].getElementsByTagName("td"),a=0,n=0;n<t.length;n++)a+=t[n].colSpan;return a}(e),actualPoints===v)return[];t=v-actualPoints;for(var n=e-1;0<=n&&t;n--){var l=L.rows[n].getElementsByTagName("td");for(n=0;n<l.length;n++)1<l[n].rowSpan&&(a.push(l[n]),t-=l[n].colSpan)}return a},L.addLackingCells=function(){for(var e=[],t=0;t<L.rows.length;t++)e.push(0);for(t=0;t<L.rows.length;t++)for(var a=L.rows[t].getElementsByTagName("td"),n=0;n<a.length;n++)if(1<a[n].rowSpan)for(var l=1;l<a[n].rowSpan;l++)e[t+l]++;for(t=0;t<L.rows.length;t++){a=L.rows[t].getElementsByTagName("td");var r=0;for(n=0;n<a.length;n++)r+=a[n].colSpan;r+=e[t],difference=v-r;for(n=0;n<difference;n++){var o=new WPTB_Cell(T);L.rows[t].appendChild(o.getDOMElement())}}},L.deleteRow=function(){var e=document.querySelector(".wptb-highlighted"),t=e.getAttribute("style"),a=e.rowSpan,n=E(e)[0],l=void 0;null==a&&(a=1);for(var r=0;r<a;r++){var o=L.rows[n].children,i=L.rows[n+1],s=void 0,d=void 0,c=[];if(null!=i){d=(s=i.children).length;for(var p=0;p<o.length;p++)if(1<o[p].rowSpan){var m=new WPTB_Cell(T);m.getDOMElement().setAttribute("style",t),m.getDOMElement().colSpan=o[p].colSpan,m.getDOMElement().rowSpan=o[p].rowSpan-1;for(var b=void 0,u=0;u<d;u++)if(Number(s[u].dataset.xIndex)>Number(o[p].dataset.xIndex)){b=s[u];break}b?c.push([m,b]):c.push([m])}if(0<c.length)for(var w=0;w<c.length;w++)null!=c[w][1]?i.insertBefore(c[w][0].getDOMElement(),c[w][1]):i.appendChild(c[w][0].getDOMElement())}var g=L.rows;if(0<g.length)for(var v=0;v<n;v++){var f=g[v].children;if(0<f.length)for(var h=0;h<f.length;h++)f[h].rowSpan-1>=n-v&&f[h].rowSpan--}if(l=Array.from(array[0]),array.pop(l),C(array),L.getElementsByTagName("tbody")[0].removeChild(L.rows[n]),0==L.rows.length){WPTB_Helper.toggleTableEditMode(),S.innerHTML="",document.getElementsByClassName("wptb-table-generator")[0].style.display="table";var y=document.getElementsByClassName("wptb-save-btn");0<y.length&&((y=y[0]).classList.add("wptb-save-disabled"),y.classList.remove("active"))}else L.recalculateIndexes(),WPTB_Helper.tableRowsColorsReinstall(L),WPTB_Helper.dataTitleColumnSet(L),L.reconstraction()}B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},L.deleteColumn=function(){for(var e=document.querySelector(".wptb-highlighted"),t=e.dataset.xIndex,a=e.colSpan,n=0;n<a;n++){for(var l=0;l<L.rows.length;l++){var r=L.rows[l].children,o=r.length;if(0<o)for(var i=o-1;0<=i;i--){if(Number(r[i].dataset.xIndex)==Number(t)){1<r[i].colSpan?r[i].colSpan--:L.rows[l].removeChild(r[i]);break}if(Number(r[i].dataset.xIndex)<Number(t)&&Number(r[i].dataset.xIndex)+Number(r[i].colSpan-1)>=t){1<r[i].colSpan&&r[i].colSpan--;break}}}for(var s=0;s<L.rows.length;s++)null!=array[s]&&array[s].pop();if(v--,0==L.querySelectorAll("td").length){WPTB_Helper.toggleTableEditMode(),S.innerHTML="",document.getElementsByClassName("wptb-table-generator")[0].style.display="table";var d=document.getElementsByClassName("wptb-save-btn");0<d.length&&((d=d[0]).classList.add("wptb-save-disabled"),d.classList.remove("active"))}else L.recalculateIndexes(),L.tdDefaultWidth(),WPTB_Helper.dataTitleColumnSet(L),L.reconstraction()}B(),WPTB_Helper.wptbDocumentEventGenerate("wp-table-builder/table-changed/after",L),(new WPTB_TableStateSaveManager).tableStateSet()},document.getElementsByClassName("wptb-table-generator")[0].style.display="none",array=function(){for(var e=[],t=[],a=0;a<L.rows.length;a++){for(var n=L.rows[a].getElementsByTagName("td"),l=0,r=0;r<n.length;r++)l+=n[r].colSpan;e.push(l)}v=Math.max.apply(null,e);var o=L.rows.length;for(a=0;a<o;a++)for(t[a]=[],r=0;r<v;r++)t[a].push(0);return C(t),t}(),B(),C(array),S.appendChild(L),L.recalculateIndexes(!0),L.reconstraction(),L.tdDefaultWidth(),S.onresize=function(){L.tdDefaultWidth()},WPTB_LeftPanel(),WPTB_Helper.elementStartScript(L,"table_setting"),WPTB_Helper.elementOptionsSet("table_setting",L)},WPTB_TableStateSaveManager=(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},function(){this.tableStateSet=function(e){if(!(e&&window.wptbTableStateSaving&&Array.isArray(window.wptbTableStateSaving))){var t=document.getElementsByClassName("wptb-table-setup"),a="";0<t.length?a=(t=t[0]).querySelector(".wptb-preview-table"):t="",window.wptbTableStateSaving||Array.isArray(window.wptbTableStateSaving)||(window.wptbTableStateSaving=[]),window.wptbTableStateSaving.length>window.wptbTableStateNumberShow&&(window.wptbTableStateSaving=window.wptbTableStateSaving.slice(0,window.wptbTableStateNumberShow+1));var n="";if(t){for(var l=(n=t.cloneNode(!0)).getElementsByClassName("wptb-highlighted"),r=0;r<l.length;r++)l[r].classList.remove("wptb-highlighted");for(var o=n.getElementsByClassName("wptb-directlyhovered"),i=0;i<o.length;i++)o[i].classList.remove("wptb-directlyhovered");var s=n.querySelectorAll(".mce-content-body");if(0<s.length)for(var d=0;d<s.length;d++)s[d].classList.remove("mce-content-body");var c=n.querySelectorAll("[data-mce-style]");if(0<c.length)for(var p=0;p<c.length;p++)c[p].removeAttribute("data-mce-style");var m=n.querySelectorAll("[id^=mce_]");if(0<m.length)for(var b=0;b<m.length;b++)m[b].removeAttribute("id")}var u="",w=document.head;if(w){var g=w.querySelector('style[data-wptb-td-auto-width="true"]');g&&(u=g.innerHTML)}var v="",f=document.getElementById("wptb-setup-name");if(f&&(v=f.value),window.wptbTableStateSaving.push([n,u,v]),window.wptbTableStateNumberShow=window.wptbTableStateSaving.length-1,0<window.wptbTableStateSaving.length-1){var h=document.getElementsByClassName("wptb-undo");0<h.length&&(h=h[0]).classList.remove("wptb-undoredo-disabled")}var y=document.getElementsByClassName("wptb-redo");0<y.length&&(y=y[0]).classList.add("wptb-undoredo-disabled");var S=document.getElementsByClassName("wptb-save-btn");0<S.length&&(!(S=S[0]).dataset.wptbTableStateNumberSave&&0==window.wptbTableStateNumberShow||window.wptbTableStateNumberShow==S.dataset.wptbTableStateNumberSave||!a?(S.classList.add("wptb-save-disabled"),S.classList.remove("active")):(S.classList.remove("wptb-save-disabled"),S.classList.add("active")))}},this.tableStateGet=function(e){if(e&&window.wptbTableStateSaving&&0<window.wptbTableStateSaving.length){if("undo"==e){if(!(0<window.wptbTableStateNumberShow))return!1;window.wptbTableStateNumberShow--}else if("redo"==e){if(!(window.wptbTableStateNumberShow<window.wptbTableStateSaving.length))return!1;window.wptbTableStateNumberShow++}var t=document.getElementsByClassName("wptb-undo");0<t.length&&(t=t[0],0==window.wptbTableStateNumberShow?t&&t.classList.add("wptb-undoredo-disabled"):0<window.wptbTableStateNumberShow&&t&&t.classList.remove("wptb-undoredo-disabled"));var a=document.getElementsByClassName("wptb-redo");0<a.length&&(a=a[0],window.wptbTableStateNumberShow==window.wptbTableStateSaving.length-1?a&&a.classList.add("wptb-undoredo-disabled"):window.wptbTableStateNumberShow<window.wptbTableStateSaving.length-1&&a&&a.classList.remove("wptb-undoredo-disabled"));var n=document.getElementsByClassName("wptb-save-btn");0<n.length&&(!(n=n[0]).dataset.wptbTableStateNumberSave&&0==window.wptbTableStateNumberShow||window.wptbTableStateNumberShow==n.dataset.wptbTableStateNumberSave?(n.classList.add("wptb-save-disabled"),n.classList.remove("active")):(n.classList.add("active"),n.classList.remove("wptb-save-disabled")));var l=document.getElementsByClassName("wptb-table-setup");if(0<l.length){if(l=l[0],window.wptbTableStateSaving[window.wptbTableStateNumberShow]){window.wptbTableStateSaving[window.wptbTableStateNumberShow][0]&&"object"===_typeof(window.wptbTableStateSaving[window.wptbTableStateNumberShow][0])&&"outerHTML"in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0]&&(l.outerHTML=window.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML);var r=document.querySelector(".wptb-table-setup");r&&0==r.children.length?(document.getElementsByClassName("wptb-table-generator")[0].style.display="table",n.classList.add("wptb-save-disabled"),n.classList.remove("active")):document.getElementsByClassName("wptb-table-generator")[0].style.display="none";var o=document.head;if(o){var i=o.querySelector('style[data-wptb-td-auto-width="true"]');if(i&&o.removeChild(i),window.wptbTableStateSaving[window.wptbTableStateNumberShow][1]){var s=document.createElement("style");s.setAttribute("data-wptb-td-auto-width",!0),s.innerHTML=window.wptbTableStateSaving[window.wptbTableStateNumberShow][1],o.appendChild(s)}}var d=document.getElementById("wptb-setup-name");void 0!==window.wptbTableStateSaving[window.wptbTableStateNumberShow][2]&&d&&(d.value=window.wptbTableStateSaving[window.wptbTableStateNumberShow][2])}var c=document.getElementsByTagName("body");0<c.length&&(c=c[0]),WPTB_Helper.elementOptionsPanelClear(),WPTB_LeftPanel();var p=document.getElementById("wptb-left-scroll-panel-cell-settings");p&&p.classList.remove("visible")}}},this.tableStateClear=function(){delete window.wptbTableStateSaving,delete window.wptbTableStateNumberShow;var e=document.getElementsByClassName("wptb-save-btn");0<e.length&&(e=e[0]).removeAttribute("data-wptb-table-state-number-save");var t=document.getElementsByClassName("wptb-undo");0<t.length&&(t=t[0]).classList.add("wptb-undoredo-disabled");var a=document.getElementsByClassName("wptb-redo");0<a.length&&(a=a[0]).classList.add("wptb-undoredo-disabled")}});
inc/admin/js/core/WPTB_Builder.js CHANGED
@@ -38,10 +38,6 @@
38
 
39
  let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
40
  wptbTableStateSaveManager.tableStateSet();
41
-
42
- WPTB_Helper.elementOptionsSet( 'table_setting', element );
43
- WPTB_Helper.elementStartScript( element, 'table_setting' );
44
- WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', element );
45
  } else {
46
  document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
47
  }
38
 
39
  let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();
40
  wptbTableStateSaveManager.tableStateSet();
 
 
 
 
41
  } else {
42
  document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';
43
  }
inc/admin/js/core/WPTB_Helper.js CHANGED
@@ -885,6 +885,9 @@ var WPTB_Helper = {
885
  let infArr = element.className.match( /wptb-element-((.+-)\d+)/i );
886
  if( ! infArr ) {
887
  let table_id = WPTB_Helper.detectMode();
 
 
 
888
  if( element.classList.contains( 'wptb-preview-table' ) ) {
889
  element.classList.add( 'wptb-element-main-table_setting-' + table_id );
890
  } else if( element.classList.contains( 'wptb-cell' ) ) {
885
  let infArr = element.className.match( /wptb-element-((.+-)\d+)/i );
886
  if( ! infArr ) {
887
  let table_id = WPTB_Helper.detectMode();
888
+ if (!table_id) {
889
+ table_id = 'startedid-0';
890
+ }
891
  if( element.classList.contains( 'wptb-preview-table' ) ) {
892
  element.classList.add( 'wptb-element-main-table_setting-' + table_id );
893
  } else if( element.classList.contains( 'wptb-cell' ) ) {
inc/admin/js/core/WPTB_Settings.js CHANGED
@@ -27,10 +27,6 @@ var WPTB_Settings = function () {
27
  event.target.onmouseleave = '';
28
  let table = document.querySelector( '.wptb-preview-table' );
29
  WPTB_Table();
30
-
31
- WPTB_Helper.elementOptionsSet( 'table_setting', table );
32
- WPTB_Helper.elementStartScript( table, 'table_setting' );
33
- WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', table )
34
  }
35
  }
36
  }
@@ -51,10 +47,6 @@ var WPTB_Settings = function () {
51
  event.target.onmouseleave = '';
52
  let table = document.querySelector( '.wptb-preview-table' );
53
  WPTB_Table();
54
-
55
- WPTB_Helper.elementOptionsSet( 'table_setting', table );
56
- WPTB_Helper.elementStartScript( table, 'table_setting' );
57
- WPTB_Helper.wptbDocumentEventGenerate( 'element:controls:active', table )
58
  }
59
  }
60
  }
27
  event.target.onmouseleave = '';
28
  let table = document.querySelector( '.wptb-preview-table' );
29
  WPTB_Table();
 
 
 
 
30
  }
31
  }
32
  }
47
  event.target.onmouseleave = '';
48
  let table = document.querySelector( '.wptb-preview-table' );
49
  WPTB_Table();
 
 
 
 
50
  }
51
  }
52
  }
inc/admin/js/core/WPTB_Table.js CHANGED
@@ -1654,6 +1654,9 @@ var array = [], WPTB_Table = function ( columns, rows, wptb_preview_table ) {
1654
  };
1655
 
1656
  WPTB_LeftPanel();
 
 
 
1657
 
1658
  // this code gets the ID of the active element in the toolbar
1659
  // and stores it in the data attribute of the common container element "wpcd_fixed_toolbar"
1654
  };
1655
 
1656
  WPTB_LeftPanel();
1657
+
1658
+ WPTB_Helper.elementStartScript( table, 'table_setting' );
1659
+ WPTB_Helper.elementOptionsSet( 'table_setting', table );
1660
 
1661
  // this code gets the ID of the active element in the toolbar
1662
  // and stores it in the data attribute of the common container element "wpcd_fixed_toolbar"
inc/admin/js/core/applyGenericItemSettings.js CHANGED
@@ -58,8 +58,8 @@ var applyGenericItemSettings = function ( element, kindIndexProt, copy = false )
58
  node.classList.add( 'wptb-element-' + element.kind + '-' + index );
59
  }
60
  }
61
- new WPTB_ElementOptions( element, index, kindIndexProt );
62
  WPTB_Helper.elementStartScript( element.getDOMElement() );
 
63
  document.counter.increment(element.kind);
64
  }
65
 
58
  node.classList.add( 'wptb-element-' + element.kind + '-' + index );
59
  }
60
  }
 
61
  WPTB_Helper.elementStartScript( element.getDOMElement() );
62
+ new WPTB_ElementOptions( element, index, kindIndexProt );
63
  document.counter.increment(element.kind);
64
  }
65
 
inc/admin/views/builder/table-element-scripts/table-settings.js CHANGED
@@ -96,90 +96,3 @@ function controlsChange( inputs, table ) {
96
  }
97
  WPTB_Helper.controlsInclude( table, controlsChange );
98
 
99
- // TODO an object instead of a function for specifying event handlers for changing controls
100
- // const controlsChangeObj = {
101
- // 'makeTableResponsive': function (inputValue, table) {
102
- // let infArr = table.className.match(/wptb-element-main(.+)-(\d+)/i);
103
- // if( infArr && Array.isArray( infArr ) && typeof infArr[2] != 'undefined' ) {
104
- // let inputSelector;
105
- // if( infArr[2] == '0' ) {
106
- // inputSelector = 'wptb-el-main-table_setting-startedid-0-tableTopRowsAsHeader';
107
- // } else {
108
- // inputSelector = 'wptb-el-main-table_setting-' + infArr[2] + '-tableTopRowsAsHeader';
109
- // }
110
- //
111
- // let inputTopAsHeader = document.querySelector( '.' + inputSelector );
112
- // if( inputTopAsHeader ) {
113
- // if( inputValue == 'checked' ) {
114
- // table.classList.add( 'wptb-table-preview-head' );
115
- // inputTopAsHeader.checked = true;
116
- // } else if( inputValue == 'unchecked' ) {
117
- // table.classList.remove( 'wptb-table-preview-head' );
118
- // inputTopAsHeader.checked = false;
119
- // }
120
- // }
121
- //
122
- // if(table.hasOwnProperty( 'reconstraction' )) {
123
- // table.reconstraction();
124
- // }
125
- // }
126
- // },
127
- // 'applyTableContainerMaxWidth': function (inputValue, table) {
128
- // let tableSetup = document.querySelector( '.wptb-table-setup' );
129
- // if( inputValue == 'checked' ) {
130
- // let table_id = WPTB_Helper.detectMode();
131
- //
132
- // if( ! table_id ) {
133
- // table_id = 'startedid-0';
134
- // }
135
- //
136
- // let tableContainerMaxWidthInput = document.getElementsByClassName( 'wptb-el-main-table_setting-' + table_id + '-tableContainerMaxWidth' );
137
- // let tableContainerMaxWidthInputValue = 850;
138
- // if( tableContainerMaxWidthInput.length > 0 ) {
139
- // tableContainerMaxWidthInput = tableContainerMaxWidthInput[0];
140
- // if( tableContainerMaxWidthInput.value ) tableContainerMaxWidthInputValue = tableContainerMaxWidthInput.value;
141
- // }
142
- //
143
- // table.dataset.wptbTableContainerMaxWidth = tableContainerMaxWidthInputValue;
144
- // if( tableSetup ) tableSetup.style.maxWidth = tableContainerMaxWidthInputValue + 'px';
145
- // } else if( inputValue == 'unchecked' ) {
146
- // table.removeAttribute( 'data-wptb-table-container-max-width' );
147
- // if( tableSetup ) tableSetup.style.maxWidth = null;
148
- // }
149
- //
150
- // table.tdDefaultWidth();
151
- // },
152
- // 'tableContainerMaxWidth': function (inputValue, table) {
153
- // if( inputValue ) {
154
- // table.dataset.wptbTableContainerMaxWidth = inputValue;
155
- //
156
- // let wptbTableSetup = document.querySelector( '.wptb-table-setup' );
157
- // if( wptbTableSetup ) wptbTableSetup.style.maxWidth = inputValue + 'px';
158
- //
159
- // table.tdDefaultWidth();
160
- // }
161
- // },
162
- // 'tableManageCells': function (inputValue, table) {
163
- // WPTB_Helper.toggleTableEditMode();
164
- // },
165
- // 'tableAlignmentCheckbox': function (inputValue, table) {
166
- // table.tdDefaultWidth();
167
- // },
168
- // 'tableCellMinAutoWidth': function (inputValue, table) {
169
- // table.tdDefaultWidth();
170
- // },
171
- // 'tableBorder': function (inputValue, table) {
172
- // table.tdDefaultWidth();
173
- // },
174
- // 'tableInnerBorderSize': function (inputValue, table) {
175
- // table.tdDefaultWidth();
176
- // },
177
- // 'tableCellPadding': function (inputValue, table) {
178
- // table.tdDefaultWidth();
179
- // }
180
- // }
181
- // function controlsChange2( controlName, controlValue, table ) {
182
- // if( controlName && typeof controlsChangeObj === 'object' && controlsChangeObj.hasOwnProperty( controlName ) ) {
183
- // controlsChangeObj[controlName](controlValue, table);
184
- // }
185
- // }
96
  }
97
  WPTB_Helper.controlsInclude( table, controlsChange );
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/core/class-init.php CHANGED
@@ -251,8 +251,10 @@ STYLE;
251
  $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
252
 
253
  // had to split footer and header scripts to load header scripts with higher priority to overwrite certain functionality, and footer scripts with lower priority to let third party scripts make their manipulations before responsive table reconstructions begin
254
- $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_header_scripts', PHP_INT_MIN );
255
- $this->loader->add_action('wp_enqueue_scripts', $plugin_public , 'enqueue_footer_scripts', PHP_INT_MAX);
 
 
256
 
257
  // add_action( 'wp_head', [ $this, 'content_width_header' ] );
258
  }
251
  $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
252
 
253
  // had to split footer and header scripts to load header scripts with higher priority to overwrite certain functionality, and footer scripts with lower priority to let third party scripts make their manipulations before responsive table reconstructions begin
254
+ // TODO [erdembircan] working on possible bug related to this class
255
+ // $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_header_scripts', PHP_INT_MIN );
256
+
257
+ $this->loader->add_action('wp_enqueue_scripts', $plugin_public , 'enqueue_footer_scripts');
258
 
259
  // add_action( 'wp_head', [ $this, 'content_width_header' ] );
260
  }
inc/frontend/class-frontend.php CHANGED
@@ -113,7 +113,8 @@ class Frontend {
113
  */
114
  public function enqueue_header_scripts() {
115
  // Enqueuing the event catcher to header with a high priority in order to be loaded before other scripts. But if, a third party script that manipulates (add/remove events) elements enqueued their script file with low priority to header tag with using jQuery document ready event, bugs may occur. But this is not our responsibility since any script that modifies the rendered elements should go to footer.
116
- wp_enqueue_script( 'event-catcher', plugin_dir_url( __FILE__ ) . 'js/wp-table-builder-event-catcher.js', array( 'jquery' ), $this->version, false );
 
117
  }
118
 
119
  /**
@@ -121,6 +122,6 @@ class Frontend {
121
  */
122
  public function enqueue_footer_scripts() {
123
  // even though we are using ready event of jquery, since we are modifying dom elements, as a best practice, this script should go to footer
124
- wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/wp-table-builder-frontend.js', array( 'jquery' ), $this->version, true );
125
  }
126
  }
113
  */
114
  public function enqueue_header_scripts() {
115
  // Enqueuing the event catcher to header with a high priority in order to be loaded before other scripts. But if, a third party script that manipulates (add/remove events) elements enqueued their script file with low priority to header tag with using jQuery document ready event, bugs may occur. But this is not our responsibility since any script that modifies the rendered elements should go to footer.
116
+ // TODO [erdembircan] working on possible bug with this class
117
+ // wp_enqueue_script( 'event-catcher', plugin_dir_url( __FILE__ ) . 'js/wp-table-builder-event-catcher.js', array( 'jquery' ), $this->version, false );
118
  }
119
 
120
  /**
122
  */
123
  public function enqueue_footer_scripts() {
124
  // even though we are using ready event of jquery, since we are modifying dom elements, as a best practice, this script should go to footer
125
+ wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/wp-table-builder-frontend.js', array( 'jquery' ), $this->version, false );
126
  }
127
  }
inc/frontend/js/wp-table-builder-frontend.js CHANGED
@@ -511,7 +511,8 @@
511
  tableContainer.appendChild( newTable );
512
 
513
  // restore events to element clones
514
- WptbEventCatcher.getInstance().restoreEvents('.wptb-preview-table-mobile');
 
515
  }
516
  }
517
  } else {
511
  tableContainer.appendChild( newTable );
512
 
513
  // restore events to element clones
514
+ // TODO [erdembircan] working on possible bug related to this class
515
+ // WptbEventCatcher.getInstance().restoreEvents('.wptb-preview-table-mobile');
516
  }
517
  }
518
  } else {
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: wptb, imtiazrayhan, istiakrayhan, ultimateblocks, wpcdplugin, wple
3
  Tags: table, table builder, drag and drop
4
  Requires at least: 4.9
5
  Tested up to: 5.4
6
- Stable tag: 1.2.1
7
  Requires PHP: 5.6
8
  License: GPL3+
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
@@ -86,6 +86,11 @@ That's it. You're done!
86
 
87
  == Changelog ==
88
 
 
 
 
 
 
89
  = 1.2.1 =
90
 
91
  * FIX: Internationalization Fixes for Better Translation Options.
3
  Tags: table, table builder, drag and drop
4
  Requires at least: 4.9
5
  Tested up to: 5.4
6
+ Stable tag: 1.2.2
7
  Requires PHP: 5.6
8
  License: GPL3+
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
86
 
87
  == Changelog ==
88
 
89
+ = 1.2.2 =
90
+
91
+ * HOTFIX: JavaScript Error that Broke Some Pages and Conflicts with Other Plugin.
92
+ * FIX: Cell Management Not Working for New Tables.
93
+
94
  = 1.2.1 =
95
 
96
  * FIX: Internationalization Fixes for Better Translation Options.
wp-table-builder.php CHANGED
@@ -15,9 +15,9 @@
15
  * Plugin Name: WP Table Builder
16
  * Plugin URI: https://wptablebuilder.com/
17
  * Description: Drag and Drop Responsive Table Builder Plugin for WordPress.
18
- * Version: 1.2.1
19
  * Author: WP Table Builder
20
- * Author URI: https://wptablebuilder.com/
21
  * License: GPL-3.0+
22
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
23
  * Text Domain: wp-table-builder
@@ -39,7 +39,7 @@ define( __NAMESPACE__ . '\NS', __NAMESPACE__ . '\\' );
39
 
40
  define( NS . 'WP_TABLE_BUILDER', 'wp-table-builder' );
41
 
42
- define( NS . 'PLUGIN_VERSION', '1.2.1' );
43
 
44
  define( NS . 'WP_TABLE_BUILDER_DIR', plugin_dir_path( __FILE__ ) );
45
 
15
  * Plugin Name: WP Table Builder
16
  * Plugin URI: https://wptablebuilder.com/
17
  * Description: Drag and Drop Responsive Table Builder Plugin for WordPress.
18
+ * Version: 1.2.2
19
  * Author: WP Table Builder
20
+ * Author URI: https://wptablebuilder.com//
21
  * License: GPL-3.0+
22
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
23
  * Text Domain: wp-table-builder
39
 
40
  define( NS . 'WP_TABLE_BUILDER', 'wp-table-builder' );
41
 
42
+ define( NS . 'PLUGIN_VERSION', '1.2.2' );
43
 
44
  define( NS . 'WP_TABLE_BUILDER_DIR', plugin_dir_path( __FILE__ ) );
45