{"version":3,"sources":["WPTB_CutGlueTable.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","key","context","factory","exports","_typeof","module","self","global","options","arguments","undefined","this","thisObject","sortingCellMouseMov","e","type","element","target","tagName","x","offsetX","layerX","y","offsetY","layerY","xMatch","clientWidth","clientHeight","add","remove","sortingCellMouseMoveVertical","sortingCellMouseMoveHorizontal","tdMouseLeave","sortableTable","currentTarget","tableWasSorted","tableRowsBefore","tableRowsAfter","itemsPerHeader","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","tableMaxCols","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","responsiveFront","typeFirst","typeSecond","switchMode","getDirective","directives","sizeRangeId","detail","mode","responsiveMode","modeOptions","topRowAsHeader","cellStackDirection","cellsPerRow","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","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","reduce","p","getCell","returnObject","getCellsAtRow","rowId","returnObj","cells","tempCell","appendToRow","cellRowId","cellColumnId","cachedRow","appendElementToRow","appendObjectToRow","responsiveClassDefaultOptions","query","defaultClasses","bindToResize","_this3","_objectSpread","elementObjects","tableObject","bindRebuildToResize","rebuildTables","directiveString","wptbResponsiveDirectives","JSON","parse","atob","addDefaultClasses","removeDefaultClasses","autoBuild","sizeRange","autoOption","tableObj","direction","staticTopRow","buildDefault","autoDirectionBuild","isRowStacked","headerBuild","allCellsByRow","rowStartIndex","filter","b","rowObj","forEach","cellCount","pR","allCellsByCol","t","tCell","cR","headerCells","h","stackedAsColumn","rowBorderStyle","addHeaderCells","addBorder","borderTop","headerCount","Math","ceil","currentOriginalRow","cc","currentCell","cellAddStatus","remainingItems","currentRowSpan","min","hc","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","newTable","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","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 * 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 type = '';\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\tconst switchMode = {};\n\t\t\tif (responsiveFront && responsiveFront.getDirective(this.table)) {\n\t\t\t\tswitchMode.switch = function (e) {\n\t\t\t\t\tconst directives = responsiveFront.getDirective(this.table)\n\n\t\t\t\t\tlet sizeRangeId = 'desktop';\n\t\t\t\t\tif (e && e.detail) {\n\t\t\t\t\t\tsizeRangeId = e.detail.sizeRangeId;\n\t\t\t\t\t}\n\t\t\t\t\ttype = typeFirst;\n\t\t\t\t\tif (sizeRangeId !== 'desktop') {\n\t\t\t\t\t\tif (directives.hasOwnProperty('modeOptions')) {\n\t\t\t\t\t\t\tconst mode = directives.responsiveMode;\n\t\t\t\t\t\t\tconst modeOptions = directives.modeOptions[mode];\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmodeOptions.hasOwnProperty('topRowAsHeader') &&\n\t\t\t\t\t\t\t\tmodeOptions.topRowAsHeader.hasOwnProperty(sizeRangeId) &&\n\t\t\t\t\t\t\t\tmodeOptions.topRowAsHeader[sizeRangeId]\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tmodeOptions.hasOwnProperty('cellStackDirection') &&\n\t\t\t\t\t\t\t\t\tmodeOptions.cellStackDirection.hasOwnProperty(sizeRangeId)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tif (modeOptions.cellStackDirection[sizeRangeId] === 'row') {\n\t\t\t\t\t\t\t\t\t\ttype = typeSecond;\n\t\t\t\t\t\t\t\t\t\tthis.itemsPerHeader = this.tableMaxCols - 1;\n\t\t\t\t\t\t\t\t\t} else if (modeOptions.cellStackDirection[sizeRangeId] === 'column') {\n\t\t\t\t\t\t\t\t\t\tif (modeOptions.hasOwnProperty('cellsPerRow')) {\n\t\t\t\t\t\t\t\t\t\t\tthis.itemsPerHeader = modeOptions.cellsPerRow[sizeRangeId];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.itemsPerHeader = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.itemsPerHeader = 0;\n\t\t\t\t\t}\n\t\t\t\t\tthis.sortModeSwitcher(type, true);\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tswitchMode.switch = function (e) {\n\t\t\t\t\tlet type = typeFirst;\n\t\t\t\t\tif (this.table.classList.contains('wptb-mobile-view-active')) {\n\t\t\t\t\t\tif (this.table.classList.contains('wptb-table-preview-head')) {\n\t\t\t\t\t\t\ttype = typeSecond;\n\t\t\t\t\t\t\tif(type === 'vertical') {\n\t\t\t\t\t\t\t\tthis.itemsPerHeader = this.tableMaxCols - 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst { table } = this;\n\t\t\t\t\t\tthis.table = table.parentNode.parentNode.querySelector('.wptb-preview-table-mobile');\n\t\t\t\t\t\tthis.sortModeSwitcher(type, true);\n\t\t\t\t\t\tthis.table = table;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.sortModeSwitcher(type, true);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tswitchMode.switch.call(thisObject);\n\t\t\tthis.table.addEventListener(\n\t\t\t\t'table:rebuilt',\n\t\t\t\tfunction (e) {\n\t\t\t\t\tswitchMode.switch.call(thisObject, e);\n\t\t\t\t},\n\t\t\t\tfalse\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 * @param fromElement\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\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, ci, currentCellObject);\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, ci + sc, referenceCell);\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(`