From a88ba358a65a9882f1f0f39c7647401ce2a55054 Mon Sep 17 00:00:00 2001 From: Valentin Dide Date: Fri, 14 Aug 2020 22:17:34 +0300 Subject: [PATCH] Multiple Fixed: - dependecies - issue resizing columns and moving at differnt rate due to the fixed layout sizing --- dist/js/bundle/resizable-table-columns.js | 51 ++- dist/js/bundle/resizable-table-columns.js.map | 2 +- dist/js/bundle/resizable-table-columns.min.js | 2 +- dist/js/es6/resizable-constants.d.ts | 2 +- dist/js/es6/resizable-constants.js | 2 +- dist/js/es6/resizable-constants.js.map | 2 +- dist/js/es6/resizable-event-data.d.ts | 2 + dist/js/es6/resizable-event-data.js | 2 + dist/js/es6/resizable-event-data.js.map | 2 +- dist/js/es6/resizable-options.d.ts | 2 +- dist/js/es6/resizable-options.js | 4 +- dist/js/es6/resizable-options.js.map | 2 +- dist/js/es6/resizable-table-columns.d.ts | 6 +- dist/js/es6/resizable-table-columns.js | 47 ++- dist/js/es6/resizable-table-columns.js.map | 2 +- dist/js/es6/utilities-dom.d.ts | 2 +- dist/js/es6/utilities-dom.js | 4 +- dist/js/es6/utilities-dom.js.map | 2 +- dist/js/es6/utilities.d.ts | 2 +- dist/js/es6/utilities.js | 2 +- dist/js/es6/utilities.js.map | 2 +- dist/js/index.es2015.d.ts | 16 +- dist/samples/bootstrap.html | 2 +- dist/samples/dev.html | 342 ++++++++++++++++++ dist/samples/index.html | 2 +- package-lock.json | 317 +++++++++------- package.json | 22 +- sources/ts/resizable-constants.ts | 2 +- sources/ts/resizable-event-data.ts | 2 + sources/ts/resizable-options.ts | 4 +- sources/ts/resizable-table-columns.ts | 55 ++- sources/ts/utilities-dom.ts | 4 +- sources/ts/utilities.ts | 2 +- tests/resizable-options.ts | 32 +- tests/resizable-table-columns.constructor.ts | 10 +- tests/resizable-table-columns.dispose.ts | 6 +- tests/resizable-table-columns.ts | 24 +- 37 files changed, 725 insertions(+), 261 deletions(-) create mode 100644 dist/samples/dev.html diff --git a/dist/js/bundle/resizable-table-columns.js b/dist/js/bundle/resizable-table-columns.js index 99aa174..b594150 100644 --- a/dist/js/bundle/resizable-table-columns.js +++ b/dist/js/bundle/resizable-table-columns.js @@ -1,8 +1,8 @@ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.validide_resizableTableColumns = factory()); -}(this, (function () { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.validide_resizableTableColumns = {})); +}(this, (function (exports) { 'use strict'; var Utilities = /** @class */ (function () { function Utilities() { @@ -303,6 +303,8 @@ this.pointer = new PointerData(); this.originalWidths = new WidthsData(); this.newWidths = new WidthsData(); + this.columnRatio = 0; + this.tableRatio = 0; this.column = column; this.dragHandler = dragHandler; } @@ -659,16 +661,22 @@ var isDoubleClick = (millisecondsNow - this.lastPointerDown) < this.options.doubleClickDelay; var column = resizableHeaders[gripIndex]; var columnWidth = ResizableTableColumns.getWidth(column); + var computedColumnWidth = ResizableTableColumns.getComputedWidth(column); var tableWidth = ResizableTableColumns.getWidth(this.table); + var computedTableWidth = ResizableTableColumns.getComputedWidth(this.table); + var widths = { + column: columnWidth, + table: tableWidth + }; var eventData = new ResizableEventData(column, dragHandler); eventData.pointer = { x: UtilitiesDOM.getPointerX(event), isDoubleClick: isDoubleClick }; - eventData.originalWidths = { - column: columnWidth, - table: tableWidth - }; + eventData.originalWidths = widths; + eventData.newWidths = widths; + eventData.columnRatio = columnWidth / computedColumnWidth; + eventData.tableRatio = tableWidth / computedTableWidth; this.detachHandlers(); //make sure we do not have extra handlers this.attachHandlers(); UtilitiesDOM.addClass(this.table, ResizableConstants.classes.tableResizing); @@ -682,7 +690,9 @@ column: column, columnWidth: columnWidth, table: this.table, - tableWidth: tableWidth + tableWidth: tableWidth, + columnRatio: this.eventData.columnRatio, + tableRatio: this.eventData.tableRatio } }); this.table.dispatchEvent(eventToDispatch); @@ -695,8 +705,10 @@ if (difference === 0) { return; } - var tableWidth = this.eventData.originalWidths.table + difference; - var columnWidth = this.constrainWidth(this.eventData.column, this.eventData.originalWidths.column + difference); + this.eventData.columnRatio = this.eventData.newWidths.column / ResizableTableColumns.getComputedWidth(this.eventData.column); + this.eventData.tableRatio = this.eventData.newWidths.table / ResizableTableColumns.getComputedWidth(this.table); + var tableWidth = (this.eventData.originalWidths.table + difference) * this.eventData.tableRatio; + var columnWidth = this.constrainWidth(this.eventData.column, (this.eventData.originalWidths.column + difference) * this.eventData.columnRatio); ResizableTableColumns.setWidth(this.table, tableWidth); ResizableTableColumns.setWidth(this.eventData.column, columnWidth); this.eventData.newWidths = { @@ -708,7 +720,9 @@ column: this.eventData.column, columnWidth: columnWidth, table: this.table, - tableWidth: tableWidth + tableWidth: tableWidth, + columnRatio: this.eventData.columnRatio, + tableRatio: this.eventData.tableRatio } }); this.table.dispatchEvent(eventToDispatch); @@ -797,14 +811,16 @@ ResizableTableColumns.setWidth(this.eventData.column, columnWidth); this.eventData.newWidths = { column: columnWidth, - table: tableWidth + table: tableWidth, }; var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, { detail: { column: this.eventData.column, columnWidth: columnWidth, table: this.table, - tableWidth: tableWidth + tableWidth: tableWidth, + columnRatio: this.eventData.columnRatio, + tableRatio: this.eventData.tableRatio } }); this.table.dispatchEvent(eventToDispatch); @@ -915,6 +931,9 @@ ResizableTableColumns.getWidth = function (el) { if (el.style.width === '') return UtilitiesDOM.getWidth(el); + return ResizableTableColumns.getComputedWidth(el); + }; + ResizableTableColumns.getComputedWidth = function (el) { return Utilities.parseStyleDimension(el.style.width, false); }; ResizableTableColumns.setWidth = function (element, width) { @@ -930,7 +949,9 @@ return ResizableTableColumns; }()); - return ResizableTableColumns; + exports.ResizableTableColumns = ResizableTableColumns; + + Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=resizable-table-columns.js.map diff --git a/dist/js/bundle/resizable-table-columns.js.map b/dist/js/bundle/resizable-table-columns.js.map index 60868e5..17c6540 100644 --- a/dist/js/bundle/resizable-table-columns.js.map +++ b/dist/js/bundle/resizable-table-columns.js.map @@ -1 +1 @@ -{"version":3,"file":"resizable-table-columns.js","sources":["../es6/utilities.js","../es6/utilities-dom.js","../es6/resizable-options.js","../es6/resizable-event-data.js","../es6/resizable-constants.js","../es6/resizable-table-columns.js"],"sourcesContent":["var Utilities = /** @class */ (function () {\r\n function Utilities() {\r\n }\r\n Utilities.escapeRegExp = function (str) {\r\n return str.replace(Utilities.regexEscapeRegex, \"\\\\$&\");\r\n };\r\n Utilities.kebabCaseToCamelCase = function (str) {\r\n return str.replace(Utilities.kebabCaseRegex, function (m) { return m[1].toUpperCase(); });\r\n };\r\n Utilities.parseStringToType = function (str) {\r\n if (str.length == 0 || Utilities.onlyWhiteSpace.test(str))\r\n return str;\r\n if (Utilities.trueRegex.test(str))\r\n return true;\r\n if (Utilities.falseRegex.test(str))\r\n return false;\r\n if (Utilities.notEmptyOrWhiteSpace.test(str)) {\r\n var temp = +str;\r\n if (!isNaN(temp))\r\n return temp;\r\n }\r\n return str;\r\n };\r\n Utilities.parseStyleDimension = function (dimension, returnOriginal) {\r\n if (typeof dimension === 'string') {\r\n if (dimension.length) {\r\n var toParse = dimension\r\n .replace('px', '')\r\n .replace(',', '.');\r\n var parsed = parseFloat(toParse);\r\n if (!isNaN(parsed)) {\r\n return parsed;\r\n }\r\n }\r\n }\r\n else if (typeof dimension === 'number') {\r\n return dimension;\r\n }\r\n if (returnOriginal) {\r\n return dimension;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n Utilities.regexEscapeRegex = /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;\r\n Utilities.kebabCaseRegex = /(\\-\\w)/g;\r\n Utilities.trueRegex = /^true$/i;\r\n Utilities.falseRegex = /^false$/i;\r\n Utilities.onlyWhiteSpace = /^\\s$/;\r\n Utilities.notEmptyOrWhiteSpace = /\\S/;\r\n return Utilities;\r\n}());\r\nexport default Utilities;\r\n//# sourceMappingURL=utilities.js.map","import Utilities from './utilities';\r\nvar UtilitiesDOM = /** @class */ (function () {\r\n function UtilitiesDOM() {\r\n }\r\n UtilitiesDOM.addClass = function (el, className) {\r\n if (el.classList)\r\n el.classList.add(className);\r\n else if (!UtilitiesDOM.hasClass(el, className))\r\n el.className += \" \" + className;\r\n };\r\n UtilitiesDOM.removeClass = function (el, className) {\r\n if (el.classList)\r\n el.classList.remove(className);\r\n else if (UtilitiesDOM.hasClass(el, className)) {\r\n var reg = new RegExp('(\\\\s|^)' + Utilities.escapeRegExp(className) + '(\\\\s|$)');\r\n el.className = el.className.replace(reg, ' ');\r\n }\r\n };\r\n UtilitiesDOM.hasClass = function (el, className) {\r\n if (el.classList)\r\n return el.classList.contains(className);\r\n else\r\n return !!el.className.match(new RegExp('(\\\\s|^)' + Utilities.escapeRegExp(className) + '(\\\\s|$)'));\r\n };\r\n UtilitiesDOM.getDataAttributesValues = function (el) {\r\n if (!el)\r\n return null;\r\n var returnValue = {};\r\n if (el.dataset) {\r\n for (var prop in el.dataset) {\r\n if (el.dataset.hasOwnProperty(prop)) {\r\n returnValue[prop] = Utilities.parseStringToType(el.dataset[prop] || '');\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < el.attributes.length; i++) {\r\n if (!/^data\\-/.test(el.attributes[i].name))\r\n continue;\r\n var name_1 = Utilities.kebabCaseToCamelCase(el.attributes[i].name.replace('data-', ''));\r\n returnValue[name_1] = Utilities.parseStringToType(el.attributes[i].value);\r\n }\r\n }\r\n return returnValue;\r\n };\r\n UtilitiesDOM.getMinCssWidth = function (el) {\r\n var _a;\r\n var computedStyle = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el).minWidth;\r\n var minWidth = Utilities.parseStyleDimension(computedStyle, true);\r\n if (typeof minWidth === 'number' && !isNaN(minWidth))\r\n return minWidth;\r\n return null;\r\n };\r\n UtilitiesDOM.getMaxCssWidth = function (el) {\r\n var _a;\r\n var computedStyle = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el).maxWidth;\r\n var maxWidth = Utilities.parseStyleDimension(computedStyle, true);\r\n if (typeof maxWidth === 'number' && !isNaN(maxWidth))\r\n return maxWidth;\r\n return null;\r\n };\r\n UtilitiesDOM.getOuterWidth = function (el, includeMargin) {\r\n var _a;\r\n if (includeMargin === void 0) { includeMargin = false; }\r\n //TODO: Browser test this\r\n var width = el.offsetWidth;\r\n if (!includeMargin)\r\n return width;\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var marginTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.marginTop, false);\r\n var marginBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.marginBottom, false);\r\n return width + marginTop + marginBottom;\r\n };\r\n UtilitiesDOM.getInnerWidth = function (el) {\r\n var _a;\r\n //TODO: Browser test this\r\n var width = UtilitiesDOM.getOuterWidth(el);\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var borderLeft = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderLeft, false);\r\n var borderRight = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderRight, false);\r\n return width - borderLeft - borderRight;\r\n };\r\n UtilitiesDOM.getWidth = function (el) {\r\n var _a;\r\n //TODO: Browser test this\r\n var width = UtilitiesDOM.getOuterWidth(el);\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var isBorderBox = (computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.boxSizing) === 'border-box';\r\n if (isBorderBox)\r\n return width;\r\n var paddingLeft = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.paddingLeft, false);\r\n var paddingRight = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.paddingRight, false);\r\n var borderLeft = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderLeft, false);\r\n var borderRight = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderRight, false);\r\n return width - paddingLeft - paddingRight - borderLeft - borderRight;\r\n };\r\n UtilitiesDOM.getOuterHeight = function (el, includeMargin) {\r\n var _a;\r\n if (includeMargin === void 0) { includeMargin = false; }\r\n //TODO: Browser test this\r\n var height = el.offsetHeight;\r\n if (!includeMargin)\r\n return height;\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var marginTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.marginTop, false);\r\n var marginBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.marginBottom, false);\r\n return height + marginTop + marginBottom;\r\n };\r\n UtilitiesDOM.getInnerHeight = function (el) {\r\n var _a;\r\n //TODO: Browser test this\r\n var height = UtilitiesDOM.getOuterHeight(el);\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var borderTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderTop, false);\r\n var borderBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderBottom, false);\r\n return height - borderTop - borderBottom;\r\n };\r\n UtilitiesDOM.getHeight = function (el) {\r\n var _a;\r\n //TODO: Browser test this\r\n var height = UtilitiesDOM.getOuterHeight(el);\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var paddingTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.paddingTop, false);\r\n var paddingBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.paddingBottom, false);\r\n var borderTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderTop, false);\r\n var borderBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderBottom, false);\r\n return height - paddingTop - paddingBottom - borderTop - borderBottom;\r\n };\r\n UtilitiesDOM.getOffset = function (el) {\r\n if (!el)\r\n return { top: 0, left: 0 };\r\n var rect = el.getBoundingClientRect();\r\n return {\r\n top: rect.top + el.ownerDocument.body.scrollTop,\r\n left: rect.left + el.ownerDocument.body.scrollLeft\r\n };\r\n };\r\n UtilitiesDOM.matches = function (el, selector) {\r\n var matchesFn = undefined;\r\n // find vendor prefix\r\n var matchNames = ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'];\r\n for (var index = 0; index < matchNames.length; index++) {\r\n if (typeof el.ownerDocument.body[matchNames[index]] === 'function') {\r\n matchesFn = matchNames[index];\r\n break;\r\n }\r\n }\r\n return matchesFn ? el[matchesFn](selector) : false;\r\n };\r\n UtilitiesDOM.closest = function (el, selector) {\r\n if (!el)\r\n return null;\r\n if (typeof el.closest === 'function')\r\n return el.closest(selector);\r\n var element = el;\r\n while (element && element.nodeType === 1) {\r\n if (UtilitiesDOM.matches(element, selector)) {\r\n return element;\r\n }\r\n element = element.parentNode;\r\n }\r\n return null;\r\n };\r\n UtilitiesDOM.getPointerX = function (event) {\r\n //TODO: Browser test this\r\n if (event.type.indexOf('touch') === 0) {\r\n var tEvent = event;\r\n if (tEvent.touches && tEvent.touches.length) {\r\n return tEvent.touches[0].pageX;\r\n }\r\n if (tEvent.changedTouches && tEvent.changedTouches.length) {\r\n return tEvent.changedTouches[0].pageX;\r\n }\r\n }\r\n return event.pageX;\r\n };\r\n UtilitiesDOM.getTextWidth = function (contentElement, measurementElement) {\r\n var _a, _b;\r\n //TODO: Browser test this\r\n if (!contentElement || !measurementElement)\r\n return 0;\r\n var text = ((_a = contentElement.textContent) === null || _a === void 0 ? void 0 : _a.trim().replace(/\\s/g, ' ')) + ' '; //add extra space to ensure we are not elipsing anything\r\n var styles = (_b = contentElement.ownerDocument.defaultView) === null || _b === void 0 ? void 0 : _b.getComputedStyle(contentElement);\r\n ['fontFamily', 'fontSize', 'fontWeight', 'padding', 'border', 'boxSizing']\r\n .forEach(function (prop) {\r\n measurementElement.style[prop] = styles[prop];\r\n });\r\n measurementElement.innerHTML = text;\r\n return UtilitiesDOM.getOuterWidth(measurementElement, true);\r\n };\r\n return UtilitiesDOM;\r\n}());\r\nexport default UtilitiesDOM;\r\n//# sourceMappingURL=utilities-dom.js.map","import UtilitiesDOM from './utilities-dom';\r\nvar ResizableOptions = /** @class */ (function () {\r\n function ResizableOptions(options, element) {\r\n if (options === void 0) { options = null; }\r\n if (element === void 0) { element = null; }\r\n this.resizeFromBody = true;\r\n this.minWidth = 40;\r\n this.maxWidth = null;\r\n this.obeyCssMinWidth = false;\r\n this.obeyCssMaxWidth = false;\r\n this.doubleClickDelay = 500;\r\n this.store = null;\r\n this.overrideValues(options);\r\n this.overrideValuesFromElement(element);\r\n }\r\n ResizableOptions.prototype.overrideValues = function (options) {\r\n if (options === void 0) { options = null; }\r\n if (!options)\r\n return;\r\n for (var prop in options) {\r\n if (this.hasOwnProperty(prop)) {\r\n this[prop] = options[prop];\r\n }\r\n }\r\n };\r\n ResizableOptions.prototype.overrideValuesFromElement = function (element) {\r\n if (element === void 0) { element = null; }\r\n if (!element)\r\n return;\r\n var elementOptions = UtilitiesDOM.getDataAttributesValues(element);\r\n this.overrideValues(elementOptions);\r\n };\r\n return ResizableOptions;\r\n}());\r\nexport default ResizableOptions;\r\n//# sourceMappingURL=resizable-options.js.map","var WidthsData = /** @class */ (function () {\r\n function WidthsData() {\r\n this.column = 0;\r\n this.table = 0;\r\n }\r\n return WidthsData;\r\n}());\r\nexport { WidthsData };\r\nvar PointerData = /** @class */ (function () {\r\n function PointerData() {\r\n this.x = null;\r\n this.isDoubleClick = false;\r\n }\r\n return PointerData;\r\n}());\r\nexport { PointerData };\r\nvar ResizableEventData = /** @class */ (function () {\r\n function ResizableEventData(column, dragHandler) {\r\n this.pointer = new PointerData();\r\n this.originalWidths = new WidthsData();\r\n this.newWidths = new WidthsData();\r\n this.column = column;\r\n this.dragHandler = dragHandler;\r\n }\r\n return ResizableEventData;\r\n}());\r\nexport { ResizableEventData };\r\n//# sourceMappingURL=resizable-event-data.js.map","var ResizableConstants = /** @class */ (function () {\r\n function ResizableConstants() {\r\n }\r\n ResizableConstants.dataPropertyname = 'validide_rtc_data_object';\r\n ResizableConstants.classes = {\r\n table: 'rtc-table',\r\n wrapper: 'rtc-wrapper',\r\n handleContainer: 'rtc-handle-container',\r\n handle: 'rtc-handle',\r\n tableResizing: 'rtc-table-resizing',\r\n columnResizing: 'rtc-column-resizing',\r\n };\r\n ResizableConstants.attibutes = {\r\n dataResizable: 'data-rtc-resizable',\r\n dataResizableTable: 'data-rtc-resizable-table'\r\n };\r\n ResizableConstants.data = {\r\n resizable: 'rtcResizable',\r\n resizableTable: 'rtcResizableTable'\r\n };\r\n ResizableConstants.events = {\r\n pointerDown: ['mousedown', 'touchstart'],\r\n pointerMove: ['mousemove', 'touchmove'],\r\n pointerUp: ['mouseup', 'touchend'],\r\n windowResize: ['resize'],\r\n eventResizeStart: 'eventResizeStart.rtc',\r\n eventResize: 'eventResize.rtc',\r\n eventResizeStop: 'eventResizeStop.rtc'\r\n };\r\n return ResizableConstants;\r\n}());\r\nexport default ResizableConstants;\r\n//# sourceMappingURL=resizable-constants.js.map","import ResizableOptions from './resizable-options';\r\nimport Utilities from './utilities';\r\nimport UtilitiesDOM from './utilities-dom';\r\nimport { ResizableEventData } from './resizable-event-data';\r\nimport ResizableConstants from './resizable-constants';\r\nvar ResizableTableColumns = /** @class */ (function () {\r\n function ResizableTableColumns(table, options) {\r\n if (typeof table !== 'object' || table === null || table.toString() !== '[object HTMLTableElement]')\r\n throw 'Invalid argument: \"table\".\\nResizableTableColumns requires that the table element is a not null HTMLTableElement object!';\r\n if (typeof table[ResizableConstants.dataPropertyname] !== 'undefined')\r\n throw \"Existing \\\"\" + ResizableConstants.dataPropertyname + \"\\\" property.\\nTable elemet already has a '\" + ResizableConstants.dataPropertyname + \"' attached object!\";\r\n this.id = ResizableTableColumns.getInstanceId();\r\n this.table = table;\r\n this.options = new ResizableOptions(options, table);\r\n this.wrapper = null;\r\n this.ownerDocument = table.ownerDocument;\r\n this.tableHeaders = [];\r\n this.dragHandlesContainer = null;\r\n this.originalWidths = {};\r\n this.eventData = null;\r\n this.lastPointerDown = 0;\r\n this.init();\r\n this.table[ResizableConstants.dataPropertyname] = this;\r\n }\r\n ResizableTableColumns.prototype.init = function () {\r\n this.validateMarkup();\r\n this.createHandlerReferences();\r\n this.wrapTable();\r\n this.asignTableHeaders();\r\n this.storeOriginalWidths();\r\n this.setHeaderWidths();\r\n this.createDragHandles();\r\n this.restoreColumnWidths();\r\n this.checkTableWidth();\r\n this.syncHandleWidths();\r\n this.registerWindowResizeHandler();\r\n };\r\n ResizableTableColumns.prototype.dispose = function () {\r\n this.destroyDragHandles();\r\n this.restoreOriginalWidths();\r\n this.unwrapTable();\r\n this.onPointerDownRef = null;\r\n this.onPointerMoveRef = null;\r\n this.onPointerUpRef = null;\r\n this.table[ResizableConstants.dataPropertyname] = void (0);\r\n };\r\n ResizableTableColumns.prototype.validateMarkup = function () {\r\n var theadCount = 0;\r\n var tbodyCount = 0;\r\n var thead = null;\r\n for (var index = 0; index < this.table.childNodes.length; index++) {\r\n var element = this.table.childNodes[index];\r\n if (element.nodeName === 'THEAD') {\r\n theadCount++;\r\n thead = element;\r\n }\r\n else if (element.nodeName === 'TBODY') {\r\n tbodyCount++;\r\n }\r\n }\r\n if (thead === null || theadCount !== 1)\r\n throw \"Markup validation: thead count.\\nResizableTableColumns requires that the table element has one(1) table head element. Current count: \" + theadCount;\r\n if (tbodyCount !== 1)\r\n throw \"Markup validation: tbody count.\\nResizableTableColumns requires that the table element has one(1) table body element. Current count: \" + tbodyCount;\r\n var theadRowCount = 0;\r\n var firstRow = null;\r\n for (var index = 0; index < thead.childNodes.length; index++) {\r\n var element = thead.childNodes[index];\r\n if (element.nodeName === 'TR') {\r\n theadRowCount++;\r\n if (firstRow === null) {\r\n firstRow = element;\r\n }\r\n }\r\n }\r\n if (firstRow === null || theadRowCount < 1)\r\n throw \"Markup validation: thead row count.\\nResizableTableColumns requires that the table head element has at least one(1) table row element. Current count: \" + theadRowCount;\r\n var headerCellsCount = 0;\r\n var invalidHeaderCellsCount = 0;\r\n for (var index = 0; index < firstRow.childNodes.length; index++) {\r\n var element = firstRow.childNodes[index];\r\n if (element.nodeName === 'TH') {\r\n headerCellsCount++;\r\n }\r\n else if (element.nodeName === 'TD') {\r\n invalidHeaderCellsCount++;\r\n }\r\n }\r\n if (headerCellsCount < 1)\r\n throw \"Markup validation: thead first row cells count.\\nResizableTableColumns requires that the table head's first row element has at least one(1) table header cell element. Current count: \" + headerCellsCount;\r\n if (invalidHeaderCellsCount !== 0)\r\n throw \"Markup validation: thead first row invalid.\\nResizableTableColumns requires that the table head's first row element has no(0) table cell(TD) elements. Current count: \" + invalidHeaderCellsCount;\r\n };\r\n ResizableTableColumns.prototype.wrapTable = function () {\r\n if (this.wrapper)\r\n return;\r\n this.wrapper = this.ownerDocument.createElement('div');\r\n var tableOriginalParent = this.table.parentNode;\r\n tableOriginalParent.insertBefore(this.wrapper, this.table);\r\n tableOriginalParent.removeChild(this.table);\r\n this.wrapper.appendChild(this.table);\r\n UtilitiesDOM.addClass(this.wrapper, ResizableConstants.classes.wrapper);\r\n UtilitiesDOM.addClass(this.table, ResizableConstants.classes.table);\r\n };\r\n ResizableTableColumns.prototype.unwrapTable = function () {\r\n UtilitiesDOM.removeClass(this.table, ResizableConstants.classes.table);\r\n if (!this.wrapper)\r\n return;\r\n var tableOriginalParent = this.wrapper.parentNode;\r\n tableOriginalParent.insertBefore(this.table, this.wrapper);\r\n tableOriginalParent.removeChild(this.wrapper);\r\n this.wrapper = null;\r\n };\r\n ResizableTableColumns.prototype.asignTableHeaders = function () {\r\n var tableHeader;\r\n var firstTableRow;\r\n for (var index = 0; index < this.table.childNodes.length; index++) {\r\n var element = this.table.childNodes[index];\r\n if (element.nodeName === 'THEAD') {\r\n tableHeader = element;\r\n break;\r\n }\r\n }\r\n if (!tableHeader)\r\n return;\r\n for (var index = 0; index < tableHeader.childNodes.length; index++) {\r\n var element = tableHeader.childNodes[index];\r\n if (element.nodeName === 'TR') {\r\n firstTableRow = element;\r\n break;\r\n }\r\n }\r\n if (!firstTableRow)\r\n return;\r\n for (var index = 0; index < firstTableRow.childNodes.length; index++) {\r\n var element = firstTableRow.childNodes[index];\r\n if (element.nodeName === 'TH') {\r\n this.tableHeaders.push(element);\r\n }\r\n }\r\n };\r\n ResizableTableColumns.prototype.storeOriginalWidths = function () {\r\n var _this = this;\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n _this.originalWidths[\"___.\" + idx] = el.style.width;\r\n });\r\n this.originalWidths[\"___.table\"] = this.table.style.width;\r\n };\r\n ResizableTableColumns.prototype.restoreOriginalWidths = function () {\r\n var _this = this;\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n el.style.width = _this.originalWidths[\"___.\" + idx];\r\n });\r\n this.table.style.width = this.originalWidths[\"___.table\"];\r\n };\r\n ResizableTableColumns.prototype.setHeaderWidths = function () {\r\n var _this = this;\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n var width = UtilitiesDOM.getWidth(el);\r\n var constrainedWidth = _this.constrainWidth(el, width);\r\n ResizableTableColumns.setWidth(el, constrainedWidth);\r\n });\r\n };\r\n ResizableTableColumns.prototype.constrainWidth = function (el, width) {\r\n var result = width;\r\n var minWidth = this.options.obeyCssMinWidth\r\n ? UtilitiesDOM.getMinCssWidth(el)\r\n : -Infinity;\r\n result = Math.max(result, minWidth || 0, this.options.minWidth || -Infinity);\r\n var maxWidth = this.options.obeyCssMaxWidth\r\n ? UtilitiesDOM.getMaxCssWidth(el)\r\n : +Infinity;\r\n result = Math.min(result, maxWidth || 0, this.options.maxWidth || +Infinity);\r\n return result;\r\n };\r\n ResizableTableColumns.prototype.createDragHandles = function () {\r\n var _this = this;\r\n var _a;\r\n if (this.dragHandlesContainer != null)\r\n throw 'Drag handlers allready created. Call if you wish to recreate them';\r\n this.dragHandlesContainer = this.ownerDocument.createElement('div');\r\n (_a = this.wrapper) === null || _a === void 0 ? void 0 : _a.insertBefore(this.dragHandlesContainer, this.table);\r\n UtilitiesDOM.addClass(this.dragHandlesContainer, ResizableConstants.classes.handleContainer);\r\n this.getResizableHeaders()\r\n .forEach(function (el, idx) {\r\n var _a;\r\n var handler = _this.ownerDocument.createElement('div');\r\n UtilitiesDOM.addClass(handler, ResizableConstants.classes.handle);\r\n (_a = _this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.appendChild(handler);\r\n });\r\n ResizableConstants.events.pointerDown\r\n .forEach(function (evt, evtIdx) {\r\n var _a;\r\n (_a = _this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.addEventListener(evt, _this.onPointerDownRef, false);\r\n });\r\n };\r\n ResizableTableColumns.prototype.destroyDragHandles = function () {\r\n var _this = this;\r\n var _a, _b;\r\n if (this.dragHandlesContainer !== null) {\r\n ResizableConstants.events.pointerDown\r\n .forEach(function (evt, evtIdx) {\r\n var _a;\r\n (_a = _this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.removeEventListener(evt, _this.onPointerDownRef, false);\r\n });\r\n (_b = (_a = this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.removeChild(this.dragHandlesContainer);\r\n }\r\n };\r\n ResizableTableColumns.prototype.getDragHandlers = function () {\r\n var nodes = this.dragHandlesContainer == null\r\n ? null\r\n : this.dragHandlesContainer.querySelectorAll(\".\" + ResizableConstants.classes.handle);\r\n return nodes\r\n ? Array.prototype.slice.call(nodes).filter(function (el) { return el.nodeName === 'DIV'; })\r\n : new Array();\r\n };\r\n ResizableTableColumns.prototype.restoreColumnWidths = function () {\r\n if (!this.options.store)\r\n return;\r\n var tableId = ResizableTableColumns.generateTableId(this.table);\r\n if (tableId.length === 0)\r\n return;\r\n var data = this.options.store.get(tableId);\r\n if (!data)\r\n return;\r\n this.getResizableHeaders()\r\n .forEach(function (el, idx) {\r\n var width = data.columns[ResizableTableColumns.generateColumnId(el)];\r\n if (typeof width !== 'undefined') {\r\n ResizableTableColumns.setWidth(el, width);\r\n }\r\n });\r\n if (typeof data.table !== 'undefined') {\r\n ResizableTableColumns.setWidth(this.table, data.table);\r\n }\r\n };\r\n ResizableTableColumns.prototype.checkTableWidth = function () {\r\n var wrappperWidth = UtilitiesDOM.getWidth(this.wrapper);\r\n //might bee needed to exclude margins/borders/paddings\r\n var tableWidth = UtilitiesDOM.getOuterWidth(this.table, true);\r\n var difference = wrappperWidth - tableWidth;\r\n if (difference > 0) {\r\n var totalWidth_1 = 0;\r\n var resizableWidth_1 = 0;\r\n var addedWidth = 0;\r\n var widths_1 = [];\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n //might bee needed to include margins/borders/paddings\r\n var width = ResizableTableColumns.getWidth(el);\r\n widths_1.push(width);\r\n totalWidth_1 += width;\r\n if (el.hasAttribute(ResizableConstants.attibutes.dataResizable)) {\r\n resizableWidth_1 += width;\r\n }\r\n });\r\n ResizableTableColumns.setWidth(this.table, wrappperWidth);\r\n for (var index = 0; index < this.tableHeaders.length; index++) {\r\n var el = this.tableHeaders[index];\r\n var currentWidth = widths_1.shift();\r\n if (el.hasAttribute(ResizableConstants.attibutes.dataResizable)) {\r\n var newWidth = currentWidth + ((currentWidth / resizableWidth_1) * difference);\r\n var leftToAdd = totalWidth_1 + difference - addedWidth;\r\n newWidth = Math.min(newWidth, leftToAdd);\r\n newWidth = Math.max(newWidth, 0); // Do not add a negative width\r\n var constrainedWidth = this.constrainWidth(el, newWidth);\r\n ResizableTableColumns.setWidth(el, constrainedWidth);\r\n addedWidth += newWidth;\r\n }\r\n else {\r\n addedWidth += currentWidth;\r\n }\r\n if (addedWidth >= totalWidth_1)\r\n break;\r\n }\r\n }\r\n };\r\n ResizableTableColumns.prototype.syncHandleWidths = function () {\r\n var _this = this;\r\n var tableWidth = UtilitiesDOM.getWidth(this.table);\r\n ResizableTableColumns.setWidth(this.dragHandlesContainer, tableWidth);\r\n this.dragHandlesContainer.style.minWidth = tableWidth + \"px\";\r\n var headers = this.getResizableHeaders();\r\n this.getDragHandlers()\r\n .forEach(function (el, idx) {\r\n var height = UtilitiesDOM.getInnerHeight((_this.options.resizeFromBody ? _this.table : _this.table.tHead));\r\n if (idx < headers.length) {\r\n var th = headers[idx];\r\n var left = UtilitiesDOM.getOuterWidth(th);\r\n left += UtilitiesDOM.getOffset(th).left;\r\n left -= UtilitiesDOM.getOffset(_this.dragHandlesContainer).left;\r\n el.style.left = left + \"px\";\r\n el.style.height = height + \"px\";\r\n }\r\n });\r\n };\r\n ResizableTableColumns.prototype.getResizableHeaders = function () {\r\n return this.tableHeaders\r\n .filter(function (el, idx) {\r\n return el.hasAttribute(ResizableConstants.attibutes.dataResizable);\r\n });\r\n };\r\n ResizableTableColumns.prototype.handlePointerDown = function (event) {\r\n this.handlePointerUp();\r\n var target = event ? event.target : null;\r\n if (target == null)\r\n return;\r\n if (target.nodeName !== 'DIV' || !UtilitiesDOM.hasClass(target, ResizableConstants.classes.handle))\r\n return;\r\n if (typeof event.button === 'number' && event.button !== 0)\r\n return; // this is not a left click\r\n var dragHandler = target;\r\n var gripIndex = this.getDragHandlers().indexOf(dragHandler);\r\n var resizableHeaders = this.getResizableHeaders();\r\n if (gripIndex >= resizableHeaders.length)\r\n return;\r\n var millisecondsNow = (new Date()).getTime();\r\n var isDoubleClick = (millisecondsNow - this.lastPointerDown) < this.options.doubleClickDelay;\r\n var column = resizableHeaders[gripIndex];\r\n var columnWidth = ResizableTableColumns.getWidth(column);\r\n var tableWidth = ResizableTableColumns.getWidth(this.table);\r\n var eventData = new ResizableEventData(column, dragHandler);\r\n eventData.pointer = {\r\n x: UtilitiesDOM.getPointerX(event),\r\n isDoubleClick: isDoubleClick\r\n };\r\n eventData.originalWidths = {\r\n column: columnWidth,\r\n table: tableWidth\r\n };\r\n this.detachHandlers(); //make sure we do not have extra handlers\r\n this.attachHandlers();\r\n UtilitiesDOM.addClass(this.table, ResizableConstants.classes.tableResizing);\r\n UtilitiesDOM.addClass(this.wrapper, ResizableConstants.classes.tableResizing);\r\n UtilitiesDOM.addClass(dragHandler, ResizableConstants.classes.columnResizing);\r\n UtilitiesDOM.addClass(column, ResizableConstants.classes.columnResizing);\r\n this.lastPointerDown = millisecondsNow;\r\n this.eventData = eventData;\r\n var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResizeStart, {\r\n detail: {\r\n column: column,\r\n columnWidth: columnWidth,\r\n table: this.table,\r\n tableWidth: tableWidth\r\n }\r\n });\r\n this.table.dispatchEvent(eventToDispatch);\r\n event.preventDefault();\r\n };\r\n ResizableTableColumns.prototype.handlePointerMove = function (event) {\r\n if (!this.eventData || !event)\r\n return;\r\n var difference = (UtilitiesDOM.getPointerX(event) || 0) - (this.eventData.pointer.x || 0);\r\n if (difference === 0) {\r\n return;\r\n }\r\n var tableWidth = this.eventData.originalWidths.table + difference;\r\n var columnWidth = this.constrainWidth(this.eventData.column, this.eventData.originalWidths.column + difference);\r\n ResizableTableColumns.setWidth(this.table, tableWidth);\r\n ResizableTableColumns.setWidth(this.eventData.column, columnWidth);\r\n this.eventData.newWidths = {\r\n column: columnWidth,\r\n table: tableWidth\r\n };\r\n var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, {\r\n detail: {\r\n column: this.eventData.column,\r\n columnWidth: columnWidth,\r\n table: this.table,\r\n tableWidth: tableWidth\r\n }\r\n });\r\n this.table.dispatchEvent(eventToDispatch);\r\n };\r\n ResizableTableColumns.prototype.handlePointerUp = function () {\r\n this.detachHandlers();\r\n if (!this.eventData)\r\n return;\r\n if (this.eventData.pointer.isDoubleClick) {\r\n this.handleDoubleClick();\r\n }\r\n UtilitiesDOM.removeClass(this.table, ResizableConstants.classes.tableResizing);\r\n UtilitiesDOM.removeClass(this.wrapper, ResizableConstants.classes.tableResizing);\r\n UtilitiesDOM.removeClass(this.eventData.dragHandler, ResizableConstants.classes.columnResizing);\r\n UtilitiesDOM.removeClass(this.eventData.column, ResizableConstants.classes.columnResizing);\r\n this.checkTableWidth();\r\n this.syncHandleWidths();\r\n this.refreshWrapperStyle();\r\n this.saveColumnWidths();\r\n var widths = this.eventData.newWidths || this.eventData.originalWidths;\r\n var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResizeStop, {\r\n detail: {\r\n column: this.eventData.column,\r\n columnWidth: widths.column,\r\n table: this.table,\r\n tableWidth: widths.table\r\n }\r\n });\r\n this.table.dispatchEvent(eventToDispatch);\r\n this.eventData = null;\r\n };\r\n ResizableTableColumns.prototype.handleDoubleClick = function () {\r\n if (!this.eventData || !this.eventData.column)\r\n return;\r\n var column = this.eventData.column;\r\n var colIndex = this.tableHeaders.indexOf(column);\r\n var maxWidth = 0;\r\n var indecesToSkip = [];\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n if (!el.hasAttribute(ResizableConstants.attibutes.dataResizable)) {\r\n indecesToSkip.push(idx);\r\n }\r\n });\r\n var span = this.ownerDocument.createElement('span');\r\n span.style.position = 'absolute';\r\n span.style.left = '-99999px';\r\n span.style.top = '-99999px';\r\n span.style.visibility = 'hidden';\r\n this.ownerDocument.body.appendChild(span);\r\n var rows = this.table.querySelectorAll('tr');\r\n for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) {\r\n var element = rows[rowIndex];\r\n var cells = element.querySelectorAll('td, th');\r\n var currentIndex = 0;\r\n for (var cellIndex = 0; cellIndex < cells.length; cellIndex++) {\r\n var cell = cells[cellIndex];\r\n var colSpan = 1;\r\n if (cell.hasAttribute('colspan')) {\r\n var colSpanString = cell.getAttribute('colspan') || '1';\r\n var parsed = parseInt(colSpanString);\r\n if (!isNaN(parsed)) {\r\n colSpan = parsed;\r\n }\r\n else {\r\n colSpan = 1;\r\n }\r\n }\r\n if (indecesToSkip.indexOf(cellIndex) === -1\r\n && colSpan === 1\r\n && currentIndex === colIndex) {\r\n maxWidth = Math.max(maxWidth, UtilitiesDOM.getTextWidth(cell, span));\r\n break;\r\n }\r\n currentIndex += colSpan;\r\n }\r\n }\r\n this.ownerDocument.body.removeChild(span);\r\n var difference = maxWidth - UtilitiesDOM.getWidth(column);\r\n if (difference === 0) {\r\n return;\r\n }\r\n var tableWidth = this.eventData.originalWidths.table + difference;\r\n var columnWidth = this.constrainWidth(this.eventData.column, this.eventData.originalWidths.column + difference);\r\n ResizableTableColumns.setWidth(this.table, tableWidth);\r\n ResizableTableColumns.setWidth(this.eventData.column, columnWidth);\r\n this.eventData.newWidths = {\r\n column: columnWidth,\r\n table: tableWidth\r\n };\r\n var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, {\r\n detail: {\r\n column: this.eventData.column,\r\n columnWidth: columnWidth,\r\n table: this.table,\r\n tableWidth: tableWidth\r\n }\r\n });\r\n this.table.dispatchEvent(eventToDispatch);\r\n };\r\n ResizableTableColumns.prototype.attachHandlers = function () {\r\n var _this = this;\r\n ResizableConstants.events.pointerMove\r\n .forEach(function (evt, evtIdx) {\r\n _this.ownerDocument.addEventListener(evt, _this.onPointerMoveRef, false);\r\n });\r\n ResizableConstants.events.pointerUp\r\n .forEach(function (evt, evtIdx) {\r\n _this.ownerDocument.addEventListener(evt, _this.onPointerUpRef, false);\r\n });\r\n };\r\n ResizableTableColumns.prototype.detachHandlers = function () {\r\n var _this = this;\r\n ResizableConstants.events.pointerMove\r\n .forEach(function (evt, evtIdx) {\r\n _this.ownerDocument.removeEventListener(evt, _this.onPointerMoveRef, false);\r\n });\r\n ResizableConstants.events.pointerUp\r\n .forEach(function (evt, evtIdx) {\r\n _this.ownerDocument.removeEventListener(evt, _this.onPointerUpRef, false);\r\n });\r\n };\r\n ResizableTableColumns.prototype.refreshWrapperStyle = function () {\r\n if (this.wrapper == null)\r\n return;\r\n var original = this.wrapper.style.overflowX;\r\n this.wrapper.style.overflowX = 'hidden';\r\n this.wrapper.style.overflowX = original;\r\n };\r\n ResizableTableColumns.prototype.saveColumnWidths = function () {\r\n if (!this.options.store)\r\n return;\r\n var tableId = ResizableTableColumns.generateTableId(this.table);\r\n if (tableId.length === 0)\r\n return;\r\n var data = {\r\n table: ResizableTableColumns.getWidth(this.table),\r\n columns: {}\r\n };\r\n this.getResizableHeaders()\r\n .forEach(function (el, idx) {\r\n data.columns[ResizableTableColumns.generateColumnId(el)] = ResizableTableColumns.getWidth(el);\r\n });\r\n this.options.store.set(tableId, data);\r\n };\r\n ResizableTableColumns.prototype.createHandlerReferences = function () {\r\n var _this = this;\r\n if (!this.onPointerDownRef) {\r\n this.onPointerDownRef = function (evt) {\r\n _this.handlePointerDown(evt);\r\n };\r\n }\r\n if (!this.onPointerMoveRef) {\r\n this.onPointerMoveRef = function (evt) {\r\n _this.handlePointerMove(evt);\r\n };\r\n }\r\n if (!this.onPointerUpRef) {\r\n this.onPointerUpRef = function (evt) {\r\n _this.handlePointerUp();\r\n };\r\n }\r\n };\r\n ResizableTableColumns.prototype.registerWindowResizeHandler = function () {\r\n var win = this.ownerDocument.defaultView;\r\n if (ResizableTableColumns.windowResizeHandlerRegistered)\r\n return;\r\n ResizableTableColumns.windowResizeHandlerRegistered = true;\r\n ResizableConstants.events.windowResize\r\n .forEach(function (evt, idx) {\r\n win === null || win === void 0 ? void 0 : win.addEventListener(evt, ResizableTableColumns.onWindowResize, false);\r\n });\r\n };\r\n ResizableTableColumns.prototype.handleWindowResize = function () {\r\n this.checkTableWidth();\r\n this.syncHandleWidths();\r\n };\r\n ResizableTableColumns.onWindowResize = function (event) {\r\n var target = event ? event.target : null;\r\n if (target == null)\r\n return;\r\n var tables = target.document.querySelectorAll(\".\" + ResizableConstants.classes.table);\r\n for (var index = 0; index < tables.length; index++) {\r\n var table = tables[index];\r\n if (typeof table[ResizableConstants.dataPropertyname] !== 'object')\r\n continue;\r\n table[ResizableConstants.dataPropertyname].handleWindowResize();\r\n }\r\n };\r\n ResizableTableColumns.generateColumnId = function (el) {\r\n var columnId = (el.getAttribute(ResizableConstants.attibutes.dataResizable) || '')\r\n .trim()\r\n .replace(/\\./g, '_');\r\n return columnId;\r\n };\r\n ResizableTableColumns.generateTableId = function (table) {\r\n var tableId = (table.getAttribute(ResizableConstants.attibutes.dataResizableTable) || '')\r\n .trim()\r\n .replace(/\\./g, '_');\r\n return tableId.length\r\n ? \"rtc/\" + tableId\r\n : tableId;\r\n };\r\n ResizableTableColumns.getWidth = function (el) {\r\n if (el.style.width === '')\r\n return UtilitiesDOM.getWidth(el);\r\n return Utilities.parseStyleDimension(el.style.width, false);\r\n };\r\n ResizableTableColumns.setWidth = function (element, width) {\r\n var strWidth = width.toFixed(2);\r\n strWidth = width > 0 ? strWidth : '0';\r\n element.style.width = strWidth + \"px\";\r\n };\r\n ResizableTableColumns.getInstanceId = function () {\r\n return ResizableTableColumns.instancesCount++;\r\n };\r\n ResizableTableColumns.instancesCount = 0;\r\n ResizableTableColumns.windowResizeHandlerRegistered = false;\r\n return ResizableTableColumns;\r\n}());\r\nexport default ResizableTableColumns;\r\n//# sourceMappingURL=resizable-table-columns.js.map"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"resizable-table-columns.js","sources":["../es6/utilities.js","../es6/utilities-dom.js","../es6/resizable-options.js","../es6/resizable-event-data.js","../es6/resizable-constants.js","../es6/resizable-table-columns.js"],"sourcesContent":["var Utilities = /** @class */ (function () {\r\n function Utilities() {\r\n }\r\n Utilities.escapeRegExp = function (str) {\r\n return str.replace(Utilities.regexEscapeRegex, \"\\\\$&\");\r\n };\r\n Utilities.kebabCaseToCamelCase = function (str) {\r\n return str.replace(Utilities.kebabCaseRegex, function (m) { return m[1].toUpperCase(); });\r\n };\r\n Utilities.parseStringToType = function (str) {\r\n if (str.length == 0 || Utilities.onlyWhiteSpace.test(str))\r\n return str;\r\n if (Utilities.trueRegex.test(str))\r\n return true;\r\n if (Utilities.falseRegex.test(str))\r\n return false;\r\n if (Utilities.notEmptyOrWhiteSpace.test(str)) {\r\n var temp = +str;\r\n if (!isNaN(temp))\r\n return temp;\r\n }\r\n return str;\r\n };\r\n Utilities.parseStyleDimension = function (dimension, returnOriginal) {\r\n if (typeof dimension === 'string') {\r\n if (dimension.length) {\r\n var toParse = dimension\r\n .replace('px', '')\r\n .replace(',', '.');\r\n var parsed = parseFloat(toParse);\r\n if (!isNaN(parsed)) {\r\n return parsed;\r\n }\r\n }\r\n }\r\n else if (typeof dimension === 'number') {\r\n return dimension;\r\n }\r\n if (returnOriginal) {\r\n return dimension;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n Utilities.regexEscapeRegex = /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;\r\n Utilities.kebabCaseRegex = /(\\-\\w)/g;\r\n Utilities.trueRegex = /^true$/i;\r\n Utilities.falseRegex = /^false$/i;\r\n Utilities.onlyWhiteSpace = /^\\s$/;\r\n Utilities.notEmptyOrWhiteSpace = /\\S/;\r\n return Utilities;\r\n}());\r\nexport { Utilities };\r\n//# sourceMappingURL=utilities.js.map","import { Utilities } from './utilities';\r\nvar UtilitiesDOM = /** @class */ (function () {\r\n function UtilitiesDOM() {\r\n }\r\n UtilitiesDOM.addClass = function (el, className) {\r\n if (el.classList)\r\n el.classList.add(className);\r\n else if (!UtilitiesDOM.hasClass(el, className))\r\n el.className += \" \" + className;\r\n };\r\n UtilitiesDOM.removeClass = function (el, className) {\r\n if (el.classList)\r\n el.classList.remove(className);\r\n else if (UtilitiesDOM.hasClass(el, className)) {\r\n var reg = new RegExp('(\\\\s|^)' + Utilities.escapeRegExp(className) + '(\\\\s|$)');\r\n el.className = el.className.replace(reg, ' ');\r\n }\r\n };\r\n UtilitiesDOM.hasClass = function (el, className) {\r\n if (el.classList)\r\n return el.classList.contains(className);\r\n else\r\n return !!el.className.match(new RegExp('(\\\\s|^)' + Utilities.escapeRegExp(className) + '(\\\\s|$)'));\r\n };\r\n UtilitiesDOM.getDataAttributesValues = function (el) {\r\n if (!el)\r\n return null;\r\n var returnValue = {};\r\n if (el.dataset) {\r\n for (var prop in el.dataset) {\r\n if (el.dataset.hasOwnProperty(prop)) {\r\n returnValue[prop] = Utilities.parseStringToType(el.dataset[prop] || '');\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < el.attributes.length; i++) {\r\n if (!/^data\\-/.test(el.attributes[i].name))\r\n continue;\r\n var name_1 = Utilities.kebabCaseToCamelCase(el.attributes[i].name.replace('data-', ''));\r\n returnValue[name_1] = Utilities.parseStringToType(el.attributes[i].value);\r\n }\r\n }\r\n return returnValue;\r\n };\r\n UtilitiesDOM.getMinCssWidth = function (el) {\r\n var _a;\r\n var computedStyle = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el).minWidth;\r\n var minWidth = Utilities.parseStyleDimension(computedStyle, true);\r\n if (typeof minWidth === 'number' && !isNaN(minWidth))\r\n return minWidth;\r\n return null;\r\n };\r\n UtilitiesDOM.getMaxCssWidth = function (el) {\r\n var _a;\r\n var computedStyle = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el).maxWidth;\r\n var maxWidth = Utilities.parseStyleDimension(computedStyle, true);\r\n if (typeof maxWidth === 'number' && !isNaN(maxWidth))\r\n return maxWidth;\r\n return null;\r\n };\r\n UtilitiesDOM.getOuterWidth = function (el, includeMargin) {\r\n var _a;\r\n if (includeMargin === void 0) { includeMargin = false; }\r\n //TODO: Browser test this\r\n var width = el.offsetWidth;\r\n if (!includeMargin)\r\n return width;\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var marginTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.marginTop, false);\r\n var marginBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.marginBottom, false);\r\n return width + marginTop + marginBottom;\r\n };\r\n UtilitiesDOM.getInnerWidth = function (el) {\r\n var _a;\r\n //TODO: Browser test this\r\n var width = UtilitiesDOM.getOuterWidth(el);\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var borderLeft = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderLeft, false);\r\n var borderRight = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderRight, false);\r\n return width - borderLeft - borderRight;\r\n };\r\n UtilitiesDOM.getWidth = function (el) {\r\n var _a;\r\n //TODO: Browser test this\r\n var width = UtilitiesDOM.getOuterWidth(el);\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var isBorderBox = (computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.boxSizing) === 'border-box';\r\n if (isBorderBox)\r\n return width;\r\n var paddingLeft = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.paddingLeft, false);\r\n var paddingRight = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.paddingRight, false);\r\n var borderLeft = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderLeft, false);\r\n var borderRight = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderRight, false);\r\n return width - paddingLeft - paddingRight - borderLeft - borderRight;\r\n };\r\n UtilitiesDOM.getOuterHeight = function (el, includeMargin) {\r\n var _a;\r\n if (includeMargin === void 0) { includeMargin = false; }\r\n //TODO: Browser test this\r\n var height = el.offsetHeight;\r\n if (!includeMargin)\r\n return height;\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var marginTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.marginTop, false);\r\n var marginBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.marginBottom, false);\r\n return height + marginTop + marginBottom;\r\n };\r\n UtilitiesDOM.getInnerHeight = function (el) {\r\n var _a;\r\n //TODO: Browser test this\r\n var height = UtilitiesDOM.getOuterHeight(el);\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var borderTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderTop, false);\r\n var borderBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderBottom, false);\r\n return height - borderTop - borderBottom;\r\n };\r\n UtilitiesDOM.getHeight = function (el) {\r\n var _a;\r\n //TODO: Browser test this\r\n var height = UtilitiesDOM.getOuterHeight(el);\r\n var computedStyles = (_a = el.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(el);\r\n var paddingTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.paddingTop, false);\r\n var paddingBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.paddingBottom, false);\r\n var borderTop = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderTop, false);\r\n var borderBottom = Utilities.parseStyleDimension(computedStyles === null || computedStyles === void 0 ? void 0 : computedStyles.borderBottom, false);\r\n return height - paddingTop - paddingBottom - borderTop - borderBottom;\r\n };\r\n UtilitiesDOM.getOffset = function (el) {\r\n if (!el)\r\n return { top: 0, left: 0 };\r\n var rect = el.getBoundingClientRect();\r\n return {\r\n top: rect.top + el.ownerDocument.body.scrollTop,\r\n left: rect.left + el.ownerDocument.body.scrollLeft\r\n };\r\n };\r\n UtilitiesDOM.matches = function (el, selector) {\r\n var matchesFn = undefined;\r\n // find vendor prefix\r\n var matchNames = ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'];\r\n for (var index = 0; index < matchNames.length; index++) {\r\n if (typeof el.ownerDocument.body[matchNames[index]] === 'function') {\r\n matchesFn = matchNames[index];\r\n break;\r\n }\r\n }\r\n return matchesFn ? el[matchesFn](selector) : false;\r\n };\r\n UtilitiesDOM.closest = function (el, selector) {\r\n if (!el)\r\n return null;\r\n if (typeof el.closest === 'function')\r\n return el.closest(selector);\r\n var element = el;\r\n while (element && element.nodeType === 1) {\r\n if (UtilitiesDOM.matches(element, selector)) {\r\n return element;\r\n }\r\n element = element.parentNode;\r\n }\r\n return null;\r\n };\r\n UtilitiesDOM.getPointerX = function (event) {\r\n //TODO: Browser test this\r\n if (event.type.indexOf('touch') === 0) {\r\n var tEvent = event;\r\n if (tEvent.touches && tEvent.touches.length) {\r\n return tEvent.touches[0].pageX;\r\n }\r\n if (tEvent.changedTouches && tEvent.changedTouches.length) {\r\n return tEvent.changedTouches[0].pageX;\r\n }\r\n }\r\n return event.pageX;\r\n };\r\n UtilitiesDOM.getTextWidth = function (contentElement, measurementElement) {\r\n var _a, _b;\r\n //TODO: Browser test this\r\n if (!contentElement || !measurementElement)\r\n return 0;\r\n var text = ((_a = contentElement.textContent) === null || _a === void 0 ? void 0 : _a.trim().replace(/\\s/g, ' ')) + ' '; //add extra space to ensure we are not elipsing anything\r\n var styles = (_b = contentElement.ownerDocument.defaultView) === null || _b === void 0 ? void 0 : _b.getComputedStyle(contentElement);\r\n ['fontFamily', 'fontSize', 'fontWeight', 'padding', 'border', 'boxSizing']\r\n .forEach(function (prop) {\r\n measurementElement.style[prop] = styles[prop];\r\n });\r\n measurementElement.innerHTML = text;\r\n return UtilitiesDOM.getOuterWidth(measurementElement, true);\r\n };\r\n return UtilitiesDOM;\r\n}());\r\nexport { UtilitiesDOM };\r\n//# sourceMappingURL=utilities-dom.js.map","import { UtilitiesDOM } from \"./utilities-dom\";\r\nvar ResizableOptions = /** @class */ (function () {\r\n function ResizableOptions(options, element) {\r\n if (options === void 0) { options = null; }\r\n if (element === void 0) { element = null; }\r\n this.resizeFromBody = true;\r\n this.minWidth = 40;\r\n this.maxWidth = null;\r\n this.obeyCssMinWidth = false;\r\n this.obeyCssMaxWidth = false;\r\n this.doubleClickDelay = 500;\r\n this.store = null;\r\n this.overrideValues(options);\r\n this.overrideValuesFromElement(element);\r\n }\r\n ResizableOptions.prototype.overrideValues = function (options) {\r\n if (options === void 0) { options = null; }\r\n if (!options)\r\n return;\r\n for (var prop in options) {\r\n if (this.hasOwnProperty(prop)) {\r\n this[prop] = options[prop];\r\n }\r\n }\r\n };\r\n ResizableOptions.prototype.overrideValuesFromElement = function (element) {\r\n if (element === void 0) { element = null; }\r\n if (!element)\r\n return;\r\n var elementOptions = UtilitiesDOM.getDataAttributesValues(element);\r\n this.overrideValues(elementOptions);\r\n };\r\n return ResizableOptions;\r\n}());\r\nexport { ResizableOptions };\r\n//# sourceMappingURL=resizable-options.js.map","var WidthsData = /** @class */ (function () {\r\n function WidthsData() {\r\n this.column = 0;\r\n this.table = 0;\r\n }\r\n return WidthsData;\r\n}());\r\nexport { WidthsData };\r\nvar PointerData = /** @class */ (function () {\r\n function PointerData() {\r\n this.x = null;\r\n this.isDoubleClick = false;\r\n }\r\n return PointerData;\r\n}());\r\nexport { PointerData };\r\nvar ResizableEventData = /** @class */ (function () {\r\n function ResizableEventData(column, dragHandler) {\r\n this.pointer = new PointerData();\r\n this.originalWidths = new WidthsData();\r\n this.newWidths = new WidthsData();\r\n this.columnRatio = 0;\r\n this.tableRatio = 0;\r\n this.column = column;\r\n this.dragHandler = dragHandler;\r\n }\r\n return ResizableEventData;\r\n}());\r\nexport { ResizableEventData };\r\n//# sourceMappingURL=resizable-event-data.js.map","var ResizableConstants = /** @class */ (function () {\r\n function ResizableConstants() {\r\n }\r\n ResizableConstants.dataPropertyname = 'validide_rtc_data_object';\r\n ResizableConstants.classes = {\r\n table: 'rtc-table',\r\n wrapper: 'rtc-wrapper',\r\n handleContainer: 'rtc-handle-container',\r\n handle: 'rtc-handle',\r\n tableResizing: 'rtc-table-resizing',\r\n columnResizing: 'rtc-column-resizing',\r\n };\r\n ResizableConstants.attibutes = {\r\n dataResizable: 'data-rtc-resizable',\r\n dataResizableTable: 'data-rtc-resizable-table'\r\n };\r\n ResizableConstants.data = {\r\n resizable: 'rtcResizable',\r\n resizableTable: 'rtcResizableTable'\r\n };\r\n ResizableConstants.events = {\r\n pointerDown: ['mousedown', 'touchstart'],\r\n pointerMove: ['mousemove', 'touchmove'],\r\n pointerUp: ['mouseup', 'touchend'],\r\n windowResize: ['resize'],\r\n eventResizeStart: 'eventResizeStart.rtc',\r\n eventResize: 'eventResize.rtc',\r\n eventResizeStop: 'eventResizeStop.rtc'\r\n };\r\n return ResizableConstants;\r\n}());\r\nexport { ResizableConstants };\r\n//# sourceMappingURL=resizable-constants.js.map","import { ResizableOptions } from './resizable-options';\r\nimport { Utilities } from './utilities';\r\nimport { UtilitiesDOM } from './utilities-dom';\r\nimport { ResizableEventData } from './resizable-event-data';\r\nimport { ResizableConstants } from './resizable-constants';\r\nvar ResizableTableColumns = /** @class */ (function () {\r\n function ResizableTableColumns(table, options) {\r\n if (typeof table !== 'object' || table === null || table.toString() !== '[object HTMLTableElement]')\r\n throw 'Invalid argument: \"table\".\\nResizableTableColumns requires that the table element is a not null HTMLTableElement object!';\r\n if (typeof table[ResizableConstants.dataPropertyname] !== 'undefined')\r\n throw \"Existing \\\"\" + ResizableConstants.dataPropertyname + \"\\\" property.\\nTable elemet already has a '\" + ResizableConstants.dataPropertyname + \"' attached object!\";\r\n this.id = ResizableTableColumns.getInstanceId();\r\n this.table = table;\r\n this.options = new ResizableOptions(options, table);\r\n this.wrapper = null;\r\n this.ownerDocument = table.ownerDocument;\r\n this.tableHeaders = [];\r\n this.dragHandlesContainer = null;\r\n this.originalWidths = {};\r\n this.eventData = null;\r\n this.lastPointerDown = 0;\r\n this.init();\r\n this.table[ResizableConstants.dataPropertyname] = this;\r\n }\r\n ResizableTableColumns.prototype.init = function () {\r\n this.validateMarkup();\r\n this.createHandlerReferences();\r\n this.wrapTable();\r\n this.asignTableHeaders();\r\n this.storeOriginalWidths();\r\n this.setHeaderWidths();\r\n this.createDragHandles();\r\n this.restoreColumnWidths();\r\n this.checkTableWidth();\r\n this.syncHandleWidths();\r\n this.registerWindowResizeHandler();\r\n };\r\n ResizableTableColumns.prototype.dispose = function () {\r\n this.destroyDragHandles();\r\n this.restoreOriginalWidths();\r\n this.unwrapTable();\r\n this.onPointerDownRef = null;\r\n this.onPointerMoveRef = null;\r\n this.onPointerUpRef = null;\r\n this.table[ResizableConstants.dataPropertyname] = void (0);\r\n };\r\n ResizableTableColumns.prototype.validateMarkup = function () {\r\n var theadCount = 0;\r\n var tbodyCount = 0;\r\n var thead = null;\r\n for (var index = 0; index < this.table.childNodes.length; index++) {\r\n var element = this.table.childNodes[index];\r\n if (element.nodeName === 'THEAD') {\r\n theadCount++;\r\n thead = element;\r\n }\r\n else if (element.nodeName === 'TBODY') {\r\n tbodyCount++;\r\n }\r\n }\r\n if (thead === null || theadCount !== 1)\r\n throw \"Markup validation: thead count.\\nResizableTableColumns requires that the table element has one(1) table head element. Current count: \" + theadCount;\r\n if (tbodyCount !== 1)\r\n throw \"Markup validation: tbody count.\\nResizableTableColumns requires that the table element has one(1) table body element. Current count: \" + tbodyCount;\r\n var theadRowCount = 0;\r\n var firstRow = null;\r\n for (var index = 0; index < thead.childNodes.length; index++) {\r\n var element = thead.childNodes[index];\r\n if (element.nodeName === 'TR') {\r\n theadRowCount++;\r\n if (firstRow === null) {\r\n firstRow = element;\r\n }\r\n }\r\n }\r\n if (firstRow === null || theadRowCount < 1)\r\n throw \"Markup validation: thead row count.\\nResizableTableColumns requires that the table head element has at least one(1) table row element. Current count: \" + theadRowCount;\r\n var headerCellsCount = 0;\r\n var invalidHeaderCellsCount = 0;\r\n for (var index = 0; index < firstRow.childNodes.length; index++) {\r\n var element = firstRow.childNodes[index];\r\n if (element.nodeName === 'TH') {\r\n headerCellsCount++;\r\n }\r\n else if (element.nodeName === 'TD') {\r\n invalidHeaderCellsCount++;\r\n }\r\n }\r\n if (headerCellsCount < 1)\r\n throw \"Markup validation: thead first row cells count.\\nResizableTableColumns requires that the table head's first row element has at least one(1) table header cell element. Current count: \" + headerCellsCount;\r\n if (invalidHeaderCellsCount !== 0)\r\n throw \"Markup validation: thead first row invalid.\\nResizableTableColumns requires that the table head's first row element has no(0) table cell(TD) elements. Current count: \" + invalidHeaderCellsCount;\r\n };\r\n ResizableTableColumns.prototype.wrapTable = function () {\r\n if (this.wrapper)\r\n return;\r\n this.wrapper = this.ownerDocument.createElement('div');\r\n var tableOriginalParent = this.table.parentNode;\r\n tableOriginalParent.insertBefore(this.wrapper, this.table);\r\n tableOriginalParent.removeChild(this.table);\r\n this.wrapper.appendChild(this.table);\r\n UtilitiesDOM.addClass(this.wrapper, ResizableConstants.classes.wrapper);\r\n UtilitiesDOM.addClass(this.table, ResizableConstants.classes.table);\r\n };\r\n ResizableTableColumns.prototype.unwrapTable = function () {\r\n UtilitiesDOM.removeClass(this.table, ResizableConstants.classes.table);\r\n if (!this.wrapper)\r\n return;\r\n var tableOriginalParent = this.wrapper.parentNode;\r\n tableOriginalParent.insertBefore(this.table, this.wrapper);\r\n tableOriginalParent.removeChild(this.wrapper);\r\n this.wrapper = null;\r\n };\r\n ResizableTableColumns.prototype.asignTableHeaders = function () {\r\n var tableHeader;\r\n var firstTableRow;\r\n for (var index = 0; index < this.table.childNodes.length; index++) {\r\n var element = this.table.childNodes[index];\r\n if (element.nodeName === 'THEAD') {\r\n tableHeader = element;\r\n break;\r\n }\r\n }\r\n if (!tableHeader)\r\n return;\r\n for (var index = 0; index < tableHeader.childNodes.length; index++) {\r\n var element = tableHeader.childNodes[index];\r\n if (element.nodeName === 'TR') {\r\n firstTableRow = element;\r\n break;\r\n }\r\n }\r\n if (!firstTableRow)\r\n return;\r\n for (var index = 0; index < firstTableRow.childNodes.length; index++) {\r\n var element = firstTableRow.childNodes[index];\r\n if (element.nodeName === 'TH') {\r\n this.tableHeaders.push(element);\r\n }\r\n }\r\n };\r\n ResizableTableColumns.prototype.storeOriginalWidths = function () {\r\n var _this = this;\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n _this.originalWidths[\"___.\" + idx] = el.style.width;\r\n });\r\n this.originalWidths[\"___.table\"] = this.table.style.width;\r\n };\r\n ResizableTableColumns.prototype.restoreOriginalWidths = function () {\r\n var _this = this;\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n el.style.width = _this.originalWidths[\"___.\" + idx];\r\n });\r\n this.table.style.width = this.originalWidths[\"___.table\"];\r\n };\r\n ResizableTableColumns.prototype.setHeaderWidths = function () {\r\n var _this = this;\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n var width = UtilitiesDOM.getWidth(el);\r\n var constrainedWidth = _this.constrainWidth(el, width);\r\n ResizableTableColumns.setWidth(el, constrainedWidth);\r\n });\r\n };\r\n ResizableTableColumns.prototype.constrainWidth = function (el, width) {\r\n var result = width;\r\n var minWidth = this.options.obeyCssMinWidth\r\n ? UtilitiesDOM.getMinCssWidth(el)\r\n : -Infinity;\r\n result = Math.max(result, minWidth || 0, this.options.minWidth || -Infinity);\r\n var maxWidth = this.options.obeyCssMaxWidth\r\n ? UtilitiesDOM.getMaxCssWidth(el)\r\n : +Infinity;\r\n result = Math.min(result, maxWidth || 0, this.options.maxWidth || +Infinity);\r\n return result;\r\n };\r\n ResizableTableColumns.prototype.createDragHandles = function () {\r\n var _this = this;\r\n var _a;\r\n if (this.dragHandlesContainer != null)\r\n throw 'Drag handlers allready created. Call if you wish to recreate them';\r\n this.dragHandlesContainer = this.ownerDocument.createElement('div');\r\n (_a = this.wrapper) === null || _a === void 0 ? void 0 : _a.insertBefore(this.dragHandlesContainer, this.table);\r\n UtilitiesDOM.addClass(this.dragHandlesContainer, ResizableConstants.classes.handleContainer);\r\n this.getResizableHeaders()\r\n .forEach(function (el, idx) {\r\n var _a;\r\n var handler = _this.ownerDocument.createElement('div');\r\n UtilitiesDOM.addClass(handler, ResizableConstants.classes.handle);\r\n (_a = _this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.appendChild(handler);\r\n });\r\n ResizableConstants.events.pointerDown\r\n .forEach(function (evt, evtIdx) {\r\n var _a;\r\n (_a = _this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.addEventListener(evt, _this.onPointerDownRef, false);\r\n });\r\n };\r\n ResizableTableColumns.prototype.destroyDragHandles = function () {\r\n var _this = this;\r\n var _a, _b;\r\n if (this.dragHandlesContainer !== null) {\r\n ResizableConstants.events.pointerDown\r\n .forEach(function (evt, evtIdx) {\r\n var _a;\r\n (_a = _this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.removeEventListener(evt, _this.onPointerDownRef, false);\r\n });\r\n (_b = (_a = this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.removeChild(this.dragHandlesContainer);\r\n }\r\n };\r\n ResizableTableColumns.prototype.getDragHandlers = function () {\r\n var nodes = this.dragHandlesContainer == null\r\n ? null\r\n : this.dragHandlesContainer.querySelectorAll(\".\" + ResizableConstants.classes.handle);\r\n return nodes\r\n ? Array.prototype.slice.call(nodes).filter(function (el) { return el.nodeName === 'DIV'; })\r\n : new Array();\r\n };\r\n ResizableTableColumns.prototype.restoreColumnWidths = function () {\r\n if (!this.options.store)\r\n return;\r\n var tableId = ResizableTableColumns.generateTableId(this.table);\r\n if (tableId.length === 0)\r\n return;\r\n var data = this.options.store.get(tableId);\r\n if (!data)\r\n return;\r\n this.getResizableHeaders()\r\n .forEach(function (el, idx) {\r\n var width = data.columns[ResizableTableColumns.generateColumnId(el)];\r\n if (typeof width !== 'undefined') {\r\n ResizableTableColumns.setWidth(el, width);\r\n }\r\n });\r\n if (typeof data.table !== 'undefined') {\r\n ResizableTableColumns.setWidth(this.table, data.table);\r\n }\r\n };\r\n ResizableTableColumns.prototype.checkTableWidth = function () {\r\n var wrappperWidth = UtilitiesDOM.getWidth(this.wrapper);\r\n //might bee needed to exclude margins/borders/paddings\r\n var tableWidth = UtilitiesDOM.getOuterWidth(this.table, true);\r\n var difference = wrappperWidth - tableWidth;\r\n if (difference > 0) {\r\n var totalWidth_1 = 0;\r\n var resizableWidth_1 = 0;\r\n var addedWidth = 0;\r\n var widths_1 = [];\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n //might bee needed to include margins/borders/paddings\r\n var width = ResizableTableColumns.getWidth(el);\r\n widths_1.push(width);\r\n totalWidth_1 += width;\r\n if (el.hasAttribute(ResizableConstants.attibutes.dataResizable)) {\r\n resizableWidth_1 += width;\r\n }\r\n });\r\n ResizableTableColumns.setWidth(this.table, wrappperWidth);\r\n for (var index = 0; index < this.tableHeaders.length; index++) {\r\n var el = this.tableHeaders[index];\r\n var currentWidth = widths_1.shift();\r\n if (el.hasAttribute(ResizableConstants.attibutes.dataResizable)) {\r\n var newWidth = currentWidth + ((currentWidth / resizableWidth_1) * difference);\r\n var leftToAdd = totalWidth_1 + difference - addedWidth;\r\n newWidth = Math.min(newWidth, leftToAdd);\r\n newWidth = Math.max(newWidth, 0); // Do not add a negative width\r\n var constrainedWidth = this.constrainWidth(el, newWidth);\r\n ResizableTableColumns.setWidth(el, constrainedWidth);\r\n addedWidth += newWidth;\r\n }\r\n else {\r\n addedWidth += currentWidth;\r\n }\r\n if (addedWidth >= totalWidth_1)\r\n break;\r\n }\r\n }\r\n };\r\n ResizableTableColumns.prototype.syncHandleWidths = function () {\r\n var _this = this;\r\n var tableWidth = UtilitiesDOM.getWidth(this.table);\r\n ResizableTableColumns.setWidth(this.dragHandlesContainer, tableWidth);\r\n this.dragHandlesContainer.style.minWidth = tableWidth + \"px\";\r\n var headers = this.getResizableHeaders();\r\n this.getDragHandlers()\r\n .forEach(function (el, idx) {\r\n var height = UtilitiesDOM.getInnerHeight((_this.options.resizeFromBody ? _this.table : _this.table.tHead));\r\n if (idx < headers.length) {\r\n var th = headers[idx];\r\n var left = UtilitiesDOM.getOuterWidth(th);\r\n left += UtilitiesDOM.getOffset(th).left;\r\n left -= UtilitiesDOM.getOffset(_this.dragHandlesContainer).left;\r\n el.style.left = left + \"px\";\r\n el.style.height = height + \"px\";\r\n }\r\n });\r\n };\r\n ResizableTableColumns.prototype.getResizableHeaders = function () {\r\n return this.tableHeaders\r\n .filter(function (el, idx) {\r\n return el.hasAttribute(ResizableConstants.attibutes.dataResizable);\r\n });\r\n };\r\n ResizableTableColumns.prototype.handlePointerDown = function (event) {\r\n this.handlePointerUp();\r\n var target = event ? event.target : null;\r\n if (target == null)\r\n return;\r\n if (target.nodeName !== 'DIV' || !UtilitiesDOM.hasClass(target, ResizableConstants.classes.handle))\r\n return;\r\n if (typeof event.button === 'number' && event.button !== 0)\r\n return; // this is not a left click\r\n var dragHandler = target;\r\n var gripIndex = this.getDragHandlers().indexOf(dragHandler);\r\n var resizableHeaders = this.getResizableHeaders();\r\n if (gripIndex >= resizableHeaders.length)\r\n return;\r\n var millisecondsNow = (new Date()).getTime();\r\n var isDoubleClick = (millisecondsNow - this.lastPointerDown) < this.options.doubleClickDelay;\r\n var column = resizableHeaders[gripIndex];\r\n var columnWidth = ResizableTableColumns.getWidth(column);\r\n var computedColumnWidth = ResizableTableColumns.getComputedWidth(column);\r\n var tableWidth = ResizableTableColumns.getWidth(this.table);\r\n var computedTableWidth = ResizableTableColumns.getComputedWidth(this.table);\r\n var widths = {\r\n column: columnWidth,\r\n table: tableWidth\r\n };\r\n var eventData = new ResizableEventData(column, dragHandler);\r\n eventData.pointer = {\r\n x: UtilitiesDOM.getPointerX(event),\r\n isDoubleClick: isDoubleClick\r\n };\r\n eventData.originalWidths = widths;\r\n eventData.newWidths = widths;\r\n eventData.columnRatio = columnWidth / computedColumnWidth;\r\n eventData.tableRatio = tableWidth / computedTableWidth;\r\n this.detachHandlers(); //make sure we do not have extra handlers\r\n this.attachHandlers();\r\n UtilitiesDOM.addClass(this.table, ResizableConstants.classes.tableResizing);\r\n UtilitiesDOM.addClass(this.wrapper, ResizableConstants.classes.tableResizing);\r\n UtilitiesDOM.addClass(dragHandler, ResizableConstants.classes.columnResizing);\r\n UtilitiesDOM.addClass(column, ResizableConstants.classes.columnResizing);\r\n this.lastPointerDown = millisecondsNow;\r\n this.eventData = eventData;\r\n var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResizeStart, {\r\n detail: {\r\n column: column,\r\n columnWidth: columnWidth,\r\n table: this.table,\r\n tableWidth: tableWidth,\r\n columnRatio: this.eventData.columnRatio,\r\n tableRatio: this.eventData.tableRatio\r\n }\r\n });\r\n this.table.dispatchEvent(eventToDispatch);\r\n event.preventDefault();\r\n };\r\n ResizableTableColumns.prototype.handlePointerMove = function (event) {\r\n if (!this.eventData || !event)\r\n return;\r\n var difference = (UtilitiesDOM.getPointerX(event) || 0) - (this.eventData.pointer.x || 0);\r\n if (difference === 0) {\r\n return;\r\n }\r\n this.eventData.columnRatio = this.eventData.newWidths.column / ResizableTableColumns.getComputedWidth(this.eventData.column);\r\n this.eventData.tableRatio = this.eventData.newWidths.table / ResizableTableColumns.getComputedWidth(this.table);\r\n var tableWidth = (this.eventData.originalWidths.table + difference) * this.eventData.tableRatio;\r\n var columnWidth = this.constrainWidth(this.eventData.column, (this.eventData.originalWidths.column + difference) * this.eventData.columnRatio);\r\n ResizableTableColumns.setWidth(this.table, tableWidth);\r\n ResizableTableColumns.setWidth(this.eventData.column, columnWidth);\r\n this.eventData.newWidths = {\r\n column: columnWidth,\r\n table: tableWidth\r\n };\r\n var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, {\r\n detail: {\r\n column: this.eventData.column,\r\n columnWidth: columnWidth,\r\n table: this.table,\r\n tableWidth: tableWidth,\r\n columnRatio: this.eventData.columnRatio,\r\n tableRatio: this.eventData.tableRatio\r\n }\r\n });\r\n this.table.dispatchEvent(eventToDispatch);\r\n };\r\n ResizableTableColumns.prototype.handlePointerUp = function () {\r\n this.detachHandlers();\r\n if (!this.eventData)\r\n return;\r\n if (this.eventData.pointer.isDoubleClick) {\r\n this.handleDoubleClick();\r\n }\r\n UtilitiesDOM.removeClass(this.table, ResizableConstants.classes.tableResizing);\r\n UtilitiesDOM.removeClass(this.wrapper, ResizableConstants.classes.tableResizing);\r\n UtilitiesDOM.removeClass(this.eventData.dragHandler, ResizableConstants.classes.columnResizing);\r\n UtilitiesDOM.removeClass(this.eventData.column, ResizableConstants.classes.columnResizing);\r\n this.checkTableWidth();\r\n this.syncHandleWidths();\r\n this.refreshWrapperStyle();\r\n this.saveColumnWidths();\r\n var widths = this.eventData.newWidths || this.eventData.originalWidths;\r\n var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResizeStop, {\r\n detail: {\r\n column: this.eventData.column,\r\n columnWidth: widths.column,\r\n table: this.table,\r\n tableWidth: widths.table\r\n }\r\n });\r\n this.table.dispatchEvent(eventToDispatch);\r\n this.eventData = null;\r\n };\r\n ResizableTableColumns.prototype.handleDoubleClick = function () {\r\n if (!this.eventData || !this.eventData.column)\r\n return;\r\n var column = this.eventData.column;\r\n var colIndex = this.tableHeaders.indexOf(column);\r\n var maxWidth = 0;\r\n var indecesToSkip = [];\r\n this.tableHeaders\r\n .forEach(function (el, idx) {\r\n if (!el.hasAttribute(ResizableConstants.attibutes.dataResizable)) {\r\n indecesToSkip.push(idx);\r\n }\r\n });\r\n var span = this.ownerDocument.createElement('span');\r\n span.style.position = 'absolute';\r\n span.style.left = '-99999px';\r\n span.style.top = '-99999px';\r\n span.style.visibility = 'hidden';\r\n this.ownerDocument.body.appendChild(span);\r\n var rows = this.table.querySelectorAll('tr');\r\n for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) {\r\n var element = rows[rowIndex];\r\n var cells = element.querySelectorAll('td, th');\r\n var currentIndex = 0;\r\n for (var cellIndex = 0; cellIndex < cells.length; cellIndex++) {\r\n var cell = cells[cellIndex];\r\n var colSpan = 1;\r\n if (cell.hasAttribute('colspan')) {\r\n var colSpanString = cell.getAttribute('colspan') || '1';\r\n var parsed = parseInt(colSpanString);\r\n if (!isNaN(parsed)) {\r\n colSpan = parsed;\r\n }\r\n else {\r\n colSpan = 1;\r\n }\r\n }\r\n if (indecesToSkip.indexOf(cellIndex) === -1\r\n && colSpan === 1\r\n && currentIndex === colIndex) {\r\n maxWidth = Math.max(maxWidth, UtilitiesDOM.getTextWidth(cell, span));\r\n break;\r\n }\r\n currentIndex += colSpan;\r\n }\r\n }\r\n this.ownerDocument.body.removeChild(span);\r\n var difference = maxWidth - UtilitiesDOM.getWidth(column);\r\n if (difference === 0) {\r\n return;\r\n }\r\n var tableWidth = this.eventData.originalWidths.table + difference;\r\n var columnWidth = this.constrainWidth(this.eventData.column, this.eventData.originalWidths.column + difference);\r\n ResizableTableColumns.setWidth(this.table, tableWidth);\r\n ResizableTableColumns.setWidth(this.eventData.column, columnWidth);\r\n this.eventData.newWidths = {\r\n column: columnWidth,\r\n table: tableWidth,\r\n };\r\n var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, {\r\n detail: {\r\n column: this.eventData.column,\r\n columnWidth: columnWidth,\r\n table: this.table,\r\n tableWidth: tableWidth,\r\n columnRatio: this.eventData.columnRatio,\r\n tableRatio: this.eventData.tableRatio\r\n }\r\n });\r\n this.table.dispatchEvent(eventToDispatch);\r\n };\r\n ResizableTableColumns.prototype.attachHandlers = function () {\r\n var _this = this;\r\n ResizableConstants.events.pointerMove\r\n .forEach(function (evt, evtIdx) {\r\n _this.ownerDocument.addEventListener(evt, _this.onPointerMoveRef, false);\r\n });\r\n ResizableConstants.events.pointerUp\r\n .forEach(function (evt, evtIdx) {\r\n _this.ownerDocument.addEventListener(evt, _this.onPointerUpRef, false);\r\n });\r\n };\r\n ResizableTableColumns.prototype.detachHandlers = function () {\r\n var _this = this;\r\n ResizableConstants.events.pointerMove\r\n .forEach(function (evt, evtIdx) {\r\n _this.ownerDocument.removeEventListener(evt, _this.onPointerMoveRef, false);\r\n });\r\n ResizableConstants.events.pointerUp\r\n .forEach(function (evt, evtIdx) {\r\n _this.ownerDocument.removeEventListener(evt, _this.onPointerUpRef, false);\r\n });\r\n };\r\n ResizableTableColumns.prototype.refreshWrapperStyle = function () {\r\n if (this.wrapper == null)\r\n return;\r\n var original = this.wrapper.style.overflowX;\r\n this.wrapper.style.overflowX = 'hidden';\r\n this.wrapper.style.overflowX = original;\r\n };\r\n ResizableTableColumns.prototype.saveColumnWidths = function () {\r\n if (!this.options.store)\r\n return;\r\n var tableId = ResizableTableColumns.generateTableId(this.table);\r\n if (tableId.length === 0)\r\n return;\r\n var data = {\r\n table: ResizableTableColumns.getWidth(this.table),\r\n columns: {}\r\n };\r\n this.getResizableHeaders()\r\n .forEach(function (el, idx) {\r\n data.columns[ResizableTableColumns.generateColumnId(el)] = ResizableTableColumns.getWidth(el);\r\n });\r\n this.options.store.set(tableId, data);\r\n };\r\n ResizableTableColumns.prototype.createHandlerReferences = function () {\r\n var _this = this;\r\n if (!this.onPointerDownRef) {\r\n this.onPointerDownRef = function (evt) {\r\n _this.handlePointerDown(evt);\r\n };\r\n }\r\n if (!this.onPointerMoveRef) {\r\n this.onPointerMoveRef = function (evt) {\r\n _this.handlePointerMove(evt);\r\n };\r\n }\r\n if (!this.onPointerUpRef) {\r\n this.onPointerUpRef = function (evt) {\r\n _this.handlePointerUp();\r\n };\r\n }\r\n };\r\n ResizableTableColumns.prototype.registerWindowResizeHandler = function () {\r\n var win = this.ownerDocument.defaultView;\r\n if (ResizableTableColumns.windowResizeHandlerRegistered)\r\n return;\r\n ResizableTableColumns.windowResizeHandlerRegistered = true;\r\n ResizableConstants.events.windowResize\r\n .forEach(function (evt, idx) {\r\n win === null || win === void 0 ? void 0 : win.addEventListener(evt, ResizableTableColumns.onWindowResize, false);\r\n });\r\n };\r\n ResizableTableColumns.prototype.handleWindowResize = function () {\r\n this.checkTableWidth();\r\n this.syncHandleWidths();\r\n };\r\n ResizableTableColumns.onWindowResize = function (event) {\r\n var target = event ? event.target : null;\r\n if (target == null)\r\n return;\r\n var tables = target.document.querySelectorAll(\".\" + ResizableConstants.classes.table);\r\n for (var index = 0; index < tables.length; index++) {\r\n var table = tables[index];\r\n if (typeof table[ResizableConstants.dataPropertyname] !== 'object')\r\n continue;\r\n table[ResizableConstants.dataPropertyname].handleWindowResize();\r\n }\r\n };\r\n ResizableTableColumns.generateColumnId = function (el) {\r\n var columnId = (el.getAttribute(ResizableConstants.attibutes.dataResizable) || '')\r\n .trim()\r\n .replace(/\\./g, '_');\r\n return columnId;\r\n };\r\n ResizableTableColumns.generateTableId = function (table) {\r\n var tableId = (table.getAttribute(ResizableConstants.attibutes.dataResizableTable) || '')\r\n .trim()\r\n .replace(/\\./g, '_');\r\n return tableId.length\r\n ? \"rtc/\" + tableId\r\n : tableId;\r\n };\r\n ResizableTableColumns.getWidth = function (el) {\r\n if (el.style.width === '')\r\n return UtilitiesDOM.getWidth(el);\r\n return ResizableTableColumns.getComputedWidth(el);\r\n };\r\n ResizableTableColumns.getComputedWidth = function (el) {\r\n return Utilities.parseStyleDimension(el.style.width, false);\r\n };\r\n ResizableTableColumns.setWidth = function (element, width) {\r\n var strWidth = width.toFixed(2);\r\n strWidth = width > 0 ? strWidth : '0';\r\n element.style.width = strWidth + \"px\";\r\n };\r\n ResizableTableColumns.getInstanceId = function () {\r\n return ResizableTableColumns.instancesCount++;\r\n };\r\n ResizableTableColumns.instancesCount = 0;\r\n ResizableTableColumns.windowResizeHandlerRegistered = false;\r\n return ResizableTableColumns;\r\n}());\r\nexport { ResizableTableColumns };\r\n//# sourceMappingURL=resizable-table-columns.js.map"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/bundle/resizable-table-columns.min.js b/dist/js/bundle/resizable-table-columns.min.js index 095426e..81e33a8 100644 --- a/dist/js/bundle/resizable-table-columns.min.js +++ b/dist/js/bundle/resizable-table-columns.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).validide_resizableTableColumns=t()}(this,function(){"use strict";var s=(n.escapeRegExp=function(e){return e.replace(n.regexEscapeRegex,"\\$&")},n.kebabCaseToCamelCase=function(e){return e.replace(n.kebabCaseRegex,function(e){return e[1].toUpperCase()})},n.parseStringToType=function(e){if(0==e.length||n.onlyWhiteSpace.test(e))return e;if(n.trueRegex.test(e))return!0;if(n.falseRegex.test(e))return!1;if(n.notEmptyOrWhiteSpace.test(e)){var t=+e;if(!isNaN(t))return t}return e},n.parseStyleDimension=function(e,t){if("string"==typeof e){if(e.length){var n=e.replace("px","").replace(",","."),i=parseFloat(n);if(!isNaN(i))return i}}else if("number"==typeof e)return e;return t?e:0},n.regexEscapeRegex=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,n.kebabCaseRegex=/(\-\w)/g,n.trueRegex=/^true$/i,n.falseRegex=/^false$/i,n.onlyWhiteSpace=/^\s$/,n.notEmptyOrWhiteSpace=/\S/,n);function n(){}var g=(r.addClass=function(e,t){e.classList?e.classList.add(t):r.hasClass(e,t)||(e.className+=" "+t)},r.removeClass=function(e,t){var n;e.classList?e.classList.remove(t):r.hasClass(e,t)&&(n=new RegExp("(\\s|^)"+s.escapeRegExp(t)+"(\\s|$)"),e.className=e.className.replace(n," "))},r.hasClass=function(e,t){return e.classList?e.classList.contains(t):!!e.className.match(new RegExp("(\\s|^)"+s.escapeRegExp(t)+"(\\s|$)"))},r.getDataAttributesValues=function(e){if(!e)return null;var t={};if(e.dataset)for(var n in e.dataset)e.dataset.hasOwnProperty(n)&&(t[n]=s.parseStringToType(e.dataset[n]||""));else for(var i=0;i if you wish to recreate them";this.dragHandlesContainer=this.ownerDocument.createElement("div"),null!==(e=this.wrapper)&&void 0!==e&&e.insertBefore(this.dragHandlesContainer,this.table),g.addClass(this.dragHandlesContainer,y.classes.handleContainer),this.getResizableHeaders().forEach(function(e,t){var n,i=a.ownerDocument.createElement("div");g.addClass(i,y.classes.handle),null!==(n=a.dragHandlesContainer)&&void 0!==n&&n.appendChild(i)}),y.events.pointerDown.forEach(function(e,t){var n;null!==(n=a.dragHandlesContainer)&&void 0!==n&&n.addEventListener(e,a.onPointerDownRef,!1)})},w.prototype.destroyDragHandles=function(){var e,t,i=this;null!==this.dragHandlesContainer&&(y.events.pointerDown.forEach(function(e,t){var n;null!==(n=i.dragHandlesContainer)&&void 0!==n&&n.removeEventListener(e,i.onPointerDownRef,!1)}),null!==(t=null===(e=this.dragHandlesContainer)||void 0===e?void 0:e.parentElement)&&void 0!==t&&t.removeChild(this.dragHandlesContainer))},w.prototype.getDragHandlers=function(){var e=null==this.dragHandlesContainer?null:this.dragHandlesContainer.querySelectorAll("."+y.classes.handle);return e?Array.prototype.slice.call(e).filter(function(e){return"DIV"===e.nodeName}):new Array},w.prototype.restoreColumnWidths=function(){var e,i;this.options.store&&(0===(e=w.generateTableId(this.table)).length||(i=this.options.store.get(e))&&(this.getResizableHeaders().forEach(function(e,t){var n=i.columns[w.generateColumnId(e)];void 0!==n&&w.setWidth(e,n)}),void 0!==i.table&&w.setWidth(this.table,i.table)))},w.prototype.checkTableWidth=function(){var e=g.getWidth(this.wrapper),t=e-g.getOuterWidth(this.table,!0);if(0=(i=this.getResizableHeaders()).length||(s=(a=(new Date).getTime())-this.lastPointerDown if you wish to recreate them";this.dragHandlesContainer=this.ownerDocument.createElement("div"),null!==(e=this.wrapper)&&void 0!==e&&e.insertBefore(this.dragHandlesContainer,this.table),g.addClass(this.dragHandlesContainer,y.classes.handleContainer),this.getResizableHeaders().forEach(function(e,t){var n,i=a.ownerDocument.createElement("div");g.addClass(i,y.classes.handle),null!==(n=a.dragHandlesContainer)&&void 0!==n&&n.appendChild(i)}),y.events.pointerDown.forEach(function(e,t){var n;null!==(n=a.dragHandlesContainer)&&void 0!==n&&n.addEventListener(e,a.onPointerDownRef,!1)})},w.prototype.destroyDragHandles=function(){var e,t,i=this;null!==this.dragHandlesContainer&&(y.events.pointerDown.forEach(function(e,t){var n;null!==(n=i.dragHandlesContainer)&&void 0!==n&&n.removeEventListener(e,i.onPointerDownRef,!1)}),null!==(t=null===(e=this.dragHandlesContainer)||void 0===e?void 0:e.parentElement)&&void 0!==t&&t.removeChild(this.dragHandlesContainer))},w.prototype.getDragHandlers=function(){var e=null==this.dragHandlesContainer?null:this.dragHandlesContainer.querySelectorAll("."+y.classes.handle);return e?Array.prototype.slice.call(e).filter(function(e){return"DIV"===e.nodeName}):new Array},w.prototype.restoreColumnWidths=function(){var e,i;this.options.store&&(0===(e=w.generateTableId(this.table)).length||(i=this.options.store.get(e))&&(this.getResizableHeaders().forEach(function(e,t){var n=i.columns[w.generateColumnId(e)];void 0!==n&&w.setWidth(e,n)}),void 0!==i.table&&w.setWidth(this.table,i.table)))},w.prototype.checkTableWidth=function(){var e=g.getWidth(this.wrapper),t=e-g.getOuterWidth(this.table,!0);if(0=(i=this.getResizableHeaders()).length||(s=(a=(new Date).getTime())-this.lastPointerDown { [name: string]: T; } -export default class Utilities { +export declare class Utilities { static regexEscapeRegex: RegExp; static kebabCaseRegex: RegExp; static trueRegex: RegExp; diff --git a/dist/js/es6/utilities.js b/dist/js/es6/utilities.js index 745196b..9a8205e 100644 --- a/dist/js/es6/utilities.js +++ b/dist/js/es6/utilities.js @@ -51,5 +51,5 @@ var Utilities = /** @class */ (function () { Utilities.notEmptyOrWhiteSpace = /\S/; return Utilities; }()); -export default Utilities; +export { Utilities }; //# sourceMappingURL=utilities.js.map \ No newline at end of file diff --git a/dist/js/es6/utilities.js.map b/dist/js/es6/utilities.js.map index 2951904..df5645b 100644 --- a/dist/js/es6/utilities.js.map +++ b/dist/js/es6/utilities.js.map @@ -1 +1 @@ -{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../sources/ts/utilities.ts"],"names":[],"mappings":"AAIA;IAAA;IAyDA,CAAC;IAhDQ,sBAAY,GAAnB,UAAoB,GAAW;QAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAEM,8BAAoB,GAA3B,UAA4B,GAAW;QACrC,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAEM,2BAAiB,GAAxB,UAAyB,GAAW;QAClC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YACvD,OAAO,GAAG,CAAC;QAEb,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,OAAO,IAAI,CAAC;QAEd,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAChC,OAAO,KAAK,CAAC;QAEf,IAAI,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC5C,IAAM,IAAI,GAAG,CAAC,GAAG,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACd,OAAO,IAAI,CAAC;SACf;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,6BAAmB,GAA1B,UAA2B,SAAsC,EAAE,cAAuB;QACxF,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACjC,IAAI,SAAS,CAAC,MAAM,EAAE;gBACpB,IAAM,OAAO,GAAG,SAAS;qBACtB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;qBACjB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACrB,IAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBAClB,OAAO,MAAM,CAAC;iBACf;aACF;SACF;aACI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACtC,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,cAAc,EAAE;YAClB,OAAO,SAAS,CAAC;SAClB;aAAM;YACL,OAAO,CAAC,CAAC;SACV;IACH,CAAC;IAvDM,0BAAgB,GAAW,qCAAqC,CAAC;IACjE,wBAAc,GAAW,SAAS,CAAC;IACnC,mBAAS,GAAW,SAAS,CAAC;IAC9B,oBAAU,GAAW,UAAU,CAAC;IAChC,wBAAc,GAAW,MAAM,CAAC;IAChC,8BAAoB,GAAW,IAAI,CAAC;IAmD7C,gBAAC;CAAA,AAzDD,IAyDC;eAzDoB,SAAS"} \ No newline at end of file +{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../sources/ts/utilities.ts"],"names":[],"mappings":"AAIA;IAAA;IAyDA,CAAC;IAhDQ,sBAAY,GAAnB,UAAoB,GAAW;QAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAEM,8BAAoB,GAA3B,UAA4B,GAAW;QACrC,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAEM,2BAAiB,GAAxB,UAAyB,GAAW;QAClC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YACvD,OAAO,GAAG,CAAC;QAEb,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,OAAO,IAAI,CAAC;QAEd,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAChC,OAAO,KAAK,CAAC;QAEf,IAAI,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC5C,IAAM,IAAI,GAAG,CAAC,GAAG,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACd,OAAO,IAAI,CAAC;SACf;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,6BAAmB,GAA1B,UAA2B,SAAsC,EAAE,cAAuB;QACxF,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACjC,IAAI,SAAS,CAAC,MAAM,EAAE;gBACpB,IAAM,OAAO,GAAG,SAAS;qBACtB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;qBACjB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACrB,IAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBAClB,OAAO,MAAM,CAAC;iBACf;aACF;SACF;aACI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACtC,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,cAAc,EAAE;YAClB,OAAO,SAAS,CAAC;SAClB;aAAM;YACL,OAAO,CAAC,CAAC;SACV;IACH,CAAC;IAvDM,0BAAgB,GAAW,qCAAqC,CAAC;IACjE,wBAAc,GAAW,SAAS,CAAC;IACnC,mBAAS,GAAW,SAAS,CAAC;IAC9B,oBAAU,GAAW,UAAU,CAAC;IAChC,wBAAc,GAAW,MAAM,CAAC;IAChC,8BAAoB,GAAW,IAAI,CAAC;IAmD7C,gBAAC;CAAA,AAzDD,IAyDC;SAzDY,SAAS"} \ No newline at end of file diff --git a/dist/js/index.es2015.d.ts b/dist/js/index.es2015.d.ts index 6515d81..55ea4b4 100644 --- a/dist/js/index.es2015.d.ts +++ b/dist/js/index.es2015.d.ts @@ -24,7 +24,7 @@ declare module "resizable-constants" { eventResize: string; eventResizeStop: string; } - export default class ResizableConstants { + export class ResizableConstants { static dataPropertyname: string; static classes: IClassesConstants; static attibutes: IAttributesConstants; @@ -47,6 +47,8 @@ declare module "resizable-event-data" { pointer: PointerData; originalWidths: WidthsData; newWidths: WidthsData; + columnRatio: number; + tableRatio: number; constructor(column: HTMLTableCellElement, dragHandler: HTMLDivElement); } } @@ -54,7 +56,7 @@ declare module "utilities" { export interface IIndexedCollection { [name: string]: T; } - export default class Utilities { + export class Utilities { static regexEscapeRegex: RegExp; static kebabCaseRegex: RegExp; static trueRegex: RegExp; @@ -68,7 +70,7 @@ declare module "utilities" { } } declare module "utilities-dom" { - export default class UtilitiesDOM { + export class UtilitiesDOM { static addClass(el: HTMLElement, className: string): void; static removeClass(el: HTMLElement, className: string): void; static hasClass(el: HTMLElement, className: string): boolean; @@ -92,7 +94,7 @@ declare module "utilities-dom" { } } declare module "resizable-options" { - export default class ResizableOptions { + export class ResizableOptions { resizeFromBody: boolean; minWidth: null | number; maxWidth: null | number; @@ -106,9 +108,9 @@ declare module "resizable-options" { } } declare module "resizable-table-columns" { - import ResizableOptions from "resizable-options"; + import { ResizableOptions } from "resizable-options"; import { ResizableEventData } from "resizable-event-data"; - class ResizableTableColumns { + export class ResizableTableColumns { static instancesCount: number; static windowResizeHandlerRegistered: boolean; table: HTMLTableElement; @@ -159,8 +161,8 @@ declare module "resizable-table-columns" { static generateColumnId(el: HTMLElement): string; static generateTableId(table: HTMLTableElement): string; static getWidth(el: HTMLElement): number; + static getComputedWidth(el: HTMLElement): number; static setWidth(element: HTMLElement, width: number): void; static getInstanceId(): number; } - export default ResizableTableColumns; } diff --git a/dist/samples/bootstrap.html b/dist/samples/bootstrap.html index cc000ac..05704f8 100644 --- a/dist/samples/bootstrap.html +++ b/dist/samples/bootstrap.html @@ -329,7 +329,7 @@

Complex header example

new ResizableTableColumns(els[index], options); } - })(window, window.validide_resizableTableColumns, void (0)); + })(window, window.validide_resizableTableColumns.ResizableTableColumns, void (0)); diff --git a/dist/samples/dev.html b/dist/samples/dev.html new file mode 100644 index 0000000..beea1c2 --- /dev/null +++ b/dist/samples/dev.html @@ -0,0 +1,342 @@ + + + + + + + Resizable Table Columns + + + + + + + + + + + +
+

