{"version":3,"sources":["WPTB_CutGlueTable.js","WPTB_GetDirectionAfterReconstruction.js","WPTB_SortableTable.js","WPTB_RecalculateIndexes.js","WPTB_ResponsiveFrontend.js","WPTB_StylePass.js","wp-table-builder-frontend.js"],"names":["WPTB_CutGlueTable","cutTableHorizontally","rowBefore","table","rows","i","tableRowsIChildren","children","j","length","rowSpan","newTdRowspan","dataset","sameCellBeforeDivision","td","hasOwnProperty","wptbCell","mark","getDOMElement","document","createElement","tdTopStyle","getAttribute","setAttribute","colSpan","dataXIndex","xIndex","dataXIndexNext","parseInt","beforeTd","maxCols","querySelector","insertBefore","WPTB_RecalculateIndexes","glueTableHorizontally","tds","_toConsumableArray","getElementsByTagName","hasAttribute","dataSameCellBeforeDivision","tdsSameBeforeDivision","querySelectorAll","parentNode","classList","contains","yIndex","tdsSameBeforeDivisionJPlusChildren","k","appendChild","removeChild","cutTableVertically","col","rowChildren","rowChildrenLength","afterTd","rowSpanNewTd","colSpanOld","colSpanNewTd","tdLeftStyle","tdAnalogThisX","style","width","tdAnalogThisY","height","glueTableVertically","jFirstTdGlue","WPTB_GetDirectionAfterReconstruction","typeFirst","typeSecond","verticalProp","responsiveFront","itemsPerHeader","tableMaxCols","switchMode","type","getDirective","e","directives","sizeRangeId","detail","mode","responsiveMode","modeOptions","topRowAsHeader","cellStackDirection","cellsPerRow","newTable","key","context","factory","exports","_typeof","module","self","global","options","arguments","undefined","this","thisObject","sortingCellMouseMov","element","target","tagName","x","offsetX","layerX","y","offsetY","layerY","xMatch","clientWidth","clientHeight","add","remove","sortingCellMouseMoveVertical","sortingCellMouseMoveHorizontal","tdMouseLeave","sortableTable","currentTarget","tableWasSorted","tableRowsBefore","tableRowsAfter","tableRowsArr","tableLastCont","push","rowspan","rowNum","concat","map","rowsTdFirst","rowsValuesArr","tdYCoordsRowSpanPrevious","tableRowsPushed","tdsChanged","changeSortingTdsCollection","tdRowspan","textElementsValues","textElementsValuesGet","rowsTd","value","orderBy","setSortedAscDataAttr","sort","prev","next","sortOrder","unshift","indexOf","tBody","innerHTML","rowsValObj","row","trRef","tr","colspan","colNum","columnsTdFirst","columnsValuesArr","tdXCoordsColSpanPrevious","tdColspan","columnsTd","tdsColumn","difference","columnsValObj","tdsAll","removeAttribute","removeCellsAttrAfterDivision","tableSM","tableStateSet","reassignElementsStyles","dataAttr","prevValue","nextValue","cell","textElements","innerText","tdIndexSpanPrev","collectionTds","collectionTdsJSpan","collectionTdsJSpanProperty","indexName","indexNameCamelCase","indexNamePerpendicularCamelCase","tdSpanProperty","tableGroupCount","tdsCollectionChanged","splice","tdSpan","cellsStylesScheme","rowsStylesScheme","sortModeSwitcher","active","removeEventListener","sortableTableVerticalStart","sortingCellMouseMoveSwitcher","addEventListener","wptbSortableTableVertical","createTableElementsStylesScheme","sortableTableHorizontalStart","wptbSortableTableHorizontal","tableObjectChange","start","elemSelector","elements","elem","backgroundColor","window","getComputedStyle","getPropertyValue","objectKey","String","elementsStylesScheme","elemStyles","sortableTableInitialization","sortModeSwitcherRun","switchModeObj","tableOld","call","_this","s","sCMM","dataAttrSortChange","rowsLength","dataYIndexStart","trs","maxColsFull","tdsArr","jMainIter","z","columns","logToConsole","message","process","env","NODE_ENV","console","Error","CellObject","cellElement","reference","referenceObject","mergedRenderStatus","mergedCells","column","getMergedRenderStatus","setMergedRenderStatus","status","addToMergedCells","mergeType","cellObj","isReference","cloneNode","modifications","spans","remainingSpans","cacheSpanValues","Object","keys","prototype","defaultVal","getSpan","spanType","spanVal","getElement","getRemainingSpans","setRemainingSpans","createCellElement","attributeKey","attributeValue","append","glue","currentVal","default","setSpan","valueToApply","mc","remainingVal","remainingParentSpans","startIndex","endIndex","resetAttribute","resetAllAttributes","el","TableObject","tableEl","_this2","tableElement","parsedTable","rowCache","originals","rowColors","header","even","odd","addToParsed","r","c","cellObject","parseTable","Array","from","ri","cells","currentIndex","ci","currentCellObject","spanRow","spanTypes","spanCol","sr","referenceCell","sc","parseRowColors","headerDatasetColor","wptbHeaderBackgroundColor","evenRowDatasetColor","wptbEvenRowBackgroundColor","oddRowDatasetColor","wptbOddRowBackgroundColor","rowsNeeded","rn","tempRow","addRow","fromOriginals","originalIndex","isArray","tableBody","range","createRange","setStart","createContextualFragment","join","childNodes","id","clearTable","getRow","maxRows","maxColumns","mergedHeader","reduce","p","getCell","returnObject","getCellsAtRow","rowId","returnObj","tempCell","appendToRow","cellRowId","cellColumnId","cachedRow","appendElementToRow","appendObjectToRow","getParsedTable","responsiveClassDefaultOptions","query","defaultClasses","bindToResize","_this3","_objectSpread","elementObjects","tableObject","bindRebuildToResize","rebuildTables","directiveString","wptbResponsiveDirectives","JSON","parse","atob","addDefaultClasses","removeDefaultClasses","autoBuild","sizeRange","autoOption","tableObj","direction","staticTopRow","repeatMergedHeader","buildDefault","autoDirectionBuild","isRowStacked","headerBuild","allCellsByRow","rowStartIndex","filter","b","rowObj","bgColor","forEach","cellCount","pR","allCellsByCol","t","tCell","cR","headerCells","h","stackedAsColumn","rowBorderStyle","addHeaderCells","addBorder","borderTop","cellClone","headerCount","Math","ceil","currentOriginalRow","cc","currentCell","cellAddStatus","remainingItems","currentRowSpan","min","hc","headerCellObject","clonedHeaderCell","rS","cS","colorIndex","calculateRangeId","val","stops","sortedStops","a","rangeId","rebuildTable","size","directive","responsiveEnabled","buildCallable","getBoundingClientRect","breakpoints","tabEvent","CustomEvent","dispatchEvent","o","innerSize","innerWidth","relativeWidth","globalKey","stylesheets","insertShadowRoot","shadowRootContainer","tableContainer","mainParent","parentChildren","tableIndex","upSibling","downSibling","prepareAllStylesheets","shadowRoot","borrowFromTheme","insertAdjacentElement","fontFamily","init","tableContainers","setupStylePass","checkTableEligibility","disableThemeStyles","container","maxWidth","wptbTableContainerMaxWidth","attachShadow","stylesheetsObj","root","prepareStylesheet","handler","url","linkElement","jQuery","ready","$","getElementsByClassName","wptb_tableReconstraction","createNewTableIndic","previewTable","tableContainerMatrix","display","wptbTableAlignment","offsetWidth","reconstraction","wptbAdaptiveTable","tableContainerWidth","previewTableWidth","tableColumns","previewTableRows","tableReconstructed","wptbPreviewTableMobile","overflow","tdWidth","wholeColumnsInContainer","floor","dataWholeColumnInContainer","newTableTbody","infArr","className","match","tableRows","newTableLastSectionFilledColumns","valuesIsSaved","tableRowsWithoutHeader","newTableColumnsWithoutLeftHeader","countRows","tdStyles","sectionNumber","tdLeftHeader","rowFirstStyles","borderTopColor","borderColor","borderBottomColor","borderTopWidth","rowKStyles","borderWidth","background","newTableColumns","increaseRatioRows","newTableRows","jMax","jStart","newTd","rowStyles","images","minWidth","bubbles","wptb_tdDefaultWidth","wptbTableContainers","wptbTableContainer","mergingСellsHorizontally","wptbTableContainerWidth","tdStyleObj","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingLeftWidth","tdPaddingRightWidth","tdPaddingCommon","parseFloat","tableTdBorderCommonWidth","wptbTableTdsSumMaxWidth","wptbFixedWidthSize","wptbCellsWidthAutoCount","styleElementCreate","tableTdWidthAuto","wptbTdWidthAuto","head","cssForTdsWidthAutoOld","cssForTdsWidthAuto","wptbElementHoverBgColor","wptbElementHoverTextColor","color","wptbElementHoverScale","transform","wptbElementBgColor","wptbElementColor","resize","wptbSize","wptbSizeNew","toLowerCase","wptbButtonWrapper","WPTB_ResponsiveFrontend","tables","WPTB_SortableTable","sortingTable","responsiveFrontReady","WPTB_StylePass","WptbFrontendData","stylePass"],"mappings":"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","file":"wp-table-builder-frontend.js","sourcesContent":["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","/**\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 * 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\tconst p = textElements[j].querySelector('p');\n\t\t\t\tvalue += p.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","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 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_ResponsiveFrontend', self || global, () => {\n\t/**\n\t * Log a message to console.\n\t *\n\t * @param {string} message message to be logged\n\t * @param {string} type console log type (e.g info, warn, error)\n\t * @throws An error will be given for invalid type value\n\t */\n\tfunction logToConsole(message, type = 'log') {\n\t\tif (typeof process !== 'undefined' && process.env.NODE_ENV === 'development') {\n\t\t\tif (console[type]) {\n\t\t\t\tconsole[type](`[WPTB]: ${message}`);\n\t\t\t} else {\n\t\t\t\tthrow new Error(`no logging type found with given type value of [${type}]`);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Object implementation for cell element operations.\n\t * If an empty cellElement parameter is given, a fresh cell element will be created.\n\t *\n\t * @param {HTMLElement | null} cellElement cell element\n\t * @param {null | CellObject} [isReference=null] main cell object if the current cell is a reference to that cell in cases like merged cells\n\t * @param reference\n\t * @class\n\t */\n\tfunction CellObject(cellElement, reference = null) {\n\t\t// cell element\n\t\tthis.element = cellElement;\n\n\t\tthis.referenceObject = reference;\n\n\t\t// variable for deciding part of merged cells to be visible or not\n\t\tthis.mergedRenderStatus = true;\n\n\t\t// connected merged cell references\n\t\tthis.mergedCells = {\n\t\t\trow: [],\n\t\t\tcolumn: [],\n\t\t};\n\n\t\t/**\n\t\t * Get merged render status.\n\t\t *\n\t\t * @return {boolean} render status\n\t\t */\n\t\tthis.getMergedRenderStatus = () => {\n\t\t\treturn this.mergedRenderStatus;\n\t\t};\n\n\t\t/**\n\t\t * Set merged render status.\n\t\t *\n\t\t * @param {boolean} status render status\n\t\t */\n\t\tthis.setMergedRenderStatus = (status) => {\n\t\t\tthis.mergedRenderStatus = status;\n\t\t};\n\n\t\t/**\n\t\t * Add merged cells.\n\t\t *\n\t\t * @param {string} mergeType merge type\n\t\t * @param {CellObject} cellObj cell object instance\n\t\t */\n\t\tthis.addToMergedCells = (mergeType, cellObj) => {\n\t\t\tthis.mergedCells[mergeType].push(cellObj);\n\t\t};\n\n\t\t/**\n\t\t * Determine if current cell is a reference to a main cell.\n\t\t *\n\t\t * @return {boolean} a reference or not\n\t\t */\n\t\tthis.isReference = () => {\n\t\t\treturn this.referenceObject !== null;\n\t\t};\n\n\t\tif (this.isReference()) {\n\t\t\tthis.element = cellElement.cloneNode(true);\n\t\t}\n\n\t\t// modifications object\n\t\t// this object will keep track of the modifications that has done to the cell to make sure we can roll them back to their original values\n\t\tthis.modifications = {};\n\n\t\t// spans object for cell's original merge values\n\t\tthis.spans = {\n\t\t\trow: 1,\n\t\t\tcol: 1,\n\t\t};\n\n\t\tthis.remainingSpans = {\n\t\t\trow: 0,\n\t\t\tcol: 0,\n\t\t};\n\n\t\t/**\n\t\t * Cache cell element's original span values.\n\t\t *\n\t\t * @private\n\t\t */\n\t\tthis.cacheSpanValues = () => {\n\t\t\t// eslint-disable-next-line array-callback-return\n\t\t\tObject.keys(this.spans).map((k) => {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.spans, k)) {\n\t\t\t\t\tconst defaultVal = this.spans[k];\n\n\t\t\t\t\tthis.spans[k] = this.element.getAttribute(`${k}Span`) || defaultVal;\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tthis.cacheSpanValues();\n\n\t\t/**\n\t\t * Get original span value of cell object.\n\t\t *\n\t\t * @param {string} spanType span type, available values are row-column\n\t\t * @param {boolean} fromElement instead of original value, get the assigned span value from HTMLElement itself\n\t\t * @throws An error will be given for invalid span type\n\t\t */\n\t\tthis.getSpan = (spanType, fromElement = false) => {\n\t\t\tconst spanVal = fromElement ? this.getElement().getAttribute(`${spanType}Span`) : this.spans[spanType];\n\t\t\tif (spanVal) {\n\t\t\t\treturn spanVal;\n\t\t\t}\n\t\t\tthrow new Error(`no span value found with the given type of [${spanType}]`);\n\t\t};\n\n\t\tthis.getRemainingSpans = (spanType) => {\n\t\t\treturn this.remainingSpans[spanType];\n\t\t};\n\n\t\tthis.setRemainingSpans = (spanType, value) => {\n\t\t\tthis.remainingSpans[spanType] = value;\n\t\t};\n\n\t\t/**\n\t\t * Get cell element.\n\t\t *\n\t\t * @return {HTMLElement} cell element\n\t\t */\n\t\tthis.getElement = () => {\n\t\t\treturn this.element;\n\t\t};\n\n\t\t/**\n\t\t * Create a cell element.\n\t\t *\n\t\t * @private\n\t\t * @return {HTMLTableDataCellElement}\n\t\t */\n\t\tthis.createCellElement = () => {\n\t\t\treturn document.createElement('td');\n\t\t};\n\n\t\t// create a new cell element if no cellElement argument is given with constructor function\n\t\tif (!cellElement) {\n\t\t\tthis.element = this.createCellElement();\n\t\t}\n\n\t\t/**\n\t\t * Add attribute to cell element.\n\t\t *\n\t\t * This function have the ability to add/remove attributes from cell element.\n\t\t * All attributes modified with this function will be cached with their before value for an easy reset on demand.\n\t\t *\n\t\t * @param {string} attributeKey attribute name in camelCase format, for sub-keys, use dot object notation\n\t\t * @param {any} attributeValue attribute value\n\t\t * @param {boolean} [append=false] append the value or replace it\n\t\t * @param {string} [glue=,] glue to join attribute value if append option is enabled\n\t\t */\n\t\tthis.setAttribute = (attributeKey, attributeValue, append = false, glue = ',') => {\n\t\t\tlet defaultVal = this.getElement()[attributeKey];\n\n\t\t\t// if attribute value is a function or an object, it means we pulled a whole declaration instead of only inline attribute values, in that case, use getAttribute to get only inline values related to that attribute\n\t\t\tif (typeof defaultVal === 'function' || typeof defaultVal === 'object') {\n\t\t\t\tdefaultVal = this.getElement().getAttribute(attributeKey);\n\t\t\t}\n\n\t\t\t// if there is already a default value defined, use that instead\n\t\t\tif (this.modifications[attributeKey]) {\n\t\t\t\tdefaultVal = this.modifications[attributeKey].default;\n\t\t\t}\n\n\t\t\tlet currentVal = defaultVal;\n\n\t\t\t// join attributes\n\t\t\tif (append) {\n\t\t\t\tcurrentVal += `${currentVal}${glue}${attributeValue}`;\n\t\t\t} else {\n\t\t\t\tcurrentVal = attributeValue;\n\t\t\t}\n\n\t\t\tthis.modifications[attributeKey] = { value: currentVal, default: defaultVal };\n\n\t\t\tthis.getElement()[attributeKey] = currentVal;\n\t\t};\n\n\t\t/**\n\t\t * Set row/colspan for cell.\n\t\t *\n\t\t * @param {string} spanType span type\n\t\t * @param {number} value value to assign to span\n\t\t * @return {boolean} if any space left to render the element\n\t\t */\n\t\tthis.setSpan = (spanType, value) => {\n\t\t\t// working on main cell\n\t\t\tif (!this.isReference()) {\n\t\t\t\tconst valueToApply = this.getSpan(spanType) - value < 0 ? this.getSpan(spanType) : value;\n\n\t\t\t\tthis.setAttribute(`${spanType}Span`, valueToApply);\n\n\t\t\t\t// calculate remaining cells amount to merge in this span type\n\t\t\t\tthis.setRemainingSpans(spanType, this.getSpan(spanType) - valueToApply);\n\n\t\t\t\t// set visibility of connected merge group cells to false to not render them since we added necessary span values to main cell which will leak into their position\n\t\t\t\tfor (let mc = 0; mc < valueToApply - 1; mc += 1) {\n\t\t\t\t\tif (this.mergedCells[spanType] && this.mergedCells[spanType][mc]) {\n\t\t\t\t\t\tthis.mergedCells[spanType][mc].setMergedRenderStatus(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// working on reference\n\n\t\t\tif (!this.getMergedRenderStatus()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst remainingVal = this.referenceObject.getRemainingSpans(spanType);\n\n\t\t\t// no space left to put cell\n\t\t\tif (remainingVal === 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst valueToApply = remainingVal - value < 0 ? remainingVal : value;\n\n\t\t\tconst remainingParentSpans = remainingVal - valueToApply;\n\t\t\tthis.referenceObject.setRemainingSpans(spanType, remainingParentSpans);\n\n\t\t\tthis.setAttribute(`${spanType}Span`, valueToApply);\n\n\t\t\t// change render status of remaining connected merge cells\n\t\t\tif (remainingParentSpans !== 0) {\n\t\t\t\tconst totalConnectedCells = this.referenceObject.mergedCells[spanType].length;\n\t\t\t\tconst startIndex = totalConnectedCells - remainingVal + 1;\n\t\t\t\tconst endIndex = startIndex + valueToApply - 1;\n\n\t\t\t\tfor (let mc = startIndex; mc < endIndex; mc += 1) {\n\t\t\t\t\tthis.mergedCells[spanType][mc].setMergedRenderStatus(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t};\n\n\t\t/**\n\t\t * Reset a modified attribute to its default value\n\t\t *\n\t\t * @param {string} attributeKey attribute name\n\t\t */\n\t\tthis.resetAttribute = (attributeKey) => {\n\t\t\tif (this.modifications[attributeKey]) {\n\t\t\t\tthis.getElement()[attributeKey] = this.modifications[attributeKey].default;\n\t\t\t\tthis.modifications[attributeKey] = undefined;\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Reset all modified attributes of cell element to their default values.\n\t\t */\n\t\tthis.resetAllAttributes = () => {\n\t\t\t// eslint-disable-next-line array-callback-return\n\t\t\tObject.keys(this.modifications).map((k) => {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(this.modifications, k)) {\n\t\t\t\t\tthis.resetAttribute(k);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\treturn {\n\t\t\tgetElement: this.getElement,\n\t\t\tel: this.element,\n\t\t\tsetAttribute: this.setAttribute,\n\t\t\tresetAllAttributes: this.resetAllAttributes,\n\t\t\tgetSpan: this.getSpan,\n\t\t\tsetSpan: this.setSpan,\n\t\t\tgetRemainingSpans: this.getRemainingSpans,\n\t\t\tsetRemainingSpans: this.setRemainingSpans,\n\t\t\tisReference: this.isReference,\n\t\t\taddToMergedCells: this.addToMergedCells,\n\t\t\tmergedCells: this.mergedCells,\n\t\t\tsetMergedRenderStatus: this.setMergedRenderStatus,\n\t\t\tgetMergedRenderStatus: this.getMergedRenderStatus,\n\t\t};\n\t}\n\n\tCellObject.spanTypes = { row: 'row', column: 'col' };\n\n\t/**\n\t * Object implementation for table element operations.\n\t *\n\t * @param {HTMLElement} tableEl table element\n\t * @return {Object} instance\n\t * @class\n\t */\n\tfunction TableObject(tableEl) {\n\t\t/**\n\t\t * Table element.\n\t\t *\n\t\t * @private\n\t\t * @type {HTMLElement}\n\t\t */\n\t\tthis.tableElement = tableEl;\n\n\t\t/**\n\t\t * Parsed table object.\n\t\t *\n\t\t * @private\n\t\t * @type {Array}\n\t\t */\n\t\tthis.parsedTable = [];\n\n\t\t/**\n\t\t * An array of created table rows elements that are id'd according to their index in array.\n\t\t *\n\t\t * @type {[HTMLElement]}\n\t\t */\n\t\tthis.rowCache = [];\n\n\t\t/**\n\t\t * Original table elements minus the cells.\n\t\t *\n\t\t * @type {{rows: []}}\n\t\t * @private\n\t\t */\n\t\tthis.originals = { rows: [] };\n\n\t\t/**\n\t\t * Row colors of original table.\n\t\t *\n\t\t * @type {{even: string, header: string, odd: string}}\n\t\t */\n\t\tthis.rowColors = {\n\t\t\theader: null,\n\t\t\teven: null,\n\t\t\todd: null,\n\t\t};\n\n\t\t/**\n\t\t * Add cell to parsed array.\n\t\t *\n\t\t * @private\n\t\t * @param {number} r row id\n\t\t * @param {number} c column id\n\t\t * @param {CellObject} cellObject cell object to add to parsed array\n\t\t */\n\t\tthis.addToParsed = (r, c, cellObject) => {\n\t\t\tif (!this.parsedTable[r]) {\n\t\t\t\tthis.parsedTable[r] = [];\n\t\t\t}\n\n\t\t\tthis.parsedTable[r][c] = cellObject;\n\t\t};\n\n\t\t/**\n\t\t * Assign table cells into row and column numbers.\n\t\t *\n\t\t * @private\n\t\t */\n\t\tthis.parseTable = () => {\n\t\t\tconst rows = Array.from(this.tableElement.querySelectorAll('tr'));\n\n\t\t\t// eslint-disable-next-line array-callback-return\n\t\t\trows.map((r, ri) => {\n\t\t\t\t// cache original rows for future use\n\t\t\t\tthis.originals.rows.push(r);\n\n\t\t\t\tconst cells = Array.from(r.querySelectorAll('td'));\n\n\t\t\t\tlet currentIndex = 0;\n\t\t\t\t// eslint-disable-next-line array-callback-return\n\t\t\t\tcells.map((c, ci) => {\n\t\t\t\t\tconst currentCellObject = new CellObject(c);\n\t\t\t\t\tthis.addToParsed(ri, currentIndex, currentCellObject);\n\t\t\t\t\tcurrentIndex += 1;\n\n\t\t\t\t\tconst spanRow = currentCellObject.getSpan(CellObject.spanTypes.row);\n\t\t\t\t\tconst spanCol = currentCellObject.getSpan(CellObject.spanTypes.column);\n\n\t\t\t\t\tif (spanRow > 1) {\n\t\t\t\t\t\tfor (let sr = 1; sr < spanRow; sr += 1) {\n\t\t\t\t\t\t\tconst referenceCell = new CellObject(c, currentCellObject);\n\t\t\t\t\t\t\tcurrentCellObject.addToMergedCells('row', referenceCell);\n\t\t\t\t\t\t\tthis.addToParsed(ri + sr, ci, referenceCell);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (spanCol > 1) {\n\t\t\t\t\t\tfor (let sc = 1; sc < spanCol; sc += 1) {\n\t\t\t\t\t\t\tconst referenceCell = new CellObject(c, currentCellObject);\n\t\t\t\t\t\t\tcurrentCellObject.addToMergedCells('column', referenceCell);\n\t\t\t\t\t\t\tthis.addToParsed(ri, currentIndex, referenceCell);\n\t\t\t\t\t\t\tcurrentIndex += 1;\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.parseRowColors(rows);\n\t\t};\n\n\t\t/**\n\t\t * Parse row colors of original table for futures uses.\n\t\t *\n\t\t * @param {[HTMLElement]} rows html row elements\n\t\t * @private\n\t\t */\n\t\tthis.parseRowColors = (rows) => {\n\t\t\tif (!rows || rows.length <= 0) {\n\t\t\t\tlogToConsole('no rows are found to parse their colors', 'error');\n\t\t\t}\n\n\t\t\t// get row colors if they are defined as datasets on table element\n\t\t\tconst headerDatasetColor = this.tableElement.dataset.wptbHeaderBackgroundColor;\n\t\t\tconst evenRowDatasetColor = this.tableElement.dataset.wptbEvenRowBackgroundColor;\n\t\t\tconst oddRowDatasetColor = this.tableElement.dataset.wptbOddRowBackgroundColor;\n\n\t\t\t// header row color\n\t\t\tthis.rowColors.header =\n\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\theaderDatasetColor !== undefined\n\t\t\t\t\t? headerDatasetColor\n\t\t\t\t\t: rows[0].style.backgroundColor === ''\n\t\t\t\t\t? null\n\t\t\t\t\t: rows[0].style.backgroundColor;\n\n\t\t\t// calculate needed number of rows to get even and odd row background colors\n\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\tconst rowsNeeded = rows.length / 3 >= 1 ? 0 : rows.length === 1 ? 2 : (rows.length - 1) % 2;\n\n\t\t\t// create additional rows and add them to table to get their row background colors since table row count may be lower to get even/odd rows\n\t\t\tfor (let rn = 0; rn < rowsNeeded; rn += 1) {\n\t\t\t\tconst tempRow = document.createElement('tr');\n\n\t\t\t\tthis.tableElement.querySelector('tbody').appendChild(tempRow);\n\t\t\t\trows.push(tempRow);\n\t\t\t}\n\n\t\t\t// even & odd row colors\n\t\t\t// dataset colors have priority over colors gathered from computed row styles\n\t\t\tthis.rowColors.even = evenRowDatasetColor || getComputedStyle(rows[1]).backgroundColor;\n\t\t\tthis.rowColors.odd = evenRowDatasetColor ? oddRowDatasetColor : getComputedStyle(rows[2]).backgroundColor;\n\n\t\t\t// remove created rows from DOM\n\t\t\tfor (let r = 0; r < rowsNeeded; r += 1) {\n\t\t\t\trows[rows.length - (r + 1)].remove();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Add a row to the table.\n\t\t *\n\t\t * @param {Array} classList an array of class names to be added to row\n\t\t * @param {boolean} fromOriginals use rows from original table instead of creating a new one\n\t\t * @param {number} originalIndex original row index\n\t\t */\n\t\tthis.addRow = (classList, fromOriginals = false, originalIndex = 0) => {\n\t\t\tif (!Array.isArray(classList)) {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tclassList = [classList];\n\t\t\t}\n\n\t\t\tconst tableBody = this.tableElement.querySelector('tbody');\n\t\t\tlet tempRow;\n\n\t\t\tif (!fromOriginals) {\n\t\t\t\tconst range = document.createRange();\n\t\t\t\trange.setStart(tableBody, 0);\n\t\t\t\t// eslint-disable-next-line prefer-destructuring\n\t\t\t\ttempRow = range.createContextualFragment(`