{"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","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","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","styles","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('.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(`