Resizable Table Columns

+
+

Simple example

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No.NameCounrtyRegionCityStreetPost CodeLast updatedUUID
1EugeniaSerbiaMNMinneapolisAp #207-8285 Nibh Rd.417542017-11-15T16:52:00-08:00E212DAC2-220E-9589-D96A-3B58242E9817
2LindaKorea, SouthKATimkur6490 Ut Rd.54262017-02-14T22:58:55-08:005DD78B29-5B58-F2D9-3D36-8FB80C3121A7
3LeonardBritish Indian Ocean TerritoryPBSousa971-4168 Sit St.49012018-05-21T06:02:19-07:0043416183-B9A7-9E24-3FBD-42093FB3B9F4
4LionelNigeriaVästra Götalands länLidköpingP.O. Box 168, 2045 Quis, Ave114012018-04-26T19:07:30-07:0016A49C04-4CD6-DAB7-B6F6-9F441487D0CD
5DillonFijiLower AustriaSchwechat308-7449 Fermentum Av.C1W 2W02017-08-30T22:53:40-07:00650F3DCA-D979-6629-0CB1-643E1D289239
6MacyHaitiQCMontebelloAp #738-1107 Varius Ave406642018-07-03T03:12:45-07:007A4609A1-E4D6-3327-7329-4ACB8950F9A2
7KyleLebanonHBBremen283-2898 Nec, Av.3818702018-07-15T17:01:24-07:0003D5BF83-F1EA-05E1-2B76-37A1996A4007
8DylanLiechtensteinONGloucester203-4972 Quis, St.479472017-07-24T02:04:07-07:0064FF2C19-E62B-FCB0-91C0-E6493EDBEB72
9OprahSpainHerediaHerediaP.O. Box 668, 6923 Dolor. St.35392018-05-17T20:59:41-07:00D08BC557-A7BB-CE2D-652D-CCE2DBC79DA1
10AlexanderFijiIstanbulIstanbulP.O. Box 879, 3462 Diam. St.JS5Z 4UZ2016-10-03T23:00:32-07:00F854BE7E-C117-7B9A-F3D5-9EAD294315D0
+
+ +
+

