{"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","WPTB_LazyLoad.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","parentPrefix","styles","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","baseCells","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","disabled","tabEvent","CustomEvent","dispatchEvent","o","innerSize","innerWidth","relativeWidth","stylesheets","insertShadowRoot","shadowRootContainer","tableContainer","mainParent","parentChildren","tableIndex","upSibling","downSibling","prepareAllStylesheets","shadowRoot","borrowFromTheme","fontFamily","init","tableContainers","setupStylePass","checkTableEligibility","settings","disableThemeStylesForAll","container","maxWidth","wptbTableContainerMaxWidth","attachShadow","stylesheetsObj","root","action","prepareStylesheet","copyStylesheet","styleSheet","handler","url","linkElement","LazyLoadAnimation","instanceOptions","name","speed","step","hooks","perspective","flashColor","getOptions","calculateDuration","max","abs","calculateAnimationDirection","names","indexConstant","includes","calculateDirectionConstant","callHook","hookName","userHook","getHook","_len","args","_key","apply","getBufferElement","imgElement","removeBufferElement","bufferElement","addStylesheet","content","contentRoot","lazyloadStyleSheet","styleRules","beforeAnimation","animate","afterAnimation","LazyLoadAnimationFactory","getAnimation","animationName","extraOptions","factoryOptions","none","imageElement","slideIn","overflow","transform","transition","growSling","flash","flashElement","flashStyle","ownerDocument","flip","parentWrapper","_parentWrapper$parent","animationDirection","rotationAmount","propertyName","wptbCardFlip","isElementVisible","currentYPos","top","_imgElement$parentNod","bottom","visibilityPercentage","visibilityRangeTop","visibilityRangeBottom","visibilityVariable","scrollY","cachedScrollData","lastYPosition","imageElementLoadCallback","animation","processIndividualImageElement","forceMode","wptbLazyLoadStatus","delay","setTimeout","src","wptbLazyLoadTarget","processImageElements","imgElements","position","firstTimeProcess","forceLoad","img","svgIcon","iconWrapper","iconSvg","iconSize","wptbLazyLoadIconAnimation","iconAnimation","fill","iconColor","windowCurrentYPosition","innerHeight","assignLazyLoadToElements","tables","shadowTables","carry","allImages","images","passive","defaultOptions","animationFactory","forceLoadImages","initOptions","enabled","imageLoadAnimation","imageLoadAnimationSpeed","imageLoadAnimationDirection","imageLoadAnimationPerspective","jQuery","ready","$","getElementsByClassName","wptb_tableReconstraction","createNewTableIndic","previewTable","tableContainerMatrix","display","wptbTableAlignment","offsetWidth","reconstraction","wptbAdaptiveTable","tableContainerWidth","previewTableWidth","tableColumns","previewTableRows","tableReconstructed","wptbPreviewTableMobile","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","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","wptbElementBgColor","wptbElementColor","resize","wptbSize","wptbSizeNew","wptbButtonWrapper","WPTB_ResponsiveFrontend","WPTB_SortableTable","sortingTable","responsiveFrontReady","WPTB_ExtraStyles","WptbFrontendData","WPTB_LazyLoad","lazyLoad","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(generalStyles.parentPrefix, generalStyles.styles);\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.currentMode === 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} created cell element\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 {Array} 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(`