{"version":3,"sources":["WPTB_ExtraStyles.js","WPTB_Logger.js","WPTB_CutGlueTable.js","WPTB_GetDirectionAfterReconstruction.js","WPTB_SortableTable.js","WPTB_RecalculateIndexes.js","WPTB_ResponsiveFrontend.js","WPTB_StylePass.js","wp-table-builder-frontend.js"],"names":["key","context","factory","module","exports","_typeof","self","global","_tableQueries","_this","this","prefixStyleRules","prefix","extraStyles","splitStyles","replaceAll","split","prefixedStylesArray","map","matches","RegExp","exec","push","replace","concat","join","applyGeneralStyles","generalStyles","baseElement","arguments","length","undefined","generalStylesheet","document","createElement","type","id","insertAdjacentElement","currentMode","modes","block","baseDocument","querySelector","appendChild","prefixedStyleRules","createTextNode","applyExtraStyle","tableElement","styleId","head","uniqueClass","prefixedStyles","extraStylesRaw","dataset","wptbExtraStyles","atob","tableId","_slicedToArray","getAttribute","match","styleElement","disableThemeStyles","frontEnd","innerHTML","builder","tableQueries","_defineProperty","applyStyles","mode","allTables","Array","from","querySelectorAll","bgColors","normal","prepareMessage","message","prepareMessageStyle","messageType","log","console","WPTB_CutGlueTable","cutTableHorizontally","rowBefore","table","rows","i","tableRowsIChildren","children","j","rowSpan","newTdRowspan","sameCellBeforeDivision","td","hasOwnProperty","wptbCell","mark","getDOMElement","tdTopStyle","setAttribute","colSpan","dataXIndex","xIndex","dataXIndexNext","parseInt","beforeTd","maxCols","insertBefore","WPTB_RecalculateIndexes","glueTableHorizontally","tds","_toConsumableArray","getElementsByTagName","hasAttribute","dataSameCellBeforeDivision","tdsSameBeforeDivision","parentNode","classList","contains","yIndex","tdsSameBeforeDivisionJPlusChildren","k","removeChild","cutTableVertically","col","rowSpanNewTd","colSpanOld","colSpanNewTd","rowChildren","rowChildrenLength","afterTd","tdLeftStyle","tdAnalogThisX","style","width","tdAnalogThisY","height","glueTableVertically","jFirstTdGlue","WPTB_GetDirectionAfterReconstruction","typeFirst","typeSecond","verticalProp","responsiveFront","itemsPerHeader","tableMaxCols","switchMode","getDirective","e","directives","sizeRangeId","detail","responsiveMode","modeOptions","topRowAsHeader","cellStackDirection","cellsPerRow","newTable","options","thisObject","sortingCellMouseMov","element","x","y","xMatch","target","tagName","offsetX","layerX","offsetY","layerY","clientWidth","clientHeight","add","remove","sortingCellMouseMoveVertical","sortingCellMouseMoveHorizontal","tdMouseLeave","sortableTable","currentTarget","tableWasSorted","tableRowsBefore","tableRowsAfter","tableRowsArr","tableLastCont","rowspan","rowNum","rowsTdFirst","rowsValuesArr","tdYCoordsRowSpanPrevious","tableRowsPushed","tdsChanged","changeSortingTdsCollection","tdRowspan","textElementsValues","textElementsValuesGet","rowsTd","value","orderBy","setSortedAscDataAttr","sort","prev","next","sortOrder","unshift","indexOf","trRef","tBody","rowsValObj","row","tr","colspan","colNum","columnsTdFirst","columnsValuesArr","tdXCoordsColSpanPrevious","tdColspan","columnsTd","tdsColumn","difference","columnsValObj","tdsAll","removeAttribute","removeCellsAttrAfterDivision","tableSM","tableStateSet","reassignElementsStyles","dataAttr","prevValue","nextValue","cell","textElements","innerText","tdIndexSpanPrev","collectionTdsJSpan","collectionTdsJSpanProperty","indexName","indexNameCamelCase","indexNamePerpendicularCamelCase","tableGroupCount","tdsCollectionChanged","tdSpanProperty","collectionTds","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","s","sCMM","dataAttrSortChange","rowsLength","dataYIndexStart","trs","maxColsFull","tdsArr","jMainIter","z","columns","logToConsole","process","env","NODE_ENV","Error","CellObject","cellElement","reference","referenceObject","mergedRenderStatus","mergedCells","column","getMergedRenderStatus","setMergedRenderStatus","status","addToMergedCells","mergeType","cellObj","isReference","cloneNode","modifications","spans","remainingSpans","cacheSpanValues","Object","keys","defaultVal","prototype","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","parsedTable","rowCache","originals","rowColors","header","even","odd","addToParsed","r","c","cellObject","parseTable","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","childNodes","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","isBackgroundTransparent","regexp","_objectSpread","elementObjects","tableObject","bindRebuildToResize","rebuildTables","directiveString","wptbResponsiveDirectives","JSON","parse","addDefaultClasses","removeDefaultClasses","autoBuild","sizeRange","autoOption","tableObj","direction","staticTopRow","repeatMergedHeader","buildDefault","autoDirectionBuild","isRowStacked","headerBuild","allCellsByRow","rowStartIndex","filter","b","bgColor","rowObj","forEach","cellCount","pR","currentTableColor","allCellsByCol","t","tCell","cR","headerCells","h","stackedAsColumn","rowBorderStyle","headerCount","Math","ceil","currentOriginalRow","addBorder","borderTop","cellClone","addHeaderCells","cc","currentRowSpan","cellAddStatus","currentCell","remainingItems","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","stylesheets","insertShadowRoot","shadowRootContainer","tableContainer","mainParent","parentChildren","tableIndex","upSibling","downSibling","prepareAllStylesheets","shadowRoot","borrowFromTheme","fontFamily","init","tableContainers","setupStylePass","checkTableEligibility","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","tableRows","newTableLastSectionFilledColumns","valuesIsSaved","tableRowsWithoutHeader","newTableColumnsWithoutLeftHeader","countRows","tdStyles","sectionNumber","tdLeftHeader","rowFirstStyles","borderTopColor","borderColor","borderBottomColor","borderTopWidth","rowKStyles","borderWidth","background","newTableColumns","increaseRatioRows","newTableRows","jMax","jStart","rowStyles","newTd","images","minWidth","bubbles","wptb_tdDefaultWidth","wptbTableContainers","wptbTableContainer","mergingСellsHorizontally","tableWidthLogic","wptbTableContainerWidth","wptbTableTdsSumMaxWidth","wptbCellsWidthAutoCount","tableTdWidthAuto","wptbFixedWidthSize","tdPaddingCommon","tableTdBorderCommonWidth","styleElementCreate","wptbTdWidthAuto","elementVisibilityStatus","parentObserver","tdStyleObj","tdBorderLeftWidth","tdBorderRightWidth","tdPaddingLeftWidth","tdPaddingRightWidth","parseFloat","_getComputedStyle","visibility","culpritParent","findParentWithNoDisplay","currentElement","currentParent","parentDisplayStatus","parentType","nodeName","toLowerCase","MutationObserver","mutationRecord","mutation","currentVisibility","containerWidth","disconnect","observe","attributes","childList","subtree","cssForTdsWidthAuto","cssForTdsWidthAutoOld","_loop","wptbElementHoverBgColor","wptbElementHoverTextColor","color","wptbElementHoverScale","transform","wptbElementBgColor","wptbElementColor","resize","wptbSize","wptbSizeNew","wptbButtonWrapper","WPTB_ResponsiveFrontend","tables","WPTB_SortableTable","sortingTable","responsiveFrontReady","WPTB_ExtraStyles","WptbFrontendData","WPTB_StylePass","stylePass"],"mappings":"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","file":"wp-table-builder-frontend.js","sourcesContent":["/**\n * Extra styles module to add custom css rules defined for individual tables.\n */\n(function UMD(key, context, factory) {\n\tif (typeof module !== 'undefined' && typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tcontext[key] = factory();\n\t}\n\t// eslint-disable-next-line no-restricted-globals\n})('WPTB_ExtraStyles', self || global, () => {\n\t/**\n\t * Extra styles frontend manager.\n\t *\n\t * This component will be responsible for adding and maintaining extra styles defined for tables.\n\t *\n\t * @class\n\t */\n\t// eslint-disable-next-line camelcase\n\tfunction WPTB_ExtraStyles() {\n\t\t/**\n\t\t * Extra styles operation modes\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.modes = {\n\t\t\tbuilder: 'builder',\n\t\t\tfrontEnd: 'frontEnd',\n\t\t\tblock: 'block',\n\t\t};\n\n\t\t/**\n\t\t * Base document for DOM operations.\n\t\t *\n\t\t * @type {Document}\n\t\t */\n\t\tthis.baseDocument = document;\n\n\t\t/**\n\t\t * Current mode extra styles are operating on.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.currentMode = this.modes.builder;\n\n\t\t/**\n\t\t * General table styles.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.generalStyles = '';\n\n\t\t/**\n\t\t * HTML queries for table element in different plugin modes\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tconst tableQueries = {\n\t\t\t[this.modes.builder]: '.wptb-table-setup .wptb-preview-table',\n\t\t\t[this.modes.block]: '.wptb-block-table-setup .wptb-preview-table',\n\t\t\t[this.modes.frontEnd]: '.wptb-table-container .wptb-preview-table',\n\t\t};\n\n\t\t/**\n\t\t * Format styles.\n\t\t *\n\t\t * @param {string} styles styles\n\t\t * @return {string} formatted styles\n\t\t */\n\t\tconst formatStyles = (styles) => {\n\t\t\t// remove all newlines, comments and '!important' from style string to make it a one liner\n\t\t\tconst cleaned = styles.replaceAll(/(\\r?\\n)|(\\/\\*.+?\\*\\/)|(\\s*!important)/g, '');\n\n\t\t\t// add '!important' to all rules to override default style rules\n\t\t\treturn cleaned.replaceAll(';', ' !important;');\n\t\t};\n\n\t\t/**\n\t\t * Reform style rules so they will only affect given table id.\n\t\t *\n\t\t * @param {number} prefix prefix string that will be added to all rules\n\t\t * @param {string} extraStyles extra styles\n\t\t * @return {string} new style properties prefixed with table id class\n\t\t */\n\t\tconst prefixStyleRules = (prefix, extraStyles) => {\n\t\t\t// reformat styles into a suitable form for our regexp operations\n\t\t\tconst formattedStyles = formatStyles(extraStyles);\n\n\t\t\tconst splitStyles = formattedStyles.split('}');\n\t\t\tconst prefixedStylesArray = [];\n\n\t\t\t// eslint-disable-next-line array-callback-return\n\t\t\tsplitStyles.map((split) => {\n\t\t\t\tconst regExp = new RegExp(/(.+?)\\{/g);\n\t\t\t\tconst matches = regExp.exec(split);\n\n\t\t\t\tif (matches) {\n\t\t\t\t\tprefixedStylesArray.push(split.replace(matches[1], `${prefix} ${matches[1]}`));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn `${prefixedStylesArray.join('}')}}`;\n\t\t};\n\n\t\t/**\n\t\t * Apply general styles to document.\n\t\t *\n\t\t * @param {string} generalStyles general style rules\n\t\t * @param {Node} baseElement element to use as base\n\t\t */\n\t\tconst applyGeneralStyles = (generalStyles, baseElement = null) => {\n\t\t\tconst generalStylesheet = document.createElement('style');\n\t\t\tgeneralStylesheet.type = 'text/css';\n\t\t\tgeneralStylesheet.id = 'wptb-general-styles';\n\n\t\t\tif (!baseElement) {\n\t\t\t\tconst head =\n\t\t\t\t\tthis.currentMode === this.modes.block ? this.baseDocument : this.baseDocument.querySelector('head');\n\n\t\t\t\thead.appendChild(generalStylesheet);\n\t\t\t} else {\n\t\t\t\tbaseElement.insertAdjacentElement('beforebegin', generalStylesheet);\n\t\t\t}\n\t\t\tconst prefixedStyleRules = prefixStyleRules('.wptb-preview-table', generalStyles);\n\t\t\tgeneralStylesheet.appendChild(document.createTextNode(prefixedStyleRules));\n\t\t};\n\n\t\t/**\n\t\t * Apply defined extra styles for given table element.\n\t\t *\n\t\t * @param {Element} tableElement table element\n\t\t */\n\t\tconst applyExtraStyle = (tableElement) => {\n\t\t\tconst extraStylesRaw = tableElement.dataset.wptbExtraStyles;\n\t\t\tconst styleIdPrefix = 'wptb-extra-styles-';\n\n\t\t\tif (extraStylesRaw) {\n\t\t\t\tconst extraStyles = atob(extraStylesRaw);\n\n\t\t\t\tconst [, tableId] = tableElement\n\t\t\t\t\t.getAttribute('class')\n\t\t\t\t\t.match(/wptb-element-main-table_setting-(?:startedid-)?(\\d+)/);\n\n\t\t\t\tconst styleId = styleIdPrefix + tableId;\n\n\t\t\t\tconst head = this.baseDocument.querySelector('head');\n\n\t\t\t\t// since stylesheets are created for frontend only once at startup, checking document head for any created style object will work even with theme disabled tables which at builder, they are not inside a shadow-root\n\t\t\t\tlet styleElement = head?.querySelector(`#${styleId}`);\n\n\t\t\t\t// if no style element is found, create one\n\t\t\t\tif (!styleElement) {\n\t\t\t\t\tstyleElement = document.createElement('style');\n\t\t\t\t\tstyleElement.type = 'text/css';\n\t\t\t\t\tstyleElement.id = styleId;\n\n\t\t\t\t\tconst isThemeStylesDisabled = tableElement.dataset.disableThemeStyles;\n\n\t\t\t\t\t// if theme styles are disabled, it means our table is residing inside a shadow-root, place style element inside shadow-root instead of document head\n\t\t\t\t\tif (\n\t\t\t\t\t\t(isThemeStylesDisabled && this.currentMode === this.modes.frontEnd) ||\n\t\t\t\t\t\tthis.currentMode === this.modes.block\n\t\t\t\t\t) {\n\t\t\t\t\t\ttableElement.insertAdjacentElement('beforebegin', styleElement);\n\t\t\t\t\t\tif (this.modes.frontEnd && this.generalStyles) {\n\t\t\t\t\t\t\tapplyGeneralStyles(this.generalStyles, tableElement);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\thead.appendChild(styleElement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst uniqueClass = `.wptb-element-main-table_setting-${tableId}`;\n\t\t\t\t// reform style rules so they will only affect the table they are assigned to\n\t\t\t\tconst prefixedStyles = prefixStyleRules(uniqueClass, extraStyles);\n\n\t\t\t\t// remove previous styles with updated ones\n\t\t\t\tstyleElement.innerHTML = '';\n\t\t\t\tstyleElement.appendChild(document.createTextNode(prefixedStyles));\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Apply extra styles to all available tables on DOM.\n\t\t *\n\t\t * @param {string} mode operation mode to apply styles\n\t\t * @param {string} generalStyles general style rules\n\t\t * @param {Object} baseDocument base document for DOM operations\n\t\t */\n\t\tthis.applyStyles = (mode = this.modes.frontEnd, generalStyles = null, baseDocument = document) => {\n\t\t\tthis.baseDocument = baseDocument;\n\t\t\tthis.currentMode = mode;\n\t\t\tthis.generalStyles = generalStyles;\n\n\t\t\tconst allTables = Array.from(this.baseDocument.querySelectorAll(tableQueries[mode]));\n\n\t\t\tif (allTables) {\n\t\t\t\tallTables.map(applyExtraStyle);\n\t\t\t}\n\n\t\t\t// only apply general styles on client frontend if any general styles are defined\n\t\t\tif ((mode === this.modes.frontEnd || mode === this.modes.block) && generalStyles) {\n\t\t\t\tapplyGeneralStyles(generalStyles);\n\t\t\t}\n\t\t};\n\t}\n\n\t// send a singleton instance of manager\n\treturn new WPTB_ExtraStyles();\n});\n","(function UMD(key, context, factory) {\n\tif (typeof module !== 'undefined' && typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tcontext[key] = factory();\n\t}\n\t// eslint-disable-next-line no-restricted-globals\n})('WPTB_Logger', self || global, () => {\n\tconst format = '%c WP Table Builder %c {message} ';\n\tconst brandStyle =\n\t\t'border-radius:5px 0 0 5px; background-color: #3299D1; padding: 3px; color: #FFF; font-weight: bold;';\n\tconst messageStyle = 'background-color: {bgColor} ; padding: 3px; color: #FFF; border-radius: 0 5px 5px 0;';\n\n\t/**\n\t * Background colors for message.\n\t *\n\t * Add color property keys keeping in mind that internal function to use that colors will select them based on type of message, ie 'normal' color property for normal messages and 'error' color property for error message types.\n\t *\n\t * @type {Object}\n\t */\n\tconst bgColors = {\n\t\tnormal: '#48BB78',\n\t};\n\n\treturn {\n\t\t/**\n\t\t * Prepare format for incoming message.\n\t\t *\n\t\t * @param {string} message message to be used\n\t\t * @return {string} prepared message\n\t\t */\n\t\tprepareMessage(message) {\n\t\t\treturn format.replace('{message}', message);\n\t\t},\n\t\t/**\n\t\t * Prepare style of message.\n\t\t *\n\t\t * @param {string} messageType message type\n\t\t * @return {string} prepared style\n\t\t */\n\t\tprepareMessageStyle(messageType = 'normal') {\n\t\t\tlet keyName = 'normal';\n\n\t\t\tif (bgColors[messageType]) {\n\t\t\t\tkeyName = messageType;\n\t\t\t}\n\n\t\t\treturn messageStyle.replace('{bgColor}', bgColors[keyName]);\n\t\t},\n\t\t/**\n\t\t * Normal log function.\n\t\t *\n\t\t * @param {string} message message string\n\t\t */\n\t\tlog(message) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.log(this.prepareMessage(message), brandStyle, this.prepareMessageStyle('normal'));\n\t\t},\n\t};\n});\n","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\tvalue += textElements[j].innerText;\n\t\t\t\tif (j !== textElements.length - 1) value += ' ';\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\n\t\t/**\n\t\t * adds cells to the collection of cells in the row or column that the table is sorted by.\n\t\t * These added cells are not originally were added in the collection,\n\t\t * because they are combined with cells from higher rows or left-side columns\n\t\t *\n\t\t * @param {event} e\n\t\t * @param {HTMLElement} table\n\t\t * @param {array} tds\n\t\t * @param {number} i\n\t\t * @param {number} tdIndexSpanPrev\n\t\t * @param {string} type\n\t\t * @returns {{tds: *}|boolean|{tds: *, i: *}}\n\t\t */\n\t\tfunction changeSortingTdsCollection(e, table, tds, i, tdIndexSpanPrev, type) {\n\t\t\tconst td = tds[i];\n\t\t\tlet tdsCollectionChanged = false;\n\t\t\tlet collectionTds;\n\t\t\tlet collectionTdsJSpan;\n\t\t\tlet collectionTdsJSpanProperty;\n\t\t\tlet indexName;\n\t\t\tlet indexNameCamelCase;\n\t\t\tlet indexNamePerpendicularCamelCase;\n\t\t\tlet tdSpanProperty;\n\t\t\t// max rows or columns column\n\t\t\tlet tableGroupCount;\n\n\t\t\tif (type === 'vertical') {\n\t\t\t\tcollectionTdsJSpanProperty = 'colSpan';\n\t\t\t\tindexName = 'data-y-index';\n\t\t\t\tindexNameCamelCase = 'yIndex';\n\t\t\t\tindexNamePerpendicularCamelCase = 'xIndex';\n\t\t\t\ttdSpanProperty = 'rowSpan';\n\t\t\t\ttableGroupCount = table.rows.length;\n\t\t\t} else if (type === 'horizontal') {\n\t\t\t\tcollectionTdsJSpanProperty = 'rowSpan';\n\t\t\t\tindexName = 'data-x-index';\n\t\t\t\tindexNameCamelCase = 'xIndex';\n\t\t\t\tindexNamePerpendicularCamelCase = 'yIndex';\n\t\t\t\ttdSpanProperty = 'colSpan';\n\t\t\t\ttableGroupCount = table.maxCols;\n\t\t\t}\n\n\t\t\tif (td.dataset[indexNameCamelCase] - tdIndexSpanPrev > 0) {\n\t\t\t\tcollectionTds = table.querySelectorAll(`[${indexName}=\"${tdIndexSpanPrev}\"]`);\n\n\t\t\t\tfor (let j = 0; j < collectionTds.length; j++) {\n\t\t\t\t\tcollectionTdsJSpan = collectionTds[j][collectionTdsJSpanProperty];\n\t\t\t\t\tif (!collectionTdsJSpan) collectionTdsJSpan = 1;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tcollectionTds[j].dataset[indexNamePerpendicularCamelCase] <\n\t\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase] &&\n\t\t\t\t\t\tparseInt(collectionTds[j].dataset[indexNamePerpendicularCamelCase], 10) +\n\t\t\t\t\t\t\tparseInt(collectionTdsJSpan, 10) >\n\t\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase]\n\t\t\t\t\t) {\n\t\t\t\t\t\ttds.splice(i, 0, collectionTds[j]);\n\t\t\t\t\t\ttdsCollectionChanged = true;\n\t\t\t\t\t\ti--;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tdsCollectionChanged) return { tds, i };\n\n\t\t\tlet tdSpan = parseInt(td[tdSpanProperty], 10);\n\t\t\tif (!tdSpan) tdSpan = 1;\n\t\t\tif (i == tds.length - 1 && parseInt(td.dataset[indexNameCamelCase], 10) + tdSpan < tableGroupCount) {\n\t\t\t\tcollectionTds = table.querySelectorAll(\n\t\t\t\t\t`[${indexName}=\"${parseInt(td.dataset[indexNameCamelCase], 10) + tdSpan}\"]`\n\t\t\t\t);\n\t\t\t\tfor (let j = 0; j < collectionTds.length; j++) {\n\t\t\t\t\tcollectionTdsJSpan = collectionTds[j][collectionTdsJSpanProperty];\n\t\t\t\t\tif (!collectionTdsJSpan) collectionTdsJSpan = 1;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tcollectionTds[j].dataset[indexNamePerpendicularCamelCase] <\n\t\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase] &&\n\t\t\t\t\t\tparseInt(collectionTds[j].dataset[indexNamePerpendicularCamelCase], 10) +\n\t\t\t\t\t\t\tparseInt(collectionTdsJSpan, 10) >\n\t\t\t\t\t\t\te.target.dataset[indexNamePerpendicularCamelCase]\n\t\t\t\t\t) {\n\t\t\t\t\t\ttds.push(collectionTds[j]);\n\t\t\t\t\t\ttdsCollectionChanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tdsCollectionChanged) return { tds };\n\t\t\treturn false;\n\t\t}\n\n\t\t/**\n\t\t * remove cells attributes which were used for division table\n\t\t *\n\t\t * @param {HTMLElement} table\n\t\t */\n\t\tfunction removeCellsAttrAfterDivision(table) {\n\t\t\tconst tdsAll = [...table.getElementsByTagName('td')];\n\t\t\tfor (let i = 0; i < tdsAll.length; i++) {\n\t\t\t\tif (tdsAll[i].hasAttribute('data-same-cell-before-division')) {\n\t\t\t\t\ttdsAll[i].removeAttribute('data-same-cell-before-division');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * function for run sorting table vertically\n\t\t *\n\t\t * @param {event} e\n\t\t */\n\t\tthis.sortableTableVerticalStart = function (e) {\n\t\t\tsortableTable.call(thisObject, e, 'vertical');\n\t\t};\n\n\t\t/**\n\t\t * function for run sorting table horizontally\n\t\t *\n\t\t * @param {event} e\n\t\t */\n\t\tthis.sortableTableHorizontalStart = function (e) {\n\t\t\tsortableTable.call(thisObject, e, 'horizontal');\n\t\t};\n\n\t\treturn this;\n\t}\n\n\treturn WPTB_SortTable;\n});\n","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\t// eslint-disable-next-line no-console\n\t\t\tif (console[type]) {\n\t\t\t\t// eslint-disable-next-line no-console\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} reference main cell object if the current cell is a reference to that cell in cases like merged cells\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 {Array}\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 {Object}\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(`