Complex header example

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Address 1Address 2Last updated
No.NameCounrtyRegionCityStreetPost CodeLast updatedUUID
1EugeniaSerbiaMNMinneapolisAp #207-8285 Nibh Rd.417542017-11-15T16:52:00-08:00E212DAC2-220E-9589-D96A-3B58242E9817
2LindaKorea, SouthKATimkur6490 Ut Rd.54262017-02-14T22:58:55-08:005DD78B29-5B58-F2D9-3D36-8FB80C3121A7
3LeonardBritish Indian Ocean TerritoryPBSousa971-4168 Sit St.49012018-05-21T06:02:19-07:0043416183-B9A7-9E24-3FBD-42093FB3B9F4
4LionelNigeriaVästra Götalands länLidköpingP.O. Box 168, 2045 Quis, Ave114012018-04-26T19:07:30-07:0016A49C04-4CD6-DAB7-B6F6-9F441487D0CD
5DillonFijiLower AustriaSchwechat308-7449 Fermentum Av.C1W 2W02017-08-30T22:53:40-07:00650F3DCA-D979-6629-0CB1-643E1D289239
6MacyHaitiQCMontebelloAp #738-1107 Varius Ave406642018-07-03T03:12:45-07:007A4609A1-E4D6-3327-7329-4ACB8950F9A2
7KyleLebanonHBBremen283-2898 Nec, Av.3818702018-07-15T17:01:24-07:0003D5BF83-F1EA-05E1-2B76-37A1996A4007
8DylanLiechtensteinONGloucester203-4972 Quis, St.479472017-07-24T02:04:07-07:0064FF2C19-E62B-FCB0-91C0-E6493EDBEB72
9OprahSpainHerediaHerediaP.O. Box 668, 6923 Dolor. St.35392018-05-17T20:59:41-07:00D08BC557-A7BB-CE2D-652D-CCE2DBC79DA1
10AlexanderFijiIstanbulIstanbulP.O. Box 879, 3462 Diam. St.JS5Z 4UZ2016-10-03T23:00:32-07:00F854BE7E-C117-7B9A-F3D5-9EAD294315D0
+
+
+ + + + + + + \ No newline at end of file diff --git a/dist/samples/index.html b/dist/samples/index.html index eec43e0..396c777 100644 --- a/dist/samples/index.html +++ b/dist/samples/index.html @@ -329,7 +329,7 @@

