diff --git a/lib/frappe-datatable.js b/lib/frappe-datatable.js index 8ddb76b..43b80d4 100644 --- a/lib/frappe-datatable.js +++ b/lib/frappe-datatable.js @@ -626,7 +626,7 @@ var DEFAULT_OPTIONS = { addCheckboxColumn: true, enableClusterize: true, enableLogs: false, - takeAvailableSpace: true + takeAvailableSpace: false }; var DataTable = function () { @@ -809,6 +809,16 @@ var DataTable = function () { _dom2.default.style(this.bodyScrollable, { width: width + 'px' }); } + }, { + key: 'getColumn', + value: function getColumn(colIndex) { + return this.datamanager.getColumn(colIndex); + } + }, { + key: 'getCell', + value: function getCell(colIndex, rowIndex) { + return this.datamanager.getCell(colIndex, rowIndex); + } }, { key: 'getColumnHeaderElement', value: function getColumnHeaderElement(colIndex) { @@ -1393,6 +1403,9 @@ var CellManager = function () { value: function focusCell($cell) { if (!$cell) return; + // don't focus if already editing cell + if ($cell === this.$editingCell) return; + var _$$data3 = _dom2.default.data($cell), colIndex = _$$data3.colIndex, isHeader = _$$data3.isHeader; @@ -2291,6 +2304,7 @@ var RowManager = function () { this.instance = instance; this.options = this.instance.options; this.wrapper = this.instance.wrapper; + this.bodyScrollable = this.instance.bodyScrollable; this.datamanager = this.instance.datamanager; this.bindEvents(); diff --git a/lib/frappe-datatable.js.map b/lib/frappe-datatable.js.map index c862865..e9f5b4b 100644 --- a/lib/frappe-datatable.js.map +++ b/lib/frappe-datatable.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 10b3b3e1034ea5c64b24","webpack:///./src/utils.js","webpack:///./src/dom.js","webpack:///./src/index.js","webpack:///./src/datatable.js","webpack:///./src/datamanager.js","webpack:///./src/cellmanager.js","webpack:///./src/keyboard.js","webpack:///./src/columnmanager.js","webpack:///./src/rowmanager.js","webpack:///./src/style.js","webpack:///./src/style.scss?3ec1","webpack:///./src/style.scss","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./package.json"],"names":["camelCaseToDash","str","replace","g","toLowerCase","makeDataAttributeString","props","keys","Object","map","key","_key","val","undefined","join","trim","getEditCellHTML","getColumnHTML","column","rowIndex","colIndex","isHeader","dataAttr","getCellContent","editCellHTML","sortIndicator","format","content","getRowHTML","columns","getHeaderHTML","$header","getBodyHTML","rows","row","prepareColumn","col","i","assign","prepareColumns","_columns","prepareRowHeader","prepareRow","prepareRows","getDefault","a","b","escapeRegExp","getCSSString","styleMap","style","prop","hasOwnProperty","getCSSRuleBlock","rule","namespaceSelector","selector","buildCSSRule","cssRulesString","rulePatternStr","rulePattern","RegExp","match","property","value","propPattern","propertyStr","valueStr","replacer","removeCSSRule","output","copyTextToClipboard","text","textArea","document","createElement","position","top","left","width","height","padding","border","outline","boxShadow","background","body","appendChild","select","execCommand","err","console","log","removeChild","isNumeric","isNaN","$","expr","con","querySelector","each","Array","from","querySelectorAll","create","tag","o","element","ref","parentNode","insertBefore","setAttribute","on","event","callback","bind","delegate","split","forEach","addEventListener","e","delegatedTarget","target","closest","call","unbind","removeEventListener","fire","type","properties","evt","createEvent","initEvent","j","dispatchEvent","data","attrs","dataset","attr","elements","getStyle","isArray","removeStyle","styleProps","getComputedStyle","includes","parseFloat","__version__","version","DEFAULT_OPTIONS","events","editing","addSerialNoColumn","addCheckboxColumn","enableClusterize","enableLogs","takeAvailableSpace","DataTable","wrapper","options","Error","prepare","datamanager","rowmanager","columnmanager","cellmanager","refresh","prepareDom","innerHTML","datatableWrapper","header","bodyScrollable","init","render","appendRows","refreshRows","renderHeader","renderBody","setDimensions","renderBodyWithClusterize","renderBodyHTML","getRows","start","pageLength","end","initialData","getDataForClusterize","clusterize","Clusterize","scrollElem","contentElem","callbacks","clusterChanged","highlightCheckedRows","appendRemainingData","dataAppended","promises","rowCount","getRowCount","push","appendNextPagePromise","reduce","prev","cur","then","Promise","resolve","setTimeout","append","length","setBodyWidth","marginTop","margin","getColumnHeaderElement","viewportHeight","apply","arguments","DataManager","currentSort","sortBy","sortOrder","prepareNumericColumns","TypeError","_serialNoColumnAdded","editable","resizable","align","concat","_checkboxColumnAdded","sortable","row0","getRow","cellValue","index","_getNextRowCount","_rows","reverseArray","sort","_aIndex","_bIndex","_a","_b","array","right","temporary","slice","skipStandardColumns","getStandardColumnCount","find","prepareCell","CellManager","instance","bindEvents","bindFocusCell","bindEditCell","bindKeyboardSelection","bindCopyCellContents","bindMouseEvents","bindKeyboardNav","$editingCell","cell","activateEditing","$focusedCell","submitEditing","deactivateEditing","matches","focusCell","direction","$cell","getLeftCell$","getRightCell$","getAboveCell$","getBelowCell$","focusLastCell","getLeftMostCell$","getRightMostCell$","getTopMostCell$","getBottomMostCell$","scrollToCell","inViewport","scrollToRow","getRowCountPerPage","getNextSelectionCursor","$selectionCursor","getSelectionCursor","selectArea","copyCellContents","mouseDown","isStandardCell","clearSelection","classList","remove","add","highlightRowColumnHeader","_colIndex","getSerialColumnIndex","colHeaderSelector","rowHeaderSelector","lastHeaders","colHeader","rowHeader","backgroundColor","_selectArea","$cell1","$cell2","cells","getCellsInRange","getCell$","colIndex1","rowIndex1","colIndex2","rowIndex2","cell1","cell2","rowIndices","getColumn","_rowIndex","$editCell","getCell","getEditingObject","currentCellEditing","initValue","parent","$input","inside","focus","getValue","setValue","done","updateCell","values","acc","curr","refreshCell","getFirstColumnIndex","$aboveRow","parentElement","previousElementSibling","$belowRow","nextElementSibling","getLastColumnIndex","getFirstRowIndex","getLastRowIndex","getCellAttr","getViewportHeight","rowHeight","getRowHeight","rowOffset","scrollTopOffset","scrollTop","Math","ceil","offset","KEYCODES","handlers","handler","keyCode","shiftKey","ctrlKey","metaKey","_handlers","preventBubbling","preventDefault","k","ColumnManager","getColumns","bindResizeColumn","bindSortColumn","isDragging","$currCell","startWidth","startX","pageX","setColumnWidth","finalWidth","getColumnMinWidth","setColumnHeaderWidth","span","textContent","nextSortOrder","onSort","sortRows","setHeaderStyle","setupMinWidth","setNaturalColumnWidth","distributeRemainingWidth","setColumnAlignments","minWidthMap","minWidth","setDefaultCellHeight","wrapperWidth","headerWidth","deltaWidth","getColumnCount","min","setStyle","findIndex","RowManager","bindCheckbox","checkMap","$checkbox","checked","checkAll","checkRow","c","filter","getCheckedRows","toggle","input","highlightRow","getTotalRows","highlightAll","$row","Style","styleEl","head","styleSheet","sheet","styles","ruleString","insertRule","cssRules"],"mappings":"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0B,sBAAsB,EAAE;;AAEnvE;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD,IAAI;AACJ;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD,cAAc;;AAElE;AACA;;;;;;;AC3EA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;AC/VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,WAAW,EAAE;AACrD,wCAAwC,WAAW,EAAE;;AAErD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sCAAsC;AACtC,GAAG;AACH;AACA,8DAA8D;AAC9D;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;;;;;;ACxFA,kBAAkB,+IAA+I,qPAAqP,oBAAoB,uWAAuW,eAAe,6DAA6D,+HAA+H,mDAAmD,iEAAiE,2B","file":"frappe-datatable.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DataTable\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DataTable\"] = factory();\n\telse\n\t\troot[\"DataTable\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 10b3b3e1034ea5c64b24","function camelCaseToDash(str) {\n return str.replace(/([A-Z])/g, (g) => `-${g[0].toLowerCase()}`);\n}\n\nfunction makeDataAttributeString(props) {\n const keys = Object.keys(props);\n\n return keys\n .map((key) => {\n const _key = camelCaseToDash(key);\n const val = props[key];\n\n if (val === undefined) return '';\n return `data-${_key}=\"${val}\" `;\n })\n .join('')\n .trim();\n}\n\nfunction getEditCellHTML() {\n return `\n
\n `;\n}\n\nfunction getColumnHTML(column) {\n const { rowIndex, colIndex, isHeader } = column;\n const dataAttr = makeDataAttributeString({\n rowIndex,\n colIndex,\n isHeader\n });\n\n return `\n \n ${getCellContent(column)}\n \n `;\n}\n\nfunction getCellContent(column) {\n const { isHeader } = column;\n const editCellHTML = isHeader ? '' : getEditCellHTML();\n const sortIndicator = isHeader ? '' : '';\n\n return `\n
\n ${column.format ? column.format(column.content) : column.content}\n ${sortIndicator}\n
\n ${editCellHTML}\n `;\n}\n\nfunction getRowHTML(columns, props) {\n const dataAttr = makeDataAttributeString(props);\n\n return `\n \n ${columns.map(getColumnHTML).join('')}\n \n `;\n}\n\nfunction getHeaderHTML(columns) {\n const $header = `\n \n ${getRowHTML(columns, { isHeader: 1, rowIndex: -1 })}\n \n `;\n\n // columns.map(col => {\n // if (!col.width) return;\n // const $cellContent = $header.find(\n // `.data-table-col[data-col-index=\"${col.colIndex}\"] .content`\n // );\n\n // $cellContent.width(col.width);\n // });\n\n return $header;\n}\n\nfunction getBodyHTML(rows) {\n return `\n \n ${rows.map(row => getRowHTML(row, { rowIndex: row[0].rowIndex })).join('')}\n \n `;\n}\n\nfunction prepareColumn(col, i) {\n if (typeof col === 'string') {\n col = {\n content: col\n };\n }\n return Object.assign(col, {\n colIndex: i\n });\n}\n\nfunction prepareColumns(columns, props = {}) {\n const _columns = columns.map(prepareColumn);\n\n return _columns.map(col => Object.assign({}, col, props));\n}\n\nfunction prepareRowHeader(columns) {\n return prepareColumns(columns, {\n rowIndex: -1,\n isHeader: 1,\n format: (content) => `${content}`\n });\n}\n\nfunction prepareRow(row, i) {\n return prepareColumns(row, {\n rowIndex: i\n });\n}\n\nfunction prepareRows(rows) {\n return rows.map(prepareRow);\n}\n\nfunction getDefault(a, b) {\n return a !== undefined ? a : b;\n}\n\nfunction escapeRegExp(str) {\n // https://stackoverflow.com/a/6969486\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\n\nfunction getCSSString(styleMap) {\n let style = '';\n\n for (const prop in styleMap) {\n if (styleMap.hasOwnProperty(prop)) {\n style += `${prop}: ${styleMap[prop]}; `;\n }\n }\n\n return style.trim();\n}\n\nfunction getCSSRuleBlock(rule, styleMap) {\n return `${rule} { ${getCSSString(styleMap)} }`;\n}\n\nfunction namespaceSelector(selector) {\n return '.data-table ' + selector;\n}\n\nfunction buildCSSRule(rule, styleMap, cssRulesString = '') {\n // build css rules efficiently,\n // append new rule if doesnt exist,\n // update existing ones\n\n const rulePatternStr = `${escapeRegExp(rule)} {([^}]*)}`;\n const rulePattern = new RegExp(rulePatternStr, 'g');\n\n if (cssRulesString && cssRulesString.match(rulePattern)) {\n for (const property in styleMap) {\n const value = styleMap[property];\n const propPattern = new RegExp(`${escapeRegExp(property)}:([^;]*);`);\n\n cssRulesString = cssRulesString.replace(rulePattern, function (match, propertyStr) {\n if (propertyStr.match(propPattern)) {\n // property exists, replace value with new value\n propertyStr = propertyStr.replace(propPattern, (match, valueStr) => {\n return `${property}: ${value};`;\n });\n }\n propertyStr = propertyStr.trim();\n\n const replacer =\n `${rule} { ${propertyStr} }`;\n\n return replacer;\n });\n }\n\n return cssRulesString;\n }\n // no match, append new rule block\n return `${cssRulesString}${getCSSRuleBlock(rule, styleMap)}`;\n}\n\nfunction removeCSSRule(rule, cssRulesString = '') {\n const rulePatternStr = `${escapeRegExp(rule)} {([^}]*)}`;\n const rulePattern = new RegExp(rulePatternStr, 'g');\n let output = cssRulesString;\n\n if (cssRulesString && cssRulesString.match(rulePattern)) {\n output = cssRulesString.replace(rulePattern, '');\n }\n\n return output.trim();\n}\n\nfunction copyTextToClipboard(text) {\n // https://stackoverflow.com/a/30810322/5353542\n var textArea = document.createElement('textarea');\n\n //\n // *** This styling is an extra step which is likely not required. ***\n //\n // Why is it here? To ensure:\n // 1. the element is able to have focus and selection.\n // 2. if element was to flash render it has minimal visual impact.\n // 3. less flakyness with selection and copying which **might** occur if\n // the textarea element is not visible.\n //\n // The likelihood is the element won't even render, not even a flash,\n // so some of these are just precautions. However in IE the element\n // is visible whilst the popup box asking the user for permission for\n // the web page to copy to the clipboard.\n //\n\n // Place in top-left corner of screen regardless of scroll position.\n textArea.style.position = 'fixed';\n textArea.style.top = 0;\n textArea.style.left = 0;\n\n // Ensure it has a small width and height. Setting to 1px / 1em\n // doesn't work as this gives a negative w/h on some browsers.\n textArea.style.width = '2em';\n textArea.style.height = '2em';\n\n // We don't need padding, reducing the size if it does flash render.\n textArea.style.padding = 0;\n\n // Clean up any borders.\n textArea.style.border = 'none';\n textArea.style.outline = 'none';\n textArea.style.boxShadow = 'none';\n\n // Avoid flash of white box if rendered for any reason.\n textArea.style.background = 'transparent';\n\n textArea.value = text;\n\n document.body.appendChild(textArea);\n\n textArea.select();\n\n try {\n document.execCommand('copy');\n } catch (err) {\n console.log('Oops, unable to copy');\n }\n\n document.body.removeChild(textArea);\n}\n\nfunction isNumeric(val) {\n return !isNaN(val);\n}\n\nexport default {\n getHeaderHTML,\n getBodyHTML,\n getRowHTML,\n getColumnHTML,\n getEditCellHTML,\n prepareRowHeader,\n prepareRows,\n namespaceSelector,\n getCSSString,\n buildCSSRule,\n removeCSSRule,\n makeDataAttributeString,\n getDefault,\n escapeRegExp,\n getCellContent,\n copyTextToClipboard,\n camelCaseToDash,\n isNumeric\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","\nexport default function $(expr, con) {\n return typeof expr === 'string' ?\n (con || document).querySelector(expr) :\n expr || null;\n}\n\n$.each = (expr, con) => {\n return typeof expr === 'string' ?\n Array.from((con || document).querySelectorAll(expr)) :\n expr || null;\n};\n\n$.create = (tag, o) => {\n let element = document.createElement(tag);\n\n for (let i in o) {\n let val = o[i];\n\n if (i === 'inside') {\n $(val).appendChild(element);\n } else\n if (i === 'around') {\n let ref = $(val);\n ref.parentNode.insertBefore(element, ref);\n element.appendChild(ref);\n } else\n if (i === 'styles') {\n if (typeof val === 'object') {\n Object.keys(val).map(prop => {\n element.style[prop] = val[prop];\n });\n }\n } else\n if (i in element) {\n element[i] = val;\n } else {\n element.setAttribute(i, val);\n }\n }\n\n return element;\n};\n\n$.on = (element, event, selector, callback) => {\n if (!callback) {\n callback = selector;\n $.bind(element, event, callback);\n } else {\n $.delegate(element, event, selector, callback);\n }\n};\n\n$.bind = (element, event, callback) => {\n event.split(/\\s+/).forEach(function (event) {\n element.addEventListener(event, callback);\n });\n};\n\n$.delegate = (element, event, selector, callback) => {\n element.addEventListener(event, function (e) {\n const delegatedTarget = e.target.closest(selector);\n if (delegatedTarget) {\n e.delegatedTarget = delegatedTarget;\n callback.call(this, e, delegatedTarget);\n }\n });\n};\n\n$.unbind = (element, o) => {\n if (element) {\n for (let event in o) {\n let callback = o[event];\n\n event.split(/\\s+/).forEach(function (event) {\n element.removeEventListener(event, callback);\n });\n }\n }\n};\n\n$.fire = (target, type, properties) => {\n let evt = document.createEvent('HTMLEvents');\n\n evt.initEvent(type, true, true);\n\n for (let j in properties) {\n evt[j] = properties[j];\n }\n\n return target.dispatchEvent(evt);\n};\n\n$.data = (element, attrs) => { // eslint-disable-line\n if (!attrs) {\n return element.dataset;\n }\n\n for (const attr in attrs) {\n element.dataset[attr] = attrs[attr];\n }\n};\n\n$.style = (elements, styleMap) => { // eslint-disable-line\n\n if (typeof styleMap === 'string') {\n return $.getStyle(elements, styleMap);\n }\n\n if (!Array.isArray(elements)) {\n elements = [elements];\n }\n\n elements.map(element => {\n for (const prop in styleMap) {\n element.style[prop] = styleMap[prop];\n }\n });\n};\n\n$.removeStyle = (elements, styleProps) => {\n if (!Array.isArray(elements)) {\n elements = [elements];\n }\n\n if (!Array.isArray(styleProps)) {\n styleProps = [styleProps];\n }\n\n elements.map(element => {\n for (const prop of styleProps) {\n element.style[prop] = '';\n }\n });\n};\n\n$.getStyle = (element, prop) => {\n let val = getComputedStyle(element)[prop];\n\n if (['width', 'height'].includes(prop)) {\n val = parseFloat(val);\n }\n\n return val;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/dom.js","import DataTable from './datatable.js';\nimport packageJson from '../package.json';\nDataTable.__version__ = packageJson.version;\n\nexport default DataTable;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","import {\n getBodyHTML,\n getRowHTML\n} from './utils';\n\nimport $ from './dom';\n\nimport DataManager from './datamanager';\nimport CellManager from './cellmanager';\nimport ColumnManager from './columnmanager';\nimport RowManager from './rowmanager';\nimport Style from './style';\n\nimport './style.scss';\n\nconst DEFAULT_OPTIONS = {\n events: null,\n data: {\n columns: [],\n rows: []\n },\n editing: null,\n addSerialNoColumn: true,\n addCheckboxColumn: true,\n enableClusterize: true,\n enableLogs: false,\n takeAvailableSpace: true\n};\n\nexport default class DataTable {\n constructor(wrapper, options) {\n\n this.wrapper = wrapper;\n if (!this.wrapper) {\n throw new Error('Invalid argument given for `wrapper`');\n }\n\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n // custom user events\n this.events = this.options.events;\n\n this.prepare();\n\n this.style = new Style(this.wrapper);\n this.datamanager = new DataManager(this.options);\n this.rowmanager = new RowManager(this);\n this.columnmanager = new ColumnManager(this);\n this.cellmanager = new CellManager(this);\n\n if (this.options.data) {\n this.refresh(this.options.data);\n }\n }\n\n prepare() {\n this.prepareDom();\n }\n\n prepareDom() {\n this.wrapper.innerHTML = `\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `;\n\n this.datatableWrapper = $('.data-table', this.wrapper);\n this.header = $('.data-table-header', this.wrapper);\n this.bodyScrollable = $('.body-scrollable', this.wrapper);\n }\n\n refresh(data) {\n this.datamanager.init(data);\n this.render();\n }\n\n appendRows(rows) {\n this.datamanager.appendRows(rows);\n this.rowmanager.refreshRows();\n }\n\n render() {\n this.renderHeader();\n this.renderBody();\n this.setDimensions();\n }\n\n renderHeader() {\n this.columnmanager.renderHeader();\n }\n\n renderBody() {\n if (this.options.enableClusterize) {\n this.renderBodyWithClusterize();\n } else {\n this.renderBodyHTML();\n }\n }\n\n renderBodyHTML() {\n const rows = this.datamanager.getRows();\n\n this.bodyScrollable.innerHTML = `\n \n ${getBodyHTML(rows)}\n
\n `;\n }\n\n renderBodyWithClusterize() {\n // empty body\n this.bodyScrollable.innerHTML = `\n \n ${getBodyHTML([])}\n
\n `;\n\n this.start = 0;\n this.pageLength = 1000;\n this.end = this.start + this.pageLength;\n\n // only append ${this.pageLength} rows in the beginning,\n // defer remaining\n const rows = this.datamanager.getRows(this.start, this.end);\n const initialData = this.getDataForClusterize(rows);\n\n this.clusterize = new Clusterize({\n rows: initialData,\n scrollElem: this.bodyScrollable,\n contentElem: $('tbody', this.bodyScrollable),\n callbacks: {\n clusterChanged: () => {\n this.rowmanager.highlightCheckedRows();\n }\n }\n });\n this.log('dataAppended', this.pageLength);\n this.appendRemainingData();\n }\n\n appendRemainingData() {\n let dataAppended = this.pageLength;\n const promises = [];\n const rowCount = this.datamanager.getRowCount();\n\n while (dataAppended + this.pageLength < rowCount) {\n this.start = this.end;\n this.end = this.start + this.pageLength;\n promises.push(this.appendNextPagePromise(this.start, this.end));\n dataAppended += this.pageLength;\n }\n\n if (rowCount % this.pageLength > 0) {\n // last page\n this.start = this.end;\n this.end = this.start + this.pageLength;\n promises.push(this.appendNextPagePromise(this.start, this.end));\n }\n\n return promises.reduce(\n (prev, cur) => prev.then(cur), Promise.resolve()\n );\n }\n\n appendNextPagePromise(start, end) {\n return new Promise(resolve => {\n setTimeout(() => {\n const rows = this.datamanager.getRows(start, end);\n const data = this.getDataForClusterize(rows);\n\n this.clusterize.append(data);\n this.log('dataAppended', rows.length);\n resolve();\n }, 0);\n });\n }\n\n getDataForClusterize(rows) {\n return rows.map((row) => getRowHTML(row, { rowIndex: row[0].rowIndex }));\n }\n\n setDimensions() {\n this.columnmanager.setDimensions();\n\n this.setBodyWidth();\n\n $.style(this.bodyScrollable, {\n marginTop: $.style(this.header, 'height') + 'px'\n });\n\n $.style($('table', this.bodyScrollable), {\n margin: 0\n });\n }\n\n setBodyWidth() {\n const width = $.style(this.header, 'width');\n\n $.style(this.bodyScrollable, { width: width + 'px' });\n }\n\n getColumnHeaderElement(colIndex) {\n return this.columnmanager.getColumnHeaderElement(colIndex);\n }\n\n getViewportHeight() {\n if (!this.viewportHeight) {\n this.viewportHeight = $.style(this.bodyScrollable, 'height');\n }\n\n return this.viewportHeight;\n }\n\n log() {\n if (this.options.enableLogs) {\n console.log.apply(console, arguments);\n }\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/datatable.js","import { isNumeric } from './utils';\n\nexport default class DataManager {\n constructor(options) {\n this.options = options;\n this.rowCount = 0;\n this.currentSort = {\n sortBy: -1, // colIndex\n sortOrder: 'none' // asc, desc, none\n };\n }\n\n init(data) {\n let { columns, rows } = data;\n\n this.columns = this.prepareColumns(columns);\n this.rows = this.prepareRows(rows);\n\n this.prepareNumericColumns();\n }\n\n prepareColumns(columns) {\n if (!Array.isArray(columns)) {\n throw new TypeError('`columns` must be an array');\n }\n\n if (this.options.addSerialNoColumn && !this._serialNoColumnAdded) {\n const val = {\n content: 'Sr. No',\n editable: false,\n resizable: false,\n align: 'center'\n };\n\n columns = [val].concat(columns);\n this._serialNoColumnAdded = true;\n }\n\n if (this.options.addCheckboxColumn && !this._checkboxColumnAdded) {\n const val = {\n content: '',\n editable: false,\n resizable: false,\n sortable: false\n };\n\n columns = [val].concat(columns);\n this._checkboxColumnAdded = true;\n }\n\n // wrap the title in span\n columns = columns.map(column => {\n if (typeof column === 'string') {\n column = `${column}`;\n } else if (typeof column === 'object') {\n column.content = `${column.content}`;\n }\n\n return column;\n });\n\n return prepareColumns(columns, {\n isHeader: 1\n });\n }\n\n prepareNumericColumns() {\n const row0 = this.getRow(0);\n this.columns = this.columns.map((column, i) => {\n\n const cellValue = row0[i].content;\n if (!column.align && cellValue && isNumeric(cellValue)) {\n column.align = 'right';\n }\n\n return column;\n });\n }\n\n prepareRows(rows) {\n if (!Array.isArray(rows) || !Array.isArray(rows[0])) {\n throw new TypeError('`rows` must be an array of arrays');\n }\n\n rows = rows.map((row, i) => {\n const index = this._getNextRowCount();\n\n if (row.length < this.columns.length) {\n if (this._serialNoColumnAdded) {\n const val = (index + 1) + '';\n\n row = [val].concat(row);\n }\n\n if (this._checkboxColumnAdded) {\n const val = '';\n\n row = [val].concat(row);\n }\n }\n\n return prepareRow(row, index);\n });\n\n return rows;\n }\n\n appendRows(rows) {\n if (Array.isArray(rows) && !Array.isArray(rows[0])) {\n rows = [rows];\n }\n const _rows = this.prepareRows(rows);\n\n this.rows = this.rows.concat(_rows);\n }\n\n sortRows(colIndex, sortOrder = 'none') {\n colIndex = +colIndex;\n\n if (this.currentSort.colIndex === colIndex) {\n // reverse the array if only sortOrder changed\n if (\n (this.currentSort.sortOrder === 'asc' && sortOrder === 'desc') ||\n (this.currentSort.sortOrder === 'desc' && sortOrder === 'asc')\n ) {\n this.reverseArray(this.rows);\n this.currentSort.sortOrder = sortOrder;\n return;\n }\n }\n\n this.rows.sort((a, b) => {\n const _aIndex = a[0].rowIndex;\n const _bIndex = b[0].rowIndex;\n const _a = a[colIndex].content;\n const _b = b[colIndex].content;\n\n if (sortOrder === 'none') {\n return _aIndex - _bIndex;\n } else if (sortOrder === 'asc') {\n if (_a < _b) return -1;\n if (_a > _b) return 1;\n if (_a === _b) return 0;\n } else if (sortOrder === 'desc') {\n if (_a < _b) return 1;\n if (_a > _b) return -1;\n if (_a === _b) return 0;\n }\n return 0;\n });\n\n this.currentSort.colIndex = colIndex;\n this.currentSort.sortOrder = sortOrder;\n }\n\n reverseArray(array) {\n let left = null;\n let right = null;\n let length = array.length;\n\n for (left = 0, right = length - 1; left < right; left += 1, right -= 1) {\n const temporary = array[left];\n\n array[left] = array[right];\n array[right] = temporary;\n }\n }\n\n getRowCount() {\n return this.rowCount;\n }\n\n _getNextRowCount() {\n const val = this.rowCount;\n\n this.rowCount++;\n return val;\n }\n\n getRows(start, end) {\n return this.rows.slice(start, end);\n }\n\n getColumns(skipStandardColumns) {\n let columns = this.columns;\n\n if (skipStandardColumns) {\n columns = columns.slice(this.getStandardColumnCount());\n }\n\n return columns;\n }\n\n getStandardColumnCount() {\n if (this.options.addCheckboxColumn && this.options.addSerialNoColumn) {\n return 2;\n }\n\n if (this.options.addCheckboxColumn || this.options.addSerialNoColumn) {\n return 1;\n }\n\n return 0;\n }\n\n getColumnCount(skipStandardColumns) {\n let val = this.columns.length;\n\n if (skipStandardColumns) {\n val = val - this.getStandardColumnCount();\n }\n\n return val;\n }\n\n getColumn(colIndex) {\n colIndex = +colIndex;\n return this.columns.find(col => col.colIndex === colIndex);\n }\n\n getRow(rowIndex) {\n rowIndex = +rowIndex;\n return this.rows.find(row => row[0].rowIndex === rowIndex);\n }\n\n getCell(colIndex, rowIndex) {\n rowIndex = +rowIndex;\n colIndex = +colIndex;\n return this.rows.find(row => row[0].rowIndex === rowIndex)[colIndex];\n }\n\n get() {\n return {\n columns: this.columns,\n rows: this.rows\n };\n }\n}\n\nfunction prepareColumns(columns, props = {}) {\n const _columns = columns.map(prepareCell);\n\n return _columns.map(col => Object.assign({}, col, props));\n}\n\nfunction prepareRow(row, i) {\n return prepareColumns(row, {\n rowIndex: i\n });\n}\n\nfunction prepareCell(col, i) {\n if (typeof col === 'string') {\n col = {\n content: col\n };\n }\n return Object.assign(col, {\n colIndex: i\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/datamanager.js","import { getCellContent, copyTextToClipboard } from './utils';\nimport keyboard from 'keyboard';\nimport $ from './dom';\n\nexport default class CellManager {\n constructor(instance) {\n this.instance = instance;\n this.wrapper = this.instance.wrapper;\n this.options = this.instance.options;\n this.style = this.instance.style;\n this.bodyScrollable = this.instance.bodyScrollable;\n this.columnmanager = this.instance.columnmanager;\n this.rowmanager = this.instance.rowmanager;\n\n this.bindEvents();\n }\n\n bindEvents() {\n this.bindFocusCell();\n this.bindEditCell();\n this.bindKeyboardSelection();\n this.bindCopyCellContents();\n this.bindMouseEvents();\n }\n\n bindFocusCell() {\n this.bindKeyboardNav();\n }\n\n bindEditCell() {\n this.$editingCell = null;\n\n $.on(this.bodyScrollable, 'dblclick', '.data-table-col', (e, cell) => {\n this.activateEditing(cell);\n });\n\n keyboard.on('enter', (e) => {\n if (this.$focusedCell && !this.$editingCell) {\n // enter keypress on focused cell\n this.activateEditing(this.$focusedCell);\n } else if (this.$editingCell) {\n // enter keypress on editing cell\n this.submitEditing(this.$editingCell);\n this.deactivateEditing();\n }\n });\n\n $.on(document.body, 'click', e => {\n if (e.target.matches('.edit-cell, .edit-cell *')) return;\n this.deactivateEditing();\n });\n }\n\n bindKeyboardNav() {\n const focusCell = (direction) => {\n if (!this.$focusedCell || this.$editingCell) {\n return false;\n }\n\n let $cell = this.$focusedCell;\n\n if (direction === 'left') {\n $cell = this.getLeftCell$($cell);\n } else if (direction === 'right') {\n $cell = this.getRightCell$($cell);\n } else if (direction === 'up') {\n $cell = this.getAboveCell$($cell);\n } else if (direction === 'down') {\n $cell = this.getBelowCell$($cell);\n }\n\n this.focusCell($cell);\n return true;\n };\n\n const focusLastCell = (direction) => {\n if (!this.$focusedCell || this.$editingCell) {\n return false;\n }\n\n let $cell = this.$focusedCell;\n const { rowIndex, colIndex } = $.data($cell);\n\n if (direction === 'left') {\n $cell = this.getLeftMostCell$(rowIndex);\n } else if (direction === 'right') {\n $cell = this.getRightMostCell$(rowIndex);\n } else if (direction === 'up') {\n $cell = this.getTopMostCell$(colIndex);\n } else if (direction === 'down') {\n $cell = this.getBottomMostCell$(colIndex);\n }\n\n this.focusCell($cell);\n return true;\n };\n\n const scrollToCell = (direction) => {\n if (!this.$focusedCell) return false;\n\n if (!this.inViewport(this.$focusedCell)) {\n const { rowIndex } = $.data(this.$focusedCell);\n\n this.scrollToRow(rowIndex - this.getRowCountPerPage() + 2);\n return true;\n }\n\n return false;\n };\n\n ['left', 'right', 'up', 'down'].map(\n direction => keyboard.on(direction, () => focusCell(direction))\n );\n\n ['left', 'right', 'up', 'down'].map(\n direction => keyboard.on('ctrl+' + direction, () => focusLastCell(direction))\n );\n\n ['left', 'right', 'up', 'down'].map(\n direction => keyboard.on(direction, () => scrollToCell(direction))\n );\n\n keyboard.on('esc', () => {\n this.deactivateEditing();\n });\n }\n\n bindKeyboardSelection() {\n const getNextSelectionCursor = (direction) => {\n let $selectionCursor = this.getSelectionCursor();\n\n if (direction === 'left') {\n $selectionCursor = this.getLeftCell$($selectionCursor);\n } else if (direction === 'right') {\n $selectionCursor = this.getRightCell$($selectionCursor);\n } else if (direction === 'up') {\n $selectionCursor = this.getAboveCell$($selectionCursor);\n } else if (direction === 'down') {\n $selectionCursor = this.getBelowCell$($selectionCursor);\n }\n\n return $selectionCursor;\n };\n\n ['left', 'right', 'up', 'down'].map(\n direction => keyboard.on('shift+' + direction,\n () => this.selectArea(getNextSelectionCursor(direction)))\n );\n }\n\n bindCopyCellContents() {\n keyboard.on('ctrl+c', () => {\n this.copyCellContents(this.$focusedCell, this.$selectionCursor);\n });\n }\n\n bindMouseEvents() {\n let mouseDown = null;\n\n $.on(this.bodyScrollable, 'mousedown', '.data-table-col', (e) => {\n mouseDown = true;\n this.focusCell($(e.delegatedTarget));\n });\n\n $.on(this.bodyScrollable, 'mouseup', () => {\n mouseDown = false;\n });\n\n $.on(this.bodyScrollable, 'mousemove', '.data-table-col', (e) => {\n if (!mouseDown) return;\n this.selectArea($(e.delegatedTarget));\n });\n }\n\n focusCell($cell) {\n if (!$cell) return;\n\n const { colIndex, isHeader } = $.data($cell);\n\n if (this.isStandardCell(colIndex) || isHeader) {\n return;\n }\n\n this.deactivateEditing();\n this.clearSelection();\n\n if (this.options.addCheckboxColumn && colIndex === 0) {\n return;\n }\n\n if (this.$focusedCell) {\n this.$focusedCell.classList.remove('selected');\n }\n\n this.$focusedCell = $cell;\n $cell.classList.add('selected');\n\n this.highlightRowColumnHeader($cell);\n }\n\n highlightRowColumnHeader($cell) {\n const { colIndex, rowIndex } = $.data($cell);\n const _colIndex = this.columnmanager.getSerialColumnIndex();\n const colHeaderSelector = `.data-table-header .data-table-col[data-col-index=\"${colIndex}\"]`;\n const rowHeaderSelector = `.data-table-col[data-row-index=\"${rowIndex}\"][data-col-index=\"${_colIndex}\"]`;\n\n if (this.lastHeaders) {\n $.removeStyle(this.lastHeaders, 'backgroundColor');\n }\n\n const colHeader = $(colHeaderSelector, this.wrapper);\n const rowHeader = $(rowHeaderSelector, this.wrapper);\n\n $.style([colHeader, rowHeader], {\n backgroundColor: 'var(--light-bg)'\n });\n\n this.lastHeaders = [colHeader, rowHeader];\n }\n\n selectArea($selectionCursor) {\n if (!this.$focusedCell) return;\n\n if (this._selectArea(this.$focusedCell, $selectionCursor)) {\n // valid selection\n this.$selectionCursor = $selectionCursor;\n }\n };\n\n _selectArea($cell1, $cell2) {\n if ($cell1 === $cell2) return false;\n\n const cells = this.getCellsInRange($cell1, $cell2);\n if (!cells) return false;\n\n this.clearSelection();\n cells.map(index => this.getCell$(...index)).map($cell => $cell.classList.add('highlight'));\n return true;\n }\n\n getCellsInRange($cell1, $cell2) {\n let colIndex1, rowIndex1, colIndex2, rowIndex2;\n\n if (typeof $cell1 === 'number') {\n [colIndex1, rowIndex1, colIndex2, rowIndex2] = arguments;\n } else\n if (typeof $cell1 === 'object') {\n\n if (!($cell1 && $cell2)) {\n return false;\n }\n\n const cell1 = $.data($cell1);\n const cell2 = $.data($cell2);\n\n colIndex1 = cell1.colIndex;\n rowIndex1 = cell1.rowIndex;\n colIndex2 = cell2.colIndex;\n rowIndex2 = cell2.rowIndex;\n }\n\n if (rowIndex1 > rowIndex2) {\n [rowIndex1, rowIndex2] = [rowIndex2, rowIndex1];\n }\n\n if (colIndex1 > colIndex2) {\n [colIndex1, colIndex2] = [colIndex2, colIndex1];\n }\n\n if (this.isStandardCell(colIndex1) || this.isStandardCell(colIndex2)) {\n return false;\n }\n\n let cells = [];\n let colIndex = colIndex1;\n let rowIndex = rowIndex1;\n let rowIndices = [];\n\n while (rowIndex <= rowIndex2) {\n rowIndices.push(rowIndex);\n rowIndex++;\n }\n\n rowIndices.map(rowIndex => {\n while (colIndex <= colIndex2) {\n cells.push([colIndex, rowIndex]);\n colIndex++;\n }\n colIndex = colIndex1;\n });\n\n return cells;\n }\n\n clearSelection() {\n $.each('.data-table-col.highlight', this.bodyScrollable)\n .map(cell => cell.classList.remove('highlight'));\n\n this.$selectionCursor = null;\n }\n\n getSelectionCursor() {\n return this.$selectionCursor || this.$focusedCell;\n }\n\n activateEditing($cell) {\n const { rowIndex, colIndex } = $.data($cell);\n const col = this.instance.columnmanager.getColumn(colIndex);\n\n if (col && col.editable === false) {\n return;\n }\n\n if (this.$editingCell) {\n const { _rowIndex, _colIndex } = $.data(this.$editingCell);\n\n if (rowIndex === _rowIndex && colIndex === _colIndex) {\n // editing the same cell\n return;\n }\n }\n\n this.$editingCell = $cell;\n $cell.classList.add('editing');\n\n const $editCell = $('.edit-cell', $cell);\n $editCell.innerHTML = '';\n\n const cell = this.getCell(colIndex, rowIndex);\n const editing = this.getEditingObject(colIndex, rowIndex, cell.content, $editCell);\n\n if (editing) {\n this.currentCellEditing = editing;\n // initialize editing input with cell value\n editing.initValue(cell.content);\n }\n }\n\n deactivateEditing() {\n if (!this.$editingCell) return;\n this.$editingCell.classList.remove('editing');\n this.$editingCell = null;\n }\n\n getEditingObject(colIndex, rowIndex, value, parent) {\n if (this.options.editing) {\n return this.options.editing(colIndex, rowIndex, value, parent);\n }\n\n // editing fallback\n const $input = $.create('input', {\n type: 'text',\n inside: parent\n });\n\n return {\n initValue(value) {\n $input.focus();\n $input.value = value;\n },\n getValue() {\n return $input.value;\n },\n setValue(value) {\n $input.value = value;\n }\n };\n }\n\n submitEditing($cell) {\n const { rowIndex, colIndex } = $.data($cell);\n\n if ($cell) {\n const editing = this.currentCellEditing;\n\n if (editing) {\n const value = editing.getValue();\n const done = editing.setValue(value);\n\n if (done && done.then) {\n // wait for promise then update internal state\n done.then(\n () => this.updateCell(rowIndex, colIndex, value)\n );\n } else {\n this.updateCell(rowIndex, colIndex, value);\n }\n }\n }\n\n this.currentCellEditing = null;\n }\n\n copyCellContents($cell1, $cell2) {\n const cells = this.getCellsInRange($cell1, $cell2);\n\n if (!cells) return;\n\n const values = cells\n // get cell objects\n .map(index => this.getCell(...index))\n // convert to array of rows\n .reduce((acc, curr) => {\n const rowIndex = curr.rowIndex;\n\n acc[rowIndex] = acc[rowIndex] || [];\n acc[rowIndex].push(curr.content);\n\n return acc;\n }, [])\n // join values by tab\n .map(row => row.join('\\t'))\n // join rows by newline\n .join('\\n');\n\n copyTextToClipboard(values);\n }\n\n updateCell(rowIndex, colIndex, value) {\n const cell = this.getCell(colIndex, rowIndex);\n\n cell.content = value;\n this.refreshCell(cell);\n }\n\n refreshCell(cell) {\n const selector = `.data-table-col[data-row-index=\"${cell.rowIndex}\"][data-col-index=\"${cell.colIndex}\"]`;\n const $cell = $(selector, this.bodyScrollable);\n\n $cell.innerHTML = getCellContent(cell);\n }\n\n isStandardCell(colIndex) {\n // Standard cells are in Sr. No and Checkbox column\n return colIndex < this.columnmanager.getFirstColumnIndex();\n }\n\n getCell$(colIndex, rowIndex) {\n return $(`.data-table-col[data-row-index=\"${rowIndex}\"][data-col-index=\"${colIndex}\"]`, this.bodyScrollable);\n }\n\n getAboveCell$($cell) {\n const { colIndex } = $.data($cell);\n const $aboveRow = $cell.parentElement.previousElementSibling;\n\n return $(`[data-col-index=\"${colIndex}\"]`, $aboveRow);\n }\n\n getBelowCell$($cell) {\n const { colIndex } = $.data($cell);\n const $belowRow = $cell.parentElement.nextElementSibling;\n\n return $(`[data-col-index=\"${colIndex}\"]`, $belowRow);\n }\n\n getLeftCell$($cell) {\n return $cell.previousElementSibling;\n }\n\n getRightCell$($cell) {\n return $cell.nextElementSibling;\n }\n\n getLeftMostCell$(rowIndex) {\n return this.getCell$(rowIndex, this.columnmanager.getFirstColumnIndex());\n }\n\n getRightMostCell$(rowIndex) {\n return this.getCell$(rowIndex, this.columnmanager.getLastColumnIndex());\n }\n\n getTopMostCell$(colIndex) {\n return this.getCell$(this.rowmanager.getFirstRowIndex(), colIndex);\n }\n\n getBottomMostCell$(colIndex) {\n return this.getCell$(this.rowmanager.getLastRowIndex(), colIndex);\n }\n\n getCell(colIndex, rowIndex) {\n return this.instance.datamanager.getCell(colIndex, rowIndex);\n }\n\n getCellAttr($cell) {\n return this.instance.getCellAttr($cell);\n }\n\n getRowHeight() {\n return $.style($('.data-table-row', this.bodyScrollable), 'height');\n }\n\n inViewport($cell) {\n let colIndex, rowIndex; // eslint-disable-line\n\n if (typeof $cell === 'number') {\n [colIndex, rowIndex] = arguments;\n } else {\n let cell = $.data($cell);\n\n colIndex = cell.colIndex;\n rowIndex = cell.rowIndex;\n }\n\n const viewportHeight = this.instance.getViewportHeight();\n const rowHeight = this.getRowHeight();\n const rowOffset = rowIndex * rowHeight;\n\n const scrollTopOffset = this.bodyScrollable.scrollTop;\n\n if (rowOffset - scrollTopOffset + rowHeight < viewportHeight) {\n return true;\n }\n\n return false;\n }\n\n scrollToCell($cell) {\n const { rowIndex } = $.data($cell);\n\n this.scrollToRow(rowIndex);\n }\n\n getRowCountPerPage() {\n return Math.ceil(this.instance.getViewportHeight() / this.getRowHeight());\n }\n\n scrollToRow(rowIndex) {\n const offset = rowIndex * this.getRowHeight();\n\n this.bodyScrollable.scrollTop = offset;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/cellmanager.js","import $ from './dom';\n\nconst KEYCODES = {\n 13: 'enter',\n 91: 'meta',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 9: 'tab',\n 27: 'esc',\n 67: 'c'\n};\n\nconst handlers = {};\n\nfunction bind() {\n $.on(document, 'keydown', handler);\n}\n\nfunction handler(e) {\n let key = KEYCODES[e.keyCode];\n\n if (e.shiftKey && key !== 'shift') {\n key = 'shift+' + key;\n }\n\n if ((e.ctrlKey && key !== 'ctrl') || (e.metaKey && key !== 'meta')) {\n key = 'ctrl+' + key;\n }\n\n const _handlers = handlers[key];\n\n if (_handlers && _handlers.length > 0) {\n _handlers.map(handler => {\n const preventBubbling = handler();\n\n if (preventBubbling === undefined || preventBubbling === true) {\n e.preventDefault();\n }\n });\n }\n}\n\nbind();\n\nexport default {\n on(key, handler) {\n const keys = key.split(',').map(k => k.trim());\n\n keys.map(key => {\n handlers[key] = handlers[key] || [];\n handlers[key].push(handler);\n });\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/keyboard.js","import $ from './dom';\nimport { getDefault, getHeaderHTML } from './utils';\n\nexport default class ColumnManager {\n constructor(instance) {\n this.instance = instance;\n this.options = this.instance.options;\n this.header = this.instance.header;\n this.datamanager = this.instance.datamanager;\n this.style = this.instance.style;\n this.wrapper = this.instance.wrapper;\n this.rowmanager = this.instance.rowmanager;\n\n this.bindEvents();\n }\n\n renderHeader() {\n const columns = this.datamanager.getColumns();\n\n this.header.innerHTML = getHeaderHTML(columns);\n }\n\n bindEvents() {\n this.bindResizeColumn();\n this.bindSortColumn();\n }\n\n bindResizeColumn() {\n let isDragging = false;\n let $currCell, startWidth, startX;\n\n $.on(this.header, 'mousedown', '.data-table-col', (e, $cell) => {\n $currCell = $cell;\n const { colIndex } = $.data($currCell);\n const col = this.getColumn(colIndex);\n\n if (col && col.resizable === false) {\n return;\n }\n\n isDragging = true;\n startWidth = $.style($('.content', $currCell), 'width');\n startX = e.pageX;\n });\n\n $.on(document.body, 'mouseup', (e) => {\n if (!$currCell) return;\n isDragging = false;\n\n const { colIndex } = $.data($currCell);\n const width = $.style($('.content', $currCell), 'width');\n\n this.setColumnWidth(colIndex, width);\n this.instance.setBodyWidth();\n $currCell = null;\n });\n\n $.on(document.body, 'mousemove', (e) => {\n if (!isDragging) return;\n const finalWidth = startWidth + (e.pageX - startX);\n const { colIndex } = $.data($currCell);\n\n if (this.getColumnMinWidth(colIndex) > finalWidth) {\n // don't resize past minWidth\n return;\n }\n\n this.setColumnHeaderWidth(colIndex, finalWidth);\n });\n }\n\n bindSortColumn() {\n\n $.on(this.header, 'click', '.data-table-col .content span', (e, span) => {\n const $cell = span.closest('.data-table-col');\n let { colIndex, sortOrder } = $.data($cell);\n sortOrder = getDefault(sortOrder, 'none');\n const col = this.getColumn(colIndex);\n\n if (col && col.sortable === false) {\n return;\n }\n\n // reset sort indicator\n $('.sort-indicator', this.header).textContent = '';\n $.each('.data-table-col', this.header).map($cell => {\n $.data($cell, {\n sortOrder: 'none'\n });\n });\n\n let nextSortOrder, textContent;\n if (sortOrder === 'none') {\n nextSortOrder = 'asc';\n textContent = '▲';\n } else if (sortOrder === 'asc') {\n nextSortOrder = 'desc';\n textContent = '▼';\n } else if (sortOrder === 'desc') {\n nextSortOrder = 'none';\n textContent = '';\n }\n\n $.data($cell, {\n sortOrder: nextSortOrder\n });\n $('.sort-indicator', $cell).textContent = textContent;\n\n if (this.events && this.events.onSort) {\n this.events.onSort(colIndex, nextSortOrder);\n } else {\n this.sortRows(colIndex, nextSortOrder);\n this.rowmanager.refreshRows();\n }\n });\n }\n\n setDimensions() {\n this.setHeaderStyle();\n this.setupMinWidth();\n this.setNaturalColumnWidth();\n this.distributeRemainingWidth();\n this.setColumnAlignments();\n }\n\n setHeaderStyle() {\n if (!this.options.takeAvailableSpace) {\n // setting width as 0 will ensure that the\n // header doesn't take the available space\n $.style(this.header, {\n width: 0\n });\n }\n\n $.style(this.header, {\n margin: 0\n });\n }\n\n setupMinWidth() {\n // cache minWidth for each column\n this.minWidthMap = getDefault(this.minWidthMap, []);\n\n $.each('.data-table-col', this.header).map(col => {\n const width = $.style($('.content', col), 'width');\n const { colIndex } = $.data(col);\n\n if (!this.minWidthMap[colIndex]) {\n // only set this once\n this.minWidthMap[colIndex] = width;\n }\n });\n }\n\n setNaturalColumnWidth() {\n // set initial width as naturally calculated by table's first row\n $.each('.data-table-row[data-row-index=\"0\"] .data-table-col', this.bodyScrollable).map($cell => {\n\n let width = $.style($('.content', $cell), 'width');\n const height = $.style($('.content', $cell), 'height');\n const { colIndex } = $.data($cell);\n const minWidth = this.getColumnMinWidth(colIndex);\n\n if (width < minWidth) {\n width = minWidth;\n }\n this.setColumnWidth(colIndex, width);\n this.setDefaultCellHeight(height);\n });\n }\n\n distributeRemainingWidth() {\n if (!this.options.takeAvailableSpace) return;\n\n const wrapperWidth = $.style(this.instance.datatableWrapper, 'width');\n const headerWidth = $.style(this.header, 'width');\n\n if (headerWidth >= wrapperWidth) {\n // don't resize, horizontal scroll takes place\n return;\n }\n\n const deltaWidth = (wrapperWidth - headerWidth) / this.datamanager.getColumnCount(true);\n\n this.datamanager.getColumns(true).map(col => {\n const width = $.style(this.getColumnHeaderElement(col.colIndex), 'width');\n let finalWidth = Math.min(width + deltaWidth) - 2;\n\n this.setColumnHeaderWidth(col.colIndex, finalWidth);\n this.setColumnWidth(col.colIndex, finalWidth);\n });\n this.instance.setBodyWidth();\n }\n\n setDefaultCellHeight(height) {\n this.style.setStyle('.data-table-col .content', {\n height: height + 'px'\n });\n }\n\n setColumnAlignments() {\n // align columns\n this.getColumns()\n .map(column => {\n if (column.align && ['left', 'center', 'right'].includes(column.align)) {\n this.style.setStyle(`.data-table [data-col-index=\"${column.colIndex}\"]`, {\n 'text-align': column.align\n });\n }\n });\n }\n\n sortRows(colIndex, sortOrder) {\n this.datamanager.sortRows(colIndex, sortOrder);\n }\n\n getColumn(colIndex) {\n return this.datamanager.getColumn(colIndex);\n }\n\n getColumns() {\n return this.datamanager.getColumns();\n }\n\n setColumnWidth(colIndex, width) {\n const selector = `[data-col-index=\"${colIndex}\"] .content, [data-col-index=\"${colIndex}\"] .edit-cell`;\n\n this.style.setStyle(selector, {\n width: width + 'px'\n });\n }\n\n setColumnHeaderWidth(colIndex, width) {\n this.style.setStyle(`[data-col-index=\"${colIndex}\"][data-is-header] .content`, {\n width: width + 'px'\n });\n }\n\n getColumnMinWidth(colIndex) {\n colIndex = +colIndex;\n return this.minWidthMap && this.minWidthMap[colIndex];\n }\n\n getFirstColumnIndex() {\n if (this.options.addCheckboxColumn && this.options.addSerialNoColumn) {\n return 2;\n }\n\n if (this.options.addCheckboxColumn || this.options.addSerialNoColumn) {\n return 1;\n }\n\n return 0;\n }\n\n getLastColumnIndex() {\n return this.datamanager.getColumnCount() - 1;\n }\n\n getColumnHeaderElement(colIndex) {\n colIndex = +colIndex;\n if (colIndex < 0) return null;\n return $(`.data-table-col[data-is-header][data-col-index=\"${colIndex}\"]`, this.wrapper);\n }\n\n getSerialColumnIndex() {\n const columns = this.datamanager.getColumns();\n\n return columns.findIndex(column => column.content.includes('Sr. No'));\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/columnmanager.js","import $ from './dom';\n\nexport default class RowManager {\n constructor(instance) {\n this.instance = instance;\n this.options = this.instance.options;\n this.wrapper = this.instance.wrapper;\n this.datamanager = this.instance.datamanager;\n\n this.bindEvents();\n }\n\n bindEvents() {\n this.bindCheckbox();\n }\n\n bindCheckbox() {\n if (!this.options.addCheckboxColumn) return;\n\n // map of checked rows\n this.checkMap = [];\n\n $.on(this.wrapper, 'click', '.data-table-col[data-col-index=\"0\"] [type=\"checkbox\"]', (e, $checkbox) => {\n const $cell = $checkbox.closest('.data-table-col');\n const { rowIndex, isHeader } = $.data($cell);\n const checked = $checkbox.checked;\n\n if (isHeader) {\n this.checkAll(checked);\n } else {\n this.checkRow(rowIndex, checked);\n }\n });\n }\n\n refreshRows() {\n this.instance.renderBody();\n this.instance.setDimensions();\n }\n\n getCheckedRows() {\n return this.checkMap\n .map((c, rowIndex) => {\n if (c) {\n return rowIndex;\n }\n return null;\n })\n .filter(c => {\n return c !== null || c !== undefined;\n });\n }\n\n highlightCheckedRows() {\n this.getCheckedRows()\n .map(rowIndex => this.checkRow(rowIndex, true));\n }\n\n checkRow(rowIndex, toggle) {\n const value = toggle ? 1 : 0;\n\n // update internal map\n this.checkMap[rowIndex] = value;\n // set checkbox value explicitly\n $.each(`.data-table-col[data-row-index=\"${rowIndex}\"][data-col-index=\"0\"] [type=\"checkbox\"]`, this.bodyScrollable)\n .map(input => {\n input.checked = toggle;\n });\n // highlight row\n this.highlightRow(rowIndex, toggle);\n }\n\n checkAll(toggle) {\n const value = toggle ? 1 : 0;\n\n // update internal map\n if (toggle) {\n this.checkMap = Array.from(Array(this.getTotalRows())).map(c => value);\n } else {\n this.checkMap = [];\n }\n // set checkbox value\n $.each('.data-table-col[data-col-index=\"0\"] [type=\"checkbox\"]', this.bodyScrollable)\n .map(input => {\n input.checked = toggle;\n });\n // highlight all\n this.highlightAll(toggle);\n }\n\n highlightRow(rowIndex, toggle = true) {\n const $row = $(`.data-table-row[data-row-index=\"${rowIndex}\"]`, this.bodyScrollable);\n\n if (toggle) {\n $row.classList.add('row-highlight');\n } else {\n $row.classList.remove('row-highlight');\n }\n }\n\n highlightAll(toggle = true) {\n if (toggle) {\n this.bodyScrollable.classList.add('row-highlight-all');\n } else {\n this.bodyScrollable.classList.remove('row-highlight-all');\n }\n }\n\n getTotalRows() {\n return this.datamanager.getRowCount();\n }\n\n getFirstRowIndex() {\n return 0;\n }\n\n getLastRowIndex() {\n return this.datamanager.getRowCount() - 1;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rowmanager.js","import { camelCaseToDash } from './utils';\n\nexport default class Style {\n\n constructor(wrapper) {\n const styleEl = document.createElement('style');\n\n document.head.appendChild(styleEl);\n this.styleSheet = styleEl.sheet;\n }\n\n setStyle(rule, styleMap) {\n const styles = Object.keys(styleMap)\n .map(prop => {\n if (!prop.includes('-')) {\n prop = camelCaseToDash(prop);\n }\n return `${prop}:${styleMap[prop]};`;\n })\n .join('');\n let ruleString = `${rule} { ${styles} }`;\n\n this.styleSheet.insertRule(ruleString, this.styleSheet.cssRules.length);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/style.js","// style-loader: Adds some css to the DOM by adding a