File: /var/www/lcc.kaunokolegija.lt/wp-content/plugins/wp-table-builder/inc/admin/js/admin.js.map
{"version":3,"sources":["WPTB_ActionsField.js","WPTB_BackgroundMenu.js","WPTB_Builder.js","WPTB_Cell.js","WPTB_CutGlueTable.js","WPTB_DropHandle.js","WPTB_ElementCounters.js","WPTB_ElementObject.js","WPTB_ElementIdProvider.js","WPTB_ElementOptions.js","WPTB_Emoji.js","WPTB_ExtraStyles.js","WPTB_GetDirectionAfterReconstruction.js","WPTB_HeaderToolbox.js","WPTB_Helper.js","WPTB_Initializer.js","WPTB_LeftPanel.js","WPTB_Logger.js","WPTB_MultipleSelect.js","WPTB_NotificationManager.js","WPTB_Parser.js","WPTB_Polyfills.js","WPTB_RecalculateIndexes.js","WPTB_Responsive.js","WPTB_Settings.js","WPTB_SortableTable.js","WPTB_Stringifier.js","WPTB_Table.js","WPTB_TableSettingsData.js","WPTB_TableStateSaveManager.js","WPTB_innerElementSet.js","WPTB_Upsells.js","applyGenericItemSettings.js","WPTB_IconManager.js"],"names":["WPTB_ActionsField","_this","this","wptbActions","document","getElementsByClassName","length","addActionField","actionType","thisNode","body","getElementsByTagName","actions","previousNode","activeElem","classList","remove","parentNode","removeChild","btnDelete","createElement","btnCopy","add","appendChild","type","onclick","event","act","target","el","className","match","_typeof","hasOwnProperty","kind","thisRow","WPTB_Helper","rowIsTop","table","findAncestor","contains","dataTitleColumnSet","actionsRemove","WPTB_TableStateSaveManager","tableStateSet","wptbDocumentEventGenerate","copy","elementCopy","activeElement","activeElemParent","infArr","Array","isArray","data","elemProt","tinyMceClear","WPTB_ElementObject","getDOMElement","insertBefore","nextSibling","cloneNode","applyGenericItemSettings","WPTB_innerElementSet","setParameters","btnMove","draggable","ondragstart","dragImages","jsonIconsDirectories","wp","template","IconsDirectories","JSON","parse","getElementIcon","dataTransfer","effectAllowed","setDragImage","setData","style","display","actionsHide","ondragend","elementDragEndClear","coordinatesElement","wptbContainer","getBoundingClientRect","top","parseFloat","left","right","clientWidth","onscroll","leaveFromField","node","relatedTarget","onmouseleave","opacity","key","context","factory","self","global","singletonInstance","getSelectorToolbox","querySelector","removeHighlights","from","getCurrentTable","querySelectorAll","map","cell","calculateRailPositions","columnRailElement","rowRailElement","tableWidth","_currentTable$getBoun","width","tableHeight","height","columnRailHeight","columnRail","concat","mark","currentTable","indexRow","reduce","carry","item","currentRowCellCount","_cell$getBoundingClie","cellX","x","cellWidth","cellDataObject","index","railMark","createRailMark","addEventListener","preventDefault","stopPropagation","store","commit","element","rowRailWidth","rowRail","row","_row$getBoundingClien","rowHeight","rowPositionObject","addSelectorToolbox","toolbox","rowSelector","rowSelectorInnerWrapper","title","WPTB_IconManager","getIcon","then","icon","colSelector","colSelectorInnerWrapper","first","getters","hoveredCell","_getCellsAtColumnInde2","_toArray","getCellsAtColumnIndex","rest","slice","highlightCellLogic","types","selected","column","_toConsumableArray","assignRowClickHandler","getRowSelector","currentActiveRow","hoveredRow","_Array$from4","rowMouseEnter","selectorToolboxVisibility","builderTable","visible","arguments","undefined","dataset","WPTB_Store","get","overflowVisible","assignCellClickHandlers","highlightCell","cellMouseEnter","removeHandlersAndStates","removeEventListener","getColumnSelector","dispatch","watchStoreMutations","suppliedStore","subscribe","_ref4","targetRow","parentY","payload","y","_targetRow$getBoundin","cellsAtIndex","cellToUse","offsetWidth","parentX","_cellToUse$getBoundin","initialized","applyOptions","_ref","headerBg","evenBg","oddBg","headerHoverBg","evenHoverBg","oddHoverBg","header","hoverClass","rowOptions","wptbHeaderBackgroundColor","wptbEvenRowBackgroundColor","wptbOddRowBackgroundColor","wptbHeaderHoverBackgroundColor","wptbEvenRowHoverBackgroundColor","wptbOddRowHoverBackgroundColor","_Array$from2","colorVal","removeProperty","backgroundColor","setProperty","customBgColorRuleSet","customBgColor","wptbBgColor","hasCustomBgColor","includes","targetElement","multiSelection","currentTargetType","nodeName","toLowerCase","state","current","cellIndex","columnIndex","parsedIndex","Number","parseInt","cells","isNaN","_Array$from$splice","splice","cellAtIndex","_slicedToArray","push","init","_ref3","detail","WPTB_ControlsManager","callControlScript","getPreviousSection","elementActionsToolbox","addStore","storeObject","url","window","location","href","WPTB_FIX_MERGE","RegExp","exec","http","urlSet","table_id","detectMode","XMLHttpRequest","ajaxurl","open","setRequestHeader","onreadystatechange","d","wptbTableSetupEl","readyState","status","ans","responseText","getElementById","value","WPTB_Parser","WPTB_Table","wptbTableContainerMaxWidth","maxWidth","tdDefaultWidth","WPTB_Settings","send","counter","ElementCounters","select","MultipleSelect","WPTB_Initializer","settings","cellCount","rows","hasGap","i","Math","max","j","colSpan","rowSpan","forEach","occupied","newCell","xIndex","yIndex","WPTB_Cell","callback","DOMElement","padding","jQuery","val","innerBorderWidth","border","newElementProxy","ondblclick","wptbTableSetup","wptbSortableTable","currentTarget","elementStartScript","wptbPhElement","_loop","wptbElementTypeClass","wptbTypeElementArr","split","wptbInternalActiveElement","_loop2","wptbInternalActiveElementObj","setCoords","getCoords","coords","appendElement","getCellDimensions","tableBorderRight","tableBorderTop","tr","tdStyleObj","getComputedStyle","tdPaddingLeft","getPropertyValue","tdPaddingRight","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingTop","tdPaddingBottom","tdBorderTopWidth","tdBorderBottomWidth","offsetHeight","borderCollapse","tableBorderLeft","tableFullStyleObj","tableBorderBottom","firstChild","lastChild","WPTB_CutGlueTable","cutTableHorizontally","rowBefore","tableRowsIChildren","children","newTdRowspan","td","sameCellBeforeDivision","wptbCell","tdTopStyle","getAttribute","dataXIndex","setAttribute","dataXIndexNext","beforeTd","maxCols","WPTB_RecalculateIndexes","glueTableHorizontally","tds","hasAttribute","dataSameCellBeforeDivision","tdsSameBeforeDivision","tdsSameBeforeDivisionJPlusChildren","k","cutTableVertically","col","rowSpanNewTd","colSpanNewTd","rowChildren","rowChildrenLength","afterTd","colSpanOld","tdLeftStyle","tdAnalogThisX","tdAnalogThisY","glueTableVertically","jFirstTdGlue","WPTB_DropHandle","thisElem","e","wptbDropHandle","wptbDropBorderMarker","wptbDropBorderMarkerTop","wptbDropBorderMarkerRight","wptbDropBorderMarkerBottom","wptbDropBorderMarkerLeft","hide","toPx","getDragRelativeType","cellRelatedDropHandle","range","createRange","setStart","shadowRoot","createContextualFragment","_parentTd$getBounding","getParentOfType","ondragenter","ondragover","ondragleave","ondrop","getData","wptbMovingMode","text","getDOMParentElement","innerElement","innerElementNext","localName","indics","notDragEnter","indexOf","elementDrag","offsetY","layerY","bottom","priv","increment","nextIndex","elementIds","getNewId","elementType","elements","regex","matchArray","wptbElementMutch","kindIndexProt","elementClearFromTinyMce","wpTemplateId","itemHtml","replace","trim","innerHTML","inElems","inElemObj","WPTB_ElementOptions","elementOptionsSet","capture","EmojiConversionDisabler","targetTable","getPluginTables","MutationObserver","mutationList","addedNodes","addedElement","observe","childList","subtree","getSetting","module","exports","applyExtraStyle","tableElement","tableId","head","styleElement","uniqueClass","extraStylesRaw","wptbExtraStyles","extraStyles","atob","_tableElement$getAttr","styleId","baseDocument","id","disableThemeStyles","currentMode","modes","frontEnd","block","insertAdjacentElement","generalStyles","applyGeneralStyles","prefixedStyles","prefixStyleRules","createTextNode","tableQueries","builder","_defineProperty","formatStyles","styles","replaceAll","prefix","splitStyles","prefixedStylesArray","matches","join","baseElement","generalStylesheet","prefixedStyleRules","parentPrefix","applyStyles","mode","allTables","WPTB_GetDirectionAfterReconstruction","typeFirst","typeSecond","verticalProp","responsiveFront","itemsPerHeader","tableMaxCols","switchMode","getDirective","directives","sizeRangeId","responsiveMode","modeOptions","topRowAsHeader","cellStackDirection","cellsPerRow","newTable","WPTB_HeaderToolbox","wrapperQuery","assignButtons","topMargin","button","activateSection","buttonType","toggleToolboxVisibility","show","hideList","currentSection","hexToRgb","hex","result","rgbToHex","rgb","rgbm","isHex","toString","toUpperCase","round","test","icon_directory","protocol","hostname","img","src","wptbDropHandles","wptbDropBorderMarkers","linkHttpCheckChange","link","linkClean","convertToAbs","origin","linkArr","cls","parentElement","getSelectionText","getSelection","selection","elementOptionsPanelClear","elementOptionsGroup","wpColorPickerCheckChangeForTableStateSaving","originalEvent","wpPickerContainer","irisStripMouseUpStateSaveManager","wpColorPickerClear","attribute","isId","input","parent","newInput","results","decodeURIComponent","getTableId","getColumnWidth","xIndexes","getRowHeight","yIndexes","cellHeight","wpColorPickerChange","ui","uiColor","color","classe","number","affectedEl","ps","ratingStar","span","fill","numberImputSize","wptbNumberInputs","maxCount","maxValue","onkeydown","thisValue","String","substring","onkeyup","ucfirst","str","charAt","eventName","details","CustomEvent","bubbles","dispatchEvent","elementId","WPTB_ElementsScriptsLauncher","elementIdMatch","deleteEventHandlers","off","elementChildren","string","search","mceContentBodys","dataMceStyle","removeAttribute","mceEditFocus","contentEditable","spellCheck","mceIds","elementOptionContainerCustomClassSet","targetInput","customClassForContainer","containerElement","elementOptionContainerAdditionalStyles","containerAdditionalStyles","containerStylesArrOne","containerStylesSet","containerStyleStr","containerStyleStrArr","controlsInclude","functionHandler","acceptEventValues","controlConnectFunctionsName","name","elementKind","elementOptionsGroupIds","optionsGroupIds","elementOptionsGroupId","controlActiveElements","controlActiveElement","controlUnicClassName","regularText","controlInfArr","controls","controlName","control","targetControlValue","targetControlValueGet","targetValue","eventValue","oneControlInclude","jsonControlsConfig","controlClassName","wptbContrlStacksConfigId","jsonControlsConfigJson","container","innerElementCopyIncludeHandler","valueDependOnControl","dependOnControlName","targetControlElementClass","valueDependOnControlCorrect","dependOnControlDataGet","dependOnControlElements","valueDependOnControlCorrectObj","dependOnControlElementsArr","s","dependOnControlElementClass","dependOnControlData","Object","keys","unicClass","appearDependOnControl","dependOnMain","showHideTargetControlElement","controlContainerElem","dependOnControlElementsValue","targetControlInactiveVal","prototype","call","targetControlElements","controlActiveVal","dependOnControlElementValue","dependOn","returnBool","coincided","hasNumberAnyParams","targetControlElement","toggleSwitch","dataToggleSwitch","toggleSwitchExecute","dependOnParams","elems","checked","eventType","dependOnValue","bind","switchThirdToggleIf","dataSwitchThirdToggleIf","dependencyElemClass","dependencyElemVal","dependencyElem","dependencyParameters","dependentElemVal","dependentElemClass","dependentElems","dependentElem","console","log","controlsStateManager","targetControlClass","controlChangeIndic","targetControls","elementsSettings","elementSettings","elementsSettingsTemplatesJs","stringify","alignmentValue","elementControlsStateCopy","elementProt","copyElem","elemProtKind","elemCopyKind","elementSettingsProt","elementSettingsCopy","infArrProt","infArrCopy","elementsSettingsTemplateJs","elementSettingValue","elementSettingKeyCopy","elementControlsStateDelete","nameControl","wptbElementDatas","elementIdClassMatch","_wrapRegExp","cellId","_element$dataset","decisiveAttr","groups","elementContainerClass","elementOptionClassIndic","controlElementParent","elementOptionsScriptsContainer","tmplControlsConfig","editActionClassRemove","startsWith","wptbelementOptionClass","childNodes","controlsConfigJson","controlsConfig","elementOptionsGroupIdsInvolved","elementOptionsGroupInvolved","elementOptionsContainerInvolved","controlScriptsObj","controlappearDependOnControl","controltoggleSwitch","controlSwitchThirdToggleIf","controlValueDependOnControl","controlsConfigNew","elementOptionContainer","tmplControlTemplate","controlKey","controlTemplate","elemContainer","elementControlTargetUnicClass","controlParamCalculateValue","elementOptionsGroupChildren","elementOptionsContainerOn","elementOptionsContainer","elementOptionContainerOn","elementOptionClass","controlContainerElemParent","helperJavascriptCode","helperJavascriptElem","innerText","script","controlScriptsArr","editActiveElems","unicClassP","controlParamCalculateValueCreateFunction","handlerFunction","managerExternalCssStyles","elementContainer","selector","cssName","cssValue","cssForThisElement","cssText","cssTextArrFirst","selectorExists","pop","cssTextArrSecond","cssTextArrThird","cssNameExists","registerSections","sections","previousSection","sectionElement","sectionDataId","_this2","displayType","builderAdminContainer","triggerSectionEvent","wptbActiveSection","getCurrentSection","getSectionFromUrl","urlSection","URL","searchParams","some","setupSectionButtons","sectionButtons","vm","sectionName","wptbSectionButton","wptbSectionDisplayType","setupPanelToggleButtons","$","each","find","click","slideToggle","toggleClass","sectionEvent","setupSidebarToggle","toggleSelector","toggleButton","toggle","externalCssStylesDelete","externalCssStylesCopy","copyElement","cssForNewElement","cssForNewElementInnerHTML","activeElemClass","cssForActiveElement","infArrCopyEl","cssForActiveElementInnerHTML","elementsStylesConvertToObject","stylesElements","stylesObj","styleElemId","elementsStylesSetFromObject","jsonObject","styleCss","getSanitizedHtml","html","DOMPurify","sanitize","ADD_TAGS","ADD_ATTR","FORBID_ATTR","FORBID_TAGS","sanitizeXSS","saveTable","startSaving","previewSaving","tableSaveIndicator","wptbTableStateNumberSave","wptbTableStateNumberShow","bar","toggleTableEditMode","tableClean","messagingArea","postId","code","datas","messagingAreaText","wptb_admin_object","t","paramIdsNecessaryChange","rs","wptbId","styleObjJson","codeClone","columns","WPTB_Stringifier","datas_containers","setTimeout","params","content","elements_datas","elements_styles","security_code","preview_saving","action","builderPageUrl","history","pushState","WPTB_NotificationManager","sendNotification","message","tableStateClear","wptbPreviewBtn","wptbPreviewBtnHref","previewHref","wptbSaveBtn","clickOnFreeSpace","cellModeBackground","wpcdFixedToolbar","elementAjax","dataAjaxData","element_name","element_ajax_data","close","leftScrollPanelCurtain","leftScrollPanelCellSettings","wptbPreviewTable","builderPanel","toggleEditMode","deactivateMultipleSelectMode","wptbPreviewTableTds","manageCellsActive","activateMultipleSelectMode","checkingDimensionValue","dimension","searchIndex","checkSetGetStyleSizeValue","styleName","computedStyleName","elemStyleValue","elementStyles","checkSetGetStyleColorValue","set","elemStyleColorValue","checkSetGetStyleValue","getValueMaxCountSameElementsInArray","arr","maxPropName","check","countEmpty","recalculateIndexes","tableRowsColorsReinstall","tableIndex","tableHeaderBackground","tableEvenRowBackground","tableOddRowBackground","parentType","dragRelativeType","setDragRelativeType","getElementColorStylesHex","showControlsOnElementMount","showElementsListOnRemove","blockTinyMCE","addBlocker","blockerElement","haveChild","removeBlocker","calledByBlock","isTableClean","getTableDirtyStatus","confirm","getTranslation","saveStatus","wptbSaving","availablePluginTables","addHook","tagName","tableGenerator","columnsDecrementButton","columnsIncrementButton","rowsDecrementButton","rowsIncrementButton","columnsInput","rowsInput","WptbResponsive","WPTB_ExtraStyles","subscribeToControl","WPTB_LeftPanel","wptbElementButtons","wptbElement","closeButton","wptbHeader","bgColors","normal","prepareMessage","prepareMessageStyle","messageType","keyName","selectedCells","multipleCellMode","isActivated","pushSelectedCell","flushSelectedCells","getFirst","minXIndex","minYIndex","getLast","last","maxXIndex","maxYIndex","removeAllButFirst","_context$wptb_admin_o","managerData","notificationManager","notificationOptions","options","defaults","parsedOptions","_objectSpread","setControlData","notificationTypes","queueTypes","revealTypes","dismissTypes","div","columnTitleMobile","LAST_ID","image","list","shortcode","starRating","customHTML","circleRating","textIcon","ribbon","badge","styledList","progressBar","WPTB_BlockFixer","_el$className","newClassName","_el$className2","_el$className3","_el$className4","_el$className5","_el$className6","_el$className7","_el$className8","_el$className9","_el$className10","_el$className11","_el$className12","_el$className13","_el$className14","blocks","hasDontEnumBug","propertyIsEnumerable","dontEnums","dontEnumsLength","obj","TypeError","prop","trs","maxColsFull","tdsArr","jMainIter","z","responsiveWrapperId","mainContainerQuery","responsiveTable","loaded","addContainerToDom","mainContainer","Error","responsiveElement","load","startUp","tablePreview","wptbRelativeElements","wptbTableStateSaveManager","wptbUndo","wptbRedo","wptbUndoRedoContainer","tableStateGet","wptbUndoredo","tableTitleField","onbeforeunload","shortcodePopupWindow","previewId","newHref","floor","random","onchange","thisObject","sortingCellMouseMov","xMatch","offsetX","layerX","clientHeight","sortingCellMouseMoveVertical","sortingCellMouseMoveHorizontal","tdMouseLeave","sortableTable","tableWasSorted","tableRowsBefore","tableRowsAfter","tableRowsArr","tableLastCont","rowspan","rowNum","rowsTdFirst","rowsValuesArr","tdYCoordsRowSpanPrevious","tableRowsPushed","tdsChanged","changeSortingTdsCollection","tdRowspan","textElementsValues","textElementsValuesGet","rowsTd","orderBy","setSortedAscDataAttr","sort","prev","next","sortOrder","unshift","trRef","tBody","rowsValObj","colspan","colNum","columnsTdFirst","columnsValuesArr","tdXCoordsColSpanPrevious","tdColspan","columnsTd","tdsColumn","difference","columnsValObj","removeCellsAttrAfterDivision","tdsAll","tableSM","reassignElementsStyles","dataAttr","prevValue","nextValue","textElements","tdIndexSpanPrev","collectionTdsJSpan","collectionTdsJSpanProperty","indexName","indexNameCamelCase","indexNamePerpendicularCamelCase","tdSpanProperty","tableGroupCount","tdsCollectionChanged","collectionTds","tdSpan","cellsStylesScheme","rowsStylesScheme","sortModeSwitcher","active","sortableTableVerticalStart","sortingCellMouseMoveSwitcher","wptbSortableTableVertical","createTableElementsStylesScheme","sortableTableHorizontalStart","wptbSortableTableHorizontal","tableObjectChange","start","elemSelector","elem","objectKey","elementsStylesScheme","elemStyles","sortableTableInitialization","sortModeSwitcherRun","tableOld","switchModeObj","sCMM","dataAttrSortChange","rowsLength","dataYIndexStart","codeMain","tBodyData","firstTd","allTr","tableProps","_codeMain$querySelect","tableStyle","alignment","wptbTableAlignment","enableMaxWidth","wptbApplyTableContainerMaxWidth","minWidth","cellMinWidth","wptbTdWidthAuto","sortHorizontal","sortVertical","tableSpacingX","borderSpacingColumns","tableSpacingY","borderSpacingRows","cols","tableColumns","cellsWidthAutoCount","wptbCellsWidthAutoCount","tdSumMaxWidth","wptbTableTdsSumMaxWidth","fontColor","globalFontColor","linkColor","globalLinkColor","fontSize","globalFontSize","tableBorder","borderWidth","borderColor","borderStyle","headerInnerBorder","scrollX","wptbHorizontalScrollStatus","wptbDisableThemeStyles","stickyFirstColumn","wptbFirstColumnSticky","stickyTopRow","_codeMain$querySelect2","wptbStickyRow","paginationEnable","wptbPaginationEnable","paginationTopRowAsHeader","wptbProPaginationTopRowHeader","rowsPerPage","wptbRowsPerPage","rowsChangeable","wptbRowsChangeable","searchEnable","wptbSearchEnable","searchKeepHeader","wptbProSearchTopRowHeader","searchPosition","wptbSearchbarPosition","role","wptbTableDirectives","responsiveDirectives","wptbResponsiveDirectives","evenRowBg","oddRowBg","hoverHeaderBg","hoverEvenRowBg","hoverOddRowBg","hMatch","props","hightLighted","background","tData","autoWidth","wptbCssTdAutoWidth","autoHeight","wptbCssTdAutoHeight","ownBgColor","wptbOwnBgColor","borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","vAlign","wptbCellVerticalAlignment","isEmpty","highlighted","xSort","sortedVertical","ySort","sortedHorizontal","hideOnMobile","blockEl","WPTB_BlockSerializer","shortCode","_el$className$match","_el$firstElementChild","firstElementChild","margin","imgEl","lTarget","wptbImageAlignment","alt","imgHeight","imgWidth","sizeRelativeTo","wptbImageSizeRelative","size","wptbSize","linkRel","linkTarget","convertToAbsolute","wptbLinkEnableConvertRelative","bWrap","btnDiv","iconEl","labelEl","pEl","_bWrap$className$matc","wptbElementBgColor","wptbElementColor","buttonAlignment","justifyContent","contentAlignment","hoverBg","wptbElementHoverBgColor","hoverColor","wptbElementHoverTextColor","hoverScale","wptbElementHoverScale","wptbButtonIconSrc","iconPosition","iconSize","hasLabel","labelBg","labelColor","labelText","_labelEl$querySelecto","firstLi","firstP","items","_firstP$className$mat","child","toolTipEl","tooltipPosision","_child$className$matc","textAlign","toolTip","toolTipStyle","listIcon","itemSpacing","marginBottom","firstStar","ratingBox","ratingEl","starSize","starColor","_firstStar$querySelec","starCount","showRating","_ratingEl$textContent","textContent","cDiv","wrapper","ratingType","wptbRatingType","wptbRatingNumber","percentageCount","total","wptbTotalNumber","firstIcon","icons","divEl","wptbIconSrc","count","wptbIconNumber","_firstIcon$firstEleme","_ref2","inner","colorDump","pEL","wptbRibbonType","modifications","wptbRibbonModifications","side","wptbRibbonSide","xOffset","wptbRibbonXOffset","yOffset","wptbRibbonYOffset","wptbRibbonWidth","wptbRibbonIconSrc","enableAnimation","animationType","wptbRibbonIconAnimationType","iconEL","_child$className$matc2","_child$firstElementCh","wptbStyledListAlignment","wptbStyledListIconSrc","iconColor","iconSpacing","marginLeft","spaceBetween","wptbTextIconSpaceBetween","wptbTextIconAlignment","wptbTextIconIconSrc","iconLocation","wptbTextIconIconLocation","_el$querySelector","prBar","thickness","strokeWidth","primaryColor","secondaryColor","_wrapper$firstElement","array","wptb_preview_table","cs","noCells","singleCells","multipleCells","cellSettings","cellSelectOperation","cellElement","_getCoords","_getCoords2","position","isShiftActive","shiftKey","cellHighlighted","ele","markedCells","sizeName","getSizeFunctionName","elementControlSizeUnicClass","elementControlSizeFixedUnicClass","cellSizeInputs","cellSizeFixedInput","isSquare","controlKeys","_thisElem$className$m","highlightValue","highlightColInput","settingId","settingElem","substr","highlightRowInput","countMarkedCells","splitButton","drawTable","a","undoSelect","fillTableArray","colspansSums","colspanSumInRow","maxAmountOfCells","apply","maxAmountOfRows","skipInCols","cellsBuffer","xPosition","cellPointer","stepsToMove","reconstraction","insertRow","setMaxAmountOfCells","getMaxAmountOfCells","addColumnWidth","cleaner","tableTdsFor","tableRows","widthIsSet","arrayTdsFromPreviousRow","wptbFixedWidth","tableTdsSumMaxWidthFixed","tableTdsSumMaxWidthAuto","wptbTableSetupWidth","arrayCellsWidthFixedHelper","arrayCellsWidthAutoHelper","tdPaddingCommon","tableTdBorderCommonWidth","cssForTdsWidthAuto","borderLeftWidth","borderRightWidth","tableBorderCommon","tableTdBorderLeftWidth","tableTdBorderRightWidth","CellsWidthAutoCount","tableTdsSumMaxWidth","mergingСellsHorizontally","wptbFixedWidthSize","tableTdWidthAuto","styleElementCreate","cssForTdsWidthAutoOld","addRowHeight","dataYIndex","heightIsSet","arrayTdsPrevious","wptbFixedHeight","forBreak","mergingCellsVertically","addColumnEnd","currentTableTd","currentTdStyle","WPTB_TableSettingsData","getTableSetting","addColumnStart","firstCell","addColumnAfter","c_pos","cellStyle","pos","newTd","nextSib","addColumnBefore","addRowToTheEnd","aux","r","addRowToTheStart","addRowBefore","cellNew","addRowAfter","rowAfter","cellsColSpan","tableRIChildrenLength","rNextChildren","rNextChildrenLength","rowStart","columnStart","rowEnd","columnEnd","mergeCells","dimensions","tdsChildrenNew","tdsInternalElements","tdsIntElemLength","firstWidth","firstDataFixedWidth","firstHeight","firstDataFixedHeight","splitCell","cellStyles","cellXIndex","rowChildInsertBefore","rowNext","findRowspannedCells","actualPoints","points","addLackingCells","sumRows","totalColspan","deleteRow","thisRowChildren","nextRow","tdArr","nextRowChildren","nextRowChildrenLength","nextRowChildrenK","jRowChildren","deleteColumn","onresize","setTableSetting","generate","wptbTableStateSaving","wptbNewTableSetup","wptbHighlighted","wptbDirectlyhovered","cssForTdsWidthAutoValue","wptbTableTitle","wptbSetupName","datawptbUndoredo","outerHTML","wptbTableSetupNew","wptbLeftScrollPanelCellSetting","proStatus","mountPointId","mountPoint","classId","onmouseover","WPTB_ElementIdProvider","newDataAttributeName","newDataAttributeValue","wptbNodeattributes","attributes","attr","nodeValue","kindIndexProtArr","node_wptb_element_kind_num","onmouseenter","elemChild","wptbActionsField","_elemChild$children","IconManager","iconList","cachedIcons","prepareIcon","iconSvgString","extraClass","stringifiedVersion","iconWrapper","eClass","getIconList","iconName","getStringifiedVersion","Promise","res","rej","cachedIcon","fetch","resp","ok","iconString","error","err","getIconUrl","iconUrl","iconManager"],"mappings":"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","file":"admin.js","sourcesContent":["var WPTB_ActionsField = function() {\n //this.wptbBorderMarker;\n this.wptbActions;\n if( document.getElementsByClassName( 'wptb-actions' ).length != 0 ) {\n this.wptbActions = document.getElementsByClassName( 'wptb-actions' )[0];\n }\n\n this.addActionField = ( actionType, thisNode ) => {\n let body = document.getElementsByTagName( 'body' )[0];\n\n let actions = document.getElementsByClassName( 'wptb-actions' );\n if( actions.length != 0 ) {\n let previousNode = actions[0].activeElem;\n if( previousNode ) {\n previousNode.classList.remove( 'wptb-directlyhovered' );\n }\n\n while( actions.length != 0 ) {\n actions[0].parentNode.removeChild( actions[0] );\n }\n }\n\n if( actionType == 1 ) {\n\n let btnDelete, btnCopy;\n\n btnDelete = document.createElement( 'span' ),\n btnCopy = document.createElement( 'span' ),\n actions = document.createElement( 'div' );\n\n actions.classList.add( 'wptb-actions' );\n btnDelete.classList.add( 'dashicons', 'dashicons-trash', 'wptb-delete-action' );\n btnCopy.classList.add( 'dashicons', 'dashicons-admin-page', 'wptb-duplicate-action' );\n\n actions.appendChild( btnCopy );\n actions.appendChild( btnDelete );\n\n body.appendChild( actions );\n\n actions.activeElem = thisNode;\n\n actions.type = 1;\n\n btnDelete.onclick = function( event ) {\n let act = event.target.parentNode.activeElem,\n el = act.parentNode;\n let infArr = act.className.match( /wptb-element-(.+)-(\\d+)/i );\n// if( act && infArr && Array.isArray( infArr ) ) {\n// WPTB_Helper.elementControlsStateDelete( act );\n// WPTB_Helper.externalCssStylesDelete( infArr[0] );\n// }\n\n if( act ) {\n el.removeChild( act );\n }\n\n if( act && typeof act === 'object' && act.hasOwnProperty( 'kind' ) && act.kind == 'text' ) {\n let thisRow = el.parentNode;\n\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n }\n\n let wptbActionsField = new WPTB_ActionsField();\n wptbActionsField.actionsRemove();\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n\n WPTB_Helper.wptbDocumentEventGenerate('element:removed:dom', document, act);\n };\n\n btnCopy.onclick = ( event ) => {\n let copy,\n infArr,\n type;\n let activeElement = event.target.parentNode.activeElem;\n let activeElemParent = activeElement.parentNode;\n infArr = activeElement.className.match( /wptb-element-(.+)-(\\d+)/i );\n if( infArr && Array.isArray( infArr ) ) {\n type = infArr[1];\n let data = {};\n data.kind = type;\n data.elemProt = activeElement;\n data.tinyMceClear = true;\n copy = new WPTB_ElementObject( data );\n //WPTB_Helper.elementControlsStateCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.externalCssStylesCopy( activeElement, copy.getDOMElement() );\n //WPTB_Helper.elementStartScript( copy.getDOMElement() );\n copy.getDOMElement().classList.remove('edit-active');\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 WPTB_Helper.wptbDocumentEventGenerate('wptb:actionfield:generated', document);\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 wptbContainer.onscroll = correctTop;\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' ) || event.relatedTarget.classList.contains( 'wptb-prebuilt-mark-action' ) )\n {\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}\n","/**\n * UMD for background menu setup.\n */\n(function umd(key, context, factory) {\n // eslint-disable-next-line no-param-reassign\n context[key] = factory();\n // eslint-disable-next-line no-restricted-globals\n})(\"WPTB_BackgroundMenu\", self || global, function wptbBackgroundMenuSetup() {\n /**\n * Background menu component.\n *\n * @class\n */\n function BackgroundMenu() {\n // whether setup operation done or not\n this.initialized = false;\n\n // flux store that will be used with menu\n let store = null;\n\n /**\n * Get current active table on builder.\n *\n * @return {HTMLElement | null} found active table\n */\n const getCurrentTable = () => {\n return document.querySelector(\n \".wptb-table-setup .wptb-preview-table\"\n );\n };\n\n /**\n * Get selector toolbox element.\n *\n * @return {Element | undefined} selector toolbox\n */\n const getSelectorToolbox = () => {\n return document.querySelector(\".wptb-bg-color-selectors\");\n };\n\n /**\n * Get background specific options from table attributes.\n */\n const parseOptionsFromTable = () => {\n const currentTable = getCurrentTable();\n\n const headerBg = currentTable.dataset.wptbHeaderBackgroundColor;\n const evenBg = currentTable.dataset.wptbEvenRowBackgroundColor;\n const oddBg = currentTable.dataset.wptbOddRowBackgroundColor;\n const headerHoverBg =\n currentTable.dataset.wptbHeaderHoverBackgroundColor;\n const evenHoverBg =\n currentTable.dataset.wptbEvenRowHoverBackgroundColor;\n const oddHoverBg =\n currentTable.dataset.wptbOddRowHoverBackgroundColor;\n\n return {\n row: {\n headerBg,\n evenBg,\n oddBg,\n headerHoverBg,\n evenHoverBg,\n oddHoverBg,\n },\n };\n };\n\n /**\n * Apply color value to element.\n *\n * @param {string | null} colorVal color value\n * @param {Element} element html element\n */\n const applyColor = (colorVal, element) => {\n if (colorVal === \"\" || colorVal === null) {\n // eslint-disable-next-line no-param-reassign\n element.style.removeProperty(\"background-color\");\n } else {\n // eslint-disable-next-line no-param-reassign\n element.style.backgroundColor = colorVal;\n }\n };\n\n /**\n * Row specific operations.\n *\n * @param {Object} rowOptions row options object\n * @param {string} rowOptions.headerBg header color\n * @param {string} rowOptions.evenBg even row color\n * @param {string} rowOptions.oddBg odd row color\n */\n const rowOperations = ({\n headerBg,\n evenBg,\n oddBg,\n headerHoverBg,\n evenHoverBg,\n oddHoverBg,\n }) => {\n const currentTable = getCurrentTable();\n\n const [header, ...rest] = Array.from(\n currentTable.querySelectorAll(\"tr\")\n );\n\n const hoverClass = \"wptb-row-has-hover\";\n\n // apply header row color\n applyColor(headerBg, header);\n\n // add header hover class and style\n if (headerHoverBg) {\n header.classList.add(hoverClass);\n header.style.setProperty(\"--hover-bg-color\", headerHoverBg);\n } else header.classList.remove(hoverClass);\n\n // apply even/odd row color\n // eslint-disable-next-line array-callback-return\n rest.map((row, index) => {\n // ruleset to decide whether row has a custom bg color applied or not\n const customBgColorRuleSet = [\"\", null, undefined];\n const customBgColor = row.dataset.wptbBgColor;\n const hasCustomBgColor = !customBgColorRuleSet.includes(\n customBgColor\n );\n\n // eslint-disable-next-line no-param-reassign,no-nested-ternary\n row.style.backgroundColor = hasCustomBgColor\n ? customBgColor\n : index % 2 === 0\n ? evenBg\n : oddBg;\n\n // add row hover class and style\n if (index % 2 === 0) {\n if (evenHoverBg) row.classList.add(hoverClass);\n else row.classList.remove(hoverClass);\n\n row.style.setProperty(\"--hover-bg-color\", evenHoverBg);\n } else {\n if (oddHoverBg) row.classList.add(hoverClass);\n else row.classList.remove(hoverClass);\n\n row.style.setProperty(\"--hover-bg-color\", oddHoverBg);\n }\n });\n };\n\n /**\n * Apply background options to table.\n *\n * @param {null | Object} suppliedOptions options object, if supplied, these options will be used instead of parsing from table itself\n */\n this.applyOptions = (suppliedOptions = null) => {\n const { row: rowOptions } =\n suppliedOptions || parseOptionsFromTable();\n\n rowOperations(rowOptions);\n };\n\n /**\n * Remove all highlight visuals from cells.\n */\n const removeHighlights = () => {\n // remove any active highlighted cells\n const allCells = Array.from(\n getCurrentTable().querySelectorAll(\"td\")\n );\n\n // eslint-disable-next-line array-callback-return\n allCells.map((cell) => {\n cell.classList.remove(\"wptb-highlighted\");\n });\n };\n\n /**\n * Extracted cell highlight logic to use with other parts of component.\n *\n * @param {Element} targetElement target element\n * @param {boolean} multiSelection is multi selection active, multi selection should be enabled for elements after the first selected one onwards\n */\n const highlightCellLogic = (targetElement, multiSelection = false) => {\n const currentTargetType = targetElement.nodeName.toLowerCase();\n\n if (!multiSelection) {\n removeHighlights();\n }\n\n // only add highlight style to table cell elements\n if (currentTargetType !== \"td\") {\n // eslint-disable-next-line no-param-reassign\n targetElement = targetElement.parentNode;\n }\n\n targetElement.classList.add(\"wptb-highlighted\");\n };\n\n /**\n * Highlight selected data cell element.\n *\n * @param {Event} event click event\n */\n const highlightCell = (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const currentTargetType = event.target.nodeName.toLowerCase();\n\n let targetElement = event.target;\n\n if (currentTargetType !== \"td\") {\n targetElement = event.target.parentNode;\n }\n\n highlightCellLogic(targetElement);\n\n store.commit(\"setMenuSelectedTableElement\", {\n type: store.state.types.selected.cell,\n item: targetElement,\n });\n };\n\n /**\n * Get column selection element.\n *\n * @return {Element} row selection element\n */\n const getColumnSelector = () => {\n const rowSelectionClass = \".wptb-col-selection\";\n return document.querySelector(rowSelectionClass);\n };\n\n /**\n * Get column rail element\n *\n * @return {Element} column rail element\n */\n const getColumnRail = () => {\n return document.querySelector(\n \".wptb-bg-color-selectors .wptb-bg-column-rail\"\n );\n };\n\n /**\n * Get row rail element\n *\n * @return {Element} row rail element\n */\n const getRowRail = () => {\n return document.querySelector(\n \".wptb-bg-color-selectors .wptb-bg-row-rail\"\n );\n };\n\n /**\n * Get column selection element.\n *\n * @return {Element} column selection element\n */\n const getRowSelector = () => {\n const columnSelectionClass = \".wptb-row-selection\";\n return document.querySelector(columnSelectionClass);\n };\n\n /**\n * Handle mouse over event for table rows.\n *\n * @param {Event} event event object\n */\n const rowMouseEnter = (event) => {\n // update hovered row element on store\n store.commit(\"updateHoveredRowElement\", event.target);\n };\n\n /**\n * Handle mouse over event for table cells.\n *\n * @param {Event} event event object\n */\n const cellMouseEnter = (event) => {\n const targetElement = event.target;\n\n // find index of cell element relative to its container row element\n const index = Array.from(\n targetElement.parentNode.querySelectorAll(\"td\")\n ).reduce((carry, current, cellIndex) => {\n return current === targetElement ? cellIndex : carry;\n }, -1);\n\n // update hovered cell element on store\n store.commit(\"updateHoveredCellElement\", {\n element: targetElement,\n index,\n });\n };\n\n /**\n * Get all cells at the given column index.\n *\n * @param {number | string} columnIndex column index\n */\n const getCellsAtColumnIndex = (columnIndex) => {\n // parse index to an integer if its type is not a number\n const parsedIndex =\n typeof columnIndex === \"number\"\n ? columnIndex\n : Number.parseInt(columnIndex, 10);\n\n const cells = [];\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(parsedIndex)) {\n // eslint-disable-next-line array-callback-return\n Array.from(getCurrentTable().querySelectorAll(\"tr\")).map(\n (row) => {\n const [cellAtIndex] = Array.from(\n row.querySelectorAll(\"td\")\n ).splice(parsedIndex, 1);\n\n // only push the cell to found ones if there is a cell at the given index\n if (cellAtIndex) {\n cells.push(cellAtIndex);\n }\n }\n );\n }\n\n return cells;\n };\n\n /**\n * Calculate row selector position relative to supplied table row element.\n *\n * @param {Element} targetRow target row element\n */\n const rowSelectorPosition = (targetRow) => {\n const { y: parentY } = document\n .querySelector(\".wptb-table-setup\")\n .getBoundingClientRect();\n const { height, y } = targetRow.getBoundingClientRect();\n\n const rowSelector = getRowSelector();\n rowSelector.classList.add(\"wptb-bg-selection-visible\");\n rowSelector.style.height = `${height}px`;\n rowSelector.style.top = `${y - parentY}px`;\n\n // @deprecated\n // // since row selector is hidden with 'display: none' css rule, should get its size values after it becomes visible\n // const { width: selectorWidth } = getRowSelector().getBoundingClientRect();\n // rowSelector.style.left = `${x - parentX - selectorWidth}px`;\n };\n\n /**\n * Calculate position of column selector element.\n *\n * @param {number | string} index index of the column relative to current table\n */\n const columnSelectorPosition = (index) => {\n const cellsAtIndex = getCellsAtColumnIndex(index);\n\n if (cellsAtIndex.length > 0) {\n const colSelector = getColumnSelector();\n\n // select the cell width lowest width value to use as a pivot point\n const cellToUse = cellsAtIndex.reduce((carry, cell) => {\n return carry.offsetWidth > cell.offsetWidth ? cell : carry;\n }, cellsAtIndex[0]);\n\n const { x: parentX } = document\n .querySelector(\".wptb-table-setup\")\n .getBoundingClientRect();\n const { width, x } = cellToUse.getBoundingClientRect();\n\n colSelector.classList.add(\"wptb-bg-selection-visible\");\n colSelector.style.left = `${x - parentX}px`;\n // colSelector.style.top = `${-colSelector.offsetHeight}px`;\n colSelector.style.width = `${width}px`;\n }\n };\n\n /**\n * Create rail mark element.\n *\n * @return {HTMLDivElement} rail mark element\n */\n const createRailMark = () => {\n const railMark = document.createElement(\"div\");\n railMark.classList.add(\"wptb-bg-rail-mark\");\n return railMark;\n };\n\n /**\n * Add column marks to selector rail.\n *\n * @param {Element} columnRailElement column rail element\n */\n const addColumnMarksToRail = (columnRailElement) => {\n // clear rail from all previous mark elements\n // eslint-disable-next-line array-callback-return\n Array.from(\n columnRailElement.querySelectorAll(\".wptb-bg-rail-mark\")\n ).map((mark) => {\n mark.remove();\n });\n\n const currentTable = getCurrentTable();\n // find row with most columns to use an index\n // eslint-disable-next-line array-callback-return\n const indexRow = Array.from(\n currentTable.querySelectorAll(\"tr\")\n ).reduce((carry, item) => {\n if (carry === null) {\n return item;\n }\n const currentRowCellCount = item.querySelectorAll(\"td\").length;\n const carryRowCellCount = carry.querySelectorAll(\"td\").length;\n\n return currentRowCellCount > carryRowCellCount ? item : carry;\n }, null);\n\n // get required position data for each cell element at our index row, this position data will be used to put rails on correct places to be in sync with columns\n const indexRowCellData = Array.from(\n indexRow.querySelectorAll(\"td\")\n ).map((cell) => {\n const { x, width } = cell.getBoundingClientRect();\n return { cellX: x, cellWidth: width };\n });\n\n // eslint-disable-next-line array-callback-return\n indexRowCellData.map((cellDataObject, index) => {\n // create a new rail mark element and update its properties\n const railMark = createRailMark();\n railMark.style.width = `${cellDataObject.cellWidth}px`;\n railMark.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n store.commit(\"updateHoveredCellElement\", {\n element: null,\n index,\n });\n });\n columnRailElement.appendChild(railMark);\n });\n };\n\n /**\n * Add row marks to selector rail.\n *\n * @param {Element} rowRailElement row rail element\n */\n const addRowMarksToRail = (rowRailElement) => {\n // clear any rail mark available within row rail element\n // eslint-disable-next-line array-callback-return\n Array.from(\n rowRailElement.querySelectorAll(\".wptb-bg-rail-mark\")\n ).map((mark) => {\n mark.remove();\n });\n\n // get position data for row elements in current table\n const rowsPositionsObject = Array.from(\n getCurrentTable().querySelectorAll(\"tr\")\n ).map((row) => {\n const { height } = row.getBoundingClientRect();\n\n return { element: row, rowHeight: height };\n });\n\n rowsPositionsObject.map((rowPositionObject) => {\n // create a rail mark element and update its properties\n const railMark = createRailMark();\n railMark.style.height = `${rowPositionObject.rowHeight}px`;\n railMark.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n store.commit(\n \"updateHoveredRowElement\",\n rowPositionObject.element\n );\n });\n\n // add rail mark to row rail element\n rowRailElement.appendChild(railMark);\n });\n };\n\n /**\n * Calculate rail positions.\n *\n * This function will calculate main component position and also fill up rail with column marks.\n */\n const calculateRailPositions = () => {\n const currentTable = getCurrentTable();\n\n const {\n width: tableWidth,\n height: tableHeight,\n } = currentTable.getBoundingClientRect();\n\n // column rail position calculations\n const columnRail = getColumnRail();\n const {\n height: columnRailHeight,\n } = columnRail.getBoundingClientRect();\n columnRail.style.top = `-${columnRailHeight}px`;\n columnRail.style.width = `${tableWidth}px`;\n // add rail marks to column rail\n addColumnMarksToRail(columnRail);\n\n // row rail position calculations\n const rowRail = getRowRail();\n const { width: rowRailWidth } = rowRail.getBoundingClientRect();\n rowRail.style.left = `-${rowRailWidth}px`;\n rowRail.style.height = `${tableHeight}px`;\n // add rail marks to column rail\n addRowMarksToRail(rowRail);\n };\n\n /**\n * Selecting an entire row operation handler.\n */\n const selectRow = () => {\n const currentActiveRow = store.getters.hoveredRow;\n\n if (currentActiveRow) {\n const [first, ...rest] = Array.from(\n currentActiveRow.querySelectorAll(\"td\")\n );\n\n // don't activate multi highlight for first element to clear any previous highlighted cell\n highlightCellLogic(first);\n\n // activate multi highlight for the rest\n // eslint-disable-next-line array-callback-return\n rest.map((cell) => {\n highlightCellLogic(cell, true);\n });\n\n store.commit(\"setMenuSelectedTableElement\", {\n type: store.getters.types.selected.row,\n item: currentActiveRow,\n });\n }\n };\n\n /**\n * Select cells of an entire column.\n *\n * This function will use store index value to determine which column to use.\n */\n const selectColumn = () => {\n const { index } = store.getters.hoveredCell;\n\n if (index !== null) {\n const [first, ...rest] = getCellsAtColumnIndex(index);\n highlightCellLogic(first);\n // eslint-disable-next-line array-callback-return\n rest.map((cell) => {\n highlightCellLogic(cell, true);\n });\n\n store.commit(\"setMenuSelectedTableElement\", {\n type: store.getters.types.selected.column,\n item: [first, ...rest],\n });\n }\n };\n\n /**\n * Add a container that will contain row and column selectors.\n */\n const addSelectorToolbox = () => {\n // main toolbox wrapper\n const toolbox = document.createElement(\"div\");\n toolbox.classList.add(\"wptb-bg-color-selectors\");\n\n // row rail\n const rowRail = document.createElement(\"div\");\n rowRail.classList.add(\"wptb-bg-row-rail\");\n\n // row selector\n const rowSelector = document.createElement(\"div\");\n rowSelector.classList.add(\n \"wptb-row-selection\",\n \"wptb-bg-selection-item\"\n );\n rowSelector.title = \"Select row\";\n\n const rowSelectorInnerWrapper = document.createElement(\"div\");\n rowSelectorInnerWrapper.classList.add(\n \"wptb-bg-selection-item-inner-wrapper\"\n );\n rowSelector.appendChild(rowSelectorInnerWrapper);\n\n WPTB_IconManager.getIcon(\n \"arrow-alt-circle-right\",\n \"wptb-selector-icon-wrapper\"\n ).then((icon) => {\n rowSelectorInnerWrapper.appendChild(icon);\n });\n\n // column rail\n const columnRail = document.createElement(\"div\");\n columnRail.classList.add(\"wptb-bg-column-rail\");\n\n // column selector\n const colSelector = document.createElement(\"div\");\n colSelector.classList.add(\n \"wptb-col-selection\",\n \"wptb-bg-selection-item\"\n );\n colSelector.title = \"Select column\";\n\n const colSelectorInnerWrapper = document.createElement(\"div\");\n colSelectorInnerWrapper.classList.add(\n \"wptb-bg-selection-item-inner-wrapper\"\n );\n colSelector.appendChild(colSelectorInnerWrapper);\n\n WPTB_IconManager.getIcon(\n \"arrow-alt-circle-down\",\n \"wptb-selector-icon-wrapper\"\n ).then((icon) => {\n colSelectorInnerWrapper.appendChild(icon);\n });\n\n // add column selector click event\n colSelector.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n selectColumn();\n });\n\n // add row selector to column rail\n rowRail.appendChild(rowSelector);\n // add column selector to column rail\n columnRail.appendChild(colSelector);\n // add column rail to toolbox\n toolbox.appendChild(columnRail);\n // add row rail to toolbox\n toolbox.appendChild(rowRail);\n\n // add toolbox element to its parent container\n document\n .querySelector(\".wptb-builder-content .wptb-table-setup\")\n .appendChild(toolbox);\n };\n\n /**\n * Assign row select handlers for current table.\n */\n const assignRowClickHandler = () => {\n const rowSelector = getRowSelector();\n\n rowSelector.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n selectRow();\n });\n\n const rows = Array.from(getCurrentTable().querySelectorAll(\"tr\"));\n\n // eslint-disable-next-line array-callback-return\n rows.map((row) => {\n row.addEventListener(\"mouseenter\", rowMouseEnter);\n });\n };\n\n /**\n * Set visibility of selector toolbox.\n *\n * @param {boolean} visible visibility state\n */\n const selectorToolboxVisibility = (visible = true) => {\n const toolbox = getSelectorToolbox();\n\n if (toolbox) {\n getSelectorToolbox().dataset.visible = visible;\n }\n\n // compatibility setup for upsell\n if (!WPTB_Store.get(\"proStatus\")) {\n const builderTable = document.querySelector(\n \".wptb-table-setup\"\n );\n\n if (builderTable) {\n builderTable.dataset.overflowVisible = visible;\n }\n }\n };\n\n /**\n * Remove row related event listeners and handlers\n */\n const removeRowHandlers = () => {\n // eslint-disable-next-line array-callback-return\n Array.from(getCurrentTable().querySelectorAll(\"tr\")).map((row) => {\n // remove event listener for each row element on table\n row.removeEventListener(\"mouseenter\", rowMouseEnter);\n });\n\n // @deprecated\n // const rowSelector = getRowSelector();\n // if (rowSelector) {\n // \t// hide row selector element if any found\n // \trowSelector.classList.remove('wptb-bg-selection-visible');\n // }\n\n // clear up last hovered row element value\n store.commit(\"updateHoveredRowElement\", null);\n };\n\n /**\n * Assign cell click handlers to data cells.\n */\n const assignCellClickHandlers = () => {\n const cells = Array.from(getCurrentTable().querySelectorAll(\"td\"));\n\n // eslint-disable-next-line array-callback-return\n cells.map((cell) => {\n cell.addEventListener(\"click\", highlightCell);\n cell.addEventListener(\"mouseenter\", cellMouseEnter);\n });\n };\n\n /**\n * Remove cell click handlers from data cells.\n */\n const removeCellHandlers = () => {\n const cells = Array.from(getCurrentTable().querySelectorAll(\"td\"));\n\n // eslint-disable-next-line array-callback-return\n cells.map((cell) => {\n cell.removeEventListener(\"click\", highlightCell);\n cell.removeEventListener(\"mouseenter\", cellMouseEnter);\n });\n\n // hide column selector element\n getColumnSelector().classList.remove(\"wptb-bg-selection-visible\");\n };\n\n /**\n * Clear specific states from store.\n */\n const clearStates = () => {\n store.dispatch(\"clearSelection\");\n store.dispatch(\"clearHoverStates\");\n };\n /**\n * Clear out hover,edit active etc indicators that might have been stated on table.\n */\n const clearTableIndicators = () => {\n const currentTable = getCurrentTable();\n\n // remove active edit indicators\n Array.from(currentTable.querySelectorAll(\".edit-active\")).map(\n (el) => {\n el.classList.remove(\"edit-active\");\n }\n );\n\n // hide element hover toolbox\n const elementActionsToolbox = document.querySelector(\n \".wptb-actions\"\n );\n if (elementActionsToolbox) {\n elementActionsToolbox.style.display = \"none\";\n }\n };\n\n /**\n * Startup positions for selectors.\n */\n const startUpPositionsForSelectors = () => {\n // start both column and row selectors at first row and first column\n store.commit(\"updateHoveredCellElement\", {\n element: null,\n index: 0,\n });\n store.commit(\n \"updateHoveredRowElement\",\n getCurrentTable().querySelector(\"tr\")\n );\n };\n\n /**\n * Remove various event listeners and clear out states.\n */\n const removeHandlersAndStates = () => {\n removeCellHandlers();\n removeRowHandlers();\n removeHighlights();\n clearStates();\n };\n\n /**\n * Initialize hook for component.\n */\n this.init = () => {\n // initialize background menu on correct section change\n document.addEventListener(\"wptbSectionChanged\", ({ detail }) => {\n // only run setup once\n if (!this.initialized && detail === \"background_menu\") {\n WPTB_ControlsManager.callControlScript(\n \"BackgroundMenu\",\n \"wptb-background-menu\"\n );\n this.initialized = true;\n }\n\n if (\n WPTB_Helper.getPreviousSection() !== \"background_menu\" &&\n detail === \"background_menu\"\n ) {\n if (!getSelectorToolbox()) {\n addSelectorToolbox();\n }\n\n selectorToolboxVisibility(true);\n\n if (WPTB_Store.get(\"proStatus\")) {\n assignCellClickHandlers();\n }\n\n assignCellClickHandlers();\n\n assignRowClickHandler();\n clearTableIndicators();\n calculateRailPositions();\n startUpPositionsForSelectors();\n }\n\n if (\n WPTB_Helper.getPreviousSection() === \"background_menu\" &&\n detail !== \"background_menu\"\n ) {\n selectorToolboxVisibility(false);\n removeHandlersAndStates();\n }\n });\n\n // reapply options after table changed events\n document.addEventListener(\n \"wp-table-builder/table-changed/after\",\n () => {\n this.applyOptions();\n }\n );\n };\n\n /**\n * Watch store mutations.\n *\n * @param {Object} suppliedStore store object\n */\n // eslint-disable-next-line no-shadow\n const watchStoreMutations = (suppliedStore) => {\n suppliedStore.subscribe(({ type, payload }) => {\n switch (type) {\n case \"updateHoveredRowElement\":\n if (payload) {\n // update row selector position on hovered row element changes\n rowSelectorPosition(payload);\n }\n break;\n case \"updateHoveredCellElement\":\n columnSelectorPosition(payload.index);\n break;\n default:\n break;\n }\n });\n };\n\n /**\n * Define a flux store for background menu.\n *\n * @param {Object} storeObject store object\n */\n this.addStore = (storeObject) => {\n if (!store) {\n store = storeObject;\n watchStoreMutations(store);\n }\n };\n }\n\n // create singleton instance for background menu component\n const singletonInstance = new BackgroundMenu();\n\n // initialize background menu component\n singletonInstance.init();\n\n return singletonInstance;\n});\n","/* eslint-disable */\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(\n \"Content-type\",\n \"application/x-www-form-urlencoded\"\n );\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 // @deprecated old generate logic\n // document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n let wptbTableSetupEl =\n document.getElementsByClassName(\"wptb-table-setup\")[0];\n wptbTableSetupEl.appendChild(WPTB_Parser(ans[1]));\n\n WPTB_FIX_MERGE(wptbTableSetupEl.querySelector(\"table\"));\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(\n \"wptb-element-main-table_setting-\" + table_id\n );\n }\n\n if (element.dataset.wptbTableContainerMaxWidth) {\n wptbTableSetupEl.style.maxWidth =\n 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(\n \"wptb-table-generator\"\n )[0].style.display = \"table\";\n }\n\n return;\n }\n };\n http.send(null);\n } else {\n // @deprecated old generate logic\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\n var WPTB_FIX_MERGE = function (table) {\n if (!table) return;\n let cellCount = table.rows[0].cells.length;\n let hasGap = false;\n for (let i = 0; i < table.rows.length; i++) {\n const row = table.rows[i];\n cellCount = Math.max(cellCount, row.cells.length);\n\n if (row.cells.length !== cellCount) {\n hasGap = true;\n }\n for (let j = 0; j < row.cells.length; j++) {\n const cell = row.cells[j];\n if (cell.colSpan > 1 || cell.rowSpan > 1) {\n return;\n }\n }\n }\n\n if (!hasGap) return;\n\n const cell = document.createElement(\"td\");\n cell.className = \"wptb-cell wptb-droppable\";\n\n Array.from(table.rows).forEach((row, i) => {\n let occupied = row.cells.length;\n while (occupied < cellCount) {\n const newCell = (row.cells[row.cells.length - 1] || cell).cloneNode(\n false\n );\n newCell.dataset.xIndex = occupied;\n newCell.dataset.yIndex = i;\n row.appendChild(newCell);\n occupied++;\n }\n });\n };\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 // Add Auto text field in each block\n let element = WPTB_Helper.newElementProxy( 'text' )\n element = element.getDOMElement();\n\n DOMElement.appendChild( element )\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 let wptbTableSetup = document.querySelector('.wptb-table-setup')\n if(wptbTableSetup && !wptbTableSetup.classList.contains('wptb-preview-table-manage-cells') &&\n (event.target.dataset.yIndex !== '0' || wptbTableSetup.dataset.wptbSortableTable !== '1') &&\n event.target == event.currentTarget) {\n WPTB_Helper.wptbDocumentEventGenerate( 'table:cell:dblclick', event.target )\n\n let element = WPTB_Helper.newElementProxy( 'text' )\n element = element.getDOMElement()\n\n DOMElement.appendChild( element )\n\n WPTB_innerElementSet( element );\n }\n }\n\n WPTB_innerElementSet( DOMElement );\n\n WPTB_Helper.elementStartScript( DOMElement, 'table_cell_setting' );\n\n let wptbPhElement = DOMElement.getElementsByClassName( 'wptb-ph-element' );\n\n if ( wptbPhElement.length > 0 ) {\n for( let i = 0; i < wptbPhElement.length; i++ ) {\n wptbPhElement[i].getDOMElement = function() {\n return wptbPhElement[i];\n }\n\n WPTB_innerElementSet( wptbPhElement[i] );\n\n let wptbElementTypeClass = wptbPhElement[i].className.match( /wptb-element-((.+-)\\d+)/i );\n if( wptbElementTypeClass && Array.isArray( wptbElementTypeClass ) ) {\n let wptbTypeElementArr = wptbElementTypeClass[1].split( '-' );\n wptbPhElement[i].kind = wptbTypeElementArr[0];\n applyGenericItemSettings( wptbPhElement[i], wptbElementTypeClass[1] );\n let wptbInternalActiveElement = wptbPhElement[i].getElementsByClassName( 'wptb-in-element' );\n if ( wptbInternalActiveElement.length > 0 ) {\n for ( let j = 0; j < wptbInternalActiveElement.length; j++ ) {\n let wptbInternalActiveElementObj = {};\n wptbInternalActiveElementObj.getDOMElement = function() {\n return wptbInternalActiveElement[j];\n }\n\n applyGenericItemSettings( wptbInternalActiveElementObj );\n }\n }\n }\n }\n }\n\n this.getDOMElement = function () {\n return DOMElement;\n };\n\n this.setCoords = function (y, x) {\n var el = this.getDOMElement();\n el.dataset.yIndex = y;\n el.dataset.xIndex = x;\n };\n\n this.getCoords = function () {\n var coords,\n el = this.getDOMElement();\n coords.x = el.dataset.xIndex;\n coords.y = el.dataset.yIndex;\n return coords;\n };\n\n this.appendElement = function (node) {\n getDOMElement().appendChild(node);\n };\n\n DOMElement.getCellDimensions = function() {\n\n let tdStyleObj = window.getComputedStyle( this, null );\n\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n\n let tdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n\n let tdPaddingTop = tdStyleObj.getPropertyValue( 'padding-top' );\n let tdPaddingBottom = tdStyleObj.getPropertyValue( 'padding-bottom' );\n\n let tdBorderTopWidth = tdStyleObj.getPropertyValue( 'border-top-width' );\n let tdBorderBottomWidth = tdStyleObj.getPropertyValue( 'border-bottom-width' );\n\n let width = parseInt( this.offsetWidth, 10 ) -\n parseInt( tdPaddingLeft, 10 ) -\n parseInt( tdPaddingRight, 10 );\n\n let height = parseInt( this.offsetHeight, 10 ) -\n parseInt( tdPaddingTop, 10 ) -\n parseInt( tdPaddingBottom, 10 );\n let table = WPTB_Helper.findAncestor( this, 'wptb-preview-table' );\n if(table) {\n if(table.style.borderCollapse === 'collapse') {\n width = width - ( parseInt( tdBorderLeftWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderRightWidth, 10 ) / 2 );\n height = height - ( parseInt( tdBorderTopWidth, 10 ) / 2 ) -\n ( parseInt( tdBorderBottomWidth, 10 ) / 2 );\n let tableFullStyleObj = window.getComputedStyle( table, null );\n let tableBorderLeft = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let tableBorderRight = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderTop = tableFullStyleObj.getPropertyValue( 'border-top-width' );\n let tableBorderBottom = tableFullStyleObj.getPropertyValue( 'border-bottom-width' );\n\n let tr = this.parentNode;\n if( tr && tr.nodeName.toLowerCase() === 'tr' ) {\n if( tr.firstChild && tr.firstChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderLeft, 10 ) > parseInt( tdBorderLeftWidth, 10 ) ) {\n width += -( parseInt( tableBorderLeft, 10 ) - parseInt( tdBorderLeftWidth, 10 ) ) / 2;\n }\n }\n\n if( tr.lastChild && tr.lastChild.dataset.xIndex === this.dataset.xIndex ) {\n if( parseInt( tableBorderRight, 10 ) > parseInt( tdBorderRightWidth, 10 ) ) {\n width += -( parseInt( tableBorderRight, 10 ) - parseInt( tdBorderRightWidth, 10 ) ) / 2;\n }\n }\n\n let body = tr.parentNode;\n if( body && body.nodeName.toLowerCase() === 'body' ) {\n if( body.firstChild && body.firstChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderTop, 10 ) > parseInt( tdBorderTopWidth, 10 ) ) {\n height += ( parseInt( tableBorderTop, 10 ) - parseInt( tdBorderTopWidth, 10 ) ) / 2;\n }\n }\n\n if( body.lastChild && body.lastChild.firstChild.dataset.yIndex === this.dataset.yIndex ) {\n if( parseInt( tableBorderBottom, 10 ) > parseInt( tdBorderBottomWidth, 10 ) ) {\n height += ( parseInt( tableBorderBottom, 10 ) - parseInt( tdBorderBottomWidth, 10 ) ) / 2;\n }\n }\n }\n }\n } else if(table.style.borderCollapse === 'separate') {\n width = width - parseInt( tdBorderLeftWidth, 10 ) -\n parseInt( tdBorderRightWidth, 10 );\n height = height - parseInt( tdBorderTopWidth, 10 ) -\n parseInt( tdBorderBottomWidth, 10 );\n }\n }\n\n return {\n width: parseInt( width ),\n height: parseInt( height )\n };\n }\n\n return this;\n};\n","let WPTB_CutGlueTable = {\n cutTableHorizontally: function (rowBefore, table) {\n if( table && table.rows[rowBefore] ) {\n for( let i = 0; i < rowBefore; i++ ) {\n let tableRowsIChildren = table.rows[i].children;\n\n for( let j = 0; j < tableRowsIChildren.length; j++ ) {\n if ( tableRowsIChildren[j].rowSpan > 1 && tableRowsIChildren[j].rowSpan > rowBefore - i ) {\n let newTdRowspan = tableRowsIChildren[j].rowSpan - rowBefore + i;\n tableRowsIChildren[j].rowSpan = rowBefore - i;\n if( ! tableRowsIChildren[j].dataset.sameCellBeforeDivision ) {\n tableRowsIChildren[j].dataset.sameCellBeforeDivision = 'r' + i + 'c' + j;\n }\n\n let td;\n if(table.hasOwnProperty('wptbCell')) {\n td = new table.wptbCell( table.mark );\n td = td.getDOMElement();\n } else {\n td = document.createElement('td');\n }\n\n let tdTopStyle = tableRowsIChildren[j].getAttribute( 'style' );\n td.setAttribute( 'style', tdTopStyle );\n td.colSpan = tableRowsIChildren[j].colSpan;\n td.rowSpan = newTdRowspan;\n td.dataset.sameCellBeforeDivision = tableRowsIChildren[j].dataset.sameCellBeforeDivision;\n\n let dataXIndex = tableRowsIChildren[j].dataset.xIndex;\n let dataXIndexNext = parseInt( dataXIndex ) + parseInt( tableRowsIChildren[j].colSpan );\n let beforeTd;\n while( ! beforeTd && dataXIndexNext < table.maxCols ) {\n beforeTd = table.rows[rowBefore].querySelector( '[data-x-index=\"' + dataXIndexNext + '\"]' );\n dataXIndexNext++;\n }\n table.rows[rowBefore].insertBefore( td, beforeTd );\n\n WPTB_RecalculateIndexes(table);\n }\n }\n }\n }\n },\n glueTableHorizontally: function (table) {\n if(table) {\n let tds = [...table.getElementsByTagName( 'td' )];\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].hasAttribute( 'data-same-cell-before-division' ) ) {\n let dataSameCellBeforeDivision = tds[i].dataset.sameCellBeforeDivision;\n let tdsSameBeforeDivision = table.querySelectorAll( '[data-same-cell-before-division=\"' + dataSameCellBeforeDivision + '\"]' );\n for( let j = 0; j < tdsSameBeforeDivision.length; j++ ) {\n if( tdsSameBeforeDivision[j] && tdsSameBeforeDivision[j + 1] ) {\n if( tdsSameBeforeDivision[j].parentNode && tdsSameBeforeDivision[j + 1].parentNode &&\n ! tdsSameBeforeDivision[j].parentNode.classList.contains( 'wptb-row-moving' ) &&\n ! tdsSameBeforeDivision[j + 1].parentNode.classList.contains( 'wptb-row-moving' ) ) {\n if( ( tdsSameBeforeDivision[j + 1].dataset.yIndex == parseInt( tdsSameBeforeDivision[j].dataset.yIndex ) +\n parseInt( tdsSameBeforeDivision[j].rowSpan ) ) ) {\n tdsSameBeforeDivision[j].rowSpan += tdsSameBeforeDivision[j + 1].rowSpan;\n\n let tdsSameBeforeDivisionJPlusChildren = [...tdsSameBeforeDivision[j + 1].children];\n\n for( let k = 0; k < tdsSameBeforeDivisionJPlusChildren.length; k++ ) {\n tdsSameBeforeDivision[j].appendChild( tdsSameBeforeDivisionJPlusChildren[k] );\n }\n\n let nextRow = tdsSameBeforeDivision[j + 1].parentNode;\n nextRow.removeChild( tdsSameBeforeDivision[j + 1] );\n }\n }\n }\n }\n }\n }\n\n WPTB_RecalculateIndexes(table);\n }\n },\n cutTableVertically: function (col, table) {\n for ( let i = 0; i < table.rows.length; i++ ) {\n if( col < table.maxCols ) {\n if( col != 0 && ( ! table.rows[i].querySelector( '[data-x-index=\"' + col + '\"]' ) ) ) {\n let rowChildren = table.rows[i].children;\n\n let td,\n rowChildrenLength = rowChildren.length,\n afterTd,\n rowSpanNewTd,\n colSpanOld,\n colSpanNewTd;\n for( let j = 0; j < rowChildrenLength; j++ ) {\n if( rowChildren[j].colSpan > 1 && parseInt( rowChildren[j].dataset.xIndex ) < col &&\n parseInt( rowChildren[j].dataset.xIndex ) + parseInt( rowChildren[j].colSpan ) > col ) {\n if(table.hasOwnProperty('wptbCell')) {\n td = new table.wptbCell( table.mark );\n td = td.getDOMElement();\n } else {\n td = document.createElement('td');\n }\n\n rowSpanNewTd = rowChildren[j].rowSpan;\n colSpanOld = rowChildren[j].colSpan;\n rowChildren[j].colSpan = col - rowChildren[j].dataset.xIndex;\n colSpanNewTd = colSpanOld - rowChildren[j].colSpan;\n\n if( ! rowChildren[j].dataset.sameCellBeforeDivision ) {\n rowChildren[j].dataset.sameCellBeforeDivision = 'r' + i + 'c' + j;\n }\n\n let tdLeftStyle = rowChildren[j].getAttribute( 'style' );\n td.setAttribute( 'style', tdLeftStyle );\n\n let tdAnalogThisX = table.querySelector( '[data-x-index=\"' + col + '\"]' );\n if( tdAnalogThisX ) {\n td.style.width = tdAnalogThisX.style.width;\n }\n\n let tdAnalogThisY = table.querySelector( '[data-y-index=\"' + i + '\"]' );\n if( tdAnalogThisY ) {\n td.style.height = tdAnalogThisY.style.height;\n }\n if( rowChildren[j + 1] ) {\n afterTd = rowChildren[j + 1];\n } else {\n afterTd = null;\n }\n\n table.rows[i].insertBefore( td, afterTd );\n td.colSpan = colSpanNewTd;\n td.rowSpan = rowSpanNewTd;\n td.dataset.sameCellBeforeDivision = rowChildren[j].dataset.sameCellBeforeDivision;\n i += rowSpanNewTd - 1;\n break\n }\n }\n }\n }\n WPTB_RecalculateIndexes(table);\n }\n },\n glueTableVertically: function (table) {\n if( table ) {\n let tds = [...table.getElementsByTagName( 'td' )];\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].hasAttribute( 'data-same-cell-before-division' ) ) {\n let dataSameCellBeforeDivision = tds[i].dataset.sameCellBeforeDivision;\n let tdsSameBeforeDivision = [...table.querySelectorAll( '[data-same-cell-before-division=\"' + dataSameCellBeforeDivision + '\"]' )];\n\n let jFirstTdGlue = null;\n for( let j = 0; j < tdsSameBeforeDivision.length; j++ ) {\n if( tdsSameBeforeDivision[j] && tdsSameBeforeDivision[j + 1] &&\n ! tdsSameBeforeDivision[j].classList.contains( 'wptb-column-moving' ) &&\n ! tdsSameBeforeDivision[j + 1].classList.contains( 'wptb-column-moving' ) ) {\n if( ( tdsSameBeforeDivision[j + 1].dataset.xIndex == parseInt( tdsSameBeforeDivision[j].dataset.xIndex ) +\n parseInt( tdsSameBeforeDivision[j].colSpan ) ) ) {\n if( jFirstTdGlue == null ) {\n jFirstTdGlue = j;\n }\n tdsSameBeforeDivision[jFirstTdGlue].colSpan += tdsSameBeforeDivision[j + 1].colSpan;\n\n let tdsSameBeforeDivisionJPlusChildren = [...tdsSameBeforeDivision[j + 1].children];\n\n for( let k = 0; k < tdsSameBeforeDivisionJPlusChildren.length; k++ ) {\n tdsSameBeforeDivision[jFirstTdGlue].appendChild( tdsSameBeforeDivisionJPlusChildren[k] );\n }\n\n let thisRow = tdsSameBeforeDivision[j + 1].parentNode;\n thisRow.removeChild( tdsSameBeforeDivision[j + 1] );\n }\n }\n }\n }\n }\n\n WPTB_RecalculateIndexes(table);\n }\n }\n}\n","var WPTB_DropHandle = function (thisElem, e, hide = false) {\n\n let wptbDropHandle,\n wptbDropBorderMarker,\n wptbDropBorderMarkerTop,\n wptbDropBorderMarkerRight,\n wptbDropBorderMarkerBottom,\n wptbDropBorderMarkerLeft;\n\n /**\n * Add px suffix to a value\n *\n * @param {any} val value\n * @returns {string} string value suffixed with px\n */\n function toPx(val){\n return `${val}px`;\n }\n\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\n let cellRelatedDropHandle = document.querySelector('.wptb-cell-related-drop-handle');\n if(hide && cellRelatedDropHandle ){\n cellRelatedDropHandle.style.display = 'none';\n return;\n }\n if(cellRelatedDropHandle === null){\n const range = document.createRange();\n range.setStart(document.body , 0);\n\n const shadowRoot = range.createContextualFragment('<div class=\"wptb-cell-related-drop-handle\">Add to cell</div>').children[0];\n\n document.body.appendChild(shadowRoot);\n cellRelatedDropHandle = shadowRoot.children[0];\n }\n\n const parentTd = WPTB_Helper.getParentOfType('td', thisElem);\n const {top,left,width,height} = parentTd.getBoundingClientRect();\n\n if(!cellRelatedDropHandle){\n return;\n }\n\n cellRelatedDropHandle.style.display = 'flex';\n cellRelatedDropHandle.style.top = toPx(top);\n cellRelatedDropHandle.style.width = toPx(width);\n cellRelatedDropHandle.style.height = toPx(height);\n cellRelatedDropHandle.style.left = toPx(left);\n\n return;\n }\n\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length == 0 ) {\n wptbDropHandle = document.createElement( 'div' );\n wptbDropHandle.classList.add( 'wptb-drop-handle' );\n \n wptbDropBorderMarker = document.createElement( 'div' );\n wptbDropBorderMarker.classList.add( 'wptb-drop-border-marker' );\n \n wptbDropBorderMarkerTop = document.createElement( 'div' ),\n wptbDropBorderMarkerRight = document.createElement( 'div' ),\n wptbDropBorderMarkerBottom = document.createElement( 'div' ),\n wptbDropBorderMarkerLeft = document.createElement( 'div' );\n \n wptbDropBorderMarkerTop.classList.add( 'wptb-drop-border-marker-top' );\n wptbDropBorderMarkerRight.classList.add( 'wptb-drop-border-marker-right' );\n wptbDropBorderMarkerBottom.classList.add( 'wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerLeft.classList.add( 'wptb-drop-border-marker-left' );\n \n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerTop );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerRight );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerBottom );\n wptbDropBorderMarker.appendChild( wptbDropBorderMarkerLeft );\n \n let body = document.getElementsByTagName( 'body' );\n if ( body.length > 0 ) {\n body[0].appendChild( wptbDropHandle );\n body[0].appendChild( wptbDropBorderMarker );\n }\n \n wptbDropHandle.ondragenter = function () {\n if (e.target.classList.contains('wptb-empty')) {\n e.preventDefault();\n return false;\n }\n }\n\n wptbDropHandle.ondragover = function (e) {\n e.preventDefault(); \n }\n\n wptbDropHandle.ondragleave = function () {\n\n }\n wptbDropHandle.ondrop = function (e) {\n e.preventDefault();\n let element;\n \n if ( e.dataTransfer.getData('wptbElement') ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData('wptbElement') );\n element = element.getDOMElement();\n } else {\n element = document.getElementsByClassName( e.dataTransfer.getData('node') )[0];\n element.classList.remove( 'wptb-moving-mode' );\n element.classList.remove( 'wptb-moving-into-same-elem' );\n element.wptbMovingMode = 1;\n }\n \n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n thisElem = wptbDropHandle.getDOMParentElement();\n if ( thisElem.nodeName.toLowerCase() == 'td' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n }\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n \n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n\n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n \n WPTB_innerElementSet( element );\n if( ! element.classList.contains( 'wptb-image-container' ) || element.wptbMovingMode == 1 ) {\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n element.wptbMovingMode == undefined;\n }\n }\n let wptbContainer = document.querySelector( '.wptb-container' );\n wptbContainer.onscroll = function() {\n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n }\n } else {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \n thisElem.getElementsByClassName( 'wptb-ph-element' ).length != 0) {\n return;\n }\n\n if( thisElem && thisElem.nodeName.toLowerCase() == 'td' && \n thisElem.classList.contains('wptb-empty')) {\n return;\n }\n \n let thisRow;\n if ( thisElem.localName == 'td' ) {\n thisRow = thisElem.parentNode;\n } else if ( thisElem.localName == 'div' && thisElem.classList.contains( 'wptb-ph-element' ) ) {\n thisRow = thisElem.parentNode.parentNode;\n }\n \n if( WPTB_Helper.rowIsTop( thisRow ) ) {\n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n let indics = e.dataTransfer.types;\n let notDragEnter = false;\n for ( let i = 0; i < indics.length; i++ ) {\n let infArr = indics[i].match( /wptbelindic-([a-z]+)/i );\n if ( infArr && infArr[1] != 'text' ) {\n notDragEnter = true;\n break;\n }\n }\n if( notDragEnter ) {\n return;\n }\n }\n }\n \n wptbDropHandle.style.width = thisElem.offsetWidth + 'px';\n let height = thisElem.offsetHeight,\n coordinatesElement = thisElem.getBoundingClientRect(),\n left = parseFloat( coordinatesElement.left ),\n top;\n wptbDropHandle.style.left = left + 'px';\n \n if( e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) != -1 ) {\n let elementDrag = document.getElementsByClassName( 'wptb-moving-mode' )[0];\n if( thisElem == elementDrag ) {\n wptbDropHandle.classList.add('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.add('wptb-moving-into-same-elem');\n } else {\n wptbDropHandle.classList.remove('wptb-moving-into-same-elem');\n wptbDropBorderMarker.classList.remove('wptb-moving-into-same-elem');\n }\n }\n \n wptbDropHandle.getDOMParentElement = function() {\n return thisElem;\n }\n \n wptbDropHandle.style.display = 'block';\n wptbDropBorderMarker.style.display = 'block';\n if( thisElem.nodeName.toLowerCase() != 'td' ) {\n let y = e.offsetY==undefined?e.layerY:e.offsetY;\n top = parseFloat( coordinatesElement.top ) - parseFloat( 11 );\n wptbDropHandle.dataset.text = 'Above Element';\n if ( y > height/2 ) {\n top = parseFloat( coordinatesElement.top ) + height - 1;\n wptbDropHandle.dataset.text = 'Below Element';\n }\n } else {\n wptbDropHandle.dataset.text = 'Drop Here';\n top = parseFloat( coordinatesElement.top ) + height/2 - 5;\n }\n wptbDropHandle.style.top = top + 'px';\n\n wptbDropBorderMarker.style.top = coordinatesElement.top + 'px';\n wptbDropBorderMarker.style.left = coordinatesElement.left + 'px';\n\n wptbDropBorderMarkerTop = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-top' );\n wptbDropBorderMarkerTop.style.width = ( parseFloat( thisElem.offsetWidth ) - parseFloat( 1 ) ) + 'px';\n\n wptbDropBorderMarkerRight = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-right' );\n wptbDropBorderMarkerRight.style.height = ( parseFloat( coordinatesElement.bottom ) - parseFloat( coordinatesElement.top ) - 1 ) + 'px';\n wptbDropBorderMarkerRight.style.left = wptbDropBorderMarkerTop.style.width;\n\n wptbDropBorderMarkerBottom = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-bottom' );\n wptbDropBorderMarkerBottom.style.width = wptbDropBorderMarkerTop.style.width;\n wptbDropBorderMarkerBottom.style.top = wptbDropBorderMarkerRight.style.height;\n\n wptbDropBorderMarkerLeft = wptbDropBorderMarker.querySelector( '.wptb-drop-border-marker-left' );\n wptbDropBorderMarkerLeft.style.height = wptbDropBorderMarkerRight.style.height;\n}","var ElementCounters = function () {\n\n\tvar priv = [];\n\tpriv['text'] = 0;\n\tpriv['image'] = 0;\n\tpriv['list'] = 0;\n\tpriv['button'] = 0;\n\n\tthis.increment = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn;\n\t\t}\n\t\tpriv[key]++;\n\t}\n\n\tthis.nextIndex = function (key) {\n\t\tif (!(key in priv)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn priv[key] + 1;\n\t}\n\n\treturn this;\n\n};","var WPTB_ElementObject = function ( data ) {\n let DOMElement, kindIndexProt, copy;\n if( ! data.elemProt ) {\n DOMElement = document.createElement('div'),\n kindIndexProt = undefined,\n copy = false;\n DOMElement.classList.add( 'wptb-' + data.kind + '-container', 'wptb-ph-element' );\n \n let wpTemplateId = 'wptb-' + data.kind + '-content';\n let template = wp.template( wpTemplateId );\n data.node = DOMElement;\n\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 * UMD module for element id provider component.\n *\n * @param {string} key context key\n * @param {Object} context container context\n * @param {Function} factory factory function\n */\n(function umd(key, context, factory) {\n\t// eslint-disable-next-line no-param-reassign\n\tcontext[key] = factory();\n\t// eslint-disable-next-line no-restricted-globals\n})('WPTB_ElementIdProvider', self || global, () => {\n\t/**\n\t * Element id provider.\n\t *\n\t * @class\n\t */\n\tfunction ElementIdProvider() {\n\t\t// stored element ids per table element type\n\t\tconst elementIds = {};\n\n\t\t/**\n\t\t * First time id startup for given element type.\n\t\t * This function will check all same element types and use highest id as starting point.\n\t\t *\n\t\t * @param {string} elementType element type\n\t\t */\n\t\tconst initializeElementIdForType = (elementType) => {\n\t\t\tconst elements = Array.from(document.querySelectorAll('.wptb-ph-element'));\n\n\t\t\tconst regex = new RegExp(`wptb-element-${elementType}-(\\\\d+)`, 'i');\n\n\t\t\treturn elements.reduce((carry, current) => {\n\t\t\t\tconst matchArray = regex.exec(current.className);\n\n\t\t\t\treturn matchArray !== null && matchArray[1] !== undefined\n\t\t\t\t\t? Math.max(carry, Number.parseInt(matchArray[1], 10))\n\t\t\t\t\t: carry;\n\t\t\t}, 0);\n\t\t};\n\n\t\t/**\n\t\t * Get a new id for given element type.\n\t\t *\n\t\t * @param {string} elementType element type\n\t\t * @return {number} new if for element\n\t\t */\n\t\tthis.getNewId = (elementType) => {\n\t\t\tif (elementIds[elementType] === undefined) {\n\t\t\t\telementIds[elementType] = initializeElementIdForType(elementType);\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line no-plusplus\n\t\t\treturn ++elementIds[elementType];\n\t\t};\n\t}\n\n\t// singleton component for element id provider\n\treturn new ElementIdProvider();\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};","/**\n * Disable emoji->image conversion.\n *\n * @param {boolean} status whether conversion is disabled or not\n */\nfunction EmojiConversionDisabler(status) {\n\tconst targetTable = WPTB_Helper.getPluginTables();\n\tif (status && targetTable && !Array.isArray(targetTable)) {\n\t\tconst options = { childList: true, subtree: true };\n\n\t\t/**\n\t\t * Observer callback.\n\t\t *\n\t\t * @param {Array<MutationRecord>} mutationList mutation list\n\t\t */\n\t\tconst observeCallback = (mutationList) => {\n\t\t\t// eslint-disable-next-line array-callback-return\n\t\t\tmutationList.map(({ addedNodes }) => {\n\t\t\t\tArray.from(addedNodes).map((addedElement) => {\n\t\t\t\t\tif (addedElement.nodeName.toLowerCase() === 'p') {\n\t\t\t\t\t\taddedElement.classList.add('wp-exclude-emoji');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tconst observer = new MutationObserver(observeCallback);\n\n\t\tobserver.observe(targetTable, options);\n\t}\n}\n\n// eslint-disable-next-line @wordpress/no-global-event-listener\ndocument.addEventListener('wptb:table:generated', () => {\n\tEmojiConversionDisabler(WPTB_Store.getters.getSetting('emojiConversionDisablerStatus'));\n});\n","/**\n * Extra styles module to add custom css rules defined for individual tables.\n */\n(function UMD(key, context, factory) {\n if (typeof module !== \"undefined\" && typeof exports === \"object\") {\n module.exports = factory();\n } else {\n // eslint-disable-next-line no-param-reassign\n context[key] = factory();\n }\n // eslint-disable-next-line no-restricted-globals\n})(\"WPTB_ExtraStyles\", self || global, () => {\n /**\n * Extra styles frontend manager.\n *\n * This component will be responsible for adding and maintaining extra styles defined for tables.\n *\n * @class\n */\n // eslint-disable-next-line camelcase\n function WPTB_ExtraStyles() {\n /**\n * Extra styles operation modes\n *\n * @type {Object}\n */\n this.modes = {\n builder: \"builder\",\n frontEnd: \"frontEnd\",\n block: \"block\",\n };\n\n /**\n * Base document for DOM operations.\n *\n * @type {Document}\n */\n this.baseDocument = document;\n\n /**\n * Current mode extra styles are operating on.\n *\n * @type {string}\n */\n this.currentMode = this.modes.builder;\n\n /**\n * General table styles.\n *\n * @type {string}\n */\n this.generalStyles = \"\";\n\n /**\n * HTML queries for table element in different plugin modes\n *\n * @type {Object}\n */\n const tableQueries = {\n [this.modes.builder]: \".wptb-table-setup .wptb-preview-table\",\n [this.modes.block]: \".wptb-block-table-setup .wptb-preview-table\",\n [this.modes.frontEnd]: \".wptb-table-container .wptb-preview-table\",\n };\n\n /**\n * Format styles.\n *\n * @param {string} styles styles\n * @return {string} formatted styles\n */\n const formatStyles = (styles) => {\n // remove all newlines, comments and '!important' from style string to make it a one liner\n const cleaned = styles.replaceAll(\n /(\\r?\\n)|(\\/\\*.+?\\*\\/)|(\\s*!important)/g,\n \"\"\n );\n\n // add '!important' to all rules to override default style rules\n return cleaned.replaceAll(\";\", \" !important;\");\n };\n\n /**\n * Reform style rules so they will only affect given table id.\n *\n * @param {number} prefix prefix string that will be added to all rules\n * @param {string} extraStyles extra styles\n * @return {string} new style properties prefixed with table id class\n */\n const prefixStyleRules = (prefix, extraStyles) => {\n // reformat styles into a suitable form for our regexp operations\n const formattedStyles = formatStyles(extraStyles);\n\n const splitStyles = formattedStyles.split(\"}\");\n const prefixedStylesArray = [];\n\n // eslint-disable-next-line array-callback-return\n splitStyles.map((split) => {\n const regExp = new RegExp(/(.+?)\\{/g);\n const matches = regExp.exec(split);\n\n if (matches) {\n if (prefix === matches[1].trim()) {\n prefixedStylesArray.push(split);\n } else {\n prefixedStylesArray.push(\n split.replace(matches[1], `${prefix} ${matches[1]}`)\n );\n }\n }\n });\n\n return `${prefixedStylesArray.join(\"}\")}}`;\n };\n\n /**\n * Apply general styles to document.\n *\n * @param {string} generalStyles general style rules\n * @param {Node} baseElement element to use as base\n */\n const applyGeneralStyles = (generalStyles, baseElement = null) => {\n const generalStylesheet = document.createElement(\"style\");\n generalStylesheet.type = \"text/css\";\n generalStylesheet.id = \"wptb-general-styles\";\n\n if (!baseElement) {\n const head =\n this.currentMode === this.modes.block\n ? this.baseDocument\n : this.baseDocument.querySelector(\"head\");\n\n head.appendChild(generalStylesheet);\n } else {\n baseElement.insertAdjacentElement(\n \"beforebegin\",\n generalStylesheet\n );\n }\n const prefixedStyleRules = prefixStyleRules(\n generalStyles.parentPrefix,\n generalStyles.styles\n );\n generalStylesheet.appendChild(\n document.createTextNode(prefixedStyleRules)\n );\n };\n\n /**\n * Apply defined extra styles for given table element.\n *\n * @param {Element} tableElement table element\n */\n const applyExtraStyle = (tableElement) => {\n const extraStylesRaw = tableElement.dataset.wptbExtraStyles;\n const styleIdPrefix = \"wptb-extra-styles-\";\n\n if (extraStylesRaw) {\n const extraStyles = atob(extraStylesRaw);\n\n const [, tableId] = tableElement\n .getAttribute(\"class\")\n .match(\n /wptb-element-main-table_setting-(?:startedid-)?(\\d+)/\n );\n\n const styleId = styleIdPrefix + tableId;\n\n const head = this.baseDocument.querySelector(\"head\");\n\n // since stylesheets are created for frontend only once at startup, checking document head for any created style object will work even with theme disabled tables which at builder, they are not inside a shadow-root\n let styleElement = head?.querySelector(`#${styleId}`);\n\n // if no style element is found, create one\n if (!styleElement) {\n styleElement = document.createElement(\"style\");\n styleElement.type = \"text/css\";\n styleElement.id = styleId;\n\n const isThemeStylesDisabled =\n tableElement.dataset.disableThemeStyles;\n\n // if theme styles are disabled, it means our table is residing inside a shadow-root, place style element inside shadow-root instead of document head\n if (\n (isThemeStylesDisabled &&\n this.currentMode === this.modes.frontEnd) ||\n this.currentMode === this.modes.block\n ) {\n tableElement.insertAdjacentElement(\n \"beforebegin\",\n styleElement\n );\n if (\n this.currentMode === this.modes.frontEnd &&\n this.generalStyles\n ) {\n applyGeneralStyles(\n this.generalStyles,\n tableElement\n );\n }\n } else {\n head.appendChild(styleElement);\n }\n }\n const uniqueClass = `.wptb-element-main-table_setting-${tableId}`;\n // reform style rules so they will only affect the table they are assigned to\n const prefixedStyles = prefixStyleRules(\n uniqueClass,\n extraStyles\n );\n\n // remove previous styles with updated ones\n styleElement.innerHTML = \"\";\n styleElement.appendChild(\n document.createTextNode(prefixedStyles)\n );\n }\n };\n\n /**\n * Apply extra styles to all available tables on DOM.\n *\n * @param {string} mode operation mode to apply styles\n * @param {string} generalStyles general style rules\n * @param {Object} baseDocument base document for DOM operations\n */\n this.applyStyles = (\n mode = this.modes.frontEnd,\n generalStyles = null,\n baseDocument = document\n ) => {\n this.baseDocument = baseDocument;\n this.currentMode = mode;\n this.generalStyles = generalStyles;\n\n const allTables = Array.from(\n this.baseDocument.querySelectorAll(tableQueries[mode])\n );\n\n if (allTables) {\n allTables.map(applyExtraStyle);\n }\n\n // only apply general styles on client frontend if any general styles are defined\n if (\n (mode === this.modes.frontEnd || mode === this.modes.block) &&\n generalStyles\n ) {\n applyGeneralStyles(generalStyles);\n }\n };\n }\n\n // send a singleton instance of manager\n return new WPTB_ExtraStyles();\n});\n","/**\n *\n * @param {HTMLElement} table\n * @param {string} typeFirst\n * @param {strinig} typeSecond\n * @param {func} workFunction\n * @param {object} responsiveFront\n */\nvar WPTB_GetDirectionAfterReconstruction = function (table, typeFirst, typeSecond, verticalProp, responsiveFront) {\n\n let itemsPerHeader = 0;\n let tableMaxCols = table.maxCols;\n const switchMode = {};\n let type = [];\n if (responsiveFront && responsiveFront.getDirective(table)) {\n switchMode.switch = function (e) {\n const directives = responsiveFront.getDirective(table)\n\n let sizeRangeId = 'desktop';\n if (e && e.detail) {\n sizeRangeId = e.detail.sizeRangeId;\n }\n type = [typeFirst, 1];\n if (sizeRangeId !== 'desktop') {\n if (directives.hasOwnProperty('modeOptions')) {\n const mode = directives.responsiveMode;\n const modeOptions = directives.modeOptions[mode];\n\n if (\n modeOptions.hasOwnProperty('topRowAsHeader') &&\n modeOptions.topRowAsHeader.hasOwnProperty(sizeRangeId) &&\n modeOptions.topRowAsHeader[sizeRangeId]\n ) {\n if (\n modeOptions.hasOwnProperty('cellStackDirection') &&\n modeOptions.cellStackDirection.hasOwnProperty(sizeRangeId)\n ) {\n if (modeOptions.cellStackDirection[sizeRangeId] === 'row') {\n type = [typeSecond, 2];\n itemsPerHeader = tableMaxCols - 1;\n } else if (modeOptions.cellStackDirection[sizeRangeId] === 'column') {\n if (modeOptions.hasOwnProperty('cellsPerRow')) {\n itemsPerHeader = modeOptions.cellsPerRow[sizeRangeId];\n }\n }\n }\n } else {\n itemsPerHeader = 0;\n }\n }\n } else {\n itemsPerHeader = 0;\n }\n return { type, itemsPerHeader }\n };\n } else {\n switchMode.switch = function (e) {\n type = [typeFirst, 1];\n if (table.classList.contains('wptb-mobile-view-active')) {\n if (table.classList.contains('wptb-table-preview-head')) {\n type = [typeSecond, 2];\n if (type === verticalProp) {\n itemsPerHeader = tableMaxCols - 1;\n }\n }\n let newTable = table.parentNode.parentNode.querySelector('.wptb-preview-table-mobile');\n return { type, itemsPerHeader, newTable };\n }\n\n return { type, itemsPerHeader }\n };\n }\n\n return switchMode;\n}\n","/**\n * WPTB_HeaderToolbox\n *\n * @param {string} wrapperQuery wrapper query for toolbox items\n * @return {Object} header toolbox object\n * @class\n */\n// eslint-disable-next-line camelcase,no-unused-vars\nconst WPTB_HeaderToolbox = function (wrapperQuery) {\n\tthis.wrapperQuery = wrapperQuery;\n\tthis.element = document.querySelector(wrapperQuery);\n\tthis.topMargin = 2;\n\n\t/**\n\t * Assign events to toolbox buttons.\n\t */\n\tconst assignButtons = () => {\n\t\t// use data-button-type dataset property to call related section\n\t\tconst headerButtons = Array.from(this.element.querySelectorAll('[data-button-type]'));\n\n\t\t// eslint-disable-next-line array-callback-return\n\t\theaderButtons.map((button) => {\n\t\t\tbutton.addEventListener('click', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\tWPTB_Helper.activateSection(e.target.dataset.buttonType);\n\t\t\t});\n\t\t});\n\t};\n\n\t/**\n\t * Toggle visibility of toolbox with the given argument.\n\t *\n\t * @param {boolean} show show toolbox\n\t */\n\tconst toggleToolboxVisibility = (show = false) => {\n\t\tlet { height } = this.element.getBoundingClientRect();\n\n\t\tif (show) {\n\t\t\theight = 0;\n\t\t}\n\n\t\tthis.element.style.top = `calc( 100% - ${height + this.topMargin}px)`;\n\t};\n\n\t/**\n\t * Initialize header toolbox.\n\t */\n\tconst init = () => {\n\t\tassignButtons();\n\t\t// bind toolbox to table generated event\n\t\tdocument.addEventListener('wptb:table:generated', () => {\n\t\t\tthis.element.style.display = 'flex';\n\t\t\tconst { width } = this.element.getBoundingClientRect();\n\t\t\tthis.element.style.left = `calc( 50% - ${width / 2}px)`;\n\n\t\t\tconst hideList = ['table_responsive_menu', 'manage_cells', 'cell_settings'];\n\n\t\t\t// hide toolbox at manage cells and responsive menus\n\t\t\tdocument.addEventListener('wptbSectionChanged', ({ detail }) => {\n\t\t\t\ttoggleToolboxVisibility(!hideList.includes(detail));\n\t\t\t});\n\n\t\t\t// toggle visibility on startup\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\tconst { currentSection } = WPTB_Helper;\n\t\t\ttoggleToolboxVisibility(!hideList.includes(currentSection));\n\t\t});\n\t};\n\n\treturn { init };\n};\n","/* eslint-disable */\nvar WPTB_Helper = {\n hexToRgb(hex) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? `rgb(${parseInt(result[1], 16)},${parseInt(result[2], 16)},${parseInt(\n result[3],\n 16\n )})`\n : null;\n },\n rgbToHex(rgb) {\n if (rgb) {\n if (WPTB_Helper.isHex(rgb)) return rgb;\n\n let rgbm = rgb.match(\n /^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?((?:[0-9]*[.])?[0-9]+)[\\s+]?\\)/i\n );\n if (rgbm && rgbm.length === 5) {\n return `#${`0${parseInt(rgbm[1], 10).toString(16).toUpperCase()}`.slice(\n -2\n )}${`0${parseInt(rgbm[2], 10).toString(16).toUpperCase()}`.slice(\n -2\n )}${`0${parseInt(rgbm[3], 10).toString(16).toUpperCase()}`.slice(\n -2\n )}${`0${Math.round(parseFloat(rgbm[4], 10) * 255)\n .toString(16)\n .toUpperCase()}`.slice(-2)}`;\n }\n rgbm = rgb.match(\n /^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i\n );\n if (rgbm && rgbm.length === 4) {\n return `#${`0${parseInt(rgbm[1], 10).toString(16).toUpperCase()}`.slice(\n -2\n )}${`0${parseInt(rgbm[2], 10).toString(16).toUpperCase()}`.slice(\n -2\n )}${`0${parseInt(rgbm[3], 10).toString(16).toUpperCase()}`.slice(-2)}`;\n }\n return \"\";\n }\n return \"\";\n },\n isHex(hex) {\n const regex = new RegExp(\"^#(?:[A-Fa-f0-9]{3}){1,2}(?:[0-9]?){1,2}$\");\n return regex.test(hex);\n },\n getElementIcon(icon_directory) {\n const hostName = `${location.protocol}//${location.hostname}`;\n const img = document.createElement(\"img\");\n img.src = icon_directory;\n return img;\n },\n elementDragEndClear() {\n const 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 const 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 const wptbDropBorderMarkers = document.getElementsByClassName(\n \"wptb-drop-border-marker\"\n );\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(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 if (link.match(/^\\/([\\S]+)$/)) {\n if (convertToAbs) {\n const currentLocation = document.location;\n let { origin } = currentLocation;\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 }\n return link;\n }\n if (link.indexOf(\"http://\") == -1 && link.indexOf(\"https://\") == -1) {\n const linkArr = link.split(\"/\");\n let linkClean;\n if (Array.isArray(linkArr) && linkArr.length > 0) {\n linkClean = linkArr[linkArr.length - 1];\n }\n return `${document.location.protocol}//${linkClean}`;\n }\n return link;\n }\n return \"\";\n },\n dataTitleColumnSet(table) {\n // TODO dataTitleColumnSet\n // let rows = table.rows,\n // rowHead = rows[0];\n // let computedStyleRowHead = getComputedStyle( rowHead );\n //\n // let rowHeadChildren = rowHead.children;\n // let contentsForHeader = {};\n // for( let i = 0; i < rowHeadChildren.length; i++ ) {\n // let tdElements = rowHeadChildren[i].children;\n //\n // for( let j = 0; j < tdElements.length; j++ ) {\n // let element = tdElements[j];\n // if( element.classList.contains( 'wptb-ph-element' ) ) {\n // let infArr = element.className.match( /wptb-element-(.+)-(\\d+)/i );\n // if( infArr[1] == 'text' ) {\n // let p = element.querySelector( 'p' ),\n // textContent = p.textContent,\n // textAlign = p.style.textAlign;\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = [textContent, element.style.fontSize,\n // element.style.color, computedStyleRowHead.backgroundColor, textAlign];\n // break;\n // }\n // }\n // }\n // if( ! contentsForHeader[rowHeadChildren[i].dataset.xIndex] ) {\n // contentsForHeader[rowHeadChildren[i].dataset.xIndex] = ['', '',\n // '', computedStyleRowHead.backgroundColor, ''];\n // }\n // }\n // for ( let i = 1; i < rows.length; i++ ) {\n // let thisRow = rows[i],\n // thisRowChildren = thisRow.children;\n // for( let j = 0; j < thisRowChildren.length; j++ ) {\n // if ( contentsForHeader[thisRowChildren[j].dataset.xIndex] ) {\n // thisRowChildren[j].dataset.wptbTitleColumn = contentsForHeader[thisRowChildren[j].dataset.xIndex][0];\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = contentsForHeader[thisRowChildren[j].dataset.xIndex][1];\n // thisRowChildren[j].dataset.wptbTitleColumnColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][2];\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = contentsForHeader[thisRowChildren[j].dataset.xIndex][3];\n // thisRowChildren[j].dataset.wptbTitleAlign = contentsForHeader[thisRowChildren[j].dataset.xIndex][4];\n // } else {\n // thisRowChildren[j].dataset.wptbTitleColumn = null;\n // thisRowChildren[j].dataset.wptbTitleColumnFontSize = null;\n // thisRowChildren[j].dataset.wptbTitleColumnColor = null;\n // thisRowChildren[j].dataset.wptbTitleBackgroundColor = null;\n // thisRowChildren[j].dataset.wptbTitleAlign = null;\n // }\n // }\n // }\n },\n findAncestor(el, cls) {\n while ((el = el.parentElement) && !el.classList.contains(cls));\n return el;\n },\n rowIsTop(row) {\n const parent = row.parentNode;\n if (parent.children[0] == row) {\n return true;\n }\n return false;\n },\n getSelectionText() {\n let 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() {\n const elementOptionsGroup = document.getElementById(\n \"element-options-group\"\n );\n if (elementOptionsGroup) {\n elementOptionsGroup.innerHTML = \"\";\n }\n },\n wpColorPickerCheckChangeForTableStateSaving(event) {\n if (event.originalEvent.type == \"external\") {\n const wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } else {\n const wpPickerContainer = WPTB_Helper.findAncestor(\n event.target,\n \"wp-picker-container\"\n );\n if (wpPickerContainer) {\n if (\n event.originalEvent.type == \"square\" ||\n event.originalEvent.type == \"strip\"\n ) {\n const body = document.getElementsByTagName(\"body\")[0];\n body.removeEventListener(\n \"mouseup\",\n WPTB_Helper.irisStripMouseUpStateSaveManager,\n false\n );\n body.addEventListener(\n \"mouseup\",\n WPTB_Helper.irisStripMouseUpStateSaveManager,\n false\n );\n }\n }\n }\n },\n irisStripMouseUpStateSaveManager() {\n const wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n\n const body = document.getElementsByTagName(\"body\")[0];\n body.removeEventListener(\n \"mouseup\",\n WPTB_Helper.irisStripMouseUpStateSaveManager,\n false\n );\n },\n wpColorPickerClear(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 const wpPickerContainer = WPTB_Helper.findAncestor(\n input[i],\n \"wp-picker-container\"\n );\n if (wpPickerContainer) {\n const parent = wpPickerContainer.parentNode;\n parent.removeChild(wpPickerContainer);\n const 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() {\n const url = window.location.href;\n const regex = new RegExp(\"[?&]table(=([^&#]*)|&|#|$)\");\n const results = regex.exec(url);\n if (!results) return false;\n if (!results[2]) return \"\";\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n },\n getTableId() {\n let tableId = WPTB_Helper.detectMode();\n if (!tableId) {\n tableId = \"startedid-0\";\n }\n\n return tableId;\n },\n getColumnWidth(table, cell) {\n const { xIndex } = cell.dataset;\n const 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(table, cell) {\n const { yIndex } = cell.dataset;\n const 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(el) {\n if (el) {\n const data = { kind: el };\n return new WPTB_ElementObject(data);\n }\n },\n wpColorPickerChange(event, ui) {\n let uiColor;\n if (ui) {\n uiColor = ui.color.toString();\n } else {\n uiColor = \"\";\n }\n\n const parent = WPTB_Helper.findAncestor(\n event.target,\n \"wp-picker-input-wrap\"\n ).getElementsByClassName(\"wptb-color-picker\")[0];\n let classe;\n let type;\n let ps;\n let number;\n classe = parent.dataset.element.match(/wptb-options-(.+)-(\\d+)/i);\n type = classe[1];\n number = classe[2];\n const affectedEl = document.getElementsByClassName(\n `wptb-element-${type}-${number}`\n )[0];\n if (type == \"button\") {\n if (parent.dataset.type == \"button-text-color\") {\n affectedEl.getElementsByClassName(\"wptb-button\")[0].style.color =\n uiColor;\n } else {\n affectedEl.getElementsByClassName(\n \"wptb-button\"\n )[0].style.backgroundColor = uiColor;\n }\n } else if (type == \"list\") {\n const 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 const ratingStar = affectedEl.querySelectorAll(\"li\");\n for (let i = 0; i < ratingStar.length; i++) {\n const 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 const wptbTextMessageSize = affectedEl.querySelector(\n \".wptb-number-rating\"\n );\n wptbTextMessageSize.style.color = uiColor;\n }\n } else {\n affectedEl.style.color = uiColor;\n }\n },\n numberImputSize(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 const thisValue = this.value;\n if (parseInt(thisValue, 10) > parseInt(maxValue, 10)) {\n this.value = maxValue;\n }\n\n const wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n },\n ucfirst(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n wptbDocumentEventGenerate(eventName, element, details) {\n if (eventName && element) {\n if (!details) {\n details = true;\n }\n const event = new CustomEvent(eventName, {\n detail: details,\n bubbles: true,\n });\n element.dispatchEvent(event);\n }\n },\n // run script for the pointed element\n elementStartScript(element, kind) {\n // let script = element.getElementsByTagName( 'script' );\n if (!kind) {\n const 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 const elementIdMatch = element\n .getAttribute(\"class\")\n .match(/(wptb-element-\\D+-\\d+\\b)/);\n const elementId = elementIdMatch ? elementIdMatch[0] : null;\n WPTB_ElementsScriptsLauncher[kind](element, elementId);\n }\n }\n },\n // deletes event handlers from the pointed option element and from all his daughter elements\n deleteEventHandlers(element) {\n if (element) {\n jQuery(element).off();\n const 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 }\n },\n // replace all occurrences in a string\n replaceAll(string, search, replace) {\n return string.split(search).join(replace);\n },\n // clears code from TinyMCE attributes\n elementClearFromTinyMce(element) {\n const 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 const 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 const 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 const 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 const 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 const 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(targetInput, customClassForContainer) {\n if (targetInput && customClassForContainer) {\n const containerElement = WPTB_Helper.findAncestor(\n targetInput,\n \"wptb-element-option\"\n );\n if (containerElement) {\n containerElement.classList.add(customClassForContainer);\n }\n }\n },\n elementOptionContainerAdditionalStyles(\n targetInput,\n containerAdditionalStyles\n ) {\n if (targetInput && containerAdditionalStyles) {\n const containerElement = WPTB_Helper.findAncestor(\n targetInput,\n \"wptb-element-option\"\n );\n const 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]] =\n 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(element, functionHandler, acceptEventValues = false) {\n if (\n element &&\n typeof element === \"object\" &&\n typeof functionHandler === \"function\"\n ) {\n element.addEventListener(\n \"element:controls:active\",\n function () {\n if (\n !element.hasOwnProperty(\"controlConnectFunctionsName\") ||\n !Array.isArray(element.controlConnectFunctionsName) ||\n element.controlConnectFunctionsName.indexOf(functionHandler.name) ==\n -1\n ) {\n const infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n let 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 const elementOptionsGroupIds = element.optionsGroupIds;\n if (\n elementOptionsGroupIds &&\n Array.isArray(elementOptionsGroupIds)\n ) {\n for (let i = 0; i < elementOptionsGroupIds.length; i++) {\n const elementOptionsGroupId = elementOptionsGroupIds[i];\n\n const elementOptionsGroup = document.getElementById(\n elementOptionsGroupId\n );\n\n let controlActiveElements =\n elementOptionsGroup.querySelectorAll(\n \".wptb-element-property\"\n );\n controlActiveElements = [...controlActiveElements];\n\n controlActiveElements.map((controlActiveElement) => {\n const regularText = new RegExp(\n `wptb-el-${elementKind}-(\\\\d+)-([a-zA-Z0-9_-]+)`,\n \"i\"\n );\n const controlInfArr =\n controlActiveElement.className.match(regularText);\n if (controlInfArr && Array.isArray(controlInfArr)) {\n const controlUnicClassName = controlInfArr[0];\n\n element.addEventListener(\n `wptb-control:${controlUnicClassName}`,\n function (e) {\n const controls = {};\n const controlName = controlInfArr[2];\n const control =\n document.getElementsByClassName(\n controlUnicClassName\n );\n if (control.length > 0 && controlName) {\n const targetControlValue =\n WPTB_Helper.targetControlValueGet(control);\n\n if (acceptEventValues) {\n controls[controlName] = {\n targetValue: targetControlValue,\n eventValue: e.detail.value,\n };\n } else {\n controls[controlName] = targetControlValue;\n }\n }\n functionHandler(controls, element);\n },\n false\n );\n }\n });\n }\n }\n // let elementOptionsContainer = document.querySelector( '.wptb-element-options.wptb-options-' + infArr[1] + '-' + infArr[2] );\n\n // from time to time depend on table cells hierarchy, cell td items may catch mouse clicks which are intended for elements. since the active section is not cell management, this will gives and unharmfull error of not found element, simple check for null equality will be sufficient for now.\n // if(!elementOptionsContainer){\n // return;\n // }\n\n // let elementOptions = elementOptionsContainer.querySelectorAll( '.wptb-element-option' );\n // let controlActiveElements = elementOptions[i].querySelector( '.wptb-element-property' );\n //\n //\n // for( let i = 0; i < elementOptions.length; i++ ) {\n // let controlActiveElement = elementOptions[i].querySelector( '.wptb-element-property' );\n // if( controlActiveElement ) {\n //\n // }\n // }\n\n if (\n !element.controlConnectFunctionsName &&\n !Array.isArray(element.controlConnectFunctionsName)\n ) {\n element.controlConnectFunctionsName = [];\n }\n\n element.controlConnectFunctionsName.push(functionHandler.name);\n }\n }\n },\n false\n );\n }\n },\n oneControlInclude(element, functionHandler, controlName) {\n if (\n element &&\n typeof element === \"object\" &&\n typeof functionHandler === \"function\" &&\n typeof controlName === \"string\"\n ) {\n const infArr = element.className.match(/wptb-element-((.+-)\\d+)/i);\n let elementKind;\n\n if (infArr && Array.isArray(infArr)) {\n elementKind = infArr[1].split(\"-\")[0];\n\n const wptbContrlStacksConfigId = `wptb-${elementKind}-control-stack`;\n const tmplControlsConfig = wp.template(wptbContrlStacksConfigId);\n const data = {\n container: `.${infArr[0]}`,\n };\n const jsonControlsConfigJson = tmplControlsConfig(data);\n const jsonControlsConfig = JSON.parse(jsonControlsConfigJson);\n\n if (\n jsonControlsConfig &&\n typeof jsonControlsConfig === \"object\" &&\n jsonControlsConfig.hasOwnProperty(controlName)\n ) {\n const controlClassName = `wptb-el-${infArr[1]}-${controlName}`;\n\n element.addEventListener(\n `wptb-control:${controlClassName}`,\n function (event) {\n const control = document.getElementsByClassName(controlClassName);\n if (control.length > 0) {\n const targetControlValue =\n WPTB_Helper.targetControlValueGet(control);\n\n functionHandler(targetControlValue, element);\n }\n },\n false\n );\n }\n }\n } else {\n return false;\n }\n },\n //\n innerElementCopyIncludeHandler(element, functionHandler) {\n if (\n element &&\n typeof element === \"object\" &&\n typeof functionHandler === \"function\"\n ) {\n element.addEventListener(\n \"wptb-inner-element:copy\",\n function (event) {\n const innerElement = event.detail;\n if (innerElement) {\n WPTB_Helper.elementClearFromTinyMce(innerElement);\n functionHandler(innerElement, element);\n }\n },\n false\n );\n }\n },\n /**\n * Sets the control elements when changing which to will restart this control\n *\n * @param {Array} dependOnControlName\n * @param {string} targetControlElementClass\n * @param {Array} valueDependOnControlCorrect\n * @param {string} kind\n * @param {HTMLElement} element\n */\n valueDependOnControl(\n dependOnControlName,\n targetControlElementClass,\n valueDependOnControlCorrect,\n kind,\n element\n ) {\n function dependOnControlDataGet(\n dependOnControlName,\n targetControlElementClass,\n valueDependOnControlCorrect\n ) {\n if (typeof dependOnControlName === \"string\") {\n dependOnControlName = [dependOnControlName];\n }\n const infArr = targetControlElementClass.match(\n /wptb-el-((.+-)\\d+)-(.+)/i\n );\n const valueDependOnControl = {};\n const dependOnControlElementsArr = [];\n if (infArr && Array.isArray(infArr)) {\n const controlName = infArr[3];\n let dependOnControlElements;\n const valueDependOnControlCorrectObj = {};\n if (Array.isArray(valueDependOnControlCorrect)) {\n if (Array.isArray(valueDependOnControlCorrect[0])) {\n valueDependOnControlCorrect.map((s) => {\n valueDependOnControlCorrectObj[s[0]] = [s[1], s[2]];\n });\n } else {\n valueDependOnControlCorrectObj[valueDependOnControlCorrect[0]] = [\n valueDependOnControlCorrect[1],\n valueDependOnControlCorrect[2],\n ];\n }\n }\n dependOnControlName.map((s) => {\n const dependOnControlElementClass = targetControlElementClass.replace(\n controlName,\n s\n );\n if (dependOnControlElementClass) {\n dependOnControlElements = document.getElementsByClassName(\n dependOnControlElementClass\n );\n if (\n dependOnControlElements.length > 0 &&\n dependOnControlElements[0].type\n ) {\n valueDependOnControl[s] = dependOnControlElements[0].value;\n if (s in valueDependOnControlCorrectObj) {\n if (valueDependOnControlCorrectObj[s][1] === \"integer\") {\n valueDependOnControl[s] =\n parseInt(valueDependOnControl[s]) +\n parseInt(valueDependOnControlCorrectObj[s][0]);\n } else if (valueDependOnControlCorrectObj[s][1] === \"string\") {\n valueDependOnControl[s] =\n valueDependOnControl[s] +\n valueDependOnControlCorrectObj[s][0];\n }\n }\n dependOnControlElementsArr.push(dependOnControlElements[0]);\n }\n }\n });\n }\n\n return [valueDependOnControl, dependOnControlElementsArr];\n }\n\n const dependOnControlData = dependOnControlDataGet(\n dependOnControlName,\n targetControlElementClass,\n valueDependOnControlCorrect\n );\n WPTB_Helper.elementOptionsSet(\n kind,\n element,\n dependOnControlData[0],\n targetControlElementClass\n );\n\n Object.keys(dependOnControlData[0]).forEach(function (key) {\n const infArr = element.className.match(/wptb-element-((.+-)\\d+)/i);\n const unicClass = `wptb-el-${infArr[1]}-${[key]}`;\n element.addEventListener(\n `wptb-control:${unicClass}`,\n function (event) {\n const dependOnControlData = dependOnControlDataGet(\n dependOnControlName,\n targetControlElementClass,\n valueDependOnControlCorrect\n );\n WPTB_Helper.elementOptionsSet(\n kind,\n element,\n dependOnControlData[0],\n targetControlElementClass\n );\n },\n false\n );\n });\n },\n /**\n * Sets the visibility of one control to depend on the state of other controls\n *\n * @param dependOnMain\n * @param targetControlElementClass\n */\n appearDependOnControl(dependOnMain, targetControlElementClass) {\n if (Array.isArray(dependOnMain)) {\n if (typeof dependOnMain[0] === \"string\") {\n dependOnMain = [dependOnMain];\n } else if (!Array.isArray(dependOnMain[0])) {\n return;\n }\n const dependOnControlElementsValue = {};\n for (let i = 0; i < dependOnMain.length; i++) {\n const dependOn = dependOnMain[i];\n const dependOnControlName = dependOn[0];\n const infArr = targetControlElementClass.match(\n /wptb-el-((.+-)\\d+)-(.+)/i\n );\n\n if (infArr && Array.isArray(infArr)) {\n const controlName = infArr[3];\n\n const dependOnControlElementClass = targetControlElementClass.replace(\n controlName,\n dependOnControlName\n );\n if (dependOnControlElementClass) {\n const dependOnControlElements = document.getElementsByClassName(\n dependOnControlElementClass\n );\n if (dependOnControlElements.length > 0) {\n dependOnControlElementsValue[dependOn[0]] = [\n dependOnControlElementValue(dependOnControlElements, dependOn),\n dependOnControlElements,\n dependOn,\n ];\n }\n }\n }\n }\n\n const targetControlElements = document.getElementsByClassName(\n targetControlElementClass\n );\n if (targetControlElements.length > 0) {\n const targetControlElement = targetControlElements[0];\n const controlContainerElem = WPTB_Helper.findAncestor(\n targetControlElement,\n \"wptb-element-option\"\n );\n\n if (controlContainerElem) {\n showHideTargetControlElement(\n controlContainerElem,\n dependOnControlElementsValue\n );\n\n Object.keys(dependOnControlElementsValue).map((k) => {\n if (\n Object.prototype.hasOwnProperty.call(\n dependOnControlElementsValue,\n k\n )\n ) {\n const dependOnControlElements =\n dependOnControlElementsValue[k][1];\n const dependOnControlElement = dependOnControlElements[0];\n dependOnControlElement.addEventListener(\n \"change\",\n dependOnControlElementChangeHandler,\n false\n );\n }\n\n function dependOnControlElementChangeHandler(event) {\n const dependOn = dependOnControlElementsValue[k][2];\n const dependOnControlElements =\n dependOnControlElementsValue[k][1];\n dependOnControlElementsValue[dependOn[0]] = [\n dependOnControlElementValue(dependOnControlElements, dependOn),\n dependOnControlElements,\n dependOn,\n ];\n showHideTargetControlElement(\n controlContainerElem,\n dependOnControlElementsValue\n );\n }\n });\n }\n }\n\n function showHideTargetControlElement(\n controlContainerElem,\n dependOnControlElementsValue\n ) {\n let display = \"block\";\n let targetControlInactiveVal;\n Object.keys(dependOnControlElementsValue).map((k) => {\n if (\n Object.prototype.hasOwnProperty.call(\n dependOnControlElementsValue,\n k\n )\n ) {\n if (dependOnControlElementsValue[k][0] === false) {\n display = \"none\";\n if (dependOnControlElementsValue[k][2][3]) {\n targetControlInactiveVal =\n dependOnControlElementsValue[k][2][3];\n }\n }\n }\n });\n\n if (controlContainerElem.style.display !== display) {\n controlContainerElem.style.display = display;\n\n if (display === \"none\" && targetControlInactiveVal) {\n targetControlElements[0].dataset.controlActiveVal =\n WPTB_Helper.targetControlValueGet(targetControlElements);\n WPTB_Helper.targetControlValueGet(\n targetControlElements,\n targetControlInactiveVal\n );\n } else if (\n display === \"block\" &&\n targetControlElements[0].dataset.controlActiveVal\n ) {\n WPTB_Helper.targetControlValueGet(\n targetControlElements,\n targetControlElements[0].dataset.controlActiveVal\n );\n }\n }\n }\n\n function dependOnControlElementValue(dependOnControlElements, dependOn) {\n const targetControlValue = WPTB_Helper.targetControlValueGet(\n dependOnControlElements\n );\n\n let returnBool = false;\n for (let i = 1; i <= 2; i++) {\n if (dependOn[i] && Array.isArray(dependOn[i])) {\n let coincided;\n let hasNumberAnyParams = false;\n for (let j = 0; j < dependOn[i].length; j++) {\n if (\n typeof dependOn[i][j] === \"string\" &&\n dependOn[i][j].indexOf(\"numberAny >\") !== -1\n ) {\n hasNumberAnyParams = true;\n const xNum = parseInt(dependOn[i][j].match(/\\d+/));\n if (targetControlValue > xNum) {\n coincided = true;\n } else {\n coincided = false;\n break;\n }\n } else if (\n typeof dependOn[i][j] === \"string\" &&\n dependOn[i][j].indexOf(\"numberAny <\") !== -1\n ) {\n hasNumberAnyParams = true;\n const xNum = parseInt(dependOn[i][j].match(/\\d+/));\n if (targetControlValue < xNum) {\n coincided = true;\n } else {\n coincided = false;\n break;\n }\n } else if (dependOn[i][j] === targetControlValue) {\n coincided = true;\n if (!hasNumberAnyParams) {\n break;\n }\n }\n }\n\n if (coincided && i === 1) {\n returnBool = true;\n break;\n } else if (coincided && i === 2) {\n returnBool = false;\n break;\n }\n }\n }\n\n return returnBool;\n }\n }\n },\n //\n\n /**\n * Switch toggle\n *\n * @param dataToggleSwitch\n * @param targetControlElementClass\n */\n toggleSwitch(dataToggleSwitch, targetControlElementClass) {\n if (Array.isArray(dataToggleSwitch)) {\n if (dataToggleSwitch[1] && typeof dataToggleSwitch[1] === \"object\") {\n const dependOnParams = dataToggleSwitch[1];\n const toggleSwitchExec = false;\n Object.keys(dependOnParams).map((k) => {\n const dependOnValue = dependOnParams[k];\n\n const infArr = targetControlElementClass.match(\n /wptb-el-((.+-)\\d+)-(.+)/i\n );\n\n if (infArr && Array.isArray(infArr)) {\n const controlName = infArr[3];\n\n const dependOnControlElementClass =\n targetControlElementClass.replace(controlName, k);\n if (dependOnControlElementClass) {\n const dependOnControlElements = document.getElementsByClassName(\n dependOnControlElementClass\n );\n if (dependOnControlElements.length > 0) {\n const dependOnControlElement = dependOnControlElements[0];\n dependOnControlElement.addEventListener(\n \"change\",\n toggleSwitchExecuteCheckRun.bind(\n null,\n dependOnControlElementClass,\n dependOnValue\n ),\n false\n );\n }\n }\n }\n });\n\n if (toggleSwitchExec) {\n toggleSwitchExecute();\n }\n function toggleSwitchExecuteCheckRun(\n dependOnControlElementClass,\n dependOnValue\n ) {\n if (dependOnControlElementClass) {\n const dependOnControlElements = document.getElementsByClassName(\n dependOnControlElementClass\n );\n if (dependOnControlElements.length > 0) {\n const targetControlValue = WPTB_Helper.targetControlValueGet(\n dependOnControlElements\n );\n\n if (targetControlValue === dependOnValue) {\n toggleSwitchExecute();\n }\n }\n }\n }\n function toggleSwitchExecute() {\n const elems = document.getElementsByClassName(\n targetControlElementClass\n );\n if (\n elems.length &&\n WPTB_Helper.targetControlValueGet(elems) !== dataToggleSwitch[0]\n ) {\n if (dataToggleSwitch[0] === \"unchecked\") {\n elems[0].checked = false;\n } else if (dataToggleSwitch[0] === \"checked\") {\n elems[0].checked = true;\n }\n if (\n dataToggleSwitch[2] === undefined ||\n dataToggleSwitch[2] === true\n ) {\n WPTB_Helper.wptbDocumentEventGenerate(\"change\", elems[0], {\n eventType: \"toggleSwitch\",\n });\n }\n }\n }\n }\n }\n },\n // TODO switchThirdToggleIf\n switchThirdToggleIf(dataSwitchThirdToggleIf, dependencyElemClass) {\n if (Array.isArray(dataSwitchThirdToggleIf)) {\n const dependencyElemVal = dataSwitchThirdToggleIf[0];\n const dependencyElem = document.querySelector(`.${dependencyElemClass}`);\n if (\n dataSwitchThirdToggleIf[1] &&\n typeof dataSwitchThirdToggleIf[1] === \"object\"\n ) {\n const dependencyParameters = dataSwitchThirdToggleIf[1];\n Object.keys(dependencyParameters).map((k) => {\n const dependentElemVal = dependencyParameters[k];\n const infArr = dependencyElemClass.match(/wptb-el-((.+-)\\d+)-(.+)/i);\n if (infArr && Array.isArray(infArr)) {\n const controlName = infArr[3];\n const dependentElemClass = dependencyElemClass.replace(\n controlName,\n k\n );\n if (dependentElemClass) {\n const dependentElems =\n document.getElementsByClassName(dependentElemClass);\n if (dependentElems.length > 0) {\n const dependentElem = dependentElems[0];\n console.log(dependentElem);\n dependencyElem.addEventListener(\n \"change\",\n switchThirdToggleExecute.bind(\n null,\n dependencyElem,\n dependencyElemVal,\n dependentElem,\n dependentElemVal\n ),\n false\n );\n }\n }\n }\n });\n\n function switchThirdToggleExecute(\n dependencyElem,\n dependencyElemVal,\n dependentElem,\n dependentElemVal\n ) {\n if (\"checked\" in dependentElem) {\n if (\n (dependencyElem.checked === true &&\n dependencyElemVal === \"checked\") ||\n (dependencyElem.checked === false &&\n dependencyElemVal === \"unchecked\")\n ) {\n if (dependentElemVal === \"checked\") {\n dependentElem.checked = true;\n } else if (dependentElemVal === \"unchecked\") {\n dependentElem.checked = false;\n }\n\n if (\n dataSwitchThirdToggleIf[2] === undefined ||\n dataSwitchThirdToggleIf[2] === true\n ) {\n WPTB_Helper.wptbDocumentEventGenerate(\"change\", dependentElem, {\n eventType: \"switchThirdToggleIf\",\n });\n }\n }\n }\n }\n }\n }\n },\n\n controlsStateManager(targetControlClass, controlChangeIndic) {\n const targetControls = document.getElementsByClassName(targetControlClass);\n if (targetControls.length > 0) {\n // targetControls = targetControls[0];\n\n const 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 const elementSettings = {};\n let elementsSettings;\n elementsSettingsTemplatesJs =\n document.getElementsByClassName(\"wptb-element-datas\");\n if (\n elementsSettingsTemplatesJs.length == 0 ||\n elementsSettingsTemplatesJs[0].innerHTML == \"\"\n ) {\n const targetControlValue =\n WPTB_Helper.targetControlValueGet(targetControls);\n elementSettings[`data-${targetControlClass}`] = targetControlValue;\n\n elementsSettings = {};\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`] =\n 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(\n \"class\",\n \"wptb-element-datas\"\n );\n } else {\n elementsSettingsTemplatesJs = elementsSettingsTemplatesJs[0];\n }\n\n elementsSettingsTemplatesJs.innerHTML = elementsSettings;\n\n const 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 if (controlChangeIndic) {\n const targetControlValue =\n WPTB_Helper.targetControlValueGet(targetControls);\n if (\n !(`tmpl-wptb-el-datas-${infArr[1]}` in elementsSettings) ||\n typeof elementsSettings[\n `tmpl-wptb-el-datas-${infArr[1]}`\n ] !== \"object\"\n ) {\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`] = {};\n }\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`][\n `data-${targetControlClass}`\n ] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML =\n JSON.stringify(elementsSettings);\n } else if (\n !(\n `tmpl-wptb-el-datas-${infArr[1]}` in elementsSettings &&\n typeof elementsSettings[\n `tmpl-wptb-el-datas-${infArr[1]}`\n ] === \"object\" &&\n `data-${targetControlClass}` in\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`]\n )\n ) {\n const targetControlValue =\n WPTB_Helper.targetControlValueGet(targetControls);\n if (\n !(`tmpl-wptb-el-datas-${infArr[1]}` in elementsSettings) ||\n typeof elementsSettings[\n `tmpl-wptb-el-datas-${infArr[1]}`\n ] !== \"object\"\n ) {\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`] = {};\n }\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`][\n `data-${targetControlClass}`\n ] = targetControlValue;\n elementsSettingsTemplatesJs.innerHTML =\n JSON.stringify(elementsSettings);\n } else if (\n `tmpl-wptb-el-datas-${infArr[1]}` in elementsSettings &&\n typeof elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`] ===\n \"object\" &&\n `data-${targetControlClass}` in\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`]\n ) {\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 =\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`][\n `data-${targetControlClass}`\n ][targetControls[i].name];\n } else {\n targetControlValue =\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`][\n `data-${targetControlClass}`\n ];\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 =\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}`][\n `data-${targetControlClass}`\n ];\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n //\n targetControlValueGet(targetControls, val) {\n let targetControlValue;\n for (let i = 0; i < targetControls.length; i++) {\n if (targetControls[i].type == \"checkbox\" && targetControls[i].name) {\n if (val) {\n if (val === \"checked\") {\n targetControls[i].checked = true;\n } else if (val === \"unchecked\") {\n targetControls[i].checked = false;\n }\n } else {\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 }\n } else if (targetControls[i].type == \"checkbox\") {\n if (val) {\n if (val === \"checked\") {\n targetControls[i].checked = true;\n } else if (val === \"unchecked\") {\n targetControls[i].checked = false;\n }\n } else if (targetControls[i].checked == true) {\n targetControlValue = \"checked\";\n } else {\n targetControlValue = \"unchecked\";\n }\n } else if (targetControls[i].type) {\n if (val) {\n targetControls[i].value = val;\n } else {\n targetControlValue = targetControls[i].value;\n }\n } else if (\n targetControls[i].dataset.alignmentValue &&\n targetControls[i].classList.contains(\"selected\")\n ) {\n if (val) {\n targetControls[i].dataset.alignmentValue = val;\n } else {\n targetControlValue = targetControls[i].dataset.alignmentValue;\n }\n }\n }\n return targetControlValue;\n },\n //\n elementControlsStateCopy(elementProt, copyElem) {\n if (elementProt && copyElem) {\n const infArrProt = elementProt.className.match(\n /wptb-element-((.+-)\\d+)/i\n );\n const infArrCopy = copyElem.className.match(/wptb-element-((.+-)\\d+)/i);\n if (\n infArrProt &&\n Array.isArray(infArrProt) &&\n infArrCopy &&\n Array.isArray(infArrCopy)\n ) {\n const elemProtKind = infArrProt[1];\n const elemCopyKind = infArrCopy[1];\n let elementsSettingsTemplateJs =\n 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 const elementSettingsProt =\n elementsSettings[`tmpl-wptb-el-datas-${elemProtKind}`];\n if (\n elementSettingsProt &&\n typeof elementSettingsProt === \"object\"\n ) {\n const elementSettingsCopy = {};\n\n Object.keys(elementSettingsProt).forEach(function (key) {\n const elementSettingValue = elementSettingsProt[key];\n const elementSettingKeyCopy = key.replace(\n elemProtKind,\n elemCopyKind\n );\n elementSettingsCopy[elementSettingKeyCopy] =\n elementSettingValue;\n });\n\n if (Object.keys(elementSettingsCopy).length > 0) {\n elementsSettings[`tmpl-wptb-el-datas-${elemCopyKind}`] =\n elementSettingsCopy;\n\n elementsSettings = JSON.stringify(elementsSettings);\n elementsSettingsTemplateJs.innerHTML = elementsSettings;\n }\n }\n }\n }\n }\n }\n }\n },\n //\n elementControlsStateDelete(element, nameControl) {\n const infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n const 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 (\n elementsSettings &&\n typeof elementsSettings === \"object\" &&\n `tmpl-wptb-el-datas-${infArr[1]}-${infArr[2]}` in elementsSettings\n ) {\n if (!nameControl) {\n delete elementsSettings[\n `tmpl-wptb-el-datas-${infArr[1]}-${infArr[2]}`\n ];\n } else if (\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}-${infArr[2]}`] &&\n typeof elementsSettings[\n `tmpl-wptb-el-datas-${infArr[1]}-${infArr[2]}`\n ] === \"object\" &&\n `data-wptb-el-${infArr[1]}-${infArr[2]}-${nameControl}` in\n elementsSettings[`tmpl-wptb-el-datas-${infArr[1]}-${infArr[2]}`]\n ) {\n delete elementsSettings[\n `tmpl-wptb-el-datas-${infArr[1]}-${infArr[2]}`\n ][`data-wptb-el-${infArr[1]}-${infArr[2]}-${nameControl}`];\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 activeElement: null,\n elementOptionsSet(\n kind,\n element,\n valueDependOnControl,\n targetControlElementClass\n ) {\n const elementIdClassMatch = element\n .getAttribute(\"class\")\n .match(/(?<elementId>wptb-element-.+-\\d+)/);\n const id = element.getAttribute(\"id\");\n let cellId = null;\n\n // prepare cell id if element is a table cell\n if (element.getAttribute(\"class\").includes(\"wptb-cell\")) {\n const { xIndex, yIndex } = element.dataset;\n cellId = `cell_${xIndex}-${yIndex}`;\n }\n\n const elementIdClass = elementIdClassMatch\n ? elementIdClassMatch.groups.elementId\n : null;\n\n // use class match or id of target element for option set identification\n const decisiveAttr = elementIdClass || id || cellId || null;\n\n if (decisiveAttr && this.activeElement !== decisiveAttr) {\n this.activeElement = decisiveAttr;\n\n WPTB_Helper.wptbDocumentEventGenerate(\n \"element:controls:prepare\",\n element\n );\n\n // get controls config for this element\n const wptbContrlStacksConfigId = `wptb-${kind}-control-stack`;\n const tmplControlsConfig = wp.template(wptbContrlStacksConfigId);\n let data;\n let elementContainerClass;\n let elementOptionClassIndic;\n let elementOptionsGroup;\n\n let controlElementParent;\n let elementOptionsScriptsContainer;\n\n let infArr = element.className.match(/wptb-element-((.+-)\\d+)/i);\n if (!infArr) {\n let table_id = WPTB_Helper.detectMode();\n if (!table_id) {\n table_id = \"startedid-0\";\n }\n if (element.classList.contains(\"wptb-preview-table\")) {\n element.classList.add(`wptb-element-main-table_setting-${table_id}`);\n } else if (element.classList.contains(\"wptb-cell\")) {\n const cellEditActiveClass = document.querySelector(\n `.wptb-element-table_cell_setting-${element.dataset.xIndex}-${element.dataset.yIndex}`\n );\n if (!cellEditActiveClass)\n element.classList.add(\n `wptb-element-table_cell_setting-${element.dataset.xIndex}-${element.dataset.yIndex}`\n );\n } else if (element.classList.contains(\"wptb-responsive\")) {\n // if table id parsed from url is starting with 'wptb-team', it means it is team built prebuilt table with a unique id that doesn't fit infArr match regex, in that case, use default id for elements options\n if (table_id.startsWith(\"wptb_team\")) {\n table_id = \"startedid-0\";\n }\n element.classList.add(\n `wptb-element-table_responsive_setting-${table_id}`\n );\n }\n\n infArr = element.className.match(/wptb-element-((.+-)\\d+)/i);\n } else {\n WPTB_Helper.editActionClassRemove();\n element.classList.add(\"edit-active\");\n }\n\n data = {\n container: `.${infArr[0]}`,\n };\n let controlName;\n data.valueDependOnControl = {};\n if (valueDependOnControl) {\n Object.keys(valueDependOnControl).forEach(function (key) {\n data.valueDependOnControl[key] = valueDependOnControl[key];\n });\n }\n if (targetControlElementClass) {\n const infArr = targetControlElementClass.match(\n /wptb-el-((.+-)\\d+)-(.+)/i\n );\n\n if (infArr && Array.isArray(infArr)) {\n controlName = infArr[3];\n }\n }\n\n elementContainerClass = infArr[0];\n elementOptionClassIndic = infArr[1];\n\n if (element.classList.contains(\"wptb-preview-table\")) {\n } else if (element.classList.contains(\"wptb-cell\")) {\n this.activateSection(\"cell_settings\");\n } else if (element.classList.contains(\"wptb-responsive\")) {\n elementOptionsGroupId = \"table-responsive-group\";\n wptbelementOptionClass = \"wptb-element-option\";\n } else {\n const children = document.getElementById(\n \"element-options-group\"\n ).childNodes;\n for (let i = 0; i < children.length; i++) {\n if (children[i].style) children[i].style.display = \"none\";\n }\n this.activateSection(\"options_group\");\n }\n\n const controlsConfigJson = tmplControlsConfig(data);\n let controlsConfig = JSON.parse(controlsConfigJson);\n\n const elementOptionsGroupIdsInvolved = [];\n const elementOptionsGroupInvolved = {};\n const elementOptionsContainerInvolved = {};\n\n // object for save all scrips for each controls\n const controlScriptsObj = {};\n\n // array for keep \"appear depend on\" params\n const controlappearDependOnControl = [];\n\n // array for keep \"toggle switch\" params\n const controltoggleSwitch = [];\n\n // array for keep \"toggle switch\" params\n const controlSwitchThirdToggleIf = [];\n\n // array for keep \"value depend on\" params\n const controlValueDependOnControl = [];\n\n // create controls\n const elementOptionsScriptsContainerIndic = false;\n if (controlName) {\n const controlsConfigNew = {};\n controlsConfigNew[controlName] = controlsConfig[controlName];\n controlsConfig = controlsConfigNew;\n }\n let i = 0;\n Object.keys(controlsConfig).forEach(function (key) {\n const data = controlsConfig[key];\n data.controlKey = key;\n\n // get necessary wp js template\n const tmplControlTemplate = wp.template(`wptb-${data.type}-control`);\n\n data.elemContainer = elementContainerClass;\n data.elementControlTargetUnicClass = `wptb-el-${elementOptionClassIndic}-${data.controlKey}`;\n Object.keys(data).map((k) => {\n if (\n Object.prototype.hasOwnProperty.call(data, k) &&\n data[k] === \"control_param_calculate_value\"\n ) {\n data[k] = WPTB_Helper.controlParamCalculateValue(\n data.elementControlTargetUnicClass,\n k\n );\n }\n });\n const controlTemplate = tmplControlTemplate(data);\n if (\"appearDependOnControl\" in data) {\n if (Array.isArray(data.appearDependOnControl)) {\n controlappearDependOnControl.push([\n data.appearDependOnControl,\n data.elementControlTargetUnicClass,\n ]);\n }\n }\n\n if (\"toggleSwitch\" in data) {\n if (Array.isArray(data.toggleSwitch)) {\n controltoggleSwitch.push([\n data.toggleSwitch,\n data.elementControlTargetUnicClass,\n ]);\n }\n }\n\n if (\"switchThirdToggleIf\" in data) {\n if (Array.isArray(data.switchThirdToggleIf)) {\n controlSwitchThirdToggleIf.push([\n data.switchThirdToggleIf,\n data.elementControlTargetUnicClass,\n ]);\n }\n }\n\n if (\n \"valueDependOnControl\" in data &&\n !valueDependOnControl &&\n !targetControlElementClass\n ) {\n let valueDependOnControlCorrect = \"\";\n if (data.valueDependOnControlCorrect)\n valueDependOnControlCorrect = data.valueDependOnControlCorrect;\n controlValueDependOnControl.push([\n data.valueDependOnControl,\n data.elementControlTargetUnicClass,\n valueDependOnControlCorrect,\n ]);\n }\n\n function elementOptionsContainerInvolvedGet(\n elementOptionsGroupId,\n elementOptionsContainerInvolved\n ) {\n if (!elementOptionsContainerInvolved[elementOptionsGroupId]) {\n const elementOptionsContainer = document.createElement(\"div\");\n elementOptionsContainer.classList.add(\n \"wptb-element-options\",\n `wptb-options-${infArr[1]}`\n );\n document\n .getElementById(elementOptionsGroupId)\n .appendChild(elementOptionsContainer);\n elementOptionsContainerInvolved[elementOptionsGroupId] =\n elementOptionsContainer;\n }\n\n return elementOptionsContainerInvolved[elementOptionsGroupId];\n }\n\n if (\n elementOptionsGroupIdsInvolved.indexOf(data.elementOptionsGroupId) ==\n -1 &&\n !controlName\n ) {\n elementOptionsGroupIdsInvolved.push(data.elementOptionsGroupId);\n // clear elements from options group\n // document.getElementById( 'element-options-group' ).innerHTML = '';\n elementOptionsGroup = document.getElementById(\n data.elementOptionsGroupId\n );\n const elementOptionsGroupChildren = [...elementOptionsGroup.children];\n for (let i = 0; i < elementOptionsGroupChildren.length; i++) {\n elementOptionsGroup.removeChild(elementOptionsGroupChildren[i]);\n }\n elementOptionsGroupInvolved[data.elementOptionsGroupId] =\n elementOptionsGroup;\n }\n\n controlElementParent =\n elementOptionsGroupInvolved[data.elementOptionsGroupId];\n\n if (data.elementOptionsContainerOn === \"true\" && !controlName) {\n controlElementParent = elementOptionsContainerInvolvedGet(\n data.elementOptionsGroupId,\n elementOptionsContainerInvolved\n );\n }\n\n if (data.elementOptionContainerOn === \"true\") {\n const elementOptionContainer = document.createElement(\"div\");\n elementOptionContainer.classList.add(\n data.elementOptionClass,\n \"wptb-settings-items\"\n );\n\n if (data.customClassForContainer) {\n elementOptionContainer.classList.add(data.customClassForContainer);\n }\n\n if (data.containerAdditionalStyles) {\n elementOptionContainer.setAttribute(\n \"style\",\n data.containerAdditionalStyles\n );\n }\n\n if (targetControlElementClass) {\n let targetControlElement = document.getElementsByClassName(\n targetControlElementClass\n );\n if (targetControlElement.length > 0) {\n targetControlElement = targetControlElement[0];\n const controlContainerElem = WPTB_Helper.findAncestor(\n targetControlElement,\n \"wptb-element-option\"\n );\n\n if (controlContainerElem) {\n const controlContainerElemParent =\n controlContainerElem.parentNode;\n controlContainerElemParent.insertBefore(\n elementOptionContainer,\n controlContainerElem\n );\n controlContainerElemParent.removeChild(controlContainerElem);\n }\n }\n } else {\n controlElementParent.appendChild(elementOptionContainer);\n }\n controlElementParent = elementOptionContainer;\n }\n controlElementParent.innerHTML += controlTemplate;\n\n let helperJavascriptElem = controlElementParent.getElementsByTagName(\n \"wptb-template-script\"\n );\n if (helperJavascriptElem.length > 0) {\n helperJavascriptElem = helperJavascriptElem[0];\n const helperJavascriptCode = helperJavascriptElem.innerText;\n controlElementParent.removeChild(helperJavascriptElem);\n const script = document.createElement(\"script\");\n script.setAttribute(\"type\", \"text/javascript\");\n script.setAttribute(\"id\", `${kind}-${data.controlKey}`);\n script.innerHTML = helperJavascriptCode\n .replace(/\\r|\\n|\\t/g, \"\")\n .trim();\n if (\n !controlScriptsObj[data.elementOptionsGroupId] ||\n !Array.isArray(controlScriptsObj[data.elementOptionsGroupId])\n ) {\n controlScriptsObj[data.elementOptionsGroupId] = [];\n }\n controlScriptsObj[data.elementOptionsGroupId].push(script);\n }\n\n i++;\n });\n\n element.optionsGroupIds = elementOptionsGroupIdsInvolved;\n\n // run the scripts of controls\n Object.keys(controlScriptsObj).forEach(function (elementOptionsGroupId) {\n if (!targetControlElementClass) {\n elementOptionsScriptsContainer = document.createElement(\"div\");\n elementOptionsScriptsContainer.classList.add(\n \"wptb-element-options-scripts\",\n `wptb-options-${infArr[1]}`\n );\n elementOptionsGroupInvolved[elementOptionsGroupId].appendChild(\n elementOptionsScriptsContainer\n );\n }\n\n const controlScriptsArr = controlScriptsObj[elementOptionsGroupId];\n if (controlScriptsArr.length > 0) {\n for (let i = 0; i < controlScriptsArr.length; i++) {\n if (targetControlElementClass) {\n const id = `${kind}-${controlName}`;\n const script = document.getElementById(id);\n elementOptionsScriptsContainer = script.parentNode;\n elementOptionsScriptsContainer.insertBefore(\n controlScriptsArr[i],\n script\n );\n elementOptionsScriptsContainer.removeChild(script);\n } else {\n elementOptionsScriptsContainer.appendChild(controlScriptsArr[i]);\n }\n }\n }\n });\n\n // run toggleSwitch function\n for (let i = 0; i < controltoggleSwitch.length; i++) {\n WPTB_Helper.toggleSwitch(\n controltoggleSwitch[i][0],\n controltoggleSwitch[i][1]\n );\n }\n\n // run switchThirdToggleIf function\n for (let i = 0; i < controlSwitchThirdToggleIf.length; i++) {\n WPTB_Helper.switchThirdToggleIf(\n controlSwitchThirdToggleIf[i][0],\n controlSwitchThirdToggleIf[i][1]\n );\n }\n\n // run appearDependOnControl function\n for (let i = 0; i < controlappearDependOnControl.length; i++) {\n WPTB_Helper.appearDependOnControl(\n controlappearDependOnControl[i][0],\n controlappearDependOnControl[i][1]\n );\n }\n\n WPTB_Helper.wptbDocumentEventGenerate(\"element:controls:active\", element);\n // run valueDependOnControl function\n for (let i = 0; i < controlValueDependOnControl.length; i++) {\n WPTB_Helper.valueDependOnControl(\n controlValueDependOnControl[i][0],\n controlValueDependOnControl[i][1],\n controlValueDependOnControl[i][2],\n kind,\n element\n );\n }\n }\n },\n\n /**\n * remove edit-action classes from wptb-ph-element elements\n */\n editActionClassRemove() {\n const editActiveElems = document.querySelectorAll(\".edit-active\");\n for (let i = 0; i < editActiveElems.length; i++) {\n editActiveElems[i].classList.remove(\"edit-active\");\n }\n },\n\n /**\n *\n * @param unicClass\n * @param controlKey\n * @param key\n * @return {*}\n */\n controlParamCalculateValue(unicClass, key) {\n const unicClassP = WPTB_Helper.replaceAll(unicClass, \"-\", \"_\");\n if (\n window[`paramCalculateValue_${unicClassP}_${key}`] &&\n typeof window[`paramCalculateValue_${unicClassP}_${key}`] === \"function\"\n ) {\n return window[`paramCalculateValue_${unicClassP}_${key}`]();\n }\n },\n\n controlParamCalculateValueCreateFunction(\n element,\n controlKey,\n key,\n handlerFunction\n ) {\n const infArr = element.className.match(/wptb-element-((.+-)\\d+)/i);\n const unicClass = `wptb-el-${infArr[1]}-${controlKey}`;\n const unicClassP = WPTB_Helper.replaceAll(unicClass, \"-\", \"_\");\n window[`paramCalculateValue_${unicClassP}_${key}`] = function () {\n return handlerFunction(element);\n };\n },\n\n /**\n * function for create, update css for element\n *\n * @param elementContainer\n * @param selector\n * @param cssName\n * @param cssValue\n */\n managerExternalCssStyles(elementContainer, selector, cssName, cssValue) {\n const 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 const 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 const { head } = document;\n if (head) {\n const cssForThisElement = head.querySelector(\n `#styles-${elementContainer}`\n );\n if (cssForThisElement) {\n const cssText = cssForThisElement.innerHTML;\n if (cssText) {\n const cssTextArrFirst = cssText.split(\"}\");\n cssTextArrFirst.pop();\n let selectorExists = false;\n for (let i = 0; i < cssTextArrFirst.length; i++) {\n const cssTextArrSecond = cssTextArrFirst[i].split(\"{\");\n if (cssTextArrSecond[0] === selector) {\n const cssTextArrThird = cssTextArrSecond[1].split(\";\");\n cssTextArrThird.pop();\n let cssNameExists = false;\n for (let j = 0; j < cssTextArrThird.length; j++) {\n const 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(\";\")\n ? `${cssTextArrThird.join(\";\")};`\n : \"\";\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[\n i\n ] = `${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 = `${\n cssText + selector\n }{${cssName}:${cssValue};}`;\n } else {\n cssForThisElement.innerHTML = cssText;\n }\n }\n } else if (cssValue) {\n cssForThisElement.innerHTML = `${selector}{${cssName}:${cssValue};}`;\n } else {\n head.removeChild(cssForThisElement);\n }\n } else if (cssValue) {\n const 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 * Register section parts for sidebar\n *\n * @param {Array} sections an array of section names\n */\n registerSections(sections) {\n this.sections = {};\n this.previousSection = null;\n this.currentSection = null;\n if (!Array.isArray(sections)) {\n // eslint-disable-next-line no-param-reassign\n sections = [sections];\n }\n\n // eslint-disable-next-line array-callback-return\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.previousSection = this.currentSection;\n this.currentSection = sectionDataId;\n this.triggerSectionEvent(sectionDataId);\n\n const builderAdminContainer = document.querySelector(\"#wptb_builder\");\n\n if (builderAdminContainer) {\n builderAdminContainer.dataset.wptbActiveSection = this.currentSection;\n }\n\n // eslint-disable-next-line array-callback-return\n Object.keys(this.sections).map((k) => {\n if (Object.prototype.hasOwnProperty.call(this.sections, k)) {\n const visibility = sectionDataId === k ? displayType : \"none\";\n this.sections[k].style = `display: ${visibility} !important`;\n }\n });\n },\n /**\n * Get id of current active section.\n *\n * @return {string} active section id\n */\n getCurrentSection() {\n return this.currentSection;\n },\n /**\n * Get id of previous section.\n *\n * @return {string} previous section id\n */\n getPreviousSection() {\n return this.previousSection;\n },\n /**\n * Get current section from search parameter 'wptb-builder-section' of window location\n */\n getSectionFromUrl() {\n const parsedUrl = new URL(window.location.href);\n const urlSection = parsedUrl.searchParams.get(\"wptb-builder-section\");\n if (urlSection) {\n if (Object.keys(this.sections).some((key) => key === urlSection)) {\n this.activateSection(urlSection);\n }\n }\n },\n /**\n * Set up related buttons and links to trigger certain elements\n */\n setupSectionButtons() {\n const sectionButtons = Array.from(\n document.querySelectorAll(\"[data-wptb-section-button]\")\n );\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 WPTB_Helper.editActionClassRemove();\n });\n\n document.addEventListener(\"wptbSectionChanged\", (e) => {\n if (e.detail === sectionName) {\n s.classList.remove(\"disabled\");\n s.classList.add(\"active\");\n } else {\n s.classList.remove(\"active\");\n s.classList.add(\"disabled\");\n }\n });\n });\n },\n setupPanelToggleButtons() {\n const $ = jQuery;\n\n $(\".wptb-panel-toggle-group\").each(function () {\n const vm = $(this);\n $(this)\n .find(\".toggle-icon\")\n .click(() => {\n vm.find(\".wptb-panel-toggle-target\").slideToggle();\n vm.toggleClass(\"wptb-panel-toggle-content\");\n });\n });\n },\n /**\n * Trigger a section change event\n *\n * @param {string} sectionName section name\n */\n triggerSectionEvent(sectionName) {\n const sectionEvent = new CustomEvent(\"wptbSectionChanged\", {\n detail: sectionName,\n });\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(elementContainerClass) {\n const { head } = document;\n if (head) {\n const cssForThisElement = head.querySelector(\n `#styles-${elementContainerClass}`\n );\n\n if (cssForThisElement) {\n head.removeChild(cssForThisElement);\n }\n }\n },\n // function for copy all external CSS for the element\n externalCssStylesCopy(activeElement, copyElement) {\n if (activeElement) {\n const infArr = activeElement.className.match(/wptb-element-(.+)-(\\d+)/i);\n if (infArr && Array.isArray(infArr)) {\n const activeElemClass = infArr[0];\n\n const { head } = document;\n if (head) {\n const cssForActiveElement = head.querySelector(\n `#styles-${activeElemClass}`\n );\n\n if (cssForActiveElement) {\n const cssForNewElement = cssForActiveElement.cloneNode(true);\n\n cssForNewElement.removeAttribute(\"id\", `styles-${activeElemClass}`);\n\n const infArrCopyEl = copyElement.className.match(\n /wptb-element-(.+)-(\\d+)/i\n );\n if (infArrCopyEl && Array.isArray(infArrCopyEl)) {\n cssForNewElement.setAttribute(\"id\", `styles-${infArrCopyEl[0]}`);\n const cssForActiveElementInnerHTML =\n cssForActiveElement.innerHTML;\n const cssForNewElementInnerHTML = WPTB_Helper.replaceAll(\n cssForActiveElementInnerHTML,\n activeElemClass,\n infArrCopyEl[0]\n );\n cssForNewElement.innerHTML = cssForNewElementInnerHTML;\n head.appendChild(cssForNewElement);\n }\n }\n }\n }\n }\n },\n // function for convertation elements stiles in json\n elementsStylesConvertToObject() {\n const { head } = document;\n const stylesElements = head.querySelectorAll(\".styles-wptb-elements\");\n const stylesObj = {};\n for (let i = 0; i < stylesElements.length; i++) {\n const 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(jsonObject) {\n const { head } = document;\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 const stylesObj = JSON.parse(jsonObject);\n if (Object.keys(stylesObj).length != 0) {\n Object.keys(stylesObj).forEach(function (key) {\n const cssText = stylesObj[key];\n const 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\n getSanitizedHtml(html) {\n return DOMPurify.sanitize(html, {\n ADD_TAGS: [\"iframe\"],\n ADD_ATTR: [\"allow\", \"allowfullscreen\", \"frameborder\", \"src\"],\n FORBID_ATTR: [\"on*\"],\n FORBID_TAGS: [\"script\", \"style\", \"object\", \"embed\", \"link\"],\n })\n },\n\n sanitizeXSS() {\n document.querySelectorAll(\".wptb-custom-html-wrapper\").forEach((el) => {\n el.innerHTML = WPTB_Helper.getSanitizedHtml(el.innerHTML);\n });\n },\n // function for table saving\n saveTable(event, startSaving, previewSaving) {\n // show save indicator\n WPTB_Helper.tableSaveIndicator(true);\n\n if (!previewSaving && !startSaving) {\n if (\n (!event.target.dataset.wptbTableStateNumberSave &&\n window.wptbTableStateNumberShow == 0) ||\n window.wptbTableStateNumberShow ==\n event.target.dataset.wptbTableStateNumberSave\n ) {\n // return;\n }\n }\n\n if (!previewSaving) {\n const bar = document.querySelector(\".wptb-edit-bar\");\n if (bar && bar.classList.contains(\"visible\")) {\n const table = document.getElementsByClassName(\"wptb-preview-table\")[0];\n WPTB_Helper.toggleTableEditMode();\n }\n }\n\n // before save event trigger\n WPTB_Helper.wptbDocumentEventGenerate(\"wptb:save:before\", document);\n\n WPTB_Helper.sanitizeXSS();\n // clean any left over artifacts related to builder\n WPTB_Helper.tableClean();\n\n const http = new XMLHttpRequest();\n const url = `${\n wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl\n }?action=save_table`;\n const t = document.getElementById(\"wptb-setup-name\").value.trim();\n let messagingArea;\n let code;\n let 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 const codeClone = code.cloneNode(true);\n if (postId) {\n if (\n codeClone.classList.contains(\n \"wptb-element-main-table_setting-startedid-0\"\n )\n ) {\n codeClone.classList.remove(\n \"wptb-element-main-table_setting-startedid-0\"\n );\n codeClone.classList.add(`wptb-element-main-table_setting-${postId}`);\n const wptbTableSetup = document.querySelector(\".wptb-table-setup\");\n if (wptbTableSetup) {\n wptbTableSetup.innerHTML = \"\";\n wptbTableSetup.appendChild(codeClone);\n WPTB_Table();\n }\n paramIdsNecessaryChange = true;\n }\n }\n codeClone.columns = code.columns;\n code = WPTB_Stringifier(codeClone);\n } else {\n code = \"\";\n }\n\n if (!previewSaving) {\n datas = \"\";\n const datas_containers =\n 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(\n datas,\n \"tmpl-wptb-el-datas-main-table_setting-startedid-0\",\n `tmpl-wptb-el-datas-main-table_setting-${postId}`\n );\n\n datas = WPTB_Helper.replaceAll(\n datas,\n \"data-wptb-el-main-table_setting-startedid-0\",\n `data-wptb-el-main-table_setting-${postId}`\n );\n }\n }\n }\n }\n\n let styleObjJson = WPTB_Helper.elementsStylesConvertToObject();\n if (paramIdsNecessaryChange) {\n styleObjJson = WPTB_Helper.replaceAll(\n styleObjJson,\n \".wptb-element-main-table_setting-startedid-0\",\n `.wptb-element-main-table_setting-${postId}`\n );\n }\n\n if (t === \"\" && code === \"\") {\n let messagingAreaText = \"\";\n if (t === \"\")\n messagingAreaText +=\n \"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 if (previewSaving) {\n params.preview_saving = previewSaving;\n }\n\n if (postId) {\n params.id = postId;\n }\n\n // wptb save before event\n WPTB_Helper.wptbDocumentEventGenerate(\"wptb:save:before\", document, params);\n\n params = JSON.stringify(params);\n\n http.open(\"POST\", url, true);\n\n http.setRequestHeader(\"Content-type\", \"application/json; charset=utf-8\");\n\n http.onreadystatechange = function (action) {\n if (this.readyState == 4) {\n // hide save indicator\n WPTB_Helper.tableSaveIndicator(false);\n\n if (this.status == 200) {\n const 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 const regex = new RegExp(\"&table=(.+)\", \"i\");\n builderPageUrl = builderPageUrl.replace(regex, \"\");\n window.history.pushState(\n null,\n null,\n `${builderPageUrl}&table=${data[1]}`\n );\n\n document.wptbId = data[1];\n messagingArea.innerHTML = `<div class=\"wptb-success wptb-message\">Table \"${t}\" was successfully saved.</div>`;\n\n WPTB_NotificationManager.sendNotification({\n message: `Table ${t} was successfully saved.`,\n });\n document\n .getElementsByClassName(\"wptb-embed-btn\")[0]\n .classList.remove(\"wptb-button-disable\");\n\n // update centralized data registry with new table id\n WPTB_Store.commit(\"setTableId\", data[1]);\n\n // clear table dirty status\n new WPTB_TableStateSaveManager().tableStateClear();\n\n const wptbPreviewTable = document.querySelector(\n \".wptb-preview-table\"\n );\n let wptbPreviewBtn =\n 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 =\n 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 // WPTB_Helper.saveTable( event, true );\n return;\n }\n 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\n WPTB_NotificationManager.sendNotification({\n message: `Table ${t} was successfully saved.`,\n });\n document\n .getElementsByClassName(\"wptb-embed-btn\")[0]\n .classList.remove(\"wptb-button-disable\");\n document.getElementById(\n \"wptb-embed-shortcode\"\n ).value = `[wptb id=${data[1]}]`;\n const wptbPreviewTable = document.querySelector(\n \".wptb-preview-table\"\n );\n let wptbPreviewBtn =\n 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 =\n 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\n WPTB_NotificationManager.sendNotification({\n message: `Table ${t} was successfully updated.`,\n });\n event.target.dataset.wptbTableStateNumberSave =\n window.wptbTableStateNumberShow;\n\n new WPTB_TableStateSaveManager().tableStateClear();\n // @deprecated\n // let wptbSaveBtn = document.getElementsByClassName('wptb-save-btn');\n // if (wptbSaveBtn.length > 0) {\n // \twptbSaveBtn = wptbSaveBtn[0];\n // \twptbSaveBtn.classList.add('wptb-save-disabled');\n // \twptbSaveBtn.classList.remove('active');\n // }\n } else if (data[0] == \"preview_edited\") {\n return;\n } else {\n messagingArea.innerHTML =\n '<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 };\n\n http.send(params);\n },\n //\n clickOnFreeSpace() {\n WPTB_Helper.editActionClassRemove();\n // if current active section is responsive menu, ignore this functionality\n if (this.getCurrentSection() === \"table_responsive_menu\") {\n return;\n }\n\n const cellModeBackground = document.querySelector(\n \"#wptb-cell_mode_background\"\n );\n if (\n cellModeBackground &&\n cellModeBackground.classList.contains(\"visible\")\n ) {\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 const wpcdFixedToolbar = document.getElementById(\"wpcd_fixed_toolbar\");\n if (wpcdFixedToolbar.hasAttribute(\"data-toolbar-active-id\")) {\n document\n .getElementById(wpcdFixedToolbar.getAttribute(\"data-toolbar-active-id\"))\n .classList.remove(\"toolbar-active\");\n }\n const 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(dataAjaxData, element) {\n const http = new XMLHttpRequest();\n const url = `${\n wptb_admin_object ? wptb_admin_object.ajaxurl : ajaxurl\n }?action=wptb_element_ajax`;\n let element_name;\n const 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,\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 const 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(\n \"wptb-element:ajax-response\",\n element,\n detail\n );\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(close = false) {\n const bar = document.getElementsByClassName(\"wptb-edit-bar\");\n const cellModeBackground = document.getElementById(\n \"wptb-cell_mode_background\"\n );\n const leftScrollPanelCurtain = document.getElementById(\n \"wptb-left-scroll-panel-curtain\"\n );\n const leftScrollPanelCellSettings = document.getElementById(\n \"wptb-left-scroll-panel-cell-settings\"\n );\n let wptbPreviewTable =\n document.getElementsByClassName(\"wptb-preview-table\");\n if (wptbPreviewTable.length > 0) {\n wptbPreviewTable = wptbPreviewTable[0];\n }\n\n const builderPanel = document.querySelector(\".wptb-builder-panel\");\n\n if (bar.length > 0) {\n let toggleEditMode = \"\";\n for (let i = 0; i < bar.length; i++) {\n if (close) {\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(\n \"wptb-preview-table-manage-cells\"\n );\n const wptbPreviewTableTds =\n wptbPreviewTable.getElementsByTagName(\"td\");\n if (wptbPreviewTableTds.length > 0) {\n for (let i = 0; i < wptbPreviewTableTds.length; i++) {\n wptbPreviewTableTds[i].classList.remove(\"wptb-highlighted\");\n }\n }\n toggleEditMode = \"closed\";\n\n builderPanel.dataset.manageCellsActive = false;\n\n // @deprecated\n // WPTB_Helper.activateSection('elements');\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(\n \"wptb-preview-table-manage-cells\"\n );\n\n toggleEditMode = \"opened\";\n\n builderPanel.dataset.manageCellsActive = true;\n }\n }\n\n WPTB_Helper.wptbDocumentEventGenerate(\n `wp-table-builder/table-edit-mode/${toggleEditMode}`,\n wptbPreviewTable\n );\n }\n },\n\n /*\n * checking of dimension of value\n */\n checkingDimensionValue(value, dimension) {\n value = String(value);\n dimension = String(dimension);\n if (value && dimension) {\n const searchIndex = value.indexOf(dimension);\n if (searchIndex != -1 && searchIndex == value.length - dimension.length) {\n return true;\n }\n return false;\n }\n return false;\n },\n\n /*\n * if dimension is included - checking and if it necessary setting value\n * without dimension - return value\n */\n checkSetGetStyleSizeValue(element, styleName, computedStyleName, dimension) {\n let elemStyleValue = element.style[styleName];\n elemStyleValue = String(elemStyleValue);\n\n if (\n !elemStyleValue || dimension\n ? !WPTB_Helper.checkingDimensionValue(elemStyleValue, dimension)\n : false\n ) {\n const elementStyles = window.getComputedStyle(element);\n if (\n computedStyleName &&\n elementStyles.getPropertyValue(computedStyleName) &&\n dimension\n ? WPTB_Helper.checkingDimensionValue(\n elementStyles.getPropertyValue(computedStyleName),\n dimension\n )\n : true\n ) {\n if (!dimension) {\n return elementStyles.getPropertyValue(computedStyleName);\n }\n element.style[styleName] =\n elementStyles.getPropertyValue(computedStyleName);\n } else if (!dimension) {\n return false;\n } else {\n element.style[styleName] = null;\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(\n element,\n styleName,\n computedStyleName,\n set = false\n ) {\n let elemStyleColorValue = element.style[styleName];\n\n if (!elemStyleColorValue) {\n const elementStyles = window.getComputedStyle(element, null);\n\n if (elementStyles && elementStyles.getPropertyValue(computedStyleName)) {\n if (set) {\n elemStyleColorValue = WPTB_Helper.rgbToHex(\n elementStyles.getPropertyValue(computedStyleName)\n );\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 } else if (set) {\n element.style[styleName] = \"\";\n } else {\n return \"\";\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(element, styleName, computedStyleName, set = false) {\n const elemStyleColorValue = element.style[styleName];\n\n if (!elemStyleColorValue) {\n const elementStyles = window.getComputedStyle(element, null);\n\n if (elementStyles && elementStyles.getPropertyValue(computedStyleName)) {\n if (set) {\n element.style[styleName] =\n elementStyles.getPropertyValue(computedStyleName);\n } else {\n return elementStyles.getPropertyValue(computedStyleName);\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(arr) {\n if (arr && Array.isArray(arr)) {\n const check = {};\n let countEmpty = 0;\n for (let i = 0; i < arr.length; i++) {\n if (arr[i]) {\n if (check[arr[i]]) {\n check[arr[i]]++;\n } else {\n check[arr[i]] = 1;\n }\n } else {\n countEmpty++;\n }\n }\n\n let maxPropName;\n for (const key in check) {\n if (!maxPropName) {\n maxPropName = key;\n continue;\n } else if (check[maxPropName] < check[key]) {\n maxPropName = key;\n }\n }\n\n return check[maxPropName] >= countEmpty ? maxPropName : \"\";\n }\n },\n\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table.\n */\n recalculateIndexes(table) {\n WPTB_RecalculateIndexes(table);\n },\n\n /**\n * Table Rows colors reinstall\n *\n * @param table\n */\n tableRowsColorsReinstall(table) {\n if (table.rows.length) {\n const 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 const tableHeaderBackground = document.querySelector(\n `.wptb-el-main-table_setting-${tableIndex}-tableHeaderBackground`\n );\n if (tableHeaderBackground) {\n const details = { value: tableHeaderBackground.value };\n WPTB_Helper.wptbDocumentEventGenerate(\n \"controlColor:change\",\n tableHeaderBackground,\n details\n );\n }\n\n const tableEvenRowBackground = document.querySelector(\n `.wptb-el-main-table_setting-${tableIndex}-tableEvenRowBackground`\n );\n if (tableEvenRowBackground) {\n const details = { value: tableEvenRowBackground.value };\n WPTB_Helper.wptbDocumentEventGenerate(\n \"controlColor:change\",\n tableEvenRowBackground,\n details\n );\n }\n\n const tableOddRowBackground = document.querySelector(\n `.wptb-el-main-table_setting-${tableIndex}-tableOddRowBackground`\n );\n if (tableOddRowBackground) {\n const details = { value: tableOddRowBackground.value };\n WPTB_Helper.wptbDocumentEventGenerate(\n \"controlColor:change\",\n tableOddRowBackground,\n details\n );\n }\n }\n }\n },\n /**\n * Get parent html element of given type\n *\n * @param {string} parentType type of parent element\n * @param {HTMLElement} el current element\n * @return {*} html element of type\n */\n getParentOfType: (parentType, el) => {\n if (el.nodeName === parentType.toUpperCase()) {\n return el;\n }\n\n return WPTB_Helper.getParentOfType(parentType, el.parentElement);\n },\n // current relative type of drag element\n // this type is used on differentiating certain elements based on their positioning on table\n dragRelativeType: \"\",\n /**\n *\n * @param {string} val drag relative type\n */\n setDragRelativeType(val) {\n this.dragRelativeType = val;\n },\n // get drag relative type\n getDragRelativeType() {\n return this.dragRelativeType;\n },\n /**\n *\n * @param {HTMLElement} element\n * @param {string} styleName\n */\n getElementColorStylesHex(element, styleName) {\n let color = element.style[styleName];\n color = WPTB_Helper.rgbToHex(color);\n if (!WPTB_Helper.isHex(color)) {\n color = \"\";\n }\n return color;\n },\n /**\n * Show element controls on adding them to table.\n */\n showControlsOnElementMount() {\n document.addEventListener(\"element:mounted:dom\", function (e) {\n e.target.click();\n });\n },\n /**\n * Show elements list menu on left panel on removing element from table\n */\n showElementsListOnRemove() {\n document.addEventListener(\"element:removed:dom\", function () {\n WPTB_Helper.activateSection(\"elements\");\n });\n },\n /**\n * Block tiny MCE initialization and element selected activation for data cells for specific active sections.\n * Sections: Manage cells, background menu\n */\n blockTinyMCE() {\n const addBlocker = (parent) => {\n const blockerElement = document.createElement(\"div\");\n blockerElement.classList.add(\"wptb-plugin-blocker-element\");\n\n const haveChild = parent.childNodes.length > 0;\n parent.appendChild(blockerElement);\n\n // if don't have any children, then add before/after css element states to blocker in order to reflect table builder menu visuals\n if (!haveChild) {\n parent.classList.add(\"wptb-plugin-blocker-element-empty\");\n }\n };\n\n const removeBlocker = (parent) => {\n const blockerElement = parent.querySelector(\n \".wptb-plugin-blocker-element\"\n );\n if (blockerElement) {\n blockerElement.remove();\n }\n\n parent.classList.remove(\"wptb-plugin-blocker-element-empty\");\n };\n document.addEventListener(\"wptbSectionChanged\", ({ detail }) => {\n const table = document.querySelector(\n \".wptb-table-setup table.wptb-preview-table\"\n );\n if (table) {\n const cells = Array.from(table.querySelectorAll(\"td\"));\n\n cells.map(removeBlocker);\n\n const allowedSections = [\n \"manage_cells\",\n \"cell_settings\",\n \"background_menu\",\n ];\n if (allowedSections.includes(detail)) {\n cells.map(addBlocker);\n }\n }\n });\n\n document.addEventListener(\"wptb:save:before\", () => {\n const table = document.querySelector(\n \".wptb-table-setup table.wptb-preview-table\"\n );\n const cells = Array.from(table.querySelectorAll(\"td\"));\n\n cells.map(removeBlocker);\n });\n },\n /**\n * Setup for builder if called by gutenberg block.\n */\n calledByBlock() {\n const parsedUrl = new URL(window.location.href);\n const isCalledByBlock = parsedUrl.searchParams.get(\"gutenberg\");\n if (isCalledByBlock) {\n const closeButton = document.querySelector(\".wptb-plugin-header-close a\");\n\n closeButton.addEventListener(\n \"click\",\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const isTableClean = !WPTB_Store.getters.getTableDirtyStatus;\n\n const tableId = new URL(window.location.href).searchParams.get(\n \"table\"\n );\n\n if (!isTableClean) {\n const confirmResult = window.confirm(\n WPTB_Store.getTranslation(\"dirtyConfirmation\")\n );\n if (confirmResult) {\n WPTB_Helper.wptbDocumentEventGenerate(\n \"gutenbergClose\",\n document,\n tableId\n );\n }\n } else {\n WPTB_Helper.wptbDocumentEventGenerate(\n \"gutenbergClose\",\n document,\n tableId\n );\n }\n },\n { capture: true }\n );\n }\n },\n /**\n * Clean any builder related artifacts from table.\n */\n tableClean() {\n // remove any hover artifacts from table\n Array.from(document.querySelectorAll(\".wptb-directlyhovered\")).map((el) => {\n el.classList.remove(\"wptb-directlyhovered\");\n });\n\n // remove all data-placeholder from table\n // eslint-disable-next-line array-callback-return\n Array.from(document.querySelectorAll(\".wptb-text-container p\")).map(\n (el) => {\n el.removeAttribute(\"data-placeholder\");\n }\n );\n },\n /**\n * Setup table save related visual styles and elements.\n *\n * @param {boolean} saveStatus whether saving or not\n */\n tableSaveIndicator(saveStatus) {\n const builder = document.querySelector(\"#wptb_builder\");\n if (builder) {\n if (saveStatus) {\n builder.dataset.wptbSaving = true;\n } else {\n delete builder.dataset.wptbSaving;\n }\n }\n },\n /**\n * Get all plugin related tables on current document.\n *\n * @return {Array | HTMLTableElement | null } plugin tables, if there is only one a plugin table and null if none found\n */\n getPluginTables() {\n const availablePluginTables = Array.from(\n document.querySelectorAll(\"table.wptb-preview-table\")\n );\n\n if (availablePluginTables.length === 1) {\n return availablePluginTables[0];\n }\n if (availablePluginTables.length === 0) {\n return null;\n }\n\n return availablePluginTables;\n },\n};\n\nDOMPurify.addHook(\"uponSanitizeElement\", (node, data) => {\n if (node.tagName === \"IFRAME\") {\n const src = node.getAttribute(\"src\") || \"\";\n if (!/^https:\\/\\/(www\\.)?youtube\\.com\\/embed\\/[\\w-]+$/.test(src)) {\n node.parentNode.removeChild(node);\n }\n }\n});\n","var WPTB_Initializer = function () {\n\n const MIN_COLUMNS = 1,\n MIN_ROWS = 1,\n MAX_COLUMNS = 30,\n MAX_ROWS = 30;\n\n var tableGenerator = document.body;\n columnsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[0],\n columnsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[0],\n rowsDecrementButton = tableGenerator.getElementsByClassName('wptb-input-number-decrement')[1],\n rowsIncrementButton = tableGenerator.getElementsByClassName('wptb-input-number-increment')[1],\n columnsInput = document.getElementById('wptb-columns-number'),\n rowsInput = document.getElementById('wptb-rows-number');\n\n // columnsDecrementButton.onclick = function () {\n // if (columnsInput.value > MIN_COLUMNS) {\n // columnsInput.value--;\n // }\n // };\n //\n // columnsIncrementButton.onclick = function () {\n // if (columnsInput.value < MAX_COLUMNS) {\n // columnsInput.value++;\n // }\n // };\n //\n // rowsDecrementButton.onclick = function () {\n // if (rowsInput.value > MIN_ROWS) {\n // rowsInput.value--;\n // }\n // };\n //\n // rowsIncrementButton.onclick = function () {\n // if (rowsInput.value < MAX_ROWS) {\n // rowsInput.value++;\n // }\n // };\n\n // document.getElementById( 'wptb-generate-table' ).onclick = function ( ) {\n // var columns = document.getElementById('wptb-columns-number').value,\n // rows = document.getElementById('wptb-rows-number').value;\n //\n // //wptbTableStateSaveManager.tableStateClear();\n //\n // WPTB_Table(columns, rows);\n //\n // let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n // wptbTableStateSaveManager.tableStateSet();\n // }\n\n // register and setup section buttons\n WPTB_Helper.registerSections(['elements', 'table_settings', 'cell_settings', 'options_group' , 'table_responsive_menu', 'manage_cells', 'background_menu']);\n WPTB_Helper.setupSectionButtons();\n\n // activate elements section for startup\n WPTB_Helper.activateSection('elements');\n\n // side bar toggle setup\n WPTB_Helper.setupSidebarToggle('.wptb-panel-toggle-section .wptb-panel-drawer-icon');\n\n // setup panel sections that have the ability to be toggled on/off\n WPTB_Helper.setupPanelToggleButtons();\n\n // setup responsive menu both at left and builder panel\n new WptbResponsive('table_responsive_menu', 'wptbResponsiveApp', '.wptb-builder-content');\n\n // get builder section from url parameter for easy switch at page load\n WPTB_Helper.getSectionFromUrl();\n\n // automatically show element controls when dropped to table\n WPTB_Helper.showControlsOnElementMount();\n\n // show elements list menu on left panel on removing elements from table\n WPTB_Helper.showElementsListOnRemove();\n\n // block tinyMCE from activation at manage cells menu\n\tWPTB_Helper.blockTinyMCE();\n\n // initialize header toolbox\n new WPTB_HeaderToolbox('.wptb-plugin-header-toolbar').init();\n\n // redirect active menu to elements after closing manage cells menu\n document.addEventListener('wp-table-builder/table-edit-mode/closed', () => {\n WPTB_Helper.activateSection('elements');\n })\n\n WPTB_Helper.calledByBlock();\n\n // call what-is-new component\n WPTB_ControlsManager.callControlScript('WhatIsNew');\n\n // initialize notification manager\n WPTB_NotificationManager.init();\n\n // call table embed\n WPTB_ControlsManager.callControlScript('TableEmbed', 'wptb-embed-modal');\n\n\t// start up extra styles for builder and make connections to necessary hooks\n\tdocument.addEventListener('wptb:table:generated', () => {\n\t\tWPTB_ExtraStyles.applyStyles(WPTB_ExtraStyles.modes.builder);\n\n\t\t// subscribe to table settings changes to update extra styles\n\t\tWPTB_ControlsManager.subscribeToControl(\n\t\t\t'extraStyles',\n\t\t\t'extraTableStyles',\n\t\t\t() => {\n\t\t\t\tWPTB_ExtraStyles.applyStyles(WPTB_ExtraStyles.modes.builder);\n\t\t\t},\n\t\t\ttrue\n\t\t);\n\t});\n\n // call table embed\n WPTB_ControlsManager.callControlScript('SaveButton', 'saveButton');\n WPTB_ControlsManager.callControlScript('SwitchButton', 'switchButton');\n\n // @deprecated\n // // add scroll operation calculations to window\n // new WPTB_RowMove().attachScrollOperationCalculations();\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\r\n document.querySelector('#wptb-left-scroll-panel-curtain .wptb-table-edit-mode-close').addEventListener('click', () => {\r\n WPTB_Helper.toggleTableEditMode(true);\r\n })\r\n\r\n document.addEventListener('wptbSectionChanged', ({detail}) => {\r\n if(detail === 'manage_cells'){\r\n const wptbTablesEditModeCloseButtons = Array.from(document.querySelectorAll( '.wptb-management_table_container .wptb-table-edit-mode-close' ));\r\n wptbTablesEditModeCloseButtons.map(closeButton => {\r\n closeButton.addEventListener('click', () => {\r\n WPTB_Helper.toggleTableEditMode(true);\r\n })\r\n })\r\n }\r\n })\r\n };\r\n\r\n // this code hides the \"element parameters\" area\r\n // when clicked outside this element and its \"tinymce\" toolbar \r\n let wptbBuilderPanel = document.getElementsByClassName( 'wptb-builder-panel' )[0];\r\n wptbBuilderPanel.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 if(WPTB_Helper.currentSection !== 'manage_cells'){\r\n\r\n WPTB_Helper.clickOnFreeSpace();\r\n }\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};","(function UMD(key, context, factory) {\n\tif (typeof module !== 'undefined' && typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tcontext[key] = factory();\n\t}\n\t// eslint-disable-next-line no-restricted-globals\n})('WPTB_Logger', self || global, () => {\n\tconst format = '%c WP Table Builder %c {message} ';\n\tconst brandStyle =\n\t\t'border-radius:5px 0 0 5px; background-color: #3299D1; padding: 3px; color: #FFF; font-weight: bold;';\n\tconst messageStyle = 'background-color: {bgColor} ; padding: 3px; color: #FFF; border-radius: 0 5px 5px 0;';\n\n\t/**\n\t * Background colors for message.\n\t *\n\t * Add color property keys keeping in mind that internal function to use that colors will select them based on type of message, ie 'normal' color property for normal messages and 'error' color property for error message types.\n\t *\n\t * @type {Object}\n\t */\n\tconst bgColors = {\n\t\tnormal: '#48BB78',\n\t};\n\n\treturn {\n\t\t/**\n\t\t * Prepare format for incoming message.\n\t\t *\n\t\t * @param {string} message message to be used\n\t\t * @return {string} prepared message\n\t\t */\n\t\tprepareMessage(message) {\n\t\t\treturn format.replace('{message}', message);\n\t\t},\n\t\t/**\n\t\t * Prepare style of message.\n\t\t *\n\t\t * @param {string} messageType message type\n\t\t * @return {string} prepared style\n\t\t */\n\t\tprepareMessageStyle(messageType = 'normal') {\n\t\t\tlet keyName = 'normal';\n\n\t\t\tif (bgColors[messageType]) {\n\t\t\t\tkeyName = messageType;\n\t\t\t}\n\n\t\t\treturn messageStyle.replace('{bgColor}', bgColors[keyName]);\n\t\t},\n\t\t/**\n\t\t * Normal log function.\n\t\t *\n\t\t * @param {string} message message string\n\t\t */\n\t\tlog(message) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.log(this.prepareMessage(message), brandStyle, this.prepareMessageStyle('normal'));\n\t\t},\n\t};\n});\n","var MultipleSelect = function () {\n\n\tvar selectedCells = [],\n\t\tmultipleCellMode = false;\n\n\tthis.activateMultipleSelectMode = function () {\n\t\tselectedCells = [];\n\t\tvar tds = document.getElementsByClassName('wptb-preview-table')[0].getElementsByTagName('td');\n\t\tfor (var i = 0; i < tds.length; i++) {\n\t\t\ttds[i].classList.remove('wptb-highlighted');\n\t\t}\n\t\tmultipleCellMode = true;\n\t}\n\n\tthis.deactivateMultipleSelectMode = function () {\n\t\tmultipleCellMode = false;\n\t}\n\n\tthis.isActivated = function () {\n\t\treturn multipleCellMode;\n\t}\n\n\tthis.pushSelectedCell = function (cell) {\n\t\tif (!multipleCellMode) {\n\t\t\treturn;\n\t\t}\n\t\tselectedCells.push(cell);\n\t\tcell.classList.add('wptb-highlighted');\n\t};\n\n\tthis.selectedCells = function () {\n\t\treturn selectedCells;\n\t}\n\n\tthis.flushSelectedCells = function () {\n\t\tselectedCells = [];\n\t}\n\n\tthis.getFirst = function () {\n\t\tvar minXIndex = 1000, minYIndex = 1000, first;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (minXIndex >= selectedCells[i].dataset.xIndex\n\t\t\t\t&& minYIndex >= selectedCells[i].dataset.yIndex) {\n\t\t\t\tfirst = selectedCells[i];\n\t\t\t\tminXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tminYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn first;\n\t}\n\n\tthis.getLast = function () {\n\t\tvar maxXIndex = -1, maxYIndex = -1, last;\n\t\tfor (var i = selectedCells.length - 1; i >= 0; i--) {\n\t\t\tif (maxXIndex <= selectedCells[i].dataset.xIndex\n\t\t\t\t&& maxYIndex <= selectedCells[i].dataset.yIndex) {\n\t\t\t\tlast = selectedCells[i];\n\t\t\t\tmaxXIndex = selectedCells[i].dataset.xIndex;\n\t\t\t\tmaxYIndex = selectedCells[i].dataset.yIndex;\n\t\t\t}\n\t\t}\n\t\treturn last;\n\t}\n\n\tthis.removeAllButFirst = function () {\n\t\tvar td = this.getFirst();\n\t\tfor (var i = 1; i < selectedCells.length; i++) {\n\t\t\tselectedCells[i].classList.add('wptb-fused-cell-' + td.dataset.xIndex + '-' + td.dataset.yIndex);\n\t\t}\n\t}\n\n\treturn this;\n\n};","/**\n * Builder notification manager.\n */\n(function assignToGlobal(key, context, factory) {\n\t// eslint-disable-next-line no-param-reassign\n\tcontext[key] = factory();\n\t// eslint-disable-next-line no-restricted-globals\n})('WPTB_NotificationManager', self || global, () => {\n\t// key for making sure notification manager is initialized only once\n\tlet initialized = false;\n\n\t// store will be populated with flux store implementation by ui components\n\tthis.store = null;\n\n\t// mount id to mount our dev tool\n\tconst devToolMountId = 'wptbNotificationManagerDevTool';\n\n\t/**\n\t * Builder notification manager class.\n\t *\n\t * @class\n\t */\n\t// eslint-disable-next-line camelcase\n\tfunction WPTB_NotificationManager() {\n\t\t/**\n\t\t * Valid notification types.\n\t\t *\n\t\t * It will be populated on initialization with the values from notification manager flux store.\n\t\t *\n\t\t * @type {Object} notification types\n\t\t */\n\t\tthis.types = {};\n\n\t\t// eslint-disable-next-line no-restricted-globals\n\t\tconst context = self || global;\n\n\t\t// eslint-disable-next-line no-undef\n\t\tconst managerData = context.wptb_admin_object?.notificationManager;\n\n\t\t/**\n\t\t * Create single notification object.\n\t\t *\n\t\t * @param {Object} options notification options\n\t\t * @return {Object} notification object\n\t\t */\n\t\tconst createNotificationObject = (options) => {\n\t\t\tconst { defaults } = this.store.getters;\n\n\t\t\t// merge only keys that is available in defaults to prevent non notification related properties to be sent to component\n\t\t\tconst parsedOptions = Object.keys(options).reduce((carry, key) => {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(options, key)) {\n\t\t\t\t\tif (defaults[key]) {\n\t\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\t\tcarry[key] = options[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn carry;\n\t\t\t}, {});\n\n\t\t\treturn { ...defaults, ...parsedOptions };\n\t\t};\n\n\t\t/**\n\t\t * Send a notification to builder ui.\n\t\t *\n\t\t * Use a valid type that is defined inside types property of notification manager.\n\t\t *\n\t\t * @param {Object} notificationOptions notification options, available properties are message, type, queue, reveal,dismiss\n\t\t *\n\t\t */\n\t\tthis.sendNotification = (notificationOptions) => {\n\t\t\t// send action to store\n\t\t\tthis.store.dispatch('addNotification', createNotificationObject(notificationOptions));\n\t\t};\n\n\t\t// prepare mount point for dev tool\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tconst addDevToolsToDOM = () => {\n\t\t\tconst builderElement = document.querySelector('.wptb-builder-panel');\n\n\t\t\tif (builderElement) {\n\t\t\t\tconst devToolMountPoint = document.createElement('div');\n\t\t\t\tdevToolMountPoint.setAttribute('id', devToolMountId);\n\t\t\t\tbuilderElement.appendChild(devToolMountPoint);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Initialize and setup notification manager.\n\t\t */\n\t\tthis.init = () => {\n\t\t\tif (!initialized) {\n\t\t\t\t// assign server sent notification data to control manager so that our compiled vue code can read it\n\t\t\t\tWPTB_ControlsManager.setControlData('NotificationManager', managerData);\n\n\t\t\t\t// call notification related components\n\t\t\t\tWPTB_ControlsManager.callControlScript('NotificationManager', 'NotificationManager');\n\n\t\t\t\t// assign notification types from store\n\t\t\t\tthis.notificationTypes = this.store.getters.notificationTypes;\n\t\t\t\t// assign queue types from store\n\t\t\t\tthis.queueTypes = this.store.getters.queueTypes;\n\t\t\t\t// assign reveal types from store\n\t\t\t\tthis.revealTypes = this.store.getters.revealTypes;\n\t\t\t\t// assign dismiss types from store\n\t\t\t\tthis.dismissTypes = this.store.getters.dismissTypes;\n\n\t\t\t\t// // add dev tool mount point to DOM\n\t\t\t\t// addDevToolsToDOM();\n\t\t\t\t//\n\t\t\t\t// // data for dev tool\n\t\t\t\t// const devToolsData = {\n\t\t\t\t// \ttypes: this.notificationTypes,\n\t\t\t\t// \tqueue: this.queueTypes,\n\t\t\t\t// \treveal: this.revealTypes,\n\t\t\t\t// \tdismiss: this.dismissTypes,\n\t\t\t\t// \tsendNotification: this.sendNotification.bind(this),\n\t\t\t\t// \tmountId: devToolMountId,\n\t\t\t\t// };\n\t\t\t\t//\n\t\t\t\t// // assign dev tool data\n\t\t\t\t// WPTB_ControlsManager.setControlData('NotificationManagerDevTool', devToolsData);\n\t\t\t\t//\n\t\t\t\t// // call dev tool related components\n\t\t\t\t// WPTB_ControlsManager.callControlScript('NotificationManagerDevTool', 'NotificationManagerDevTool');\n\n\t\t\t\t// initialization process completed\n\t\t\t\tinitialized = true;\n\t\t\t}\n\t\t};\n\t}\n\n\t// return singleton manager instance to global context to assign\n\treturn new WPTB_NotificationManager();\n});\n","/* eslint-disable */\nvar WPTB_Parser = function (code) {\n let div = document.createElement(\"div\");\n div.innerHTML = code;\n\n let table = div.children[0];\n let columnTitleMobile = [\n ...table.querySelectorAll(\".wptb-column-title-mobile-container\"),\n ];\n\n for (let i = 0; i < columnTitleMobile.length; i++) {\n let parent = columnTitleMobile[i].parentNode;\n parent.removeChild(columnTitleMobile[i]);\n }\n\n const LAST_ID = {\n text: 597,\n image: 1,\n list: 1,\n button: 1,\n shortcode: 1,\n starRating: 1,\n customHTML: 1,\n circleRating: 1,\n icon: 1,\n textIcon: 1,\n ribbon: 1,\n badge: 1,\n styledList: 1,\n progressBar: 1,\n };\n\n const WPTB_BlockFixer = {\n text(el) {\n if (!el.classList.contains(\"wptb-text-container\")) {\n return;\n }\n\n const newClassName = \"wptb-element-text-\" + LAST_ID.text++;\n el.className = el.className?.replace(/\\s?wptb-element-text-([0-9]+)/, \"\");\n el.classList.add(newClassName);\n },\n\n image(el) {\n if (!el.classList.contains(\"wptb-image-container\")) {\n return;\n }\n const newClassName = \"wptb-element-image-\" + LAST_ID.image++;\n el.className = el.className?.replace(\n /\\s?wptb-element-image-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n button(el) {\n if (!el.classList.contains(\"wptb-button-container\")) {\n return;\n }\n\n const newClassName = \"wptb-element-button-\" + LAST_ID.button++;\n el.className = el.className?.replace(\n /\\s?wptb-element-button-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n list(el) {\n if (!el.classList.contains(\"wptb-list-container\")) {\n return;\n }\n const newClassName = \"wptb-element-list-\" + LAST_ID.list++;\n el.className = el.className?.replace(/\\s?wptb-element-list-([0-9]+)/, \"\");\n el.classList.add(newClassName);\n },\n\n starRating(el) {\n if (!el.classList.contains(\"wptb-star_rating-container\")) {\n return;\n }\n\n const newClassName = \"wptb-element-star_rating-\" + LAST_ID.starRating++;\n el.className = el.className?.replace(\n /\\s?wptb-element-star_rating-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n html(el) {\n if (!el.classList.contains(\"wptb-custom_html-container\")) {\n return;\n }\n\n const newClassName = \"wptb-element-custom_html-\" + LAST_ID.customHTML++;\n el.className = el.className?.replace(\n /\\s?wptb-element-custom_html-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n shortCode(el) {\n if (!el.classList.contains(\"wptb-shortcode-container\")) {\n return;\n }\n\n const newClassName = \"wptb-element-shortcode-\" + LAST_ID.shortcode++;\n el.className = el.className?.replace(\n /\\s?wptb-element-shortcode-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n circleRating(el) {\n if (!el.classList.contains(\"wptb-circle_rating-container\")) {\n return;\n }\n const newClassName =\n \"wptb-element-circle_rating-\" + LAST_ID.circleRating++;\n el.className = el.className?.replace(\n /\\s?wptb-element-circle_rating-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n icon(el) {\n if (!el.classList.contains(\"wptb-icon-container\")) {\n return;\n }\n\n const newClassName = \"wptb-element-icon-\" + LAST_ID.icon++;\n el.className = el.className?.replace(/\\s?wptb-element-icon-([0-9]+)/, \"\");\n el.classList.add(newClassName);\n },\n\n ribbon(el) {\n if (!el.classList.contains(\"wptb-ribbon_element-container\")) {\n return;\n }\n\n const newClassName = \"wptb-element-ribbon_element-\" + LAST_ID.ribbon++;\n el.className = el.className?.replace(\n /\\s?wptb-element-ribbon_element-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n styledList(el) {\n if (!el.classList.contains(\"wptb-styled_list-container\")) {\n return;\n }\n\n const newClassName = \"wptb-element-styled_list-\" + LAST_ID.styledList++;\n el.className = el.className?.replace(\n /\\s?wptb-element-styled_list-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n textIcon(el) {\n if (!el.classList.contains(\"wptb-text_icon_element-container\")) {\n return;\n }\n\n const newClassName =\n \"wptb-element-text_icon_element-\" + LAST_ID.textIcon++;\n el.className = el.className?.replace(\n /\\s?wptb-element-text_icon_element-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n progressBar(el) {\n if (!el.classList.contains(\"wptb-progress_bar-container\")) {\n return;\n }\n\n const newClassName = \"wptb-element-progress_bar-\" + LAST_ID.progressBar++;\n el.className = el.className?.replace(\n /\\s?wptb-element-progress_bar-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\n\n badge(el) {\n if (!el.classList.contains(\"wptb-badge-container\")) {\n return;\n }\n const newClassName = \"wptb-element-badge-\" + LAST_ID.badge++;\n el.className = el.className?.replace(\n /\\s?wptb-element-badge-([0-9]+)/,\n \"\"\n );\n el.classList.add(newClassName);\n },\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 const blocks = tds[i].children;\n for (let j = 0; j < blocks.length; j++) {\n WPTB_BlockFixer.text(blocks[j]);\n WPTB_BlockFixer.button(blocks[j]);\n WPTB_BlockFixer.image(blocks[j]);\n WPTB_BlockFixer.list(blocks[j]);\n WPTB_BlockFixer.starRating(blocks[j]);\n WPTB_BlockFixer.html(blocks[j]);\n WPTB_BlockFixer.shortCode(blocks[j]);\n \n WPTB_BlockFixer.circleRating(blocks[j]);\n WPTB_BlockFixer.icon(blocks[j]);\n WPTB_BlockFixer.ribbon(blocks[j]);\n WPTB_BlockFixer.styledList(blocks[j]);\n WPTB_BlockFixer.textIcon(blocks[j]);\n WPTB_BlockFixer.progressBar(blocks[j]);\n WPTB_BlockFixer.badge(blocks[j]);\n }\n }\n\n return table;\n};\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}","const WPTB_RecalculateIndexes = function (table) {\n let trs = table.getElementsByTagName( 'tr' ),\n tds, maxCols = 0, maxColsFull = 0, tdsArr = [];\n\n for ( let i = 0; i < trs.length; i++ ) {\n tds = trs[i].getElementsByTagName( 'td' );\n\n if ( tdsArr[i] == undefined ) {\n tdsArr[i] = [];\n }\n\n let jMainIter = 0;\n for ( let j = 0; j < tds.length; j++ ) {\n if ( tdsArr[i][j] != undefined ) {\n for ( let y = 0; y < 100; y++ ) {\n if ( tdsArr[i][jMainIter] != undefined ) {\n jMainIter++;\n continue;\n }\n tdsArr[i][jMainIter] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n break;\n }\n } else {\n tdsArr[i][j] = tds[j];\n tds[j].dataset.xIndex = jMainIter;\n }\n tds[j].dataset.yIndex = i;\n\n if ( tds[j].colSpan > 1 ) {\n for ( let k = 1; k < tds[j].colSpan; k++ ) {\n jMainIter++;\n tdsArr[i][jMainIter] = 'tdDummy';\n }\n }\n\n if ( tds[j].rowSpan > 1 ) {\n for ( let x = 1; x < tds[j].rowSpan; x++ ) {\n if ( tdsArr[i + x] == undefined ) {\n tdsArr[i + x] = [];\n }\n for ( let z = 0; z < tds[j].colSpan; z++ ) {\n tdsArr[i + x][jMainIter - tds[j].colSpan + 1 + z ] = 'tdDummy';\n }\n }\n }\n jMainIter++;\n }\n\n if ( tds.length > maxCols ) {\n maxCols = tds.length;\n }\n\n if( i == 0 ) {\n maxColsFull = jMainIter;\n }\n }\n table.columns = maxCols;\n table.maxCols = maxColsFull;\n}\n","/**\n * Responsive menu and options class.\n *\n * This class will be called and instanced at table builder menu to add it the responsive menu and its controls.\n *\n * @param {string} sectionName section name\n * @param {string} responsiveWrapperId id for mount point\n * @param {string} mainContainerQuery query to find parent container for responsive menu\n * @throws {Error} will throw an error if mainContainerQuery failed to find any element\n * @constructor\n */\n// eslint-disable-next-line no-unused-vars\nfunction WptbResponsive(sectionName, responsiveWrapperId, mainContainerQuery) {\n\tthis.sectionName = sectionName;\n\tthis.responsiveWrapperId = responsiveWrapperId;\n\tthis.responsiveTable = null;\n\tthis.loaded = false;\n\n\t/**\n\t * Add responsive container to dom.\n\t */\n\tthis.addContainerToDom = () => {\n\t\tconst responsiveContainer = document.querySelector(`#${this.responsiveWrapperId}`);\n\t\tif (!responsiveContainer) {\n\t\t\tconst mainContainer = document.querySelector(mainContainerQuery);\n\n\t\t\t// parent container not found, throw error\n\t\t\tif (!mainContainer) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`[WPTB_Responsive]: no parent container is found with the given query of [${mainContainerQuery}]`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst range = document.createRange();\n\t\t\trange.setStart(mainContainer, 0);\n\n\t\t\tconst responsiveElement = range.createContextualFragment(\n\t\t\t\t`<div class=\"wptb-responsive\" id=\"${this.responsiveWrapperId}\">responsive element</div>`\n\t\t\t);\n\t\t\tmainContainer.appendChild(responsiveElement);\n\t\t\tthis.loaded = true;\n\t\t}\n\n\t\tthis.responsiveTable = document.querySelector(`#${this.responsiveWrapperId}`);\n\t};\n\n\t/**\n\t * Load and make necessary mount preparations for component.\n\t */\n\tthis.load = () => {\n\t\tif (!this.loaded) {\n\t\t\tthis.addContainerToDom();\n\n\t\t\tWPTB_Helper.elementStartScript(this.responsiveTable, 'table_responsive_menu');\n\t\t\tWPTB_Helper.elementOptionsSet('table_responsive_menu', this.responsiveTable);\n\t\t\tWPTB_ControlsManager.callControlScript('ResponsiveTable', this.responsiveWrapperId);\n\t\t}\n\t};\n\n\t/**\n\t * Startup hook for the component.\n\t */\n\tthis.startUp = () => {\n\t\t// event listener for section change events\n\t\tdocument.addEventListener('wptbSectionChanged', (e) => {\n\t\t\tconst tablePreview = document.querySelector('.wptb-table-setup .wptb-preview-table');\n\n\t\t\t// check if activated section is related to responsive and there is a main table already in the view\n\t\t\tif (e.detail === this.sectionName && tablePreview) {\n\t\t\t\tthis.load();\n\t\t\t}\n\t\t});\n\n\t\t// event listener for table ready signal\n\t\tdocument.addEventListener('wptb:table:generated', () => {\n\t\t\t// check current section to be sure that responsive menu is the active one before calling load related scripts\n\t\t\tif (WPTB_Helper.getCurrentSection() === 'table_responsive_menu') {\n\t\t\t\tthis.load();\n\t\t\t}\n\t\t});\n\t};\n\n\tthis.startUp();\n}\n","var WPTB_Settings = function () {\n var elems = document.getElementsByClassName('wptb-element');\n\n for ( var i = 0; i < elems.length; i++ ) {\n elems[i].ondragstart = function ( event ) {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData( 'wptbElement', event.target.dataset.wptbElement );\n event.dataTransfer.setData( 'wptbElIndic-' + event.target.dataset.wptbElement, 'wptbElIndic-' + event.target.dataset.wptbElement );\n\n // set drag relative helper field for future use\n WPTB_Helper.setDragRelativeType(this.dataset.wptbRelativeElements || '');\n }\n elems[i].ondragend = function () {\n WPTB_Helper.elementDragEndClear();\n }\n };\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n let wptbUndo = document.getElementsByClassName( 'wptb-undo' );\n if( wptbUndo.length > 0 ) {\n wptbUndo = wptbUndo[0];\n\n wptbUndo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n }\n }\n }\n }\n }\n\n let wptbRedo = document.getElementsByClassName( 'wptb-redo' );\n if( wptbRedo.length > 0 ) {\n wptbRedo = wptbRedo[0];\n\n wptbRedo.onclick = function( event ) {\n if( ! this.classList.contains( 'wptb-undoredo-disabled' ) ) {\n wptbTableStateSaveManager.tableStateGet( this.dataset.wptbUndoredo );\n let wptbUndoRedoContainer = document.getElementsByClassName( 'wptb-undo-redo-container' );\n if(wptbUndoRedoContainer.length > 0) {\n wptbUndoRedoContainer = wptbUndoRedoContainer[0];\n wptbUndoRedoContainer.onmouseleave = function( event ) {\n event.target.onmouseleave = '';\n let table = document.querySelector( '.wptb-preview-table' );\n WPTB_Table();\n }\n }\n }\n\n }\n }\n\n // @deprecated\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 // show modal window for shortcode embed\n WPTB_Store.commit('embed/showModal');\n }\n }\n\n // window beforeunload event callback\n window.onbeforeunload = function(e) {\n return WPTB_Store.getters.getTableDirtyStatus? true : null;\n };\n\n\n document.getElementsByClassName( 'wptb-popup-dark-area' )[0].onclick = function () {\n shortcodePopupWindow.classList.remove( 'wptb-popup-show' );\n }\n\n // @deprecated\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 // @deprecated\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","/**\n * Responsive class assignment for frontend operations.\n *\n * This file can be used as an UMD.\n */\n(function assignToGlobal(key, context, factory) {\n\tif (typeof exports === 'object' && typeof module !== 'undefined') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tcontext[key] = factory();\n\t}\n\t// eslint-disable-next-line no-restricted-globals\n})('WPTB_SortableTable', self || global, () => {\n\tfunction WPTB_SortTable(options = {}) {\n\t\tconst table = (this.table = options.table);\n\t\tWPTB_RecalculateIndexes(table);\n\t\tconst thisObject = this;\n\t\tthis.itemsPerHeader = 0;\n\t\tthis.tableMaxCols = table.maxCols;\n\t\tthis.cellsStylesScheme = {};\n\t\tthis.rowsStylesScheme = {};\n\n\t\t/**\n\t\t * sets the table to sort mode\n\t\t *\n\t\t * @param {string} type\n\t\t * @param {boolean} active\n\t\t * @param {number} number\n\t\t */\n\t\tthis.sortModeSwitcher = function (type, active) {\n\t\t\tif(active) {\n\t\t\t\tthis.sortModeSwitcher('horizontal', false);\n\t\t\t\tthis.sortModeSwitcher('vertical', false);\n\t\t\t}\n\n\t\t\tif (type === 'vertical') {\n\t\t\t\tthis.table.removeEventListener('click', this.sortableTableVerticalStart, false);\n\n\t\t\t\tif (active) {\n\t\t\t\t\tthis.sortingCellMouseMoveSwitcher('vertical', true);\n\t\t\t\t\tthis.table.addEventListener('click', this.sortableTableVerticalStart, false);\n\t\t\t\t\tthis.table.dataset.wptbSortableTableVertical = '1';\n\t\t\t\t\tthis.createTableElementsStylesScheme('td');\n\t\t\t\t\tthis.createTableElementsStylesScheme('tr');\n\t\t\t\t} else {\n\t\t\t\t\tthis.sortingCellMouseMoveSwitcher('vertical', false);\n\t\t\t\t\tdelete this.table.dataset.wptbSortableTableVertical;\n\t\t\t\t}\n\t\t\t} else if (type === 'horizontal') {\n\t\t\t\tthis.table.removeEventListener('click', this.sortableTableHorizontalStart, false);\n\n\t\t\t\tif (active) {\n\t\t\t\t\tthis.sortingCellMouseMoveSwitcher('horizontal', true);\n\t\t\t\t\tthis.table.addEventListener('click', this.sortableTableHorizontalStart, false);\n\t\t\t\t\tthis.table.dataset.wptbSortableTableHorizontal = '1';\n\t\t\t\t\tthis.createTableElementsStylesScheme('td');\n\t\t\t\t\tthis.createTableElementsStylesScheme('tr');\n\t\t\t\t} else {\n\t\t\t\t\tthis.sortingCellMouseMoveSwitcher('horizontal', false);\n\t\t\t\t\tdelete this.table.dataset.wptbSortableTableHorizontal;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * changes table object for old reconstruction table type\n\t\t *\n\t\t * @param {boolean}start\n\t\t * @returns {*}\n\t\t */\n\t\tthis.tableObjectChange = function (start = true) {\n\t\t\tif(this.table.classList.contains('wptb-mobile-view-active') && start) {\n\t\t\t\tthis.table = table.parentNode.parentNode.querySelector('.wptb-preview-table-mobile');\n\t\t\t} else if(this.table.classList.contains('wptb-preview-table-mobile') && !start) {\n\t\t\t\tthis.table = table.parentNode.querySelector('.wptb-preview-table');\n\t\t\t}\n\t\t\treturn this.table;\n\t\t}\n\n\t\t/**\n\t\t * fills the object with data about cell styles for all locations (create scheme)\n\t\t *\n\t\t * @param elemSelector\n\t\t */\n\t\tthis.createTableElementsStylesScheme = function (elemSelector) {\n\t\t\tthis.tableObjectChange();\n\t\t\tlet elements = this.table.querySelectorAll(elemSelector);\n\t\t\tif(elements.length) {\n\t\t\t\tfor(let i = 0; i < elements.length; i++) {\n\t\t\t\t\tlet elem = elements[i];\n\t\t\t\t\tlet cellFullStyleObj = window.getComputedStyle(elem, null);\n\t\t\t\t\tlet backgroundColor = cellFullStyleObj.getPropertyValue( 'background-color' );\n\t\t\t\t\tlet objectKey = '';\n\t\t\t\t\tif(elemSelector === 'td') {\n\t\t\t\t\t\tobjectKey = elem.dataset.xIndex + '-' + elem.dataset.yIndex;\n\t\t\t\t\t\tthis.cellsStylesScheme[objectKey] = {backgroundColor};\n\t\t\t\t\t} else if(elemSelector === 'tr') {\n\t\t\t\t\t\tobjectKey = String(i);\n\t\t\t\t\t\tthis.rowsStylesScheme[objectKey] = {backgroundColor};\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.tableObjectChange(false);\n\t\t}\n\n\t\t/**\n\t\t * applies saved cell styles data to all cells\n\t\t *\n\t\t * @param elemSelector\n\t\t */\n\t\tthis.reassignElementsStyles = function (elemSelector) {\n\t\t\tthis.tableObjectChange();\n\t\t\tlet elements = this.table.querySelectorAll(elemSelector);\n\t\t\tlet elementsStylesScheme;\n\t\t\tif(elemSelector === 'td') {\n\t\t\t\telementsStylesScheme = this.cellsStylesScheme;\n\t\t\t} else if(elemSelector === 'tr') {\n\t\t\t\telementsStylesScheme = this.rowsStylesScheme;\n\t\t\t}\n\t\t\tif(elements.length) {\n\t\t\t\tfor(let i = 0; i < elements.length; i++) {\n\t\t\t\t\tlet elem = elements[i];\n\t\t\t\t\tlet objectKey = '';\n\t\t\t\t\tif(elemSelector === 'td') {\n\t\t\t\t\t\tobjectKey = elem.dataset.xIndex + '-' + elem.dataset.yIndex;\n\t\t\t\t\t} else if(elemSelector === 'tr') {\n\t\t\t\t\t\tobjectKey = i;\n\t\t\t\t\t}\n\t\t\t\t\tif(elementsStylesScheme.hasOwnProperty(objectKey)) {\n\t\t\t\t\t\tlet elemStyles = elementsStylesScheme[objectKey];\n\t\t\t\t\t\tfor(let key in elemStyles) {\n\t\t\t\t\t\t\telem.style[key] = elemStyles[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.tableObjectChange(false);\n\t\t}\n\n\t\t/**\n\t\t * checks whether the table should be in the sort state\n\t\t * and connects the necessary handlers\n\t\t *\n\t\t * @param {object} responsiveFront\n\t\t */\n\t\tthis.sortableTableInitialization = function (responsiveFront) {\n\t\t\tlet typeFirst;\n\t\t\tlet typeSecond;\n\t\t\tif (this.table.dataset.wptbSortableTableVertical && this.table.dataset.wptbSortableTableVertical === '1') {\n\t\t\t\ttypeFirst = 'vertical';\n\t\t\t\ttypeSecond = 'horizontal';\n\t\t\t} else if (\n\t\t\t\tthis.table.dataset.wptbSortableTableHorizontal &&\n\t\t\t\tthis.table.dataset.wptbSortableTableHorizontal === '1'\n\t\t\t) {\n\t\t\t\ttypeFirst = 'horizontal';\n\t\t\t\ttypeSecond = 'vertical';\n\t\t\t}\n\n\t\t\tif(!typeFirst || typeof typeFirst !== 'string' || !typeSecond || typeof typeSecond !== 'string') return;\n\n\t\t\tlet switchMode = WPTB_GetDirectionAfterReconstruction(this.table, typeFirst, typeSecond, 'vertical', responsiveFront);\n\n\t\t\tif(typeof switchMode === 'object' && switchMode.hasOwnProperty('switch')) {\n\t\t\t\tfunction sortModeSwitcherRun (e) {\n\t\t\t\t\tlet switchModeObj = switchMode.switch(e);\n\t\t\t\t\tif(typeof switchModeObj === 'object') {\n\t\t\t\t\t\tthis.itemsPerHeader = switchModeObj.itemsPerHeader;\n\t\t\t\t\t\tif(switchModeObj.hasOwnProperty('newTable')) {\n\t\t\t\t\t\t\tlet tableOld = this.table;\n\t\t\t\t\t\t\tthis.table = switchModeObj.newTable;\n\t\t\t\t\t\t\tthis.sortModeSwitcher(switchModeObj.type[0], true);\n\t\t\t\t\t\t\tthis.table = tableOld;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.sortModeSwitcher(switchModeObj.type[0], true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsortModeSwitcherRun.call(thisObject);\n\t\t\t\tthis.table.addEventListener(\n\t\t\t\t\t'table:rebuilt',\n\t\t\t\t\tfunction (e) {\n\t\t\t\t\t\tsortModeSwitcherRun.call(thisObject, e);\n\t\t\t\t\t},\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * adds and deletes mousemove and mouseleave events handlers when happens switch sorting mode\n\t\t * and also can add necessary attributes\n\t\t *\n\t\t * @param {string} type\n\t\t * @param {boolean} active\n\t\t */\n\t\tthis.sortingCellMouseMoveSwitcher = function (type, active) {\n\t\t\t/**\n\t\t\t * removes and adds mousemove and mouseleave events handlers\n\t\t\t *\n\t\t\t * @param {HTMLElement} td\n\t\t\t * @param {func} sCMM\n\t\t\t * @param {boolean} active\n\t\t\t */\n\t\t\tfunction s(td, sCMM, active) {\n\t\t\t\ttd.removeEventListener('mousemove', sCMM, false);\n\t\t\t\ttd.removeEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\tif (active) {\n\t\t\t\t\ttd.addEventListener('mousemove', sCMM, false);\n\t\t\t\t\ttd.addEventListener('mouseleave', tdMouseLeave, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * removes and adds data sorted attributes\n\t\t\t *\n\t\t\t * @param {HTMLElement} td\n\t\t\t * @param {string} dataAttr\n\t\t\t * @param {boolean} active\n\t\t\t */\n\t\t\tfunction dataAttrSortChange(td, dataAttr, active) {\n\t\t\t\tif (active) {\n\t\t\t\t\tif (!td.dataset[dataAttr] || td.dataset[dataAttr] !== 'desk-disabled') {\n\t\t\t\t\t\ttd.dataset[dataAttr] = 'ask';\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttd.dataset[dataAttr] = 'desk';\n\t\t\t\t\t}\n\t\t\t\t} else if (td.dataset[dataAttr] === 'ask') {\n\t\t\t\t\ttd.dataset[dataAttr] = 'ask-disabled';\n\t\t\t\t} else if (td.dataset[dataAttr] === 'desk') {\n\t\t\t\t\ttd.dataset[dataAttr] = 'desk-disabled';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// removes all mousemove and mouseleave events handlers\n\t\t\t// and also removes all data sorted attributes from all cells\n\t\t\tlet tds = this.table.querySelectorAll('td');\n\t\t\tif (tds.length) {\n\t\t\t\ttds = [...tds];\n\t\t\t\ttds.map((td) => {\n\t\t\t\t\ts(td, sortingCellMouseMoveVertical, false);\n\t\t\t\t\tdataAttrSortChange(td, 'sortedVertical', false);\n\t\t\t\t\ts(td, sortingCellMouseMoveHorizontal, false);\n\t\t\t\t\tdataAttrSortChange(td, 'sortedHorizontal', false);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// if active === true sets sorted events handlers\n\t\t\t// and data sorted attributes for all cells\n\t\t\tif (active) {\n\t\t\t\tif (type === 'vertical') {\n\t\t\t\t\tlet rowsLength = this.table.rows.length;\n\t\t\t\t\tlet dataYIndexStart = 0;\n\t\t\t\t\twhile (rowsLength > 0) {\n\t\t\t\t\t\tlet tds = this.table.querySelectorAll(`[data-y-index=\"${dataYIndexStart}\"]`);\n\t\t\t\t\t\ttds = [...tds];\n\t\t\t\t\t\ttds.map((td) => {\n\t\t\t\t\t\t\ts(td, sortingCellMouseMoveVertical, active);\n\t\t\t\t\t\t\tdataAttrSortChange(td, 'sortedVertical', active);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (this.itemsPerHeader) {\n\t\t\t\t\t\t\trowsLength -= this.itemsPerHeader + 1;\n\t\t\t\t\t\t\tdataYIndexStart += this.itemsPerHeader + 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trowsLength = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (type === 'horizontal') {\n\t\t\t\t\tlet tds = this.table.querySelectorAll('[data-x-index=\"0\"]');\n\t\t\t\t\ttds = [...tds];\n\t\t\t\t\ttds.map((td) => {\n\t\t\t\t\t\tlet tdsPerAfter = this.table.querySelectorAll(`[data-y-index=\"${td.dataset.yIndex}\"]`);\n\t\t\t\t\t\tif(tdsPerAfter.length > 2) {\n\t\t\t\t\t\t\ts(td, sortingCellMouseMoveHorizontal, active);\n\t\t\t\t\t\t\tdataAttrSortChange(td, 'sortedHorizontal', active);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * adds a sortable-hover class for a cell when the cursor is over the sort icon (arrow)\n\t\t *\n\t\t * @param {event} e\n\t\t * @param {string} type\n\t\t * @param {HTMLElement} element td\n\t\t */\n\t\tfunction sortingCellMouseMov(e, type, element) {\n\t\t\tif (e.target.tagName === 'TD') {\n\t\t\t\tconst x = e.offsetX == undefined ? e.layerX : e.offsetX;\n\t\t\t\tconst y = e.offsetY == undefined ? e.layerY : e.offsetY;\n\t\t\t\tlet xMatch = false;\n\t\t\t\tif ((type === 'vertical' && e.target.clientWidth - x <= 35) || (type === 'horizontal' && x <= 35)) {\n\t\t\t\t\txMatch = true;\n\t\t\t\t}\n\t\t\t\tif (xMatch && (e.target.clientHeight - 35) / 2 < y && (e.target.clientHeight + 35) / 2 > y) {\n\t\t\t\t\telement.classList.add('sortable-hover');\n\t\t\t\t} else {\n\t\t\t\t\telement.classList.remove('sortable-hover');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telement.classList.remove('sortable-hover');\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * calls sortingCellMouseMov with the type parameter set to vertical\n\t\t *\n\t\t * @param {event} e\n\t\t */\n\t\tfunction sortingCellMouseMoveVertical(e) {\n\t\t\tsortingCellMouseMov(e, 'vertical', this);\n\t\t}\n\n\t\t/**\n\t\t * calls sortingCellMouseMov with the type parameter set to horizontal\n\t\t *\n\t\t * @param {event} e\n\t\t */\n\t\tfunction sortingCellMouseMoveHorizontal(e) {\n\t\t\tsortingCellMouseMov(e, 'horizontal', this);\n\t\t}\n\n\t\t/**\n\t\t * remove sortable-hover class from cell when cursor leave cell\n\t\t */\n\t\tfunction tdMouseLeave() {\n\t\t\tthis.classList.remove('sortable-hover');\n\t\t}\n\n\t\t/**\n\t\t * function for sorting the table vertically by the numeric content of cells\n\t\t *\n\t\t * @param {event} e\n\t\t * @param {HTMLElement} table\n\t\t * @param {string} type\n\t\t */\n\t\tfunction sortableTable(e, type) {\n\t\t\tif (\n\t\t\t\te.target &&\n\t\t\t\te.target.tagName === 'TD' &&\n\t\t\t\t!table.parentNode.classList.contains('wptb-preview-table-manage-cells')\n\t\t\t) {\n\t\t\t\tconst table = e.currentTarget;\n\t\t\t\tlet tableWasSorted = false;\n\t\t\t\tif (type === 'vertical' && e.target.dataset.hasOwnProperty('sortedVertical')) {\n\t\t\t\t\t/**\n\t\t\t\t\t * if table have enabled param topRowAsHeader and sellsStackDirection is column\n\t\t\t\t\t * the top and bottom rows that will not be sorted are temporarily removed from the table\n\t\t\t\t\t */\n\t\t\t\t\tconst tableRowsBefore = [];\n\t\t\t\t\tconst tableRowsAfter = [];\n\t\t\t\t\tif (this.itemsPerHeader && this.itemsPerHeader < table.rows.length) {\n\t\t\t\t\t\tWPTB_RecalculateIndexes(table);\n\t\t\t\t\t\tconst tableRowsArr = [...table.rows];\n\t\t\t\t\t\tconst tableLastCont = table.querySelector('tbody') ? table.querySelector('tbody') : table;\n\t\t\t\t\t\tfor (let i = 0; i < tableRowsArr.length; i++) {\n\t\t\t\t\t\t\tif (i < e.target.dataset.yIndex) {\n\t\t\t\t\t\t\t\ttableRowsBefore.push(tableRowsArr[i]);\n\t\t\t\t\t\t\t\ttableLastCont.removeChild(tableRowsArr[i]);\n\t\t\t\t\t\t\t} else if (i > parseInt(e.target.dataset.yIndex, 10) + this.itemsPerHeader) {\n\t\t\t\t\t\t\t\ttableRowsAfter.push(tableRowsArr[i]);\n\t\t\t\t\t\t\t\ttableLastCont.removeChild(tableRowsArr[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tWPTB_RecalculateIndexes(table);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet tds = table.querySelectorAll(`[data-x-index=\"${e.target.dataset.xIndex}\"]`);\n\t\t\t\t\ttds = [...tds];\n\n\t\t\t\t\t/**\n\t\t\t\t\t * preparing table for sorting\n\t\t\t\t\t */\n\t\t\t\t\tlet rowspan;\n\t\t\t\t\tlet rowNum;\n\t\t\t\t\ttds.map((td) => {\n\t\t\t\t\t\tif (!(rowspan = parseInt(td.rowSpan, 10))) {\n\t\t\t\t\t\t\trowspan = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trowNum = td.dataset.yIndex;\n\t\t\t\t\t\tWPTB_CutGlueTable.cutTableHorizontally(rowNum, table);\n\t\t\t\t\t\trowNum += rowspan;\n\t\t\t\t\t\tWPTB_CutGlueTable.cutTableHorizontally(rowNum, table);\n\t\t\t\t\t});\n\n\t\t\t\t\tconst rowsValuesArr = [];\n\t\t\t\t\tlet rowsTdFirst;\n\t\t\t\t\tlet tdYCoordsRowSpanPrevious = 0;\n\t\t\t\t\tconst tableRowsPushed = [];\n\t\t\t\t\tfor (let i = 0; i < tds.length; i++) {\n\t\t\t\t\t\tconst tdsChanged = changeSortingTdsCollection(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\ttable,\n\t\t\t\t\t\t\ttds,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\ttdYCoordsRowSpanPrevious,\n\t\t\t\t\t\t\t'vertical'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (tdsChanged && tdsChanged.hasOwnProperty('i')) {\n\t\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t\t\ti = tdsChanged.i;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (tdsChanged) {\n\t\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst td = tds[i];\n\n\t\t\t\t\t\tlet tdRowspan = parseInt(td.rowSpan, 10);\n\t\t\t\t\t\tif (!tdRowspan) tdRowspan = 1;\n\n\t\t\t\t\t\ttdYCoordsRowSpanPrevious = parseInt(td.dataset.yIndex, 10) + tdRowspan;\n\n\t\t\t\t\t\tconst textElementsValues = textElementsValuesGet(td);\n\n\t\t\t\t\t\tconst rowsTd = [];\n\t\t\t\t\t\tfor (let j = 0; j < tdRowspan; j++) {\n\t\t\t\t\t\t\trowsTd.push(table.rows[parseInt(td.dataset.yIndex, 10) + j]);\n\t\t\t\t\t\t\ttableRowsPushed.push(parseInt(td.dataset.yIndex, 10) + j);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (td.dataset.yIndex > 0) {\n\t\t\t\t\t\t\trowsValuesArr.push({\n\t\t\t\t\t\t\t\trowsTd,\n\t\t\t\t\t\t\t\tvalue: textElementsValues,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trowsTdFirst = rowsTd;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst orderBy = setSortedAscDataAttr(e, 'sortedVertical');\n\t\t\t\t\tif (!orderBy) return;\n\n\t\t\t\t\tif (rowsValuesArr.length) rowsValuesArr.sort((prev, next) => sortOrder(orderBy, prev, next));\n\n\t\t\t\t\trowsValuesArr.unshift({ rowsTd: rowsTdFirst });\n\n\t\t\t\t\tif (rowsValuesArr.length < table.rows.length) {\n\t\t\t\t\t\tfor (let i = 0; i < table.rows.length; i++) {\n\t\t\t\t\t\t\tif (tableRowsPushed.indexOf(i) > -1) continue;\n\t\t\t\t\t\t\tconst rowsTd = [];\n\t\t\t\t\t\t\trowsTd.push(table.rows[i]);\n\n\t\t\t\t\t\t\trowsValuesArr.push({\n\t\t\t\t\t\t\t\trowsTd,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst tBody = table.querySelector('tbody');\n\t\t\t\t\ttBody.innerHTML = '';\n\n\t\t\t\t\trowsValuesArr.map((rowsValObj) => {\n\t\t\t\t\t\trowsValObj.rowsTd.map((row) => {\n\t\t\t\t\t\t\ttBody.appendChild(row);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t/**\n\t\t\t\t\t * returning previously deleted rows\n\t\t\t\t\t */\n\t\t\t\t\tif (tableRowsBefore.length) {\n\t\t\t\t\t\tconst tableLastCont = table.querySelector('tbody') ? table.querySelector('tbody') : table;\n\t\t\t\t\t\tif (tableLastCont) {\n\t\t\t\t\t\t\tconst trRef = tableLastCont.querySelector('tr');\n\t\t\t\t\t\t\ttableRowsBefore.map((tr) => {\n\t\t\t\t\t\t\t\ttableLastCont.insertBefore(tr, trRef);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (tableRowsAfter.length) {\n\t\t\t\t\t\tconst tableLastCont = table.querySelector('tbody') ? table.querySelector('tbody') : table;\n\t\t\t\t\t\tif (tBody) {\n\t\t\t\t\t\t\ttableRowsAfter.map((tr) => {\n\t\t\t\t\t\t\t\ttableLastCont.appendChild(tr);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tWPTB_RecalculateIndexes(table);\n\n\t\t\t\t\tWPTB_CutGlueTable.glueTableHorizontally(table);\n\n\t\t\t\t\ttableWasSorted = true;\n\t\t\t\t} else if (type === 'horizontal' && e.target.dataset.xIndex === '0') {\n\t\t\t\t\tlet tds = table.querySelectorAll(`[data-y-index=\"${e.target.dataset.yIndex}\"]`);\n\t\t\t\t\ttds = [...tds];\n\n\t\t\t\t\t// preparing table for sorting\n\t\t\t\t\tlet colspan;\n\t\t\t\t\tlet colNum;\n\t\t\t\t\ttds.map((td) => {\n\t\t\t\t\t\tif (!(colspan = parseInt(td.colSpan, 10))) {\n\t\t\t\t\t\t\tcolspan = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcolNum = td.dataset.xIndex;\n\t\t\t\t\t\tWPTB_CutGlueTable.cutTableVertically(colNum, table);\n\t\t\t\t\t\tcolNum += colspan;\n\t\t\t\t\t\tWPTB_CutGlueTable.cutTableVertically(colNum, table);\n\t\t\t\t\t});\n\n\t\t\t\t\tconst columnsValuesArr = [];\n\t\t\t\t\tlet columnsTdFirst;\n\n\t\t\t\t\tlet tdXCoordsColSpanPrevious = 0;\n\t\t\t\t\tfor (let i = 0; i < tds.length; i++) {\n\t\t\t\t\t\tconst tdsChanged = changeSortingTdsCollection(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\ttable,\n\t\t\t\t\t\t\ttds,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\ttdXCoordsColSpanPrevious,\n\t\t\t\t\t\t\t'horizontal'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (tdsChanged && tdsChanged.hasOwnProperty('i')) {\n\t\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t\t\ti = tdsChanged.i;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (tdsChanged) {\n\t\t\t\t\t\t\ttds = tdsChanged.tds;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst td = tds[i];\n\t\t\t\t\t\tlet tdColspan = parseInt(td.colSpan, 10);\n\t\t\t\t\t\tif (!tdColspan) tdColspan = 1;\n\n\t\t\t\t\t\ttdXCoordsColSpanPrevious = parseInt(td.dataset.xIndex, 10) + tdColspan;\n\n\t\t\t\t\t\tconst textElementsValues = textElementsValuesGet(td);\n\t\t\t\t\t\tconst columnsTd = [];\n\t\t\t\t\t\tfor (let j = 0; j < tdColspan; j++) {\n\t\t\t\t\t\t\tconst tdsColumn = [\n\t\t\t\t\t\t\t\t...table.querySelectorAll(`[data-x-index=\"${parseInt(td.dataset.xIndex, 10) + j}\"]`),\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tcolumnsTd.push(tdsColumn);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (td.dataset.xIndex > 0) {\n\t\t\t\t\t\t\tcolumnsValuesArr.push({\n\t\t\t\t\t\t\t\tcolumnsTd,\n\t\t\t\t\t\t\t\tvalue: textElementsValues,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcolumnsTdFirst = columnsTd;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst orderBy = setSortedAscDataAttr(e, 'sortedHorizontal');\n\t\t\t\t\tif (!orderBy) return;\n\n\t\t\t\t\tif (columnsValuesArr.length) columnsValuesArr.sort((prev, next) => sortOrder(orderBy, prev, next));\n\n\t\t\t\t\tcolumnsValuesArr.unshift({ columnsTd: columnsTdFirst });\n\n\t\t\t\t\tif (columnsValuesArr.length < table.maxCols) {\n\t\t\t\t\t\tconst difference = table.maxCols - columnsValuesArr.length;\n\t\t\t\t\t\tfor (let i = 0; i < difference; i++) {\n\t\t\t\t\t\t\tconst tdsColumn = [\n\t\t\t\t\t\t\t\t...table.querySelectorAll(\n\t\t\t\t\t\t\t\t\t`[data-x-index=\"${parseInt(table.maxCols, 10) - parseInt(difference, 10) + i}\"]`\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tcolumnsValuesArr.push({\n\t\t\t\t\t\t\t\tcolumnsTd: [tdsColumn],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let i = 0; i < table.rows.length; i++) {\n\t\t\t\t\t\ttable.rows[i].innerHTML = '';\n\t\t\t\t\t}\n\n\t\t\t\t\tcolumnsValuesArr.map((columnsValObj) => {\n\t\t\t\t\t\tcolumnsValObj.columnsTd.map((tdsColumn) => {\n\t\t\t\t\t\t\ttdsColumn.map((td) => {\n\t\t\t\t\t\t\t\ttable.rows[td.dataset.yIndex].appendChild(td);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\tWPTB_RecalculateIndexes(table);\n\n\t\t\t\t\tWPTB_CutGlueTable.glueTableVertically(table);\n\n\t\t\t\t\ttableWasSorted = true;\n\t\t\t\t}\n\n\t\t\t\tif (tableWasSorted) {\n\t\t\t\t\tremoveCellsAttrAfterDivision(table);\n\n\t\t\t\t\tif (table.hasOwnProperty('tableSM')) {\n\t\t\t\t\t\tconst tableSM = table.tableSM();\n\t\t\t\t\t\tnew tableSM().tableStateSet();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.reassignElementsStyles('td');\n\t\t\t\t\tthis.reassignElementsStyles('tr');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Function that sets the data-attribute with the number of the row or column\n\t\t * that the table was sorted by. Returns the number of a row or column\n\t\t *\n\t\t * @param {event} e\n\t\t * @param {string} dataAttr\n\t\t * @returns {null|boolean}\n\t\t */\n\t\tfunction setSortedAscDataAttr(e, dataAttr) {\n\t\t\tif (\n\t\t\t\te.currentTarget &&\n\t\t\t\t(e.currentTarget.classList.contains('wptb-preview-table') ||\n\t\t\t\t\te.currentTarget.classList.contains('wptb-preview-table-mobile'))\n\t\t\t) {\n\t\t\t\tif (!e.target.dataset[dataAttr] || e.target.dataset[dataAttr] === 'ask') {\n\t\t\t\t\te.target.dataset[dataAttr] = 'desk';\n\t\t\t\t} else {\n\t\t\t\t\te.target.dataset[dataAttr] = 'ask';\n\t\t\t\t}\n\n\t\t\t\treturn e.target.dataset[dataAttr];\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * defines the sorting order\n\t\t *\n\t\t * @param {string} orderBy\n\t\t * @param prev\n\t\t * @param next\n\t\t * @returns {number}\n\t\t */\n\t\tfunction sortOrder(orderBy = 'ask', prev, next) {\n\t\t\tlet prevValue = prev.value;\n\t\t\tlet nextValue = next.value;\n\t\t\tif (parseInt(prevValue) && parseInt(nextValue)) {\n\t\t\t\tprevValue = parseInt(prevValue);\n\t\t\t\tnextValue = parseInt(nextValue);\n\t\t\t}\n\n\t\t\tif (orderBy === 'ask') {\n\t\t\t\tif (prevValue < nextValue) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif (prevValue === nextValue) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (prevValue < nextValue) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (prevValue === nextValue) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\t/**\n\t\t * return cell text elements values\n\t\t *\n\t\t * @param cell {HTMLElement}\n\t\t * @returns {string}\n\t\t */\n\t\tfunction textElementsValuesGet(cell) {\n\t\t\tlet textElements = cell.querySelectorAll('.wptb-text-container');\n\t\t\ttextElements = [...textElements];\n\t\t\tlet value = '';\n\t\t\tfor (let j = 0; j < textElements.length; j++) {\n\t\t\t\tvalue += textElements[j].innerText;\n\t\t\t\tif (j !== textElements.length - 1) value += ' ';\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\n\t\t/**\n\t\t * adds cells to the collection of cells in the row or column that the table is sorted by.\n\t\t * These added cells are not originally were added in the collection,\n\t\t * because they are combined with cells from higher rows or left-side columns\n\t\t *\n\t\t * @param {event} e\n\t\t * @param {HTMLElement} table\n\t\t * @param {array} tds\n\t\t * @param {number} i\n\t\t * @param {number} tdIndexSpanPrev\n\t\t * @param {string} type\n\t\t * @returns {{tds: *}|boolean|{tds: *, i: *}}\n\t\t */\n\t\tfunction changeSortingTdsCollection(e, table, tds, i, tdIndexSpanPrev, type) {\n\t\t\tconst td = tds[i];\n\t\t\tlet tdsCollectionChanged = false;\n\t\t\tlet collectionTds;\n\t\t\tlet collectionTdsJSpan;\n\t\t\tlet collectionTdsJSpanProperty;\n\t\t\tlet indexName;\n\t\t\tlet indexNameCamelCase;\n\t\t\tlet indexNamePerpendicularCamelCase;\n\t\t\tlet tdSpanProperty;\n\t\t\t// max rows or columns column\n\t\t\tlet tableGroupCount;\n\n\t\t\tif (type === 'vertical') {\n\t\t\t\tcollectionTdsJSpanProperty = 'colSpan';\n\t\t\t\tindexName = 'data-y-index';\n\t\t\t\tindexNameCamelCase = 'yIndex';\n\t\t\t\tindexNamePerpendicularCamelCase = 'xIndex';\n\t\t\t\ttdSpanProperty = 'rowSpan';\n\t\t\t\ttableGroupCount = table.rows.length;\n\t\t\t} else if (type === 'horizontal') {\n\t\t\t\tcollectionTdsJSpanProperty = 'rowSpan';\n\t\t\t\tindexName = 'data-x-index';\n\t\t\t\tindexNameCamelCase = 'xIndex';\n\t\t\t\tindexNamePerpendicularCamelCase = 'yIndex';\n\t\t\t\ttdSpanProperty = 'colSpan';\n\t\t\t\ttableGroupCount = table.maxCols;\n\t\t\t}\n\n\t\t\tif (td.dataset[indexNameCamelCase] - tdIndexSpanPrev > 0) {\n\t\t\t\tcollectionTds = table.querySelectorAll(`[${indexName}=\"${tdIndexSpanPrev}\"]`);\n\n\t\t\t\tfor (let j = 0; j < collectionTds.length; j++) {\n\t\t\t\t\tcollectionTdsJSpan = collectionTds[j][collectionTdsJSpanProperty];\n\t\t\t\t\tif (!collectionTdsJSpan) collectionTdsJSpan = 1;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tcollectionTds[j].dataset[indexNamePerpendicularCamelCase] <\n\t\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase] &&\n\t\t\t\t\t\tparseInt(collectionTds[j].dataset[indexNamePerpendicularCamelCase], 10) +\n\t\t\t\t\t\t\tparseInt(collectionTdsJSpan, 10) >\n\t\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase]\n\t\t\t\t\t) {\n\t\t\t\t\t\ttds.splice(i, 0, collectionTds[j]);\n\t\t\t\t\t\ttdsCollectionChanged = true;\n\t\t\t\t\t\ti--;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tdsCollectionChanged) return { tds, i };\n\n\t\t\tlet tdSpan = parseInt(td[tdSpanProperty], 10);\n\t\t\tif (!tdSpan) tdSpan = 1;\n\t\t\tif (i == tds.length - 1 && parseInt(td.dataset[indexNameCamelCase], 10) + tdSpan < tableGroupCount) {\n\t\t\t\tcollectionTds = table.querySelectorAll(\n\t\t\t\t\t`[${indexName}=\"${parseInt(td.dataset[indexNameCamelCase], 10) + tdSpan}\"]`\n\t\t\t\t);\n\t\t\t\tfor (let j = 0; j < collectionTds.length; j++) {\n\t\t\t\t\tcollectionTdsJSpan = collectionTds[j][collectionTdsJSpanProperty];\n\t\t\t\t\tif (!collectionTdsJSpan) collectionTdsJSpan = 1;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tcollectionTds[j].dataset[indexNamePerpendicularCamelCase] <\n\t\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase] &&\n\t\t\t\t\t\tparseInt(collectionTds[j].dataset[indexNamePerpendicularCamelCase], 10) +\n\t\t\t\t\t\t\tparseInt(collectionTdsJSpan, 10) >\n\t\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase]\n\t\t\t\t\t) {\n\t\t\t\t\t\ttds.push(collectionTds[j]);\n\t\t\t\t\t\ttdsCollectionChanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tdsCollectionChanged) return { tds };\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * remove cells attributes which were used for division table\n\t\t *\n\t\t * @param {HTMLElement} table\n\t\t */\n\t\tfunction removeCellsAttrAfterDivision(table) {\n\t\t\tconst tdsAll = [...table.getElementsByTagName('td')];\n\t\t\tfor (let i = 0; i < tdsAll.length; i++) {\n\t\t\t\tif (tdsAll[i].hasAttribute('data-same-cell-before-division')) {\n\t\t\t\t\ttdsAll[i].removeAttribute('data-same-cell-before-division');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * function for run sorting table vertically\n\t\t *\n\t\t * @param {event} e\n\t\t */\n\t\tthis.sortableTableVerticalStart = function (e) {\n\t\t\tsortableTable.call(thisObject, e, 'vertical');\n\t\t};\n\n\t\t/**\n\t\t * function for run sorting table horizontally\n\t\t *\n\t\t * @param {event} e\n\t\t */\n\t\tthis.sortableTableHorizontalStart = function (e) {\n\t\t\tsortableTable.call(thisObject, e, 'horizontal');\n\t\t};\n\n\t\treturn this;\n\t}\n\n\treturn WPTB_SortTable;\n});\n","/* eslint-disable */\nvar WPTB_Stringifier = function (codeMain) {\n if (!codeMain) {\n return;\n }\n\n const data = codeMain.dataset;\n const tBodyData = codeMain.querySelector(\"tbody\")?.dataset || {};\n const tableStyle = codeMain.style;\n\n const firstTd = codeMain.querySelector(\"td\");\n const allTr = codeMain.querySelectorAll(\"tr\");\n\n const tableProps = {\n alignment: data.wptbTableAlignment || \"center\",\n enableMaxWidth: data.wptbApplyTableContainerMaxWidth ? 1 : false,\n maxWidth: data.wptbTableContainerMaxWidth,\n minWidth: tableStyle.minWidth,\n cellMinWidth: data.wptbTdWidthAuto,\n sortHorizontal: data.wptbSortableTableHorizontal == \"1\" ? 1 : false,\n sortVertical: data.wptbSortableTableVertical == \"1\" ? 1 : false,\n borderCollapse: `${tableStyle.borderCollapse} !important`,\n tableSpacingX: data.borderSpacingColumns || \"3\",\n tableSpacingY: data.borderSpacingRows || \"3\",\n cols: data.tableColumns,\n cellsWidthAutoCount: data.wptbCellsWidthAutoCount,\n tdSumMaxWidth: data.wptbTableTdsSumMaxWidth,\n\n // Global Font Style\n fontColor: tBodyData.globalFontColor || \"#000000\",\n linkColor: tBodyData.globalLinkColor || \"#000000\",\n fontSize: tBodyData.globalFontSize || \"15\",\n\n // Border\n tableBorder: tableStyle.border,\n borderWidth: tableStyle.borderWidth,\n borderColor: tableStyle.borderColor,\n borderStyle: tableStyle.borderStyle,\n headerInnerBorder: firstTd?.style.border,\n // rowBorderOnly: null, // It's in the directives\n // columnBorderOnly: null, // It's in the directives\n\n // Other\n scrollX: data.wptbHorizontalScrollStatus,\n disableThemeStyles: data.wptbDisableThemeStyles === \"1\" ? 1 : false,\n extraStyles: data.wptbExtraStyles || \"\",\n stickyFirstColumn: data.wptbFirstColumnSticky,\n stickyTopRow:\n codeMain.querySelector(\"tr\")?.dataset?.wptbStickyRow === \"true\"\n ? true\n : false,\n paginationEnable: data.wptbPaginationEnable === \"true\" ? \"true\" : false,\n paginationTopRowAsHeader: (\n data.wptbProPaginationTopRowHeader === \"true\"\n ).toString(),\n rowsPerPage: data.wptbRowsPerPage || \"10\",\n rowsChangeable: data.wptbRowsChangeable === \"true\" ? \"true\" : false,\n\n searchEnable: data.wptbSearchEnable === \"true\" ? \"true\" : false,\n searchKeepHeader: (data.wptbProSearchTopRowHeader === \"true\").toString(),\n searchPosition: data.wptbSearchbarPosition || \"left\",\n role: codeMain.getAttribute(\"role\") || \"table\",\n\n directives: data.wptbTableDirectives,\n responsiveDirectives: data.wptbResponsiveDirectives,\n\n // Colors\n headerBg: data.wptbHeaderBackgroundColor,\n evenRowBg: data.wptbEvenRowBackgroundColor,\n oddRowBg: data.wptbOddRowBackgroundColor,\n\n hoverHeaderBg: data.wptbHeaderHoverBackgroundColor,\n hoverEvenRowBg: data.wptbEvenRowHoverBackgroundColor,\n hoverOddRowBg: data.wptbOddRowHoverBackgroundColor,\n };\n\n const rows = [];\n\n Array.from(allTr).forEach((el) => {\n const hMatch = el.className.match(/wptb-row-highlighted-([0-9]+)/);\n const row = {\n props: {\n hightLighted: hMatch ? `wptb-row-highlighted-${hMatch[1]}` : undefined,\n background: el.style.backgroundColor,\n },\n cells: [],\n };\n Array.from(el.children).forEach((td) => {\n const tData = td.dataset;\n const hMatch = td.className.match(/wptb-col-highlighted-([0-9]+)/);\n\n const cell = {\n props: {\n width: td.style.width,\n autoWidth: tData.wptbCssTdAutoWidth === \"true\" ? \"true\" : false,\n height: td.style.height,\n autoHeight: tData.wptbCssTdAutoHeight === \"true\" ? \"true\" : false,\n padding: td.style.padding,\n background: td.style.backgroundColor,\n ownBgColor: tData.wptbOwnBgColor,\n border: td.style.border,\n borderWidth: td.style.borderWidth,\n borderColor: td.style.borderColor,\n borderStyle: td.style.borderStyle,\n borderRadius: td.style.borderRadius,\n borderTopLeftRadius: td.style.borderTopLeftRadius,\n borderTopRightRadius: td.style.borderTopRightRadius,\n borderBottomLeftRadius: td.style.borderBottomLeftRadius,\n borderBottomRightRadius: td.style.borderBottomRightRadius,\n vAlign: tData.wptbCellVerticalAlignment || \"center\",\n isEmpty: td.classList.contains(\"wptb-empty\"),\n highlighted: hMatch?.[1],\n xIndex: tData.xIndex,\n yIndex: tData.yIndex,\n xSort: tData.sortedVertical,\n ySort: tData.sortedHorizontal,\n colspan: td.getAttribute(\"colspan\"),\n rowspan: td.getAttribute(\"rowspan\"),\n hideOnMobile: td.classList.contains(\"wptb-hide-on-mobile\"),\n },\n blocks: [],\n };\n\n Array.from(td.children).forEach((blockEl) => {\n const block =\n WPTB_BlockSerializer.text(blockEl) ||\n WPTB_BlockSerializer.image(blockEl) ||\n WPTB_BlockSerializer.button(blockEl) ||\n WPTB_BlockSerializer.list(blockEl) ||\n WPTB_BlockSerializer.starRating(blockEl) ||\n WPTB_BlockSerializer.html(blockEl) ||\n WPTB_BlockSerializer.shortCode(blockEl) ||\n // Pro\n WPTB_BlockSerializer.circleRating(blockEl) ||\n WPTB_BlockSerializer.icon(blockEl) ||\n WPTB_BlockSerializer.ribbon(blockEl) ||\n WPTB_BlockSerializer.styledList(blockEl) ||\n WPTB_BlockSerializer.textIcon(blockEl) ||\n WPTB_BlockSerializer.progressBar(blockEl) ||\n WPTB_BlockSerializer.badge(blockEl);\n block && cell.blocks.push(block);\n });\n\n row.cells.push(cell);\n });\n rows.push(row);\n });\n\n return JSON.stringify({\n props: tableProps,\n rows,\n });\n};\n\nvar WPTB_BlockSerializer = {\n text(el) {\n if (!el.classList.contains(\"wptb-text-container\")) {\n return;\n }\n\n return {\n type: \"text\",\n props: {\n text: el.firstElementChild?.innerHTML,\n color: el.style.color,\n fontSize: el.style.fontSize,\n padding: el.style.padding,\n margin: el.style.margin,\n elementId: el.className.match(\"wptb-element-text-([0-9]+)\")?.[1],\n },\n };\n },\n\n image(el) {\n if (!el.classList.contains(\"wptb-image-container\")) {\n return;\n }\n\n const imgEl = el.querySelector(\"img\");\n const lTarget = el.querySelector(\".wptb-link-target\");\n\n return {\n type: \"image\",\n props: {\n src: imgEl?.src,\n alignment: el.dataset.wptbImageAlignment || \"center\",\n alt: imgEl?.getAttribute(\"alt\"),\n imgHeight: imgEl?.getAttribute(\"height\"),\n imgWidth: imgEl?.getAttribute(\"width\"),\n\n sizeRelativeTo: el.dataset.wptbImageSizeRelative || \"container\",\n size: imgEl.dataset.wptbSize,\n width: lTarget?.style.width,\n\n url: lTarget?.href,\n linkRel: lTarget?.getAttribute(\"rel\"),\n linkTarget: lTarget?.getAttribute(\"target\"),\n convertToAbsolute:\n lTarget?.dataset.wptbLinkEnableConvertRelative === \"true\"\n ? \"true\"\n : false,\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n };\n },\n\n button(el) {\n if (!el.classList.contains(\"wptb-button-container\")) {\n return;\n }\n\n const bWrap = el.querySelector(\".wptb-button-wrapper\");\n const lTarget = el.querySelector(\".wptb-link-target\");\n const btnDiv = el.querySelector(\".wptb-button\");\n const iconEl = el.querySelector(\".wptb-button-icon\");\n const labelEl = el.querySelector(\".wptb-button-label\");\n\n const pEl = el.querySelector(\"p\");\n\n return {\n type: \"button\",\n props: {\n text: pEl?.innerHTML,\n fontSize: pEl?.style.fontSize,\n size: bWrap.className.match(/wptb-size-(s|m|l|xl)/)?.[1] || \"m\",\n width: lTarget?.style.width,\n borderRadius: btnDiv?.style.borderRadius,\n background: btnDiv?.dataset.wptbElementBgColor,\n color: btnDiv?.dataset.wptbElementColor,\n buttonAlignment: bWrap?.style.justifyContent,\n contentAlignment: btnDiv?.style.justifyContent,\n id: lTarget?.id,\n // Url\n url: lTarget?.href,\n linkRel: lTarget?.getAttribute(\"rel\"),\n linkTarget: lTarget?.getAttribute(\"target\"),\n convertToAbsolute:\n lTarget?.dataset.wptbLinkEnableConvertRelative === \"true\"\n ? true\n : false,\n\n // Hover\n hoverBg: btnDiv?.dataset.wptbElementHoverBgColor,\n hoverColor: btnDiv?.dataset.wptbElementHoverTextColor,\n hoverScale: btnDiv?.dataset.wptbElementHoverScale,\n\n // Icon\n icon: iconEl?.dataset.wptbButtonIconSrc || \"\",\n iconPosition: btnDiv?.classList.contains(\n \"wptb-plugin-button-order-right\"\n )\n ? \"right\"\n : \"left\",\n iconSize: iconEl?.style.height,\n\n // Label\n hasLabel: bWrap.classList.contains(\"wptb-button-has-label\"),\n labelBg: labelEl?.style.backgroundColor,\n labelColor: labelEl?.style.color,\n labelText: labelEl?.querySelector(\".wptb-button-label-text\")?.innerHTML,\n\n // Spacing\n padding: el.style.padding,\n margin: el.style.margin,\n },\n };\n },\n\n list(el) {\n if (!el.classList.contains(\"wptb-list-container\")) {\n return;\n }\n\n const firstLi = el.querySelector(\"li\");\n const firstP = firstLi?.querySelector(\"p\");\n const icon = firstP.className.match(\n /wptb-list-style-type-(none|circle|square|disc)/\n )?.[0];\n\n const items = [];\n\n Array.from(el.querySelectorAll(\"li\")).forEach((child) => {\n const toolTipEl = child.querySelector(\".wptb-m-tooltip\");\n const tooltipPosision =\n child.className.match(/wptb-tooltip-(top|bottom|left|right)/)?.[1] ||\n \"top\";\n const pEl = child.querySelector(\"p\");\n\n const alignment = pEl?.style.textAlign || \"left\";\n\n items.push({\n text: pEl.innerHTML,\n alignment,\n toolTip: toolTipEl?.innerHTML || \"\",\n tooltipPosision,\n toolTipStyle: toolTipEl?.getAttribute(\"style\") || \"\",\n });\n });\n\n return {\n type: \"list\",\n props: {\n type: icon ? \"unordered\" : \"ordered\",\n listIcon: icon || \"disc\",\n color: firstP?.style.color,\n fontSize: firstP?.style.fontSize,\n itemSpacing: firstLi?.style.marginBottom,\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n items,\n };\n },\n\n starRating(el) {\n if (!el.classList.contains(\"wptb-star_rating-container\")) {\n return;\n }\n\n const firstStar = el.querySelector(\"li\");\n const ratingBox = el.querySelector(\".wptb-number-rating-box\");\n const ratingEl = ratingBox?.firstElementChild;\n return {\n type: \"starRating\",\n props: {\n starSize: firstStar?.style.height,\n starColor: firstStar?.querySelector(\"svg\")?.style.fill,\n starCount: el.dataset.starCount,\n alignment: el.style.textAlign,\n showRating: ratingBox?.style.display !== \"none\",\n fontSize: ratingEl?.style.fontSize,\n color: ratingEl?.style.color,\n\n value: Number(ratingEl?.textContent.split(\"/\")?.[0].trim() || 0),\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n };\n },\n\n html(el) {\n if (!el.classList.contains(\"wptb-custom_html-container\")) {\n return;\n }\n return {\n type: \"customHtml\",\n props: {\n html: el.firstElementChild.innerHTML,\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n };\n },\n\n shortCode(el) {\n if (!el.classList.contains(\"wptb-shortcode-container\")) {\n return;\n }\n const cDiv = el.querySelector(\"div\");\n\n return {\n type: \"shortcode\",\n props: {\n shortcode: cDiv?.innerHTML,\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n };\n },\n\n circleRating(el) {\n if (!el.classList.contains(\"wptb-circle_rating-container\")) {\n return;\n }\n\n const wrapper = el.querySelector(\".wptb-rating-circle-wrapper\");\n const bar = el.querySelector(\".wptb-rating-circle-bar\");\n const ratingType =\n el.dataset.wptbRatingType === \"number\" ? \"number\" : \"percent\";\n\n return {\n type: \"circleRating\",\n props: {\n size: wrapper?.style.fontSize,\n color: bar?.style.borderColor,\n ratingType,\n value:\n (ratingType === \"number\"\n ? el.dataset.wptbRatingNumber\n : el.dataset.percentageCount) || \"37\",\n total: el.dataset.wptbTotalNumber || \"10\",\n padding: el.style.padding,\n margin: el.style.margin,\n },\n };\n },\n\n icon(el) {\n if (!el.classList.contains(\"wptb-icon-container\")) {\n return;\n }\n\n const wrapper = el.querySelector(\".wptb-icon-wrapper\");\n const firstIcon = el.querySelector(\".wptb-icon-link-target-1\");\n\n const icons = [];\n\n Array.from(wrapper.children).forEach((child) => {\n const divEl = child.firstElementChild;\n icons.push({\n icon: divEl?.dataset.wptbIconSrc || \"star\",\n color: divEl?.style.fill,\n url: child?.href,\n linkRel: child?.getAttribute(\"rel\"),\n linkTarget: child?.getAttribute(\"target\"),\n convertToAbsolute:\n child?.dataset.wptbLinkEnableConvertRelative === \"true\"\n ? true\n : false,\n });\n });\n\n return {\n type: \"icon\",\n props: {\n count: el.dataset.wptbIconNumber,\n size: firstIcon?.firstElementChild?.style.width,\n alignment: wrapper?.style.textAlign,\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n icons,\n };\n },\n\n ribbon(el) {\n if (!el.classList.contains(\"wptb-ribbon_element-container\")) {\n return;\n }\n\n const inner = el.querySelector(\".wptb-element-ribbon-inner\");\n const colorDump = el.querySelector(\".wptb-element-ribbon-color-dump\");\n const pEL = inner?.querySelector(\"p\");\n const iconEl = el.querySelector(\"#wptbRibbonIconDump\");\n\n return {\n type: \"ribbon\",\n props: {\n type: el.dataset.wptbRibbonType,\n modifications: el.dataset.wptbRibbonModifications,\n side: el.dataset.wptbRibbonSide,\n xOffset: el.dataset.wptbRibbonXOffset,\n yOffset: el.dataset.wptbRibbonYOffset,\n width: el.dataset.wptbRibbonWidth,\n style: el.getAttribute(\"style\"),\n\n background: (colorDump || inner)?.style.backgroundColor,\n borderColor: (colorDump || inner)?.style.borderColor,\n color: el.style.color,\n fontSize: pEL?.style.fontSize,\n text: pEL?.innerHTML,\n\n icon: iconEl?.dataset.wptbRibbonIconSrc,\n enableAnimation: iconEl?.dataset.enableAnimation === \"1\" ? \"1\" : false,\n animationType: iconEl?.dataset.wptbRibbonIconAnimationType,\n },\n };\n },\n\n styledList(el) {\n if (!el.classList.contains(\"wptb-styled_list-container\")) {\n return;\n }\n const firstLi = el.querySelector(\"li\");\n const firstP = firstLi?.querySelector(\"p\");\n const iconEL = el.querySelector(\".wptb-styled-list-icon\");\n\n const items = [];\n\n Array.from(el.querySelectorAll(\"li\")).forEach((child) => {\n const toolTipEl = child.querySelector(\".wptb-m-tooltip\");\n const tooltipPosision =\n child.className.match(/wptb-tooltip-(top|bottom|left|right)/)?.[1] ||\n \"top\";\n const pEl = child.querySelector(\"p\");\n\n const alignment =\n child.firstElementChild?.dataset.wptbStyledListAlignment || \"left\";\n\n items.push({\n text: pEl.innerHTML,\n alignment,\n toolTip: toolTipEl?.innerHTML || \"\",\n tooltipPosision,\n toolTipStyle: toolTipEl?.getAttribute(\"style\") || \"\",\n });\n });\n\n return {\n type: \"styledList\",\n props: {\n icon: iconEL?.dataset.wptbStyledListIconSrc,\n iconSize: iconEL?.style.height,\n iconColor: iconEL?.style.fill,\n iconSpacing: firstP?.style.marginLeft,\n color: firstP?.style.color,\n fontSize: firstP?.style.fontSize,\n itemSpacing: firstLi?.style.marginBottom,\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n items,\n };\n },\n\n textIcon(el) {\n if (!el.classList.contains(\"wptb-text_icon_element-container\")) {\n return;\n }\n\n const data = el.dataset;\n\n const pEl = el.querySelector(\"p\");\n const iconEL = el.querySelector(\".wptb-text-icon-icon-wrapper\");\n\n return {\n type: \"textIcon\",\n props: {\n spaceBetween: data.wptbTextIconSpaceBetween,\n alignment: data.wptbTextIconAlignment,\n fontSize: el.style.fontSize,\n color: pEl?.parentElement.style.color,\n text: pEl?.innerHTML,\n icon: iconEL?.dataset.wptbTextIconIconSrc,\n iconLocation: data.wptbTextIconIconLocation,\n iconSize: iconEL?.style.height,\n iconColor: iconEL?.style.color,\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n };\n },\n\n progressBar(el) {\n if (!el.classList.contains(\"wptb-progress_bar-container\")) {\n return;\n }\n\n const labelEl = el.querySelector(\".wptb-progress-bar-label\");\n const prBar = el.querySelector(\".wptb-progress-bar-trail\");\n\n return {\n type: \"progressBar\",\n props: {\n value: parseInt(labelEl?.textContent || \"0\"),\n thickness: prBar?.style.strokeWidth,\n primaryColor: el\n .querySelector(\".wptb-progress-bar-path\")\n ?.getAttribute(\"stroke\"),\n secondaryColor: prBar?.getAttribute(\"stroke\"),\n labelColor: labelEl?.style.color,\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n };\n },\n\n badge(el) {\n if (!el.classList.contains(\"wptb-badge-container\")) {\n return;\n }\n\n const wrapper = el.querySelector(\".wptb-badge-wrapper\");\n\n return {\n type: \"badge\",\n props: {\n fontSize: wrapper?.style.fontSize,\n color: wrapper?.style.color,\n background: wrapper?.style.backgroundColor,\n alignment: el.style.justifyContent,\n\n text: wrapper?.firstElementChild?.innerHTML,\n\n padding: el.style.padding,\n margin: el.style.margin,\n },\n };\n },\n};\n","/* eslint-disable */\nvar array = [], WPTB_Table = function ( columns, rows, wptb_preview_table ) {\n\n /* The members of the class */\n var settings = document.getElementsByClassName('wptb-settings-items'),\n wptbTableSetup = document.getElementsByClassName(\"wptb-table-setup\")[0],\n table, row, cell,\n maxAmountOfCells,\n maxAmountOfRows;\n\n //HERE ARE THE PRIVATE FUNCTIONS\n /*\n * This function toggles buttons visibility in cell edit mode\n * (according to the amount of currently selected cells), and\n * highlights visually the clicked cell if it is not highlighted, or\n * removes highlight if clicked cell is already highlighted.\n * It too toggles the bits of our abstract representation.\n * @param Event this is the event instance of the click performed over a cell.\n */\n var mark = function ( event ) {\n let thisElem = event.currentTarget;\n let rs = thisElem.rowSpan,\n cs = thisElem.colSpan,\n noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n position = getCoords(thisElem),\n row = position[0],\n column = position[1];\n\n /**\n * Cell select/deselect operation\n *\n * @param {HTMLElement} cellElement cell element\n * @param {Boolean} select select/deselect cell\n *\n */\n function cellSelectOperation(cellElement, select = false){\n const classListOperation = select? 'add' : 'remove';\n cellElement.classList[classListOperation]('wptb-highlighted');\n\n const [row, column] = getCoords(cellElement);\n const {rowSpan, colSpan} = cellElement;\n\n for (var i = 0; i < rowSpan; i++) {\n for (var j = 0; j < colSpan; j++) {\n array[row + i][column + j] = select? 1 : 0;\n }\n }\n }\n if ( ! document.select.isActivated() ) {\n return;\n }\n\n const isShiftActive = event.shiftKey;\n if (thisElem.className.match(/wptb-highlighted/)) {\n const selectedCells = Array.from(document.querySelectorAll('.wptb-highlighted'));\n\n if(selectedCells.length > 1){\n if(isShiftActive){\n cellSelectOperation(thisElem, false);\n }else {\n cellSelectOperation(thisElem, true);\n // eslint-disable-next-line array-callback-return\n selectedCells.map(el => {\n if(el !== thisElem){\n cellSelectOperation(el, false);\n }\n })\n }\n }else{\n cellSelectOperation(thisElem, false);\n }\n } else {\n if(!isShiftActive){\n Array.from(document.querySelectorAll('.wptb-highlighted')).map(ele => {\n if(ele !== thisElem){\n cellSelectOperation(ele, false);\n }\n });\n }\n cellSelectOperation(thisElem,true );\n }\n\n let cellHighlighted = document.getElementsByClassName('wptb-highlighted'),\n markedCells = cellHighlighted.length;\n if (markedCells === 0) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n } else if (markedCells === 1) {\n for (var i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.add('visible');\n singleCells[i].removeAttribute('disabled');\n }\n\n cellHighlighted = cellHighlighted[0];\n WPTB_Helper.elementOptionsSet( 'table_cell_setting', cellHighlighted );\n\n let infArr = cellHighlighted.className.match( /wptb-element-((.+-)\\d+)/i );\n\n const controlElemIds = ['cellWidth', 'cellHeight'];\n\n controlElemIds.map(s => {\n let elementControlSizeUnicClass = `wptb-el-${infArr[1]}-${s}`,\n elementControlSizeFixedUnicClass = `wptb-el-${infArr[1]}-${s}Fixed`;\n if(s === 'cellWidth' || s === 'cellHeight') {\n let sizeName = '',\n getSizeFunctionName = '';\n if(s === 'cellWidth') {\n sizeName = 'width';\n getSizeFunctionName = 'getColumnWidth';\n } else if(s === 'cellHeight') {\n sizeName = 'height';\n getSizeFunctionName = 'getRowHeight';\n }\n let size = cellHighlighted.style[sizeName],\n cellSizeInputs = document.querySelectorAll( '.' + elementControlSizeUnicClass ),\n cellSizeFixedInput = document.querySelector( '.' + elementControlSizeFixedUnicClass );\n cellSizeInputs = [...cellSizeInputs];\n\n if(!size && !cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`]) {\n size = WPTB_Helper[getSizeFunctionName](table, cellHighlighted);\n cellSizeInputs.map(s => {\n s.value = size;\n });\n\n cellSizeFixedInput.checked = false;\n } else {\n cellSizeInputs.map(s => {\n if( size ) {\n s.value = parseFloat( size, 10 );\n } else if( cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`] ) {\n s.value = cellHighlighted.dataset[`wptbFixed${sizeName.toUpperCase()}`];\n }\n });\n\n cellSizeFixedInput.checked = true;\n }\n }\n });\n\n cellSettings.classList.add( 'visible' );\n } else {\n for (var i = 0; i < multipleCells.length; i++) {\n if (table.isSquare(array)) {\n multipleCells[i].classList.add('visible');\n multipleCells[i].removeAttribute('disabled');\n } else {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n }\n for (var i = 0; i < noCells.length; i++) {\n noCells[i].classList.remove('visible');\n noCells[i].setAttribute('disabled', 'disabled');\n }\n for (var i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n cellSettings.classList.remove( 'visible' );\n }\n\n /**\n * empty cell | highlight setting | hide column on mobile\n */\n\n const infArr = thisElem.className.match(/wptb-element-table_cell_setting-((.+-)\\d+)/i);\n if (infArr && infArr.length > 1) {\n let controlKeys = [ 'emptyCell', 'highlightRow', 'highlightColumn', 'hideColumnOnMobile'];\n for(let i in controlKeys) { \n const settingId = `wptb-el-table_cell_setting-${infArr[1]}-${controlKeys[i]}`;\n const settingElem = document.getElementById(settingId);\n if (settingElem) {\n if(controlKeys[i] == 'emptyCell') {\n settingElem.querySelector('input[type=\"checkbox\"]').checked = thisElem.classList.contains('wptb-empty');\n } else if(controlKeys[i] == 'highlightRow') {\n\n // Extract highlight class name in the class list\n const className = thisElem.parentElement.classList[1] || \"\";\n\n // Check whether the row is already highlighted\n const isHighlighted = className.indexOf(\"wptb-row-highlighted-\") > -1 \n && thisElem.parentElement.getAttribute(\"class\").indexOf(\"wptb-row-highlighted-none\") == -1;\n if(isHighlighted) {\n\n // Extract the current highlight value\n const highlightValue = className.substr(21);\n const highlightRowInput = cellSettings.querySelectorAll(`.wptb-el-table_cell_setting-${infArr[1]}-rowTransformScale`);\n settingElem.querySelector('input[type=\"checkbox\"]').click();\n highlightRowInput[0].value = highlightValue;\n highlightRowInput[1].value = highlightValue;\n }\n } else if(controlKeys[i] == 'highlightColumn') {\n const className = thisElem.getAttribute(\"class\");\n\n // Check whether the column is already highlighted\n const isHighlighted = (className.indexOf(\"wptb-col-highlighted\") > -1\n && className.indexOf(\"wptb-col-highlighted-none\") == -1);\n if(isHighlighted) {\n\n // Extract the current highlight value\n const highlightValue = thisElem.className.match(/wptb-col-highlighted-([0-9]+)/)?.[1] || \"100\";\n const highlightColInput = document.querySelectorAll(`.wptb-el-table_cell_setting-${infArr[1]}-columnTransformScale`);\n settingElem.querySelector('input[type=\"checkbox\"]').click();\n highlightColInput[0].value = highlightValue;\n highlightColInput[1].value = highlightValue;\n }\n } else if(controlKeys[i] == 'hideColumnOnMobile') {\n settingElem.querySelector('input[type=\"checkbox\"]').checked = thisElem.classList.contains('wptb-hide-on-mobile');\n }\n }\n }\n }\n\n\n let details = {countMarkedCells:markedCells};\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/cell/mark', thisElem, details);\n\n\n // split button disabled state calculation\n const splitButton = document.querySelector('#wptb-split-cell');\n if(splitButton){\n const splitAvailable = markedCells === 1 && (rs !== 1 || cs !== 1);\n if(splitAvailable){\n splitButton.classList.add('visible');\n splitButton.removeAttribute('disabled');\n }else {\n splitButton.classList.remove('visible');\n splitButton.setAttribute('disabled', 'disabled');\n }\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 let noCells = document.getElementsByClassName('wptb-no-cell-action'),\n singleCells = document.getElementsByClassName('wptb-single-action'),\n multipleCells = document.getElementsByClassName('wptb-multiple-select-action'),\n cellSettings = document.getElementById( 'wptb-left-scroll-panel-cell-settings' ),\n tds = table.getElementsByClassName('wptb-highlighted');\n while (tds.length) {\n tds[0].classList.remove('wptb-highlighted');\n }\n cellSettings.classList.remove( 'visible' );\n for (let i = 0; i < array.length; i++) {\n for (let j = 0; j < array[i].length; j++) {\n array[i][j] = 0;\n }\n }\n for (let i = 0; i < multipleCells.length; i++) {\n multipleCells[i].classList.remove('visible');\n multipleCells[i].setAttribute('disabled', 'disabled');\n }\n for (let i = 0; i < noCells.length; i++) {\n noCells[i].classList.add('visible');\n noCells[i].removeAttribute('disabled');\n }\n for (let i = 0; i < singleCells.length; i++) {\n singleCells[i].classList.remove('visible');\n singleCells[i].setAttribute('disabled', 'disabled');\n }\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/undo-select/active', table);\n };\n\n /*\n * This fills the abstract representation of our table with\n * zeros, at the start. the max amount of cells is the greatest sum\n * of all colspans for row.\n */\n\n var fillTableArray = function () {\n var colspansSums = [], a = [];\n\n //calculate max amount of cells inside a row\n for (var i = 0; i < table.rows.length; i++) {\n var cells = table.rows[i].getElementsByTagName('td'),\n colspanSumInRow = 0;\n for (var j = 0; j < cells.length; j++) {\n colspanSumInRow += cells[j].colSpan;\n }\n colspansSums.push(colspanSumInRow);\n }\n\n maxAmountOfCells = Math.max.apply(null, colspansSums);\n //calculate max rows\n var maxAmountOfRows = table.rows.length;\n\n // fill with zeros from both values\n for (var i = 0; i < maxAmountOfRows; i++) {\n a[i] = [];\n for (var j = 0; j < maxAmountOfCells; j++) {\n a[i].push(0);\n }\n }\n drawTable(a);\n return a;\n };\n\n /*\n * This function gets the sum of all colspans in a row.\n * @param number the number of row to be used as reference.\n */\n var getActualPointsInRow = function (row) {\n var tds = table.rows[row].getElementsByTagName('td'),\n points = 0;\n for (var i = 0; i < tds.length; i++) {\n points += tds[i].colSpan;\n }\n return points;\n }\n\n /*\n * This function gets us the exact coordinates of\n * an exact cell, in a more reliable way than xIndex and yIndex,\n * these last ones were meant to be used for getting the cell trough them.\n * @param DOMElement the cell to get the coordinates.\n */\n var getCoords = function (search) {\n var skipInCols = [], cell;\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n skipInCols[i] = 0;\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var cellsBuffer = table.rows[i].getElementsByTagName('td');\n cellPointer = 0;\n for (var xPosition = 0; xPosition < maxAmountOfCells; xPosition += stepsToMove) {\n stepsToMove = 1;\n\n if (skipInCols[xPosition]) {\n skipInCols[xPosition]--;\n } else {\n var td = cellsBuffer[cellPointer++];\n if (td == search) {\n return [i, xPosition];\n }\n if (td.rowSpan > 1) {\n for ( let k = 0; k < td.colSpan; k++ ) {\n skipInCols[xPosition + k] = td.rowSpan - 1;\n }\n stepsToMove = td.colSpan;\n } else if (td.colSpan > 1) {\n stepsToMove = td.colSpan;\n }\n }\n }\n }\n };\n\n jQuery('#wptb-table-border-color').val('');\n jQuery('#wptb-table-padding-number,#wptb-table-padding-slider').val('15');\n\n // Todo your code here\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 = '1px solid #d1d1d1';\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.border = '1px solid #d1d1d1';\n row.appendChild(cell.getDOMElement());\n }\n }\n } else {\n if( ! wptb_preview_table ) wptb_preview_table = document.querySelector( '.wptb-preview-table' );\n\n if ( wptb_preview_table ) {\n table = wptb_preview_table;\n\n let cells = table.getElementsByTagName('td');\n\n if (cells.length > 0) {\n for (let i = 0; i < cells.length; i++) {\n WPTB_Cell(mark, cells[i]);\n }\n }\n } else {\n return;\n }\n }\n\n /**\n * this method run \"mark\" method of WPTB_Table object\n * @param event\n */\n table.mark = (event) => {\n mark(event);\n }\n\n table.wptbCell = (callback, DOMElement) => {\n return WPTB_Cell(callback, DOMElement);\n }\n\n table.tableSM = () => {\n return WPTB_TableStateSaveManager;\n }\n\n /**\n * this method run \"undoSelect\" method of WPTB_Table object\n * @param event\n */\n table.undoSelect = () => {\n undoSelect();\n }\n\n /**\n * method for set value for maxAmountOfCells\n * @param value\n */\n table.setMaxAmountOfCells = (value) => {\n maxAmountOfCells = value;\n }\n\n /**\n * this method return maxAmountOfCells value\n * @returns {*}\n */\n table.getMaxAmountOfCells = () => {\n return maxAmountOfCells;\n }\n\n /**\n * this method run \"fillTableArray\" method of WPTB_Table object\n * @returns {[]}\n */\n table.fillTableArray = () => {\n return fillTableArray();\n }\n /*\n * For assigning to each cell xIndex and y Index attributes,\n * these are the column number and row number of cell in table.\n */\n\n table.recalculateIndexes = function () {\n WPTB_Helper.recalculateIndexes( this );\n }\n\n table.addColumnWidth = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataXIndex = highlighted[k].dataset.xIndex;\n if( dataXIndex ) {\n function tableTdsFor( dataXIndex, colspan ) {\n let tableRows = table.rows;\n let widthIsSet = false;\n let arrayTdsFromPreviousRow = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.xIndex == dataXIndex ) {\n if( value ) {\n if( td.colSpan == colspan ) {\n td.style.width = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n widthIsSet = true;\n } else {\n td.style.width = null;\n td.dataset.wptbFixedWidth = value;\n if( i == tableRows.length - 1 && ! widthIsSet ) {\n tableTdsFor( dataXIndex, colspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.width = null;\n td.removeAttribute( 'data-wptb-fixed-width' );\n } else {\n if( td.dataset.wptbFixedWidth ) {\n if( td.colSpan == colspan ) {\n td.style.width = td.dataset.wptbFixedWidth + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n }\n } else if( td.style.width ) {\n for( let z = 0; z < arrayTdsFromPreviousRow.length; z++ ) {\n arrayTdsFromPreviousRow[z].style.width = td.style.width;\n }\n arrayTdsFromPreviousRow = [];\n } else {\n arrayTdsFromPreviousRow.push( td );\n }\n }\n break;\n }\n }\n }\n }\n\n tableTdsFor( dataXIndex, 1 );\n }\n }\n\n table.tdDefaultWidth();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n }\n }\n\n table.tdDefaultWidth = function() {\n let rows = table.rows;\n\n let tableTdsSumMaxWidth = 0;\n let tableTdsSumMaxWidthFixed = 0;\n let tableTdsSumMaxWidthAuto = 0;\n\n let wptbTableSetup = document.getElementsByClassName( 'wptb-table-setup' )[0];\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n\n let arrayCellsWidthFixedHelper = [];\n let arrayCellsWidthAutoHelper = [];\n let tdPaddingCommon = 0;\n let tableTdBorderCommonWidth = 0;\n let cssForTdsWidthAuto = '';\n\n\n let tableFullStyleObj = window.getComputedStyle( table, null );\n let borderLeftWidth = tableFullStyleObj.getPropertyValue( 'border-left-width' );\n let borderRightWidth = tableFullStyleObj.getPropertyValue( 'border-right-width' );\n let tableBorderCommon = parseFloat( borderLeftWidth, 10 ) + parseFloat( borderRightWidth, 10 );\n\n for( let i = 0; i < rows.length; i++ ) {\n let tds = rows[i].children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n\n if( ! arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] && ! arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( td.style.width ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] = parseFloat( td.style.width );\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n } else {\n if( ! td.dataset.wptbFixedWidth ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] = table.dataset.wptbTdWidthAuto ? parseFloat( table.dataset.wptbTdWidthAuto, 10 ) : 100;\n td.dataset.wptbCssTdAutoWidth = true;\n }\n }\n\n if( window.getComputedStyle( td, null ) ) {\n let tdStyleObj = window.getComputedStyle( td, null );\n let tdPaddingLeft = tdStyleObj.getPropertyValue( 'padding-left' );\n let tdPaddingRight = tdStyleObj.getPropertyValue( 'padding-right' );\n tdPaddingCommon = parseFloat( tdPaddingLeft, 10 ) + parseFloat( tdPaddingRight, 10 );\n\n let tableTdBorderLeftWidth = tdStyleObj.getPropertyValue( 'border-left-width' );\n let tableTdBorderRightWidth = tdStyleObj.getPropertyValue( 'border-right-width' );\n tableTdBorderCommonWidth = parseFloat( tableTdBorderLeftWidth, 10 ) + parseFloat( tableTdBorderRightWidth, 10 );\n tableTdBorderCommonWidth = tableTdBorderCommonWidth / 2;\n\n if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n\n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderRightWidth, 10 ) / 2 ) );\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tdPaddingCommon;\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += tableTdBorderCommonWidth;\n\n if( j == 0 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderLeftWidth, 10 ) / 2;\n } else if( j == 0 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderLeftWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n\n if( j == tds.length - 1 && ( tableBorderCommon / 2 ) <= parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += parseFloat( tableTdBorderRightWidth, 10 ) / 2;\n } else if( j == tds.length - 1 && ( tableBorderCommon / 2 ) > parseFloat( tableTdBorderRightWidth, 10 ) ) {\n arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] += ( ( tableBorderCommon / 2 ) - ( parseFloat( tableTdBorderLeftWidth, 10 ) / 2 ) );\n }\n }\n }\n } else if( arrayCellsWidthAutoHelper[parseFloat( td.dataset.xIndex )] ) {\n if( ! td.dataset.wptbFixedWidth ) {\n td.dataset.wptbCssTdAutoWidth = true;\n }\n } else if( arrayCellsWidthFixedHelper[parseFloat( td.dataset.xIndex )] ) {\n td.removeAttribute( 'data-wptb-css-td-auto-width' );\n }\n }\n }\n\n for( let i = 0; i < arrayCellsWidthFixedHelper.length; i++ ) {\n if( arrayCellsWidthFixedHelper[i] ) {\n tableTdsSumMaxWidthFixed += arrayCellsWidthFixedHelper[i];\n }\n }\n\n let CellsWidthAutoCount = 0;\n for( let i = 0; i < arrayCellsWidthAutoHelper.length; i++ ) {\n if( arrayCellsWidthAutoHelper[i] ) {\n tableTdsSumMaxWidthAuto += arrayCellsWidthAutoHelper[i];\n CellsWidthAutoCount++;\n }\n }\n\n tableTdsSumMaxWidth = tableTdsSumMaxWidthFixed + tableTdsSumMaxWidthAuto;\n\n table.dataset.wptbTableTdsSumMaxWidth = tableTdsSumMaxWidth;\n if( CellsWidthAutoCount ) {\n table.dataset.wptbCellsWidthAutoCount = CellsWidthAutoCount;\n if( table.mergingСellsHorizontally ) {\n table.dataset.wptbFixedWidthSize = tableTdsSumMaxWidthFixed;\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n }\n } else {\n table.removeAttribute( 'data-wptb-fixed-width-size' );\n table.removeAttribute( 'data-wptb-cells-width-auto-count' );\n }\n\n let styleElementCreate = false;\n let tableTdWidthAuto;\n if( tableTdsSumMaxWidth < wptbTableSetupWidth ) {\n if( CellsWidthAutoCount ) {\n table.style.minWidth = '100%';\n if( table.mergingСellsHorizontally ) {\n table.style.width = 'auto';\n let tableTdsWidthAutoCommon = wptbTableSetupWidth - tableTdsSumMaxWidthFixed;\n tableTdWidthAuto = tableTdsWidthAutoCommon / CellsWidthAutoCount;\n tableTdWidthAuto = tableTdWidthAuto - tdPaddingCommon - tableTdBorderCommonWidth;\n styleElementCreate = true;\n } else {\n table.style.width = '100%';\n }\n } else {\n table.style.width = 'auto';\n table.style.minWidth = null;\n table.style.maxWidth = null;\n }\n } else {\n table.style.maxWidth = null;\n table.style.minWidth = tableTdsSumMaxWidth + 'px';\n table.style.width = 'auto';\n tableTdWidthAuto = table.dataset.wptbTdWidthAuto ? table.dataset.wptbTdWidthAuto : '100';\n styleElementCreate = true;\n }\n\n let head = document.head;\n if( head ) {\n let cssForTdsWidthAutoOld = head.querySelector( 'style[data-wptb-td-auto-width=\"true\"]' );\n if( cssForTdsWidthAutoOld ) {\n head.removeChild( cssForTdsWidthAutoOld );\n }\n }\n\n if( styleElementCreate ) {\n cssForTdsWidthAuto = document.createElement( 'style' );\n cssForTdsWidthAuto.setAttribute( 'data-wptb-td-auto-width', true );\n cssForTdsWidthAuto.innerHTML = '[data-wptb-css-td-auto-width=true]{width:' + tableTdWidthAuto + 'px}';\n if( head ) {\n head.appendChild( cssForTdsWidthAuto );\n }\n }\n\n if( table.dataset.wptbTableAlignment ) {\n let wptbTableAlignment = table.dataset.wptbTableAlignment;\n\n let wptbTableSetupWidth = wptbTableSetup.offsetWidth;\n if( wptbTableSetupWidth < table.offsetWidth ) {\n table.style.float = null;\n } else {\n if( wptbTableAlignment == 'center' ) {\n table.style.float = null;\n } else {\n table.style.float = wptbTableAlignment;\n }\n }\n\n if( wptbTableAlignment == 'center' ) {\n wptbTableSetup.style.float = null;\n } else {\n wptbTableSetup.style.float = wptbTableAlignment;\n }\n\n if( tableTdWidthAuto && table.dataset.wptbTableContainerMaxWidth && table.offsetWidth < table.dataset.wptbTableContainerMaxWidth ) {\n table.style.width = '100%';\n }\n } else {\n table.style.float = null;\n }\n }\n\n table.addRowHeight = function( value, cleaner ) {\n let highlighted = table.getElementsByClassName( 'wptb-highlighted' );\n if( highlighted.length > 0 ) {\n for( let k = 0; k < highlighted.length; k++ ) {\n let dataYIndex = highlighted[k].dataset.yIndex;\n if( dataYIndex ) {\n function tableTdsFor( dataYIndex, rowspan ) {\n let tableRows = table.rows;\n let heightIsSet = false;\n let arrayTdsPrevious = [];\n for( let i = 0; i < tableRows.length; i++ ) {\n let row = tableRows[i];\n let tds = row.children;\n for( let j = 0; j < tds.length; j++ ) {\n let td = tds[j];\n if( td.dataset.yIndex == dataYIndex ) {\n if( value ) {\n if( td.rowSpan == rowspan ) {\n td.style.height = value + 'px';\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n heightIsSet = true;\n continue;\n } else {\n td.style.height = null;\n td.dataset.wptbFixedHeight = value;\n if( j == tds.length - 1 && ! heightIsSet ) {\n tableTdsFor( dataYIndex , rowspan + 1 );\n }\n }\n } else if( cleaner ) {\n td.style.height = null;\n td.removeAttribute( 'data-wptb-fixed-heidht' );\n } else {\n if( td.dataset.wptbFixedHeight ) {\n if( td.rowSpan = rowspan ) {\n td.style.height = td.dataset.wptbFixedHeight + 'px';\n td.removeAttribute( 'data-wptb-fixed-width' );\n }\n } else if( td.style.height ) {\n for( let z = 0; z < arrayTdsPrevious.length; z++ ) {\n arrayTdsPrevious[z].style.height = td.style.height;\n }\n arrayTdsPrevious = [];\n } else {\n arrayTdsPrevious.push( td );\n }\n }\n }\n }\n }\n }\n\n tableTdsFor( dataYIndex, 1 );\n }\n }\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n }\n }\n\n table.reconstraction = function() {\n let tds = table.getElementsByTagName( 'td' );\n table.mergingСellsHorizontally = false;\n table.mergingCellsVertically = false;\n table.dataset.reconstraction = 1;\n let forBreak = 0;\n for( let i = 0; i < tds.length; i++ ) {\n if( tds[i].colSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingСellsHorizontally = true;\n forBreak++;\n }\n\n if( tds[i].rowSpan > 1 ) {\n table.dataset.reconstraction = 0;\n table.mergingCellsVertically = true;\n forBreak++;\n }\n\n if( forBreak == 2 ) {\n break;\n }\n }\n }\n\n /*\n * As simple as it is: adds a column to the end of table.\n */\n table.addColumnEnd = function () {\n let td,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if (currentTable.length > 0) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if (currentTableTd) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n\n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\n }\n\n table.rows[i].appendChild(td.getDOMElement());\n array[i].push(0);\n }\n\n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * As simple as it looks: adds a column to the start of table.\n */\n\n table.addColumnStart = function () {\n let td,\n firstCell,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n if ( currentTable.length > 0 ) {\n currentTableTd = currentTable[0].querySelector('td');\n }\n\n if ( currentTableTd ) {\n currentTdStyle = currentTableTd.getAttribute('style');\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n td = new WPTB_Cell(mark);\n if (currentTdStyle) {\n td.getDOMElement().setAttribute('style', currentTdStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\n }\n firstCell = table.rows[i].getElementsByTagName('td')[0];\n if (firstCell) {\n table.rows[i].insertBefore(td.getDOMElement(), firstCell);\n } else {\n table.rows[i].appendChild(td.getDOMElement());\n }\n array[i].push(0);\n }\n\n maxAmountOfCells++;\n table.recalculateIndexes();\n table.tdDefaultWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Well, not so simple as previous functions.\n * It adds a column after a certain column of reference.\n * @param integer the column number to be used as reference.\n *\tIf empty, then the first highlighted cell is used as reference.\n */\n\n table.addColumnAfter = function (c_pos) {\n let rows = table.rows,\n cell,\n cellStyle,\n pos;\n\n if(c_pos != undefined && typeof c_pos === 'number') {\n pos = c_pos;\n cell = document.querySelector('[data-x-index=\"' + pos + '\"]');\n } else {\n cell = document.querySelector('.wptb-highlighted');\n pos = getCoords(cell)[1];\n }\n\n if(cell) {\n cellStyle = cell.getAttribute('style');\n\n if( maxAmountOfCells - pos - cell.colSpan + 1 == 1 ) {\n table.addColumnEnd();\n } else {\n for(let i = 0; i < rows.length; i++) {\n let tds = rows[i].children;\n for(let j = 0; j < tds.length; j++) {\n if(parseInt(tds[j].dataset.xIndex) <= pos) {\n if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan == pos + cell.colSpan) {\n let td = newTd(cellStyle);\n let nextSib = tds[j].nextSibling;\n if (nextSib) {\n rows[i].insertBefore(td.getDOMElement(), nextSib);\n } else {\n rows[i].appendChild(td.getDOMElement());\n }\n\n break;\n } else if(parseInt(tds[j].dataset.xIndex) + tds[j].colSpan > pos + cell.colSpan) {\n tds[j].colSpan++;\n if(tds[j].rowSpan > 1) i += tds[j].rowSpan - 1;\n break;\n }\n } else if(parseInt(tds[j].dataset.xIndex) > pos) {\n let td = newTd(cellStyle);\n rows[i].insertBefore(td.getDOMElement(), tds[j]);\n break;\n }\n }\n }\n\n function newTd(cellStyle) {\n let td = new WPTB_Cell(mark);\n if (cellStyle) {\n td.getDOMElement().setAttribute('style', cellStyle);\n td.getDOMElement().style.width = null;\n td.getDOMElement().style.height = null;\n }\n td.getDOMElement().style.borderColor = WPTB_TableSettingsData.getTableSetting('borderColor');\n return td;\n }\n\n for (var i = 0; i < array.length; i++) {\n array[i].push(0);\n }\n maxAmountOfCells++;\n drawTable(array);\n table.recalculateIndexes();\n table.addColumnWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n }\n };\n\n /*\n * For preventing us to take a lot of time,\n * This is just calling the function addColumnAfter, but\n * using the previous column to current one as reference.\n * @see addColumnAfter\n */\n\n table.addColumnBefore = function () {\n var cell = document.querySelector('.wptb-highlighted'),\n pos = getCoords(cell)[1];\n\n if (pos === 0) {\n table.addColumnStart();\n } else {\n table.addColumnAfter(pos - 1);\n }\n };\n\n /*\n * Luckily, thisfunction is simple,\n * it just add a row to the end of table.\n */\n\n table.addRowToTheEnd = function () {\n let r = table.insertRow(-1),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table');\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n\n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall(table);\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /*\n * Yet another simple function,\n * it just add a row to the start of table.\n */\n\n table.addRowToTheStart = function () {\n let r = table.insertRow(0),\n td,\n aux,\n currentTable = document.getElementsByClassName('wptb-preview-table'),\n currentTableTd,\n currentTdStyle;\n r.classList.add( 'wptb-row' );\n if (currentTable.length > 0) {\n currentTable = currentTable[0];\n\n for (var i = 0; i < maxAmountOfCells; i++) {\n td = new WPTB_Cell(mark);\n let currentTableTd = currentTable.querySelector('[data-x-index=\"' + i + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild(td.getDOMElement());\n }\n\n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n };\n\n /*\n * This function adds a row before the current one.\n * Since the biggest factor of problem is a not-started but ongoing rowspan,\n * the most of the troubles is not here.\n */\n\n table.addRowBefore = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellNew;\n\n if(row === 0){\n row = -1;\n }\n\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\n if (row === -1) {\n table.addRowToTheStart();\n } else {\n table.addRowAfter( row, cellStyle );\n }\n };\n\n /*\n * Well... by the name convention of the previous 3 functions,\n * it's pretty obvious that this functions attaches a new\n * row after highlighted cell row. The greatest obstacle it was\n * the possibility of a TR not having the exact amount of columns\n * occuped by actual node but rowspanned upper cells. For that purpose\n * it was created the function realTimeArray.\n * @see realTimeArray\n */\n\n table.addRowAfter = function ( row, cellStyle ) {\n let cellRowSpan,\n rowAfter,\n aux;\n\n if ( ( row == undefined || typeof row !== 'number' ) && cellStyle == undefined ) {\n let cell = document.querySelector('.wptb-highlighted');\n cellStyle = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n cellRowSpan = cell.rowSpan,\n rowAfter = row + cellRowSpan - 1;\n } else {\n rowAfter = row;\n }\n\n\n let cellsColSpan = 0;\n if ( rowAfter < table.rows.length -1 ) {\n for( let i = 0; i <= rowAfter ; i++ ) {\n let tableRowsIChildren = table.rows[i].children,\n tableRIChildrenLength = tableRowsIChildren.length;\n if( tableRIChildrenLength > 0 ) {\n for( let j = 0; j < tableRIChildrenLength; j++ ) {\n let rowIRowSpan = tableRowsIChildren[j].rowSpan;\n\n if ( rowIRowSpan - 1 + i > rowAfter ) {\n tableRowsIChildren[j].rowSpan++;\n }\n }\n }\n }\n\n let rNext = table.rows[rowAfter + 1],\n rNextChildren = rNext.children,\n rNextChildrenLength = rNextChildren.length;\n\n if( rNextChildrenLength > 0 ) {\n for ( let i = 0; i < rNextChildrenLength; i++ ) {\n cellsColSpan += rNextChildren[i].colSpan;\n }\n }\n } else {\n cellsColSpan = array[0].length;\n }\n\n let r = table.insertRow( rowAfter + 1 );\n r.classList.add( 'wptb-row' );\n\n for ( j = 0; j < cellsColSpan; j++ ) {\n let td = new WPTB_Cell( mark );\n let currentTableTd = table.querySelector('[data-x-index=\"' + j + '\"]');\n if( currentTableTd ) {\n let currentTdStyle = currentTableTd.getAttribute( 'style' );\n\n td.getDOMElement().setAttribute( 'style', currentTdStyle );\n td.getDOMElement().style.height = null;\n }\n r.appendChild( td.getDOMElement() );\n }\n\n aux = Array.from(array[0]);\n array.push(aux);\n drawTable(array);\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n table.addColumnWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after');\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This function checks the current selected cells\n * make a rectangular shape.\n * @param Array the abstract table.\n * @return false, if not making a rectangle, or\n *\tArray an array containing number of rows and columns, if selection makes a rectangle.\n */\n\n table.isSquare = function (a) {\n var rowStart = -1,\n columnStart = -1,\n rowEnd = -1,\n columnEnd = -1,\n height,\n width,\n itemsEstimate = 0,\n items = 0;\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n if ( j < columnStart || columnStart == -1 ) {\n columnStart = j;\n }\n if ( i < rowStart || rowStart == -1 ) {\n rowStart = i;\n }\n }\n }\n\n }\n\n for (var i = a.length - 1; i > -1; i--) {\n for (var j = a[i].length - 1; j > -1; j--) {\n if (a[i][j] == 1) {\n if ( j > columnEnd ) {\n columnEnd = j;\n }\n if ( i > rowEnd ) {\n rowEnd = i;\n }\n }\n }\n }\n\n for (var i = rowStart; i < rowEnd; i++) {\n for (var j = columnStart; j < columnEnd; j++) {\n if (a[i][j] == 0 || a[i][j] == undefined) {\n return false;\n }\n }\n }\n\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n if (a[i][j] == 1) {\n items++;\n }\n }\n }\n\n height = rowEnd - rowStart + 1;\n width = columnEnd - columnStart + 1;\n itemsEstimate = height * width;\n\n if (itemsEstimate !== items) {\n return false;\n }\n return [height, width];\n };\n\n /*\n * This function merges all selected cells.\n * Well, actually sets the colspan and rowspan of first\n * upper left cell in selection and deletes the another selected cells.\n */\n\n table.mergeCells = function () {\n var dimensions = table.isSquare(array),\n rowspan = dimensions[0],\n colspan = dimensions[1],\n first = document.querySelector('.wptb-highlighted'),\n tds = [].slice.call(document.getElementsByClassName('wptb-highlighted'), 1),\n tdsChildrenNew = [];\n\n for (let i = 0; i < tds.length; i++) {\n let tdsInternalElements = tds[i].getElementsByClassName('wptb-ph-element');\n if (tdsInternalElements.length > 0) {\n let tdsIntElemLength = tdsInternalElements.length;\n for (let j = 0; j < tdsIntElemLength; j++) {\n tdsChildrenNew.push(tdsInternalElements[j]);\n }\n }\n let p = tds[i].parentNode;\n p.removeChild(tds[i]);\n }\n if (tdsChildrenNew.length > 0) {\n for (let i = 0; i < tdsChildrenNew.length; i++) {\n first.appendChild(tdsChildrenNew[i]);\n }\n }\n\n first.colSpan = colspan;\n first.rowSpan = rowspan;\n table.recalculateIndexes();\n table.reconstraction();\n let firstWidth = first.style.width;\n let firstDataFixedWidth = first.dataset.wptbFixedWidth;\n if( firstWidth ) {\n table.addColumnWidth( parseFloat( firstWidth, 10 ) );\n } else if( firstDataFixedWidth ) {\n table.addColumnWidth();\n } else {\n table.addColumnWidth( false, true );\n }\n\n let firstHeight = first.style.height;\n let firstDataFixedHeight = first.dataset.wptbFixedHeight;\n if( firstHeight ) {\n table.addRowHeight( parseFloat( firstHeight, 10 ) );\n } else if( firstDataFixedHeight ) {\n table.addRowHeight();\n } else {\n table.addRowHeight( false, true );\n }\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * This functions makes the exact inverse as above.\n * It resets colspan and rowspan and appends\n * the same amount in cells to the table.\n * @bug\n */\n\n table.splitCell = function () {\n var cell = document.getElementsByClassName('wptb-highlighted')[0],\n rowspan = cell.rowSpan,\n colspan = cell.colSpan,\n cellStyles = cell.getAttribute('style'),\n row = getCoords(cell)[0],\n thisRow = table.rows[row],\n cellXIndex =cell.dataset.xIndex;\n\n cell.rowSpan = 1;\n cell.colSpan = 1;\n\n for (let i = 1; i < colspan; i++) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().classList.add( 'wptb-highlighted' );\n if ( cell.nextSibling ) {\n thisRow.insertBefore( td.getDOMElement(), cell.nextSibling );\n } else {\n thisRow.appendChild( td.getDOMElement() );\n }\n\n }\n\n if (rowspan > 1) {\n for (let i = 1; i < rowspan; i++) {\n let rowChildInsertBefore = undefined,\n rowNext = table.rows[row + i],\n rowChildren = rowNext.children,\n rowChildrenLength = rowChildren.length;\n\n if ( rowChildrenLength > 0 ) {\n for ( let k = 0; k < rowChildrenLength; k++ ) {\n if ( Number( rowChildren[k].dataset.xIndex ) > Number( cellXIndex ) ) {\n rowChildInsertBefore = rowChildren[k];\n break;\n }\n }\n }\n for ( let j = 0; j < colspan; j++ ) {\n let td = new WPTB_Cell( mark );\n td.getDOMElement().setAttribute( 'style', cellStyles );\n if ( rowChildInsertBefore != undefined ) {\n rowNext.insertBefore( td.getDOMElement(), rowChildInsertBefore );\n } else {\n rowNext.appendChild( td.getDOMElement() );\n }\n }\n }\n }\n\n table.recalculateIndexes();\n table.reconstraction();\n table.addColumnWidth();\n table.addRowHeight();\n WPTB_Helper.dataTitleColumnSet( table );\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n /*\n * Searches for rowspanned cells up to row number meeting it.\n * @param number the number of row where the function\n * must search up to.\n */\n\n table.findRowspannedCells = function (row) {\n var array = [],\n difference;\n actualPoints = getActualPointsInRow(row);\n if (actualPoints === maxAmountOfCells) {\n return [];\n }\n difference = maxAmountOfCells - actualPoints;\n\n for (var i = row - 1; i >= 0 && difference; i--) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var i = 0; i < tds.length; i++) {\n if (tds[i].rowSpan > 1) {\n array.push(tds[i]);\n difference -= tds[i].colSpan;\n }\n }\n }\n return array;\n\n }\n\n /*\n * This function explores the table and adds\n * a cell for each lacking one for each row\n * to meet an even amount of cells.\n */\n\n table.addLackingCells = function () {\n var sumRows = [];\n for (var i = 0; i < table.rows.length; i++) {\n sumRows.push(0);\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td');\n for (var j = 0; j < tds.length; j++) {\n if (tds[j].rowSpan > 1) {\n for (var k = 1; k < tds[j].rowSpan; k++) {\n sumRows[i + k]++;\n }\n }\n }\n }\n\n for (var i = 0; i < table.rows.length; i++) {\n var tds = table.rows[i].getElementsByTagName('td'),\n totalColspan = 0;\n for (var j = 0; j < tds.length; j++) {\n totalColspan += tds[j].colSpan;\n }\n totalColspan += sumRows[i];\n difference = maxAmountOfCells - totalColspan;\n for (var j = 0; j < difference; j++) {\n var td = new WPTB_Cell(mark);\n table.rows[i].appendChild(td.getDOMElement());\n //table.rows[i].insertBefore( td.getDOMElement(), rows[i].nextSibling );\n }\n }\n };\n\n /*\n * This function deletes the row of currently\n * selected cell.\n */\n\n table.deleteRow = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellStyles = cell.getAttribute('style'),\n rowspan = cell.rowSpan,\n row = getCoords(cell)[0],\n thisRow,\n aux;\n\n if ( rowspan == undefined ) rowspan = 1;\n\n for ( let i = 0; i < rowspan; i++ ) {\n thisRow = table.rows[row];\n let thisRowChildren = thisRow.children,\n nextRow = table.rows[row + 1],\n nextRowChildren,\n nextRowChildrenLength,\n tdArr = [];\n\n if( nextRow != undefined ) {\n nextRowChildren = nextRow.children;\n nextRowChildrenLength = nextRowChildren.length;\n for (let j = 0; j < thisRowChildren.length; j++) {\n if ( thisRowChildren[j].rowSpan > 1 ) {\n let td = new WPTB_Cell(mark);\n td.getDOMElement().setAttribute('style', cellStyles);\n td.getDOMElement().colSpan = thisRowChildren[j].colSpan;\n td.getDOMElement().rowSpan = thisRowChildren[j].rowSpan - 1;\n\n let nextRowChildrenK = undefined;\n for ( let k = 0; k < nextRowChildrenLength; k++ ) {\n if ( Number( nextRowChildren[k].dataset.xIndex ) > Number( thisRowChildren[j].dataset.xIndex ) ) {\n nextRowChildrenK = nextRowChildren[k];\n break;\n }\n }\n\n if ( nextRowChildrenK ) {\n tdArr.push( [td, nextRowChildrenK] );\n } else {\n tdArr.push( [td] );\n }\n }\n }\n\n if ( tdArr.length > 0 ) {\n for ( let k = 0; k < tdArr.length; k++ ) {\n if ( tdArr[k][1] != undefined ) {\n nextRow.insertBefore( tdArr[k][0].getDOMElement(), tdArr[k][1] );\n } else {\n nextRow.appendChild( tdArr[k][0].getDOMElement() );\n }\n }\n }\n }\n\n let tableRows = table.rows;\n if ( tableRows.length > 0 ) {\n for ( let j = 0; j < row; j++ ) {\n let jRowChildren = tableRows[j].children;\n if ( jRowChildren.length > 0 ) {\n for ( let x = 0; x < jRowChildren.length; x++ ) {\n if ( jRowChildren[x].rowSpan - 1 >= row - j ) {\n jRowChildren[x].rowSpan--;\n }\n }\n }\n }\n }\n aux = Array.from(array[0]);\n array.pop(aux);\n drawTable(array);\n table.getElementsByTagName('tbody')[0].removeChild(table.rows[row]);\n\n if( table.rows.length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n WPTB_Helper.tableRowsColorsReinstall( table );\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n }\n\n /*\n * This function deletes the column of currently\n * selected cell. Again, this is way more complicated than\n * delete row case.\n */\n\n table.deleteColumn = function () {\n let cell = document.querySelector('.wptb-highlighted'),\n cellXIndex = cell.dataset.xIndex,\n colspan = cell.colSpan;\n\n for ( let i = 0; i < colspan; i++ ) {\n for ( let j = 0; j < table.rows.length; j++ ) {\n let rowChildren = table.rows[j].children;\n let rowChildrenLength = rowChildren.length;\n if( rowChildrenLength > 0 ) {\n for ( let k = rowChildrenLength - 1; k >= 0; k-- ) {\n if ( Number( rowChildren[k].dataset.xIndex ) == Number( cellXIndex ) ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n } else {\n table.rows[j].removeChild( rowChildren[k] );\n }\n break;\n } else if( Number( rowChildren[k].dataset.xIndex ) < Number( cellXIndex ) &&\n Number( rowChildren[k].dataset.xIndex ) +\n Number( rowChildren[k].colSpan -1 ) >= cellXIndex ) {\n if ( rowChildren[k].colSpan > 1 ) {\n rowChildren[k].colSpan--;\n }\n break;\n }\n }\n }\n }\n\n for ( let j = 0; j < table.rows.length; j++ ) {\n if (array[j] != undefined)\n array[j].pop();\n }\n\n maxAmountOfCells--;\n\n if( table.querySelectorAll( 'td' ).length == 0 ) {\n WPTB_Helper.toggleTableEditMode();\n wptbTableSetup.innerHTML = '';\n document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n let wptbSaveBtn = document.getElementsByClassName( 'wptb-save-btn' );\n if( wptbSaveBtn.length > 0 ) {\n wptbSaveBtn = wptbSaveBtn[0];\n\n wptbSaveBtn.classList.add( 'wptb-save-disabled' );\n wptbSaveBtn.classList.remove('active');\n }\n } else {\n table.recalculateIndexes();\n table.tdDefaultWidth();\n WPTB_Helper.dataTitleColumnSet( table );\n table.reconstraction();\n }\n }\n\n undoSelect();\n\n WPTB_Helper.wptbDocumentEventGenerate('wp-table-builder/table-changed/after', table);\n\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n };\n\n // @deprecated old generate logic\n // document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n\n array = fillTableArray();\n\n undoSelect();\n drawTable(array);\n\n wptbTableSetup.appendChild(table);\n //if (columns || rows) {\n table.recalculateIndexes( true );\n //}\n table.reconstraction();\n table.tdDefaultWidth();\n\n wptbTableSetup.onresize = function() {\n table.tdDefaultWidth();\n };\n\n WPTB_LeftPanel();\n\n // event hook to signal that table is generated and ready to be used\n WPTB_Helper.wptbDocumentEventGenerate('wptb:table:generated', document);\n\n WPTB_Helper.elementStartScript( table, 'table_setting' );\n WPTB_Helper.elementOptionsSet( 'table_setting', table );\n\n // this code gets the ID of the active element in the toolbar\n // and stores it in the data attribute of the common container element \"wpcd_fixed_toolbar\"\n// let wptbPhElement = document.getElementsByClassName( 'wptb-ph-element' );\n// let wpcdFixedToolbar = document.getElementById( 'wpcd_fixed_toolbar' );\n// for ( let i = 0; i < wptbPhElement.length; i++ ) {\n// wptbPhElement[i].addEventListener( 'click', function( e ) {\n// let wptbToolbar = document.getElementById( 'wpcd_fixed_toolbar' ).children;\n// for ( let j = 0; j < wptbToolbar.length; j++ ) {\n// let elementStyles = window.getComputedStyle( wptbToolbar[j], 'null' );\n// if( elementStyles.getPropertyValue( 'display' ) == 'block' ) {\n// wpcdFixedToolbar.dataset.toolbarActiveId = wptbToolbar[j].getAttribute( 'id' );\n// }\n// }\n// }, false );\n// }\n\n// let wptbPanelLeft = document.getElementsByClassName( 'wptb-panel-left' );\n// if( wptbPanelLeft.length > 0 ) {\n// wptbPanelLeft[0].addEventListener( 'click', function( e ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }, false );\n// }\n\n// let body = document.getElementsByTagName( 'body' );\n// if( body.length > 0 ) {\n// body[0].addEventListener( 'click', function( e ) {\n// if ( e.target.classList.contains( 'wptb-panel-left' ) || WPTB_Helper.findAncestor( e.target, 'wptb-panel-left' ) ) {\n// let toolbarActiveElementId = wpcdFixedToolbar.dataset.toolbarActiveId;\n// document.getElementById( toolbarActiveElementId ).style.display = '';\n// }\n// }, false );\n// }\n};\n","const WPTB_TableSettingsData = {\n borderColor: '',\n /**\n *\n * @param {string} name\n * @param {string} value\n */\n setTableSetting: function(name, value){\n this[name] = value;\n },\n /**\n *\n * @param {string} name\n * @returns {*}\n */\n getTableSetting: function (name) {\n return this[name];\n }\n}\n\n","const WPTB_TableStateSaveManager = function () {\n\tthis.tableStateSet = (generate) => {\n\t\tif (generate && window.wptbTableStateSaving && Array.isArray(window.wptbTableStateSaving)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// get table setup\n\t\tlet wptbTableSetup = document.getElementsByClassName('wptb-table-setup');\n\t\tlet wptbPreviewTable = '';\n\t\tif (wptbTableSetup.length > 0) {\n\t\t\twptbTableSetup = wptbTableSetup[0];\n\n\t\t\twptbPreviewTable = wptbTableSetup.querySelector('.wptb-preview-table');\n\t\t} else {\n\t\t\twptbTableSetup = '';\n\t\t}\n\n\t\t// check if a global array doesn't exist with saved versions of the table\n\t\t// them create it\n\t\tif (!window.wptbTableStateSaving && !Array.isArray(window.wptbTableStateSaving)) {\n\t\t\twindow.wptbTableStateSaving = [];\n\t\t}\n\n\t\t// remove the extra part of the array after changing the table\n\t\t// when it is showed in the not last modified version\n\t\tif (window.wptbTableStateSaving.length > window.wptbTableStateNumberShow) {\n\t\t\twindow.wptbTableStateSaving = window.wptbTableStateSaving.slice(0, window.wptbTableStateNumberShow + 1);\n\t\t}\n\n\t\t// add new state of table\n\t\tlet wptbNewTableSetup = '';\n\t\tif (wptbTableSetup) {\n\t\t\twptbNewTableSetup = wptbTableSetup.cloneNode(true);\n\t\t\tconst wptbHighlighted = wptbNewTableSetup.getElementsByClassName('wptb-highlighted');\n\t\t\tfor (let i = 0; i < wptbHighlighted.length; i++) {\n\t\t\t\twptbHighlighted[i].classList.remove('wptb-highlighted');\n\t\t\t}\n\t\t\tconst wptbDirectlyhovered = wptbNewTableSetup.getElementsByClassName('wptb-directlyhovered');\n\t\t\tfor (let i = 0; i < wptbDirectlyhovered.length; i++) {\n\t\t\t\twptbDirectlyhovered[i].classList.remove('wptb-directlyhovered');\n\t\t\t}\n\t\t\tconst mceContentBodys = wptbNewTableSetup.querySelectorAll('.mce-content-body');\n\t\t\tif (mceContentBodys.length > 0) {\n\t\t\t\tfor (let k = 0; k < mceContentBodys.length; k++) {\n\t\t\t\t\tmceContentBodys[k].classList.remove('mce-content-body');\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst dataMceStyle = wptbNewTableSetup.querySelectorAll('[data-mce-style]');\n\t\t\tif (dataMceStyle.length > 0) {\n\t\t\t\tfor (let k = 0; k < dataMceStyle.length; k++) {\n\t\t\t\t\tdataMceStyle[k].removeAttribute('data-mce-style');\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst mceIds = wptbNewTableSetup.querySelectorAll('[id^=mce_]');\n\t\t\tif (mceIds.length > 0) {\n\t\t\t\tfor (let k = 0; k < mceIds.length; k++) {\n\t\t\t\t\tmceIds[k].removeAttribute('id');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet cssForTdsWidthAutoValue = '';\n\t\tconst { head } = document;\n\t\tif (head) {\n\t\t\tconst cssForTdsWidthAuto = head.querySelector('style[data-wptb-td-auto-width=\"true\"]');\n\t\t\tif (cssForTdsWidthAuto) {\n\t\t\t\tcssForTdsWidthAutoValue = cssForTdsWidthAuto.innerHTML;\n\t\t\t}\n\t\t}\n\n\t\tlet wptbTableTitle = '';\n\t\tconst wptbSetupName = document.getElementById('wptb-setup-name');\n\t\tif (wptbSetupName) wptbTableTitle = wptbSetupName.value;\n\n\t\twindow.wptbTableStateSaving.push([wptbNewTableSetup, cssForTdsWidthAutoValue, wptbTableTitle]);\n\n\t\t// set new number of state which is showed now\n\t\twindow.wptbTableStateNumberShow = window.wptbTableStateSaving.length - 1;\n\n\t\t// make undo arrow active when the table was changed\n\t\tif (window.wptbTableStateSaving.length - 1 > 0) {\n\t\t\tlet wptbUndo = document.getElementsByClassName('wptb-undo');\n\t\t\tif (wptbUndo.length > 0) {\n\t\t\t\twptbUndo = wptbUndo[0];\n\n\t\t\t\twptbUndo.classList.remove('wptb-undoredo-disabled');\n\t\t\t}\n\t\t}\n\n\t\t// make redo arrow not active when the table was changed\n\t\tlet wptbRedo = document.getElementsByClassName('wptb-redo');\n\t\tif (wptbRedo.length > 0) {\n\t\t\twptbRedo = wptbRedo[0];\n\n\t\t\twptbRedo.classList.add('wptb-undoredo-disabled');\n\t\t}\n\n\t\tconst wptbSaveBtn = document.querySelector('.main-save-button-wrapper .save-btn');\n\t\tif (wptbSaveBtn) {\n\t\t\tif (\n\t\t\t\t(!wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0) ||\n\t\t\t\twindow.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave ||\n\t\t\t\t!wptbPreviewTable\n\t\t\t) {\n\t\t\t\t// wptbSaveBtn.classList.add('wptb-save-disabled');\n\t\t\t\t// wptbSaveBtn.classList.remove('active');\n\n\t\t\t\tWPTB_Store.commit('setTableClean');\n\t\t\t} else {\n\t\t\t\t// wptbSaveBtn.classList.remove('wptb-save-disabled');\n\t\t\t\t// wptbSaveBtn.classList.add('active');\n\n\t\t\t\tWPTB_Store.commit('setTableDirty');\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.tableStateGet = (datawptbUndoredo) => {\n\t\tif (datawptbUndoredo && window.wptbTableStateSaving && window.wptbTableStateSaving.length > 0) {\n\t\t\t// changes the number of the state which displays now\n\t\t\tif (datawptbUndoredo == 'undo') {\n\t\t\t\tif (window.wptbTableStateNumberShow > 0) {\n\t\t\t\t\twindow.wptbTableStateNumberShow--;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (datawptbUndoredo == 'redo') {\n\t\t\t\tif (window.wptbTableStateNumberShow < window.wptbTableStateSaving.length) {\n\t\t\t\t\twindow.wptbTableStateNumberShow++;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add or delete class \"wptb-undoredo-disabled\" for undo button\n\t\t\tlet wptbUndo = document.getElementsByClassName('wptb-undo');\n\t\t\tif (wptbUndo.length > 0) {\n\t\t\t\twptbUndo = wptbUndo[0];\n\n\t\t\t\tif (window.wptbTableStateNumberShow == 0) {\n\t\t\t\t\tif (wptbUndo) {\n\t\t\t\t\t\twptbUndo.classList.add('wptb-undoredo-disabled');\n\t\t\t\t\t}\n\t\t\t\t} else if (window.wptbTableStateNumberShow > 0) {\n\t\t\t\t\tif (wptbUndo) {\n\t\t\t\t\t\twptbUndo.classList.remove('wptb-undoredo-disabled');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add or delete class \"wptb-undoredo-disabled\" for redo button\n\t\t\tlet wptbRedo = document.getElementsByClassName('wptb-redo');\n\t\t\tif (wptbRedo.length > 0) {\n\t\t\t\twptbRedo = wptbRedo[0];\n\n\t\t\t\tif (window.wptbTableStateNumberShow == window.wptbTableStateSaving.length - 1) {\n\t\t\t\t\tif (wptbRedo) {\n\t\t\t\t\t\twptbRedo.classList.add('wptb-undoredo-disabled');\n\t\t\t\t\t}\n\t\t\t\t} else if (window.wptbTableStateNumberShow < window.wptbTableStateSaving.length - 1) {\n\t\t\t\t\tif (wptbRedo) {\n\t\t\t\t\t\twptbRedo.classList.remove('wptb-undoredo-disabled');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add or delete class \"wptb-save-disabled\" for save button\n\t\t\tconst wptbSaveBtn = document.querySelector('.main-save-button-wrapper .save-btn');\n\t\t\tif (wptbSaveBtn) {\n\t\t\t\tif (\n\t\t\t\t\t(!wptbSaveBtn.dataset.wptbTableStateNumberSave && window.wptbTableStateNumberShow == 0) ||\n\t\t\t\t\twindow.wptbTableStateNumberShow == wptbSaveBtn.dataset.wptbTableStateNumberSave\n\t\t\t\t) {\n\t\t\t\t\t// wptbSaveBtn.classList.add('wptb-save-disabled');\n\t\t\t\t\t// wptbSaveBtn.classList.remove('active');\n\n\t\t\t\t\tWPTB_Store.commit('setTableClean');\n\t\t\t\t} else {\n\t\t\t\t\t// wptbSaveBtn.classList.add('active');\n\t\t\t\t\t// wptbSaveBtn.classList.remove('wptb-save-disabled');\n\n\t\t\t\t\tWPTB_Store.commit('setTableDirty');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// load necessary saved table state\n\t\t\tlet wptbTableSetup = document.getElementsByClassName('wptb-table-setup');\n\t\t\tif (wptbTableSetup.length > 0) {\n\t\t\t\twptbTableSetup = wptbTableSetup[0];\n\n\t\t\t\t// wptbTableSetup.outerHTML = '';\n\t\t\t\tif (window.wptbTableStateSaving[window.wptbTableStateNumberShow]) {\n\t\t\t\t\tif (\n\t\t\t\t\t\twindow.wptbTableStateSaving[window.wptbTableStateNumberShow][0] &&\n\t\t\t\t\t\ttypeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][0] === 'object'\n\t\t\t\t\t) {\n\t\t\t\t\t\tif ('outerHTML' in window.wptbTableStateSaving[window.wptbTableStateNumberShow][0]) {\n\t\t\t\t\t\t\twptbTableSetup.outerHTML =\n\t\t\t\t\t\t\t\twindow.wptbTableStateSaving[window.wptbTableStateNumberShow][0].outerHTML;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst wptbTableSetupNew = document.querySelector('.wptb-table-setup');\n\t\t\t\t\tif (wptbTableSetupNew && wptbTableSetupNew.children.length == 0) {\n\t\t\t\t\t\t// document.getElementsByClassName('wptb-table-generator')[0].style.display = 'table';\n\t\t\t\t\t\t// wptbSaveBtn.classList.add('wptb-save-disabled');\n\t\t\t\t\t\t// wptbSaveBtn.classList.remove('active');\n\n\t\t\t\t\t\tWPTB_Store.commit('setTableClean');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// document.getElementsByClassName('wptb-table-generator')[0].style.display = 'none';\n\t\t\t\t\t}\n\n\t\t\t\t\t// add or change or delete style element in the head for table cells who have auto width\n\t\t\t\t\tconst { head } = document;\n\t\t\t\t\tif (head) {\n\t\t\t\t\t\tconst cssForTdsWidthAutoOld = head.querySelector('style[data-wptb-td-auto-width=\"true\"]');\n\t\t\t\t\t\tif (cssForTdsWidthAutoOld) {\n\t\t\t\t\t\t\thead.removeChild(cssForTdsWidthAutoOld);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (window.wptbTableStateSaving[window.wptbTableStateNumberShow][1]) {\n\t\t\t\t\t\t\tconst cssForTdsWidthAuto = document.createElement('style');\n\t\t\t\t\t\t\tcssForTdsWidthAuto.setAttribute('data-wptb-td-auto-width', true);\n\t\t\t\t\t\t\tcssForTdsWidthAuto.innerHTML =\n\t\t\t\t\t\t\t\twindow.wptbTableStateSaving[window.wptbTableStateNumberShow][1];\n\t\t\t\t\t\t\thead.appendChild(cssForTdsWidthAuto);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// change value of table title field\n\t\t\t\t\tconst wptbSetupName = document.getElementById('wptb-setup-name');\n\t\t\t\t\tif (typeof window.wptbTableStateSaving[window.wptbTableStateNumberShow][2] !== 'undefined') {\n\t\t\t\t\t\tif (wptbSetupName)\n\t\t\t\t\t\t\twptbSetupName.value = window.wptbTableStateSaving[window.wptbTableStateNumberShow][2];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet body = document.getElementsByTagName('body');\n\t\t\t\tif (body.length > 0) {\n\t\t\t\t\tbody = body[0];\n\t\t\t\t}\n\n\t\t\t\tWPTB_Helper.elementOptionsPanelClear();\n\t\t\t\tWPTB_LeftPanel();\n\n\t\t\t\tconst wptbLeftScrollPanelCellSetting = document.getElementById('wptb-left-scroll-panel-cell-settings');\n\t\t\t\tif (wptbLeftScrollPanelCellSetting) {\n\t\t\t\t\twptbLeftScrollPanelCellSetting.classList.remove('visible');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.tableStateClear = function () {\n\t\twindow.wptbTableStateSaving = window.wptbTableStateSaving.slice(0, 1);\n\t\twindow.wptbTableStateNumberShow = 0;\n\n\t\tconst wptbSaveBtn = document.querySelector('.main-save-button-wrapper .save-btn');\n\t\tif (wptbSaveBtn) {\n\t\t\twptbSaveBtn.removeAttribute('data-wptb-table-state-number-save');\n\t\t}\n\n\t\tlet wptbUndo = document.getElementsByClassName('wptb-undo');\n\t\tif (wptbUndo.length > 0) {\n\t\t\twptbUndo = wptbUndo[0];\n\n\t\t\twptbUndo.classList.add('wptb-undoredo-disabled');\n\t\t}\n\n\t\tlet wptbRedo = document.getElementsByClassName('wptb-redo');\n\t\tif (wptbRedo.length > 0) {\n\t\t\twptbRedo = wptbRedo[0];\n\n\t\t\twptbRedo.classList.add('wptb-undoredo-disabled');\n\t\t}\n\n\t\tWPTB_Store.commit('setTableClean');\n\t};\n};\n","var WPTB_innerElementSet = function ( element ) {\n \n element.ondragenter = function (e) {\n var div;\n if ( e.dataTransfer.types.indexOf( 'wptbelement' ) == -1 && e.dataTransfer.types.indexOf( 'wptb-moving-mode' ) == -1 ) {\n return;\n }\n WPTB_DropHandle(this, e);\n \n element.classList.add( 'wptb-ondragenter' );\n }\n element.ondragover = function (e) {\n e.preventDefault();\n WPTB_DropHandle(this, e);\n }\n element.ondragleave = function (e) {\n WPTB_DropHandle(this, e, true);\n\n }\n element.ondrop = function(e) {\n this.classList.remove( 'wptb-ondragenter' );\n let element, classId;\n e.preventDefault();\n e.stopPropagation();\n\n if (!e.dataTransfer.getData('wptbElement') && !e.dataTransfer.getData('node')) {\n return;\n }\n let wptbDropHandle,\n wptbDropBorderMarker;\n if ( document.getElementsByClassName( 'wptb-drop-handle' ).length > 0 ) {\n wptbDropHandle = document.getElementsByClassName( 'wptb-drop-handle' )[0];\n }\n if( document.getElementsByClassName( 'wptb-drop-border-marker' ).length > 0 ) {\n wptbDropBorderMarker = document.getElementsByClassName( 'wptb-drop-border-marker' )[0];\n }\n\n if ( e.dataTransfer.getData( 'wptbElement' ) ) {\n element = WPTB_Helper.newElementProxy( e.dataTransfer.getData( 'wptbElement' ) );\n element = element.getDOMElement();\n } else {\n classId = e.dataTransfer.getData( 'node' );\n element = document.getElementsByClassName( classId )[0];\n //element.classList.remove( 'wptb-moving-mode' );\n }\n\n if(WPTB_Helper.getDragRelativeType() === 'td_relative'){\n WPTB_DropHandle(this, e, true);\n const parentCell = WPTB_Helper.getParentOfType('td', e.target);\n\n parentCell.appendChild(element);\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n\n }else if( wptbDropHandle.style.display == 'block' ) {\n let td;\n if( wptbDropHandle.dataset.text == 'Drop Here' ) {\n td = wptbDropHandle.getDOMParentElement();\n td.appendChild( element );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n } else {\n let innerElement = wptbDropHandle.getDOMParentElement();\n td = innerElement.parentNode;\n\n if( wptbDropHandle.dataset.text == 'Above Element' ) {\n td.insertBefore( element, innerElement );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n } else if( wptbDropHandle.dataset.text == 'Below Element' ) {\n let innerElementNext = innerElement.nextSibling;\n td.insertBefore( element, innerElementNext );\n WPTB_Helper.wptbDocumentEventGenerate('element:mounted:dom', element);\n }\n }\n \n let thisRow = td.parentNode;\n if( WPTB_Helper.rowIsTop( thisRow ) ) { \n let table = WPTB_Helper.findAncestor( thisRow, 'wptb-preview-table' );\n \n if( table.classList.contains( 'wptb-table-preview-head' ) ) {\n WPTB_Helper.dataTitleColumnSet( table );\n }\n }\n \n // start item javascript if item is new\n let infArr = element.className.match(/wptb-element-(.+)-(\\d+)/i);\n let elemKind = infArr[1];\n if ( e.dataTransfer.getData( 'wptbElement' ) && ( elemKind == 'text' || elemKind == 'button' || elemKind == 'image' || elemKind == 'star_rating' || elemKind == 'list' ) ) {\n //WPTB_Helper.elementStartScript( element );\n }\n } else {\n return;\n }\n\n if(wptbDropHandle){\n wptbDropHandle.style.display = 'none';\n wptbDropBorderMarker.style.display = 'none';\n }\n\n WPTB_innerElementSet( element );\n \n if( ! element.classList.contains( 'wptb-image-container' ) || element.classList.contains( 'wptb-moving-mode' ) ) {\n element.classList.remove( 'wptb-moving-mode' );\n let wptbTableStateSaveManager = new WPTB_TableStateSaveManager();\n wptbTableStateSaveManager.tableStateSet();\n } \n return true;\n }\n element.onmouseover = function(e) {\n element.classList.remove( 'wptb-ondragenter' );\n }\n}","/**\n * Add upsell related scripts.\n */\n(function upsellsHooks() {\n\ttry {\n\t\tif (WPTB_Store.getters.proStatus) {\n\t\t\treturn;\n\t\t}\n\t} catch (e) {\n\t\treturn;\n\t}\n\tconst mountPointId = 'manageCellsMoveUpsells';\n\tconst mountPoint = document.createElement('div');\n\tmountPoint.setAttribute('id', mountPointId);\n\n\tdocument.body.appendChild(mountPoint);\n\n\tWPTB_ControlsManager.callControlScript('ManageCellsMoveUpsells', mountPointId);\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 // @deprecated\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 // get an id for table element\n index = WPTB_ElementIdProvider.getNewId(element.kind);\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 \n if (event.target.classList.contains( 'wptb-text-container' )) {\n if (node.children.length === 1) {\n let elemChild = node.children[0].lastChild;\n \n if (elemChild?.children?.length === 1) {\n if (elemChild.innerHTML === '<br>') {\n elemChild.innerHTML = '';\n }\n }\n }\n }\n \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};","/**\n * Assign icon manager to global space.\n *\n * @param {string} key global key\n * @param {Object} context global context\n * @param {Function} factory factory function\n */\n(function assignToGlobal(key, context, factory) {\n\t// eslint-disable-next-line no-param-reassign\n\tcontext[key] = factory();\n\t// eslint-disable-next-line no-restricted-globals\n})('WPTB_IconManager', self || global, function iconManager() {\n\t/**\n\t * Frontend icon manager for WPTB builder.\n\t *\n\t * @param {Object} list all icon list\n\t * @class\n\t */\n\tfunction IconManager(list) {\n\t\tif (!list) {\n\t\t\tthrow new Error('no icon list is defined for WPTB_IconManager instance');\n\t\t}\n\t\tconst iconList = list;\n\n\t\t/**\n\t\t * Cached icons.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tconst cachedIcons = {};\n\n\t\t/**\n\t\t * Prepare an icon with a wrapper.\n\t\t *\n\t\t * @param {string} iconSvgString string representation of icon\n\t\t * @param {Array | string | null} extraClass name of extra class[es] to apply to icon wrapper\n\t\t * @param {boolean} stringifiedVersion get stringified html version of icon\n\t\t * @return {HTMLDivElement} created icon wrapper\n\t\t */\n\t\tconst prepareIcon = (iconSvgString, extraClass = null, stringifiedVersion = false) => {\n\t\t\tconst iconWrapper = document.createElement('div');\n\n\t\t\t// if an extra class is defined, add it to icon wrapper\n\t\t\tif (extraClass) {\n\t\t\t\tif (!Array.isArray(extraClass)) {\n\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\textraClass = [extraClass];\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line array-callback-return\n\t\t\t\textraClass.map((eClass) => {\n\t\t\t\t\ticonWrapper.classList.add(eClass);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ticonWrapper.innerHTML = iconSvgString;\n\n\t\t\treturn stringifiedVersion ? iconWrapper.outerHTML : iconWrapper;\n\t\t};\n\n\t\t/**\n\t\t * Get a cached icon.\n\t\t *\n\t\t * @param {string} iconName name of the icon\n\t\t * @param {string | Array | null} extraClass extra class name[s] to add to icon wrapper\n\t\t * @param {boolean | null} getStringifiedVersion get stringified version of the icon\n\t\t * @return {null | Element} Prepared cached icon or null if no cached version is found\n\t\t */\n\t\tconst getCachedIcon = (iconName, extraClass = null, getStringifiedVersion = false) => {\n\t\t\tif (cachedIcons[iconName]) {\n\t\t\t\treturn prepareIcon(cachedIcons[iconName], extraClass, getStringifiedVersion);\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\n\t\t/**\n\t\t * Add an icon to cache.\n\t\t *\n\t\t * @param {string} iconName name of the icon to be stored\n\t\t * @param {string} stringifiedIcon stringified version of the icon\n\t\t */\n\t\tconst addToCache = (iconName, stringifiedIcon) => {\n\t\t\tcachedIcons[iconName] = stringifiedIcon;\n\t\t};\n\n\t\t/**\n\t\t * Get a list of all available icons.\n\t\t *\n\t\t * @return {Object} icon list\n\t\t */\n\t\tthis.getIconList = () => {\n\t\t\treturn iconList;\n\t\t};\n\n\t\t/**\n\t\t * Get an icon.\n\t\t *\n\t\t * Icons sent with this function are wrapped with a 'div' element.\n\t\t *\n\t\t * @param {string} iconName name of the icon\n\t\t * @param {string | Array | null} extraClass extra class[es] to add to icon wrapper\n\t\t * @param {boolean} getStringifiedVersion get stringified version of icon\n\t\t * @return {Promise<void>} a Promise that will be resolved when icon is fetched from server\n\t\t */\n\t\tthis.getIcon = (iconName, extraClass = null, getStringifiedVersion = false) => {\n\t\t\t// eslint-disable-next-line consistent-return\n\t\t\treturn new Promise((res, rej) => {\n\t\t\t\t// if cached version is found, return that version\n\t\t\t\tconst cachedIcon = getCachedIcon(iconName, extraClass, getStringifiedVersion);\n\t\t\t\tif (cachedIcon) {\n\t\t\t\t\treturn res(cachedIcon);\n\t\t\t\t}\n\n\t\t\t\tif (iconList[iconName]) {\n\t\t\t\t\treturn fetch(iconList[iconName])\n\t\t\t\t\t\t.then((resp) => {\n\t\t\t\t\t\t\tif (resp.ok) {\n\t\t\t\t\t\t\t\treturn resp.text();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthrow new Error(`an error occurred while fetching icon [${iconName}]`);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then((iconString) => {\n\t\t\t\t\t\t\tif (iconString.error) {\n\t\t\t\t\t\t\t\tthrow new Error(`an error occurred while fetching icon [${iconName}]`);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// add icon to cache\n\t\t\t\t\t\t\taddToCache(iconName, iconString);\n\n\t\t\t\t\t\t\treturn res(prepareIcon(iconString, extraClass, getStringifiedVersion));\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\t\treturn rej(new Error(err));\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn rej(new Error(`no icon found with the given name of [${iconName}]`));\n\t\t\t});\n\t\t};\n\t\tthis.getIconUrl = (iconName) => {\n\t\t\tlet iconUrl = null;\n\n\t\t\tif (iconList[iconName]) {\n\t\t\t\ticonUrl = iconList[iconName];\n\t\t\t}\n\n\t\t\treturn iconUrl;\n\t\t};\n\t}\n\n\t// eslint-disable-next-line no-restricted-globals\n\tconst context = self || global;\n\tif (context.wptb_admin_object) {\n\t\treturn new IconManager(wptb_admin_object.iconManager);\n\t}\n\n\treturn null;\n});\n"]}