Complex header example

new ResizableTableColumns(els[index], options); } - })(window, window.validide_resizableTableColumns, void (0)); + })(window, window.validide_resizableTableColumns.ResizableTableColumns, void (0)); diff --git a/package-lock.json b/package-lock.json index 1b455f7..4b6add1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,19 +14,19 @@ } }, "@babel/core": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.5.tgz", - "integrity": "sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz", + "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.10.5", - "@babel/helper-module-transforms": "^7.10.5", + "@babel/generator": "^7.11.0", + "@babel/helper-module-transforms": "^7.11.0", "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.10.5", + "@babel/parser": "^7.11.1", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.5", - "@babel/types": "^7.10.5", + "@babel/traverse": "^7.11.0", + "@babel/types": "^7.11.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -70,12 +70,12 @@ } }, "@babel/generator": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", - "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", + "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", "dev": true, "requires": { - "@babel/types": "^7.10.5", + "@babel/types": "^7.11.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -115,12 +115,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", - "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", "dev": true, "requires": { - "@babel/types": "^7.10.5" + "@babel/types": "^7.11.0" } }, "@babel/helper-module-imports": { @@ -133,17 +133,17 @@ } }, "@babel/helper-module-transforms": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz", - "integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.10.4", "@babel/helper-replace-supers": "^7.10.4", "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", "@babel/template": "^7.10.4", - "@babel/types": "^7.10.5", + "@babel/types": "^7.11.0", "lodash": "^4.17.19" } }, @@ -179,12 +179,12 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", - "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.11.0" } }, "@babel/helper-validator-identifier": { @@ -224,9 +224,9 @@ } }, "@babel/parser": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", - "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "version": "7.11.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.3.tgz", + "integrity": "sha512-REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA==", "dev": true }, "@babel/template": { @@ -241,17 +241,17 @@ } }, "@babel/traverse": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", - "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", + "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.10.5", + "@babel/generator": "^7.11.0", "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", - "@babel/parser": "^7.10.5", - "@babel/types": "^7.10.5", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" @@ -281,9 +281,9 @@ } }, "@babel/types": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", - "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", + "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -345,12 +345,6 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true } } }, @@ -396,9 +390,9 @@ } }, "@types/chai": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", - "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", + "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", "dev": true }, "@types/color-name": { @@ -419,15 +413,15 @@ } }, "@types/mocha": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.0.tgz", - "integrity": "sha512-jWeYcTo3sCH/rMgsdYXDTO85GNRyTCII5dayMIu/ZO4zbEot1E3iNGaOwpLReLUHjeNQFkgeNNVYlY4dX6azQQ==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.2.tgz", + "integrity": "sha512-5cv8rmqT3KX9XtWDvSgGYfS4OwrKM2eei90GWLnTYz+AXRiBv5uYcKBjnkQ4katNvfYk3+o2bHGZUsDhdcoUyg==", "dev": true }, "@types/node": { - "version": "14.0.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.24.tgz", - "integrity": "sha512-btt/oNOiDWcSuI721MdL8VQGnjsKjlTMdrKyTcLCKeQp/n4AAMFJ961wMbp+09y8WuGPClDEv07RIItdXKIXAA==", + "version": "14.0.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", + "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==", "dev": true }, "@types/parse5": { @@ -443,9 +437,9 @@ "dev": true }, "abab": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", - "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", + "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==", "dev": true }, "abbrev": { @@ -455,9 +449,9 @@ "dev": true }, "acorn": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", "dev": true }, "acorn-globals": { @@ -653,14 +647,14 @@ "dev": true }, "autoprefixer": { - "version": "9.8.5", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.5.tgz", - "integrity": "sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg==", + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "dev": true, "requires": { "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001097", - "colorette": "^1.2.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.32", @@ -674,9 +668,9 @@ "dev": true }, "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", + "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", "dev": true }, "babel-code-frame": { @@ -1415,15 +1409,15 @@ "dev": true }, "browserslist": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", - "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz", + "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001093", - "electron-to-chromium": "^1.3.488", - "escalade": "^3.0.1", - "node-releases": "^1.1.58" + "caniuse-lite": "^1.0.30001111", + "electron-to-chromium": "^1.3.523", + "escalade": "^3.0.2", + "node-releases": "^1.1.60" } }, "buffer-from": { @@ -1493,9 +1487,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001105", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001105.tgz", - "integrity": "sha512-JupOe6+dGMr7E20siZHIZQwYqrllxotAhiaej96y6x00b/48rPt42o+SzOSCPbrpsDWvRja40Hwrj0g0q6LZJg==", + "version": "1.0.30001114", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001114.tgz", + "integrity": "sha512-ml/zTsfNBM+T1+mjglWRPgVsu2L76GAaADKX5f4t0pbhttEp0WMawJsHDYlFkVZkoA+89uvBRrVrEE4oqenzXQ==", "dev": true }, "caseless": { @@ -1645,9 +1639,9 @@ "dev": true }, "concurrently": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.2.0.tgz", - "integrity": "sha512-XxcDbQ4/43d6CxR7+iV8IZXhur4KbmEJk1CetVMUqCy34z9l0DkszbY+/9wvmSnToTej0SYomc2WSRH+L0zVJw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", + "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -1919,9 +1913,9 @@ } }, "electron-to-chromium": { - "version": "1.3.505", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.505.tgz", - "integrity": "sha512-Aunrp3HWtmdiJLIl+IPSFtEvJ/4Q9a3eKaxmzCthaZF1gbTbpHUTCU2zOVnFPH7r/AD7zQXyuFidYXzSHXBdsw==", + "version": "1.3.533", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.533.tgz", + "integrity": "sha512-YqAL+NXOzjBnpY+dcOKDlZybJDCOzgsq4koW3fvyty/ldTmsb4QazZpOWmVvZ2m0t5jbBf7L0lIGU3BUipwG+A==", "dev": true }, "emoji-regex": { @@ -2397,12 +2391,12 @@ "dev": true }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "dev": true, "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, @@ -2532,6 +2526,14 @@ "requires": { "caller-path": "^2.0.0", "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "import-from": { @@ -2541,6 +2543,14 @@ "dev": true, "requires": { "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "imurmurhash": { @@ -2679,6 +2689,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, "is-potential-custom-element-name": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", @@ -2686,9 +2702,9 @@ "dev": true }, "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { "has-symbols": "^1.0.1" @@ -2903,9 +2919,9 @@ } }, "js-base64": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.3.tgz", - "integrity": "sha512-fiUvdfCaAXoQTHdKMgTvg6IkecXDcVz6V5rlftUTclF9IKBjMizvSdQaCl/z/6TApDeby5NL+axYou3i0mu1Pg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", "dev": true }, "js-tokens": { @@ -2931,9 +2947,9 @@ "dev": true }, "jsdom": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.3.0.tgz", - "integrity": "sha512-zggeX5UuEknpdZzv15+MS1dPYG0J/TftiiNunOeNxSl3qr8Z6cIlQpN0IdJa44z9aFxZRIVqRncvEhQ7X5DtZg==", + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", + "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", "dev": true, "requires": { "abab": "^2.0.3", @@ -3073,9 +3089,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, "lodash.flattendeep": { @@ -3231,9 +3247,9 @@ } }, "mocha": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.1.1.tgz", + "integrity": "sha512-p7FuGlYH8t7gaiodlFreseLxEmxTgvyG9RgPHODFPySNhwUehu8NIb0vdSt3WFckSneswZ0Un5typYcWElk7HQ==", "dev": true, "requires": { "ansi-colors": "4.1.1", @@ -3252,7 +3268,7 @@ "ms": "2.1.2", "object.assign": "4.1.0", "promise.allsettled": "1.0.2", - "serialize-javascript": "3.0.0", + "serialize-javascript": "4.0.0", "strip-json-comments": "3.0.1", "supports-color": "7.1.0", "which": "2.0.2", @@ -3260,7 +3276,7 @@ "workerpool": "6.0.0", "yargs": "13.3.2", "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" + "yargs-unparser": "1.6.1" }, "dependencies": { "debug": { @@ -3640,12 +3656,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -4298,6 +4308,15 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -4571,9 +4590,9 @@ } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "reusify": { @@ -4592,9 +4611,9 @@ } }, "rollup": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.22.2.tgz", - "integrity": "sha512-2a4Mch4f0W2lEvkPuxtz0GfrtfgLj9bdd/oC9L3LozGOCnmLqO7ivMfKbCJoRgqWIU2UqAcbxRFSwmIKx+uStA==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.25.0.tgz", + "integrity": "sha512-S+OzytEaqcLugXAqesmJMb1Q16I6h1ps8F3AOX7yMZ1OkkuOATJH/x2lqJJtjQo2/d+0J4j62M2RbvgmxvOuCw==", "dev": true, "requires": { "fsevents": "~2.1.2" @@ -4607,9 +4626,9 @@ "dev": true }, "rxjs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz", - "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -4676,10 +4695,13 @@ "dev": true }, "serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "set-blocking": { "version": "2.0.0", @@ -5099,9 +5121,9 @@ "dev": true }, "uglify-js": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.0.tgz", - "integrity": "sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.1.tgz", + "integrity": "sha512-RjxApKkrPJB6kjJxQS3iZlf///REXWYxYJxO/MpmlQzVkDWVI3PSnCBWezMecmTU/TRkNxrl8bmsfFQCp+LO+Q==", "dev": true }, "uglifycss": { @@ -5384,14 +5406,47 @@ } }, "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.1.tgz", + "integrity": "sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA==", "dev": true, "requires": { + "camelcase": "^5.3.1", + "decamelize": "^1.2.0", "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "is-plain-obj": "^1.1.0", + "yargs": "^14.2.3" + }, + "dependencies": { + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } } }, "yn": { diff --git a/package.json b/package.json index 43a061c..ed5bcb7 100644 --- a/package.json +++ b/package.json @@ -8,15 +8,15 @@ "clean-dist": "node ./scripts/clean-dist.js", "minify-files": "node ./scripts/minify-files.js", "tsc": "tsc", - "tsc:w": "tsc -w", + "tsc:w": "tsc --module es2015 --target ES5 -w", + "rollup:w": "rollup --config ./rollup.config.js --watch", "scss-base": " node-sass ./sources/scss --output-style expanded --precision 6 --output ./dist/css/", "scss-base:w": "node-sass ./sources/scss --output-style expanded --precision 6 --output ./dist/css/ --watch", "prebuild-dev": "npm run clean-dist", "build-dev": "npm run scss-base && npm run tsc", - "dev": "concurrently --raw \"npm run scss-base:w\" \"npm run tsc:w\" ", + "dev": "concurrently --raw \"npm run scss-base:w\" \"npm run tsc:w\" \"npm run rollup:w\"", "post-css": "postcss --no-map --use autoprefixer --autoprefixer.browsers \"Chrome >= 45, Firefox >= 38, Edge >= 12, Explorer >= 10, iOS >= 9, Safari >= 9, Android >= 4.4, Opera >= 30\" --replace ./dist/css/*.css", "post-process-dist": "npm run post-css && npm run minify-files", - "rollup-files": "rollup --config ./rollup.config.js", "prebuild": "npm run clean-dist", "build": "npm run scss-base && tsc --module es2015 --target ES2015 --declaration --outFile ./dist/js/index.es2015.js --emitDeclarationOnly && tsc --module es2015 --target ES5 && rollup --config ./rollup.config.js && npm run post-process-dist", "test": "nyc mocha" @@ -42,25 +42,25 @@ ], "devDependencies": { "@istanbuljs/nyc-config-typescript": "1.0.1", - "@types/chai": "4.2.11", + "@types/chai": "4.2.12", "@types/jsdom": "16.2.3", - "@types/mocha": "8.0.0", - "autoprefixer": "9.8.5", + "@types/mocha": "8.0.2", + "autoprefixer": "9.8.6", "babel-preset-env": "1.7.0", "babel-register": "6.26.0", "chai": "4.2.0", - "concurrently": "5.2.0", + "concurrently": "5.3.0", "glob": "7.1.6", - "jsdom": "16.3.0", - "mocha": "8.0.1", + "jsdom": "16.4.0", + "mocha": "8.1.1", "node-sass": "4.14.1", "postcss-cli": "7.1.1", "nyc": "15.1.0", "rimraf": "3.0.2", - "rollup": "2.22.2", + "rollup": "2.25.0", "ts-node": "8.10.2", "typescript": "3.9.7", - "uglify-js": "3.10.0", + "uglify-js": "3.10.1", "uglifycss": "0.0.29" } } diff --git a/sources/ts/resizable-constants.ts b/sources/ts/resizable-constants.ts index 1a6c7b9..ab10af6 100644 --- a/sources/ts/resizable-constants.ts +++ b/sources/ts/resizable-constants.ts @@ -27,7 +27,7 @@ interface IEvents { eventResizeStop: string; } -export default class ResizableConstants { +export class ResizableConstants { static dataPropertyname: string = 'validide_rtc_data_object'; static classes: IClassesConstants = { table: 'rtc-table', diff --git a/sources/ts/resizable-event-data.ts b/sources/ts/resizable-event-data.ts index 055ef7c..c903934 100644 --- a/sources/ts/resizable-event-data.ts +++ b/sources/ts/resizable-event-data.ts @@ -14,6 +14,8 @@ export class ResizableEventData { pointer: PointerData = new PointerData(); originalWidths: WidthsData = new WidthsData(); newWidths: WidthsData = new WidthsData(); + columnRatio: number = 0; + tableRatio: number = 0; constructor(column: HTMLTableCellElement, dragHandler: HTMLDivElement) { this.column = column; diff --git a/sources/ts/resizable-options.ts b/sources/ts/resizable-options.ts index f3664d9..c098f19 100644 --- a/sources/ts/resizable-options.ts +++ b/sources/ts/resizable-options.ts @@ -1,6 +1,6 @@ -import UtilitiesDOM from './utilities-dom' +import { UtilitiesDOM } from "./utilities-dom"; -export default class ResizableOptions { +export class ResizableOptions { resizeFromBody: boolean; minWidth: null | number; maxWidth: null | number; diff --git a/sources/ts/resizable-table-columns.ts b/sources/ts/resizable-table-columns.ts index e927571..4336909 100644 --- a/sources/ts/resizable-table-columns.ts +++ b/sources/ts/resizable-table-columns.ts @@ -1,10 +1,10 @@ -import ResizableOptions from './resizable-options' -import Utilities, { IIndexedCollection } from './utilities' -import UtilitiesDOM from './utilities-dom' +import { ResizableOptions } from './resizable-options' +import { Utilities, IIndexedCollection } from './utilities' +import { UtilitiesDOM } from './utilities-dom' import { ResizableEventData } from './resizable-event-data'; -import ResizableConstants from './resizable-constants'; +import { ResizableConstants } from './resizable-constants'; -class ResizableTableColumns { +export class ResizableTableColumns { static instancesCount: number = 0; static windowResizeHandlerRegistered: boolean = false; @@ -395,17 +395,23 @@ class ResizableTableColumns { const isDoubleClick = (millisecondsNow - this.lastPointerDown) < this.options.doubleClickDelay; const column = resizableHeaders[gripIndex]; const columnWidth = ResizableTableColumns.getWidth(column); + const computedColumnWidth = ResizableTableColumns.getComputedWidth(column); const tableWidth = ResizableTableColumns.getWidth(this.table); + const computedTableWidth = ResizableTableColumns.getComputedWidth(this.table); + const widths = { + column: columnWidth, + table: tableWidth + }; const eventData: ResizableEventData = new ResizableEventData(column, dragHandler); eventData.pointer = { x: UtilitiesDOM.getPointerX(event), isDoubleClick: isDoubleClick }; - eventData.originalWidths = { - column: columnWidth, - table: tableWidth - }; + eventData.originalWidths = widths; + eventData.newWidths = widths; + eventData.columnRatio = columnWidth / computedColumnWidth; + eventData.tableRatio = tableWidth / computedTableWidth; this.detachHandlers(); //make sure we do not have extra handlers this.attachHandlers(); @@ -423,7 +429,9 @@ class ResizableTableColumns { column: column, columnWidth: columnWidth, table: this.table, - tableWidth: tableWidth + tableWidth: tableWidth, + columnRatio: this.eventData.columnRatio, + tableRatio: this.eventData.tableRatio } }); this.table.dispatchEvent(eventToDispatch); @@ -439,8 +447,14 @@ class ResizableTableColumns { return; } - const tableWidth = this.eventData.originalWidths.table + difference; - const columnWidth = this.constrainWidth(this.eventData.column, this.eventData.originalWidths.column + difference); + this.eventData.columnRatio = this.eventData.newWidths.column / ResizableTableColumns.getComputedWidth(this.eventData.column); + this.eventData.tableRatio = this.eventData.newWidths.table / ResizableTableColumns.getComputedWidth(this.table); + + const tableWidth = (this.eventData.originalWidths.table + difference) * this.eventData.tableRatio; + const columnWidth = this.constrainWidth( + this.eventData.column, + (this.eventData.originalWidths.column + difference) * this.eventData.columnRatio + ); ResizableTableColumns.setWidth(this.table, tableWidth); ResizableTableColumns.setWidth(this.eventData.column, columnWidth); @@ -448,12 +462,15 @@ class ResizableTableColumns { column: columnWidth, table: tableWidth }; + var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, { detail: { column: this.eventData.column, columnWidth: columnWidth, table: this.table, - tableWidth: tableWidth + tableWidth: tableWidth, + columnRatio: this.eventData.columnRatio, + tableRatio: this.eventData.tableRatio } }); this.table.dispatchEvent(eventToDispatch); @@ -562,14 +579,16 @@ class ResizableTableColumns { this.eventData.newWidths = { column: columnWidth, - table: tableWidth + table: tableWidth, }; var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, { detail: { column: this.eventData.column, columnWidth: columnWidth, table: this.table, - tableWidth: tableWidth + tableWidth: tableWidth, + columnRatio: this.eventData.columnRatio, + tableRatio: this.eventData.tableRatio } }); this.table.dispatchEvent(eventToDispatch); @@ -702,6 +721,10 @@ class ResizableTableColumns { if (el.style.width === '') return UtilitiesDOM.getWidth(el); + return ResizableTableColumns.getComputedWidth(el); + } + + static getComputedWidth(el: HTMLElement): number { return Utilities.parseStyleDimension(el.style.width, false); } @@ -715,5 +738,3 @@ class ResizableTableColumns { return ResizableTableColumns.instancesCount++; } } - -export default ResizableTableColumns; diff --git a/sources/ts/utilities-dom.ts b/sources/ts/utilities-dom.ts index 50c82e0..2a1077f 100644 --- a/sources/ts/utilities-dom.ts +++ b/sources/ts/utilities-dom.ts @@ -1,6 +1,6 @@ -import Utilities, { IIndexedCollection } from './utilities' +import {Utilities, IIndexedCollection } from './utilities' -export default class UtilitiesDOM { +export class UtilitiesDOM { static addClass(el: HTMLElement, className: string) { if (el.classList) el.classList.add(className) diff --git a/sources/ts/utilities.ts b/sources/ts/utilities.ts index 4c64dc9..d6145de 100644 --- a/sources/ts/utilities.ts +++ b/sources/ts/utilities.ts @@ -2,7 +2,7 @@ export interface IIndexedCollection { [name: string]: T; } -export default class Utilities { +export class Utilities { static regexEscapeRegex: RegExp = /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g; static kebabCaseRegex: RegExp = /(\-\w)/g; static trueRegex: RegExp = /^true$/i; diff --git a/tests/resizable-options.ts b/tests/resizable-options.ts index 91582dd..a93491e 100644 --- a/tests/resizable-options.ts +++ b/tests/resizable-options.ts @@ -4,9 +4,9 @@ import { assert } from 'chai'; import { JSDOM } from 'jsdom'; -import ResizableOptions from '../sources/ts/resizable-options'; +import { ResizableOptions } from '../sources/ts/resizable-options'; -describe('ResizableOptions', function() { +describe('ResizableOptions', function () { const DOM = new JSDOM(` @@ -19,14 +19,14 @@ describe('ResizableOptions', function() { `); - describe('.constructor', function() { - it('No params', function() { + describe('.constructor', function () { + it('No params', function () { const opts = new ResizableOptions(); assert.isObject(opts); assert.isNotNull(opts); }); - it('With "options" argument', function() { + it('With "options" argument', function () { const store = {}; const defaultOpts = new ResizableOptions(); defaultOpts.obeyCssMinWidth = !defaultOpts.obeyCssMinWidth; @@ -42,7 +42,7 @@ describe('ResizableOptions', function() { assert.deepEqual(defaultOpts.maxWidth, opts.maxWidth); }); - it('With "element" argument', function() { + it('With "element" argument', function () { const el = DOM.window.document.getElementById('the-table'); assert.isNotNull(el, 'Table element should be found in dom'); @@ -57,7 +57,7 @@ describe('ResizableOptions', function() { }); - it('With "options" and "element" arguments', function() { + it('With "options" and "element" arguments', function () { const store = {}; const defaultOpts = new ResizableOptions(); defaultOpts.obeyCssMinWidth = !defaultOpts.obeyCssMinWidth; @@ -80,41 +80,41 @@ describe('ResizableOptions', function() { }); }); - describe('.overrideValues', function() { - it('Should not fail when called with no params', function() { + describe('.overrideValues', function () { + it('Should not fail when called with no params', function () { const opts = new ResizableOptions(); opts.overrideValues(); assert.equal(opts.obeyCssMinWidth, opts.obeyCssMinWidth); }); - it('Should not fail when called with null param', function() { + it('Should not fail when called with null param', function () { const opts = new ResizableOptions(); opts.overrideValues(null); assert.equal(opts.obeyCssMinWidth, opts.obeyCssMinWidth); }); - it('Should override values', function() { + it('Should override values', function () { const opts = new ResizableOptions(); - const obj = {obeyCssMinWidth: !opts.obeyCssMinWidth}; + const obj = { obeyCssMinWidth: !opts.obeyCssMinWidth }; opts.overrideValues(obj); assert.equal(obj.obeyCssMinWidth, opts.obeyCssMinWidth); }); }); - describe('.overrideValuesFromElement', function() { - it('Should not fail when called with no params', function() { + describe('.overrideValuesFromElement', function () { + it('Should not fail when called with no params', function () { const opts = new ResizableOptions(); opts.overrideValuesFromElement(); assert.equal(opts.obeyCssMinWidth, opts.obeyCssMinWidth); }); - it('Should not fail when called with null param', function() { + it('Should not fail when called with null param', function () { const opts = new ResizableOptions(); opts.overrideValuesFromElement(null); assert.equal(opts.obeyCssMinWidth, opts.obeyCssMinWidth); }); - it('Should override values', function() { + it('Should override values', function () { const opts = new ResizableOptions(); const el = DOM.window.document.getElementById('the-table'); assert.isNotNull(el, 'Table element should be found in dom'); diff --git a/tests/resizable-table-columns.constructor.ts b/tests/resizable-table-columns.constructor.ts index c1f808d..49e840d 100644 --- a/tests/resizable-table-columns.constructor.ts +++ b/tests/resizable-table-columns.constructor.ts @@ -4,9 +4,9 @@ import { assert } from 'chai'; import { JSDOM } from 'jsdom'; -import ResizableConstants from '../sources/ts/resizable-constants'; -import ResizableOptions from '../sources/ts/resizable-options'; -import ResizableTableColumns from '../sources/ts/resizable-table-columns'; +import { ResizableConstants } from '../sources/ts/resizable-constants'; +import { ResizableOptions } from '../sources/ts/resizable-options'; +import { ResizableTableColumns } from '../sources/ts/resizable-table-columns'; describe('ResizableTableColumns', function () { describe('constructor', function () { @@ -463,8 +463,8 @@ describe('ResizableTableColumns', function () { const id3 = rtc.id; rtc.dispose(); - assert.equal(id2, id1 +1); - assert.equal(id3, id2 +1); + assert.equal(id2, id1 + 1); + assert.equal(id3, id2 + 1); }); }); diff --git a/tests/resizable-table-columns.dispose.ts b/tests/resizable-table-columns.dispose.ts index d87d242..1b63fed 100644 --- a/tests/resizable-table-columns.dispose.ts +++ b/tests/resizable-table-columns.dispose.ts @@ -4,9 +4,9 @@ import { assert } from 'chai'; import { JSDOM } from 'jsdom'; -import ResizableConstants from '../sources/ts/resizable-constants'; -import ResizableOptions from '../sources/ts/resizable-options'; -import ResizableTableColumns from '../sources/ts/resizable-table-columns'; +import { ResizableConstants } from '../sources/ts/resizable-constants'; +import { ResizableOptions } from '../sources/ts/resizable-options'; +import { ResizableTableColumns } from '../sources/ts/resizable-table-columns'; describe('ResizableTableColumns', function () { describe('.dispose', function () { diff --git a/tests/resizable-table-columns.ts b/tests/resizable-table-columns.ts index dd1ce11..baee155 100644 --- a/tests/resizable-table-columns.ts +++ b/tests/resizable-table-columns.ts @@ -4,10 +4,10 @@ import { assert } from 'chai'; import { JSDOM } from 'jsdom'; -import ResizableConstants from '../sources/ts/resizable-constants'; -import ResizableOptions from '../sources/ts/resizable-options'; -import ResizableTableColumns from '../sources/ts/resizable-table-columns'; -import UtilitiesDOM from '../sources/ts/utilities-dom'; +import { ResizableConstants } from '../sources/ts/resizable-constants'; +import { ResizableOptions } from '../sources/ts/resizable-options'; +import { ResizableTableColumns } from '../sources/ts/resizable-table-columns'; +import { UtilitiesDOM } from '../sources/ts/utilities-dom'; describe('ResizableTableColumns', function () { const DOM = new JSDOM(` @@ -91,7 +91,7 @@ describe('ResizableTableColumns', function () { describe('Constructor calls', function () { let container: HTMLElement, el: HTMLTableElement, rtc: ResizableTableColumns; - before(function() { + before(function () { container = DOM.window.document.createElement('div'); container.innerHTML = dynamicTable; @@ -100,10 +100,10 @@ describe('ResizableTableColumns', function () { overriders.minWidth = 130; overriders.maxWidth = 170; el = container.querySelector('table') as HTMLTableElement; - rtc = new ResizableTableColumns(el, overriders); + rtc = new ResizableTableColumns(el, overriders); }); - after(function() { + after(function () { rtc.dispose(); DOM.window.document.body.removeChild(container); }); @@ -133,7 +133,7 @@ describe('ResizableTableColumns', function () { for (let index = 0; index < rtc.tableHeaders.length; index++) { const th = rtc.tableHeaders[index]; assert.equal(typeof rtc.originalWidths[`___.${index}`], 'string', `"originalWidths[___.${index}] is not string.`); - assert.equal(rtc.originalWidths[`___.${index}`], (100 + ((index + 1) * 10)) + 'px' ); + assert.equal(rtc.originalWidths[`___.${index}`], (100 + ((index + 1) * 10)) + 'px'); } }); @@ -141,7 +141,7 @@ describe('ResizableTableColumns', function () { for (let index = 0; index < rtc.tableHeaders.length; index++) { const th = rtc.tableHeaders[index]; let width = rtc.constrainWidth(th, UtilitiesDOM.getWidth(th)); - assert.equal(th.style.width, (width.toFixed(2)) + 'px', `Column index ${index}`); + assert.equal(th.style.width, (width.toFixed(2)) + 'px', `Column index ${index}`); } }); @@ -162,7 +162,7 @@ describe('ResizableTableColumns', function () { describe('Dispose calls', function () { let container: HTMLElement, el: HTMLTableElement, rtc: ResizableTableColumns; - before(function() { + before(function () { container = DOM.window.document.createElement('div'); container.innerHTML = dynamicTable; @@ -172,7 +172,7 @@ describe('ResizableTableColumns', function () { rtc.dispose(); }); - after(function() { + after(function () { DOM.window.document.body.removeChild(container); }); @@ -184,7 +184,7 @@ describe('ResizableTableColumns', function () { it('Should ".restoreOriginalWidths()"', function () { for (let index = 1; index <= 9; index++) { const th = DOM.window.document.getElementById(`th${index}`) as HTMLElement; - assert.equal(th.style.width, (100 + ((index) * 10)) + 'px' ); + assert.equal(th.style.width, (100 + ((index) * 10)) + 'px'); } assert.equal(el.style.width, '7000px', 'Original table width was not restored.'); });