diff --git a/bower.json b/bower.json index cfd619cb7..2e03c5736 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "tabulator", "main": "dist/js/tabulator.js", - "version": "5.0.0", + "version": "5.0.1", "description": "Interactive table generation JavaScript library", "keywords": [ "table", diff --git a/build/rollup.js b/build/rollup.js index cc024eb2f..39f322a17 100644 --- a/build/rollup.js +++ b/build/rollup.js @@ -1,5 +1,5 @@ import Bundler from "./Bundler.js"; -var bundler = new Bundler("5.0.0", process.env.TARGET); +var bundler = new Bundler("5.0.1", process.env.TARGET); module.exports = bundler.bundle(); diff --git a/dist/js/tabulator.js b/dist/js/tabulator.js index 54c586a29..d78cb9220 100644 --- a/dist/js/tabulator.js +++ b/dist/js/tabulator.js @@ -1,4 +1,4 @@ -/* Tabulator v5.0.0 (c) Oliver Folkerd 2021 */ +/* Tabulator v5.0.1 (c) Oliver Folkerd 2021 */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -6337,7 +6337,7 @@ if (this.bindings[type] && this.bindings[type][name]) { return this.bindings[type][name].bind(null, component); } else { - if (name !== "then") { + if (name !== "then" && typeof name === "string" && !name.startsWith("_")) { console.error("The " + type + " component does not have a " + name + " function, have you checked that you have the correct Tabulator module installed?"); } } @@ -7765,6 +7765,7 @@ this.modulesRegular = {}; //hold regular modules bound to this table (for initialization purposes) this.optionsList = new OptionsList(this, "table constructor"); + this.initialized = false; if (this.initializeElement(element)) { this.initialzeCoreSystems(options); //delay table creation to allow event bindings immediatly after the constructor @@ -7878,6 +7879,8 @@ this._buildElement(); this._loadInitialData(); + + this.initialized = true; } //clear pointers to objects in default config object }, { @@ -8069,7 +8072,11 @@ }, { key: "setData", value: function setData(data, params, config) { - return this.dataLoader.load(data, params, config, false); + if (this.initialized) { + return this.dataLoader.load(data, params, config, false); + } else { + console.warn("setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor."); + } } //clear data }, { diff --git a/dist/js/tabulator.js.map b/dist/js/tabulator.js.map index 9a4436035..d744988c6 100644 --- a/dist/js/tabulator.js.map +++ b/dist/js/tabulator.js.map @@ -1 +1 @@ -{"version":3,"file":"tabulator.js","sources":["../../src/js/core/defaults/options.js","../../src/js/core/CoreFeature.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/Column.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFuctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/TableRegistry.js","../../src/js/core/Module.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/Tabulator.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnMaxWidth:false, //minimum global width for a column\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //seperatpr for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}","export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value != value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = typeof def.headerTooltip === \"undefined\" ? def.tooltip : def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.offsetHeight;\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData();\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tthis.setWidthActual(maxWidth + 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj){\r\n\t\tvar clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tif(obj[i] != null && typeof(obj[i]) === \"object\"){\r\n\t\t\t\tif (obj[i] instanceof Date) {\r\n\t\t\t\t\tclone[i] = new Date(obj[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn clone;\r\n\t}\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = {};\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determin weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\r\n\t\tthis.fitDataColAvg = 0;\r\n\r\n\t\tthis.window = 200; //pixel margin to make column visible before it is shown on screen\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tthis.columns = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.compatabilityCheck();\r\n\t}\r\n\r\n\tcompatabilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\r\n\t\treturn ok;\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.window));\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t};\r\n\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.clear();\r\n\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.window;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\tvar colPos = 0;\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\r\n\t\t\t\tconfig.width = width;\r\n\r\n\t\t\t\tif (this.options(\"layout\") === \"fitData\") {\r\n\t\t\t\t\tconfig.fitDataCheck = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t \t\t//column is visible\r\n\r\n\t \t\tif(this.leftCol == -1){\r\n\t \t\t\tthis.leftCol = this.columns.length;\r\n\t \t\t\tthis.vDomPadLeft = colPos;\r\n\t \t\t}\r\n\r\n\t \t\tthis.rightCol = this.columns.length;\r\n\t \t}else{\r\n\t \t\t// column is hidden\r\n\t \t\tif(this.leftCol !== -1){\r\n\t \t\t\tthis.vDomPadRight += width;\r\n\t \t\t}\r\n\t \t}\r\n\r\n\t \tthis.columns.push(column);\r\n\r\n\t \tcolumn.modules.vdomHoz = config;\r\n\r\n\t \tcolPos += width;\r\n\t }\r\n\t });\r\n\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.renitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\r\n\t\tif(this.options(\"layout\") === \"fitData\"){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows()[0];\r\n\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\tif(row){\r\n\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\r\n\t\t\t\t\t\trow.generateCells();\r\n\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\r\n\t\t\t\t\t\t\tif(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\t\t\t\tthis.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\r\n\t\t\t\t\t\tfor(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t\tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn !match;\r\n\t}\r\n\r\n\trenitializeRows(){\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(diff > (this.elementVertical.clientWidth * .8)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\r\n\taddColRight(){\r\n\t\tvar column = this.columns[this.rightCol + 1],\r\n\t\trows, newWidth, widthDiff;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tthis.rightCol++;\r\n\r\n\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.addColRight();\r\n\t\t}\r\n\t}\r\n\r\n\taddColLeft(){\r\n\t\tvar column = this.columns[this.leftCol - 1],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tif(!this.leftCol){\r\n\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol--;\r\n\r\n\t\t\tthis.addColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColRight(column){\r\n\t\tvar column = this.columns[this.rightCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tcolumn.modules.vdomHoz.visible = false;\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.rightCol --;\r\n\r\n\t\t\tthis.removeColRight();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColLeft(){\r\n\t\tvar column = this.columns[this.leftCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\tif(cell.parentNode){\r\n\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol ++;\r\n\r\n\t\t\tthis.removeColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.rightCol + 2, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t};\r\n\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\");\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\r\n\t\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\r\n\t\t\tvar nextEl = nextToColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\t_verticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibileColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis._verticalAlignHeaders();\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(force){\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tthis._verticalAlignHeaders();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.render();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold caluclation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\r\n\t\tthis.firstRender = true;\r\n\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\t\t\t}\r\n\r\n\t\t\t//handle verical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\r\n\t\t\t\tthis._setDataActual(data);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\r\n\t\tthis._wipeElements();\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\r\n\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\r\n\t\t\tlength = data.length - 1;\r\n\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRenderInPosition();\r\n\r\n\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\r\n\t\treturn pos;\r\n\t}\r\n\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\r\n\t\t}else{\r\n\r\n\t\t\tif(top){\r\n\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\r\n\t\tthis.moveRowActual(from, to, after);\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\r\n\t\tif(from !== to){\r\n\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\r\n\t\t\tif (fromIndex > -1) {\r\n\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\r\n\t\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\r\n\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn nextRow;\r\n\t}\r\n\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn prevRow;\r\n\t}\r\n\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\r\n\t\trow = this.findRow(row);\r\n\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\r\n\t\treturn rows.length;\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\r\n\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tthis.dispatch(\"data-refeshing\");\r\n\r\n\t\t\tif(!handler){\r\n\t\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t\t}\r\n\r\n\t\t\t//cascade through data refresh stages\r\n\t\t\tswitch(stage){\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\t//handle case where alldata needs refreshing\r\n\r\n\t\t\t\tcase \"dataPipeline\":\r\n\r\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\r\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\r\n\t\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\t\tcase \"display\":\r\n\t\t\t\tindex = 0;\r\n\t\t\t\tthis.resetDisplayRows();\r\n\r\n\t\t\t\tcase \"displayPipeline\":\r\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\r\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcase \"end\":\r\n\t\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t\t}\r\n\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.renderTable();\r\n\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"data-refeshed\");\r\n\t\t}\r\n\t}\r\n\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\r\n\t\tvar output = true;\r\n\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\r\n\tgetVisibleRows(viewable){\r\n\t\treturn this.renderer.visibleRows(!viewable);\r\n\t}\r\n\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRederInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\r\n\trenderTable(){\r\n\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis._clearTable();\r\n\t\t\tthis.renderer.renderRows();\r\n\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-layout\");\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.table.options.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\tthis._clearPlaceholder();\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\r\n\t_showPlaceholder(){\r\n\t\tif(this.table.options.placeholder){\r\n\r\n\t\t\tthis.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\r\n\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\tthis.table.options.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearPlaceholder(){\r\n\t\tif(this.table.options.placeholder && this.table.options.placeholder.parentNode){\r\n\t\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\r\n\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\r\n\t\t\tthis.renderer.resize();\r\n\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRederInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.redrawBlockRederInPosition = false;\r\n\t}\r\n\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\r\n\t\tthis.adjustTableSize();\r\n\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\tif(!this.displayRowsCount){\r\n\t\t\t\tif(this.table.options.placeholder){\r\n\t\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tinitialize(){\r\n\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.el = this.table.element;\r\n\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\r\n\t\tthis.previousTargets = {};\r\n\r\n\t\tthis.listeners = [\r\n\t\t\"click\",\r\n\t\t\"dblclick\",\r\n\t\t\"contextmenu\",\r\n\t\t\"mouseenter\",\r\n\t\t\"mouseleave\",\r\n\t\t\"mouseover\",\r\n\t\t\"mouseout\",\r\n\t\t\"mousemove\",\r\n\t\t\"touchstart\",\r\n\t\t\"touchend\",\r\n\t\t];\r\n\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t}\r\n\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.previousTargets = targetMatches;\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFuctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\"){\r\n\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", data, params, config, silent)){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tvar params = this.chain(\"data-params\", [data, config, silent], params || {}, {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], Promise.resolve([]));\r\n\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, 3000);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(optionsList, debug){\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name].prototype[property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\r\n\t\t\t\tthis.modules[name] = new mod(this);\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore[name] = this.modules[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.modulesRegular[name] = this.modules[name];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFuctionBinder from './tools/ComponentFuctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFuctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = {}; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = {}; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initialzeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediatly after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inderdevice communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitialzeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDepricatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\trtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//convert depricated functionality to new functions\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//concreate table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis.rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._loadInitialData();\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(this.options.data && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tfor (let key in this.modulesCore){\r\n\t\t\tlet mod = this.modulesCore[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\t//configure placeholder element\r\n\t\tif(typeof options.placeholder == \"string\"){\r\n\r\n\t\t\tvar el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\r\n\t\t\tvar span = document.createElement(\"span\");\r\n\t\t\tspan.innerHTML = options.placeholder;\r\n\r\n\t\t\tel.appendChild(span);\r\n\r\n\t\t\toptions.placeholder = el;\r\n\t\t}\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && this.options.data){\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tfor (let key in this.modulesRegular){\r\n\t\t\tlet mod = this.modulesRegular[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inderdevice communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(ua.substr(0,4));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//local data from local file\r\n\tsetDataFromLocalFile(extensions){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.type = \"file\";\r\n\t\t\tinput.accept = extensions || \".json,application/json\";\r\n\r\n\t\t\tinput.addEventListener(\"change\", (e) => {\r\n\t\t\t\tvar file = input.files[0],\r\n\t\t\t\treader = new FileReader(),\r\n\t\t\t\tdata;\r\n\r\n\t\t\t\treader.readAsText(file);\r\n\r\n\t\t\t\treader.onload = (e) => {\r\n\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tdata = JSON.parse(reader.result);\r\n\t\t\t\t\t} catch(e) {\r\n\t\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\r\n\t\t\t\t\t\treject(e);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.setData(data)\r\n\t\t\t\t\t.then((data) => {\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\tresolve(err);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\treader.onerror = (e) => {\r\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\r\n\t\t\t\t\treject();\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tinput.click();\r\n\t\t});\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\tresolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;","export default {}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach(function(type){\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {\r\n\tmethod: \"GET\",\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","export default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\tvar output = this.generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = false; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\r\n\t\tthis.loaderPromise = false;\r\n\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\r\n\t\tif(this.table.options.ajaxParams){\r\n\t\t\tthis.setParams(this.table.options.ajaxParams);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxConfig){\r\n\t\t\tthis.setConfig(this.table.options.ajaxConfig);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\r\n\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\r\n\trequestData(data, params, config, silent, previousData){\r\n\t\tif(this.requestDataCheck(data)){\r\n\t\t\tif(data){\r\n\t\t\t\tthis.setUrl(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(params){\r\n\t\t\t\tthis.setParams(params, true);\r\n\t\t\t}\r\n\r\n\t\t\tif(config){\r\n\t\t\t\tthis.setConfig(config);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.sendRequest();\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\r\n\t//set ajax params\r\n\tsetParams(params, update){\r\n\t\tif(update){\r\n\t\t\tthis.params = this.params || {};\r\n\r\n\t\t\tfor(let key in params){\r\n\t\t\t\tthis.params[key] = params[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.params = params;\r\n\t\t}\r\n\t}\r\n\r\n\tgetParams(){\r\n\t\treturn this.params || {};\r\n\t}\r\n\r\n\t//load config object\r\n\tsetConfig(config){\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tfor(let key in config){\r\n\t\t\t\tthis.config[key] = config[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create config object from default\r\n\t_loadDefaultConfig(force){\r\n\t\tif(!this.config || force){\r\n\r\n\t\t\tthis.config = {};\r\n\r\n\t\t\t//load base config from defaults\r\n\t\t\tfor(let key in Ajax.defaultConfig){\r\n\t\t\t\tthis.config[key] = Ajax.defaultConfig[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\r\n\t//send ajax request\r\n\tsendRequest(silent){\r\n\t\tvar url = this.url,\r\n\t\tesc, query;\r\n\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, this.url, this.params) !== false){\r\n\t\t\treturn this.loaderPromise(url, this.config, this.params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, this.url, this.params, data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refeshed\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(this);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\tfirstCol = this.table.columnManager.getFirstVisibileColumn(),\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\t\t\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-relayout\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tcheckForRestyle(cell){\r\n\t\tif(!cell.row.cells.indexOf(cell)){\r\n\t\t\tcell.row.reinitialize();\r\n\t\t}\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}else{\r\n\t\t\t\trowData.push(\"\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refeshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tnav.next();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.validate){\r\n\t\t\t\t\tcell.validate();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tcolumns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tif(left !== this.table.rowManager.element.scrollLeft){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tthis.changed = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = (window.DateTime || luxon.DateTime).fromFormat(value, inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = DT.fromFormat(value, inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-before\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\r\n\t\tif(!column.isGroup){\r\n\r\n\t\t\tif(this.frozenCheck(column)){\r\n\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.active = true;\r\n\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\r\n\t\treturn frozen;\r\n\t}\r\n\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\t//layout all rows after scroll is complete\r\n\t\t\tthis.scrollEndTimer = setTimeout(() => {\r\n\t\t\t\tthis.layout();\r\n\t\t\t}, 100);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate margins for rows\r\n\tcalcMargins(){\r\n\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\r\n\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\r\n\t\tvar leftParents = [];\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this._calcSpace(this.leftColumns, i) + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - this._calcSpace(this.rightColumns, i + 1)) + \"px\";\r\n\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\r\n\t//layout columns appropropriatly\r\n\tlayout(){\r\n\t\tvar rightMargin = 0;\r\n\r\n\t\tif(this.active){\r\n\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutElement(element, column){\r\n\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.arrowElement = false;\r\n\t\t\tthis.elementContents = false;\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\taddBindings(){\r\n\t\tvar dblTap,\ttapHold, tap, toggleElement;\r\n\r\n\t\tif ((this.groupManager.table.options.groupContextMenu || this.groupManager.table.options.groupClickMenu) && this.groupManager.table.modExists(\"menu\")){\r\n\t\t\tthis.groupManager.table.modules.menu.initializeGroup.call(this.groupManager.table.modules.menu, this);\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTap){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tthis.groupManager.table.options.groupTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupDblTap){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tthis.groupManager.table.options.groupDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTapHold){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tthis.groupManager.table.options.groupTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\t_addRowToGroup(row){\r\n\r\n\t\tvar level = this.level + 1;\r\n\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\r\n\t\trow.updateData(data);\r\n\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trow.modules.group = this;\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\r\n\tscrollHeader(left){\r\n\t\tthis.arrowElement.style.marginLeft = left;\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\tchild.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tgetRowIndex(row){}\r\n\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\r\n\t\toutput.push(this);\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\r\n\t\t\tvar prev = this.getElement();\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\r\n\t\tif(typeof this.visible == \"function\"){\r\n\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\r\n\t////////////// Standard Row Functions //////////////\r\n\r\n\tgetElement(){\r\n\t\tthis.addBindingsd = false;\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t// this.addBindings();\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.groupIDLookups.length){\r\n\r\n\t\t\tif(!Object.keys(this.groups).length){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList =[];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.history.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"table-building\", this.tableElementCheck.bind(this));\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.element.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.element,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for tablator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\t//create new element\r\n\t\tvar newElement = document.createElement(\"div\");\r\n\r\n\t\t//transfer attributes to new element\r\n\t\tvar attributes = element.attributes;\r\n\r\n\t\t// loop through attributes and apply them on div\r\n\r\n\t\tfor(var i in attributes){\r\n\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// replace table with div element\r\n\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\r\n\t\tthis.table.element = newElement;\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for tablator inline options\r\n\t\t\tattributes = header.attributes;\r\n\r\n\t\t\t// //check for tablator inline options\r\n\t\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:\"ctrl + 90\",\r\n\tredo:\"ctrl + 89\",\r\n\tcopyToClipboard:\"ctrl + 67\",\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", []); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\r\n\t\t\tfor(let key in Keybindings.bindings){\r\n\t\t\t\tmergedBindings[key] = Keybindings.bindings[key];\r\n\t\t\t}\r\n\r\n\t\t\tif(Object.keys(bindings).length){\r\n\r\n\t\t\t\tfor(let key in bindings){\r\n\t\t\t\t\tmergedBindings[key] = bindings[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tthis.mapBinding(key, binding);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tif(cell.column.definition.contextMenu || cell.column.definition.clickMenu){\r\n\t\t\tthis.initializeCell(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerContextMenu || def.headerClickMenu || def.headerMenu){\r\n\t\t\tthis.initializeColumnHeader(column);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnHeader(column){\r\n\t\tvar headerMenuEl;\r\n\r\n\t\tif(column.definition.headerContextMenu){\r\n\t\t\tcolumn.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));\r\n\t\t\tthis.tapHold(column, column.definition.headerContextMenu);\r\n\t\t}\r\n\r\n\t\t// if(column.definition.headerClickMenu){\r\n\t\t// \tcolumn.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));\r\n\t\t// }\r\n\r\n\t\tif(column.definition.headerMenu){\r\n\r\n\t\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\r\n\t\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.LoadMenuEvent(column, column.definition.headerMenu, e);\r\n\t\t\t});\r\n\r\n\t\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t\t}\r\n\t}\r\n\r\n\tLoadMenuEvent(component, menu, e){\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\r\n\t\t// if(component instanceof Cell){\r\n\t\t// \te.stopImmediatePropagation();\r\n\t\t// }\r\n\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\r\n\ttapHold(component, menu){\r\n\t\tvar element = component.getElement(),\r\n\t\ttapHold = null,\r\n\t\tloaded = false;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\tloaded = false;\r\n\r\n\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t\tloaded = true;\r\n\r\n\t\t\t\tthis.LoadMenuEvent(component, menu, e);\r\n\t\t\t}, 1000);\r\n\r\n\t\t}, {passive: true});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tif(loaded){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.contextMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));\r\n\t\t\tthis.tapHold(cell, cell.column.definition.contextMenu);\r\n\t\t}\r\n\r\n\t\tif(cell.column.definition.clickMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"click\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\trow.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));\r\n\t\t\tthis.tapHold(row, this.table.options.rowContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\trow.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroup (group){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));\r\n\t\t\tthis.tapHold(group, this.table.options.groupContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tloadMenu(e, component, menu, parentEl){\r\n\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t}\r\n\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar docHeight = Math.max(document.body.offsetHeight, window.innerHeight),\r\n\t\tx, y, parentOffset;\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\r\n\t\tdocument.body.appendChild(element);\r\n\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) >= docHeight){\r\n\t\t\telement.style.top = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.bottom = (docHeight - parentOffset.top - parentEl.offsetHeight - 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.bottom = (docHeight - y) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= document.body.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t}\r\n\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\r\n\thideMenu(){\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\r\n\t\tif(!column.modules.frozen){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement();\r\n\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = \"0\";\r\n\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Page extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\r\n\t\tthis.pageSizes = [];\r\n\r\n\t\tthis.dataReceivedNames = {}; //TODO - remove once pagimation update is complete\r\n\t\tthis.dataSentNames = {}; //TODO - remove once pagimation update is complete\r\n\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initail page to show on load\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {index, top}\r\n\t}\r\n\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Promise.reject();\r\n\t}\r\n\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup pageination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel;\r\n\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set the maxmum page\r\n\tsetMaxPage(max){\r\n\r\n\t\tmax = parseInt(max);\r\n\r\n\t\tthis.max = max || 1;\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\r\n\t\tpage = parseInt(page);\r\n\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\r\n\t\treturn button;\r\n\t}\r\n\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger()\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar output, start, end;\r\n\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\r\n\t\t\tthis.setMaxRows(data.length);\r\n\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tif(data[i]){\r\n\t\t\t\t\toutput.push(data[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\ttrigger(){\r\n\t\tvar left;\r\n\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.last_page + \"' property\");\r\n\t\t}\r\n\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.table.rowManager.getData().concat(data.data);\r\n\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.data + \"' property\");\r\n\t\t}\r\n\r\n\t\treturn data.data;\r\n\t}\r\n\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.element;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.substr(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.substr(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar pushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[this.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? this.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = this.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tthis.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\r\n\t\tif(mode === true || mode == type){\r\n\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\r\n\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn();\r\n\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tthis.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate resposive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//detemine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column, i){\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && self.mode === \"collapse\"){\r\n\t\t\t\t\t\tself.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort(function(a, b){\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initialize();\r\n\t\t}\r\n\r\n\t\t//this.update();\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerText = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.clearSelectionData.bind(this));\r\n\r\n\t\t\tif(this.table.options.selectable && this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refeshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\r\n\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\r\n\t\trow.modules.select = {selected:false};\r\n\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\r\n\r\n\t\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\r\n\t\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\r\n\r\n\t\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\r\n\t\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\r\n\t\t\t\t\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\t\ttoggledRows.forEach(function(toggledRow){\r\n\t\t\t\t\t\t\t\t\tif(toggledRow !== self.lastClickedRow){\r\n\r\n\t\t\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true && !self.isRowSelected(row)){\r\n\t\t\t\t\t\t\t\t\t\t\tif(self.selectedRows.length < self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\r\n\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true){\r\n\t\t\t\t\t\t\t\t\tif(toggledRows.length > self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tself.selectRows(toggledRows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\t\t\t\t\t\t\tself.selectRows(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"string\":\r\n\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\r\n\t\tif(typeof rows == \"undefined\"){\r\n\r\n\t\t\trowCount = self.selectedRows.length;\r\n\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\r\n\t\t\tself._rowSelectionChanged(silent);\r\n\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetSelectedRows(){\r\n\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = DT.fromFormat(a, format);\r\n\t\tb = DT.fromFormat(b, format);\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach(function(item){\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach(function(item){\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;"],"names":["debugEventsExternal","debugEventsInternal","debugInvalidOptions","height","minHeight","maxHeight","columnMaxWidth","columnHeaderVertAlign","columns","columnDefaults","data","autoColumns","autoColumnsDefinitions","nestedFieldSeparator","tooltipGenerationMode","footerElement","index","textDirection","addRowPos","headerVisible","renderVertical","renderHorizontal","renderVerticalBuffer","scrollToRowPosition","scrollToRowIfVisible","scrollToColumnPosition","scrollToColumnIfVisible","rowFormatter","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","placeholder","dataLoader","dataLoaderLoading","dataLoaderError","dataSendParams","dataReceiveParams","CoreFeature","table","silent","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","value","options","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","cells","forEach","cell","push","getComponent","visible","isGroup","show","hide","output","length","parent","Column","columnManager","scrollToColumn","to","after","toColumn","findColumn","moveColumn","console","warn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","width","result","reinitializeWidth","setWidth","renderer","rerenderColumns","CellComponent","_cell","getValue","getOldValue","initialValue","row","getData","mutate","setValue","setValueActual","checkHeight","Cell","element","oldValue","minWidth","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","field","vertAligns","top","bottom","middle","hozAligns","left","right","center","style","textAlign","hozAlign","vertAlign","display","alignItems","justifyContent","definition","cssClass","classNames","split","classList","add","addEventListener","e","_generateTooltip","val","innerHTML","Node","firstChild","removeChild","appendChild","tooltip","containerOnly","layoutElement","changed","setValueProcessData","cellRendered","dispatchExternal","subscribedExternal","rowManager","setFieldValue","_generateContents","widthStyled","offsetWidth","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getCellIndex","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleFormatterRendered","mapDefinitions","setField","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","el","defaults","optionsList","generate","defaultOptionList","Object","keys","indexOf","title","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","headerTooltip","langBind","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","setTooltip","dblTap","tapHold","tap","headerClick","headerDblClick","headerContext","headerTap","passive","headerDblTap","clearTimeout","setTimeout","headerTapHold","classeNames","setMinWidth","parseInt","setMaxWidth","headerHozAlign","_buildColumnHeaderTitle","editableTitle","stopPropagation","focus","text","_formatColumnHeaderTitle","contents","dataObj","structure","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","paddingTop","verticalAlign","clearVerticalAlign","formatter","rowNumColumn","getFirstColumn","getLastColumn","getTopColumn","updateBranches","colDefs","responsiveToggle","_verticalAlignHeaders","matchChildWidths","childWidth","child","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","Promise","resolve","reject","cellCount","deregisterColumn","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","force","fitToData","clearWidth","assign","addColumn","then","error","defaultOptions","Helpers","box","getBoundingClientRect","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","obj","clone","Array","isArray","Date","deepClone","OptionsList","msgType","registeredDefaults","option","userOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","callback","update","blockRedraw","dir","includingBuffer","getDisplayRows","rowEl","remove","clearRows","clearColumns","renderRows","renderColumns","rerenderRows","position","ifVisible","rowIndex","offset","elVisible","elOffset","scrollToRowNearestTop","scrollToRow","scrollHeight","scrollTop","offsetTop","BaiscHorizontal","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","initialized","compatabilityCheck","frozen","ok","find","col","dataChange","scroll","old","cols","clear","colPos","columnsByIndex","config","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","renitializeRows","initializeRow","reinitializeRow","change","collsWidth","colEnd","generateCells","layoutRefresh","match","getVisibleRows","diff","addColRight","removeColLeft","addColLeft","removeColRight","start","end","getCell","fitDataColActualWidthCheck","prepend","newWidth","widthDiff","colPositionAdjust","ColumnManager","blockHozScrollEvent","headersElement","columnsByField","initializeRenderer","createHeadersElement","createHeaderElement","insertBefore","scrollHorizontal","renderClass","renderers","RendererVirtualDomHorizontal","RendererBasicHorizontal","initialize","hozAdjust","scrollWidth","marginLeft","scrollColumns","definitions","sorter","call","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","parentIndex","nextEl","nextSibling","unshift","columnRendered","getHeight","adjustTableSize","subject","_getSelf","HTMLElement","root","matches","fieldRoot","findIndex","active","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","getComponents","updateRows","fromIndex","toIndex","concat","adjust","offsetLeft","generateCell","totalWidth","fixedWidth","colWidth","layoutMode","resetScroll","footerManager","RowComponent","_row","transform","getCells","getRowPosition","moveToRow","updateData","normalizeHeight","nextRow","prevRow","Row","manualHeight","outerHeight","created","setData","create","deleteCells","renderRowCells","rerenderRowCells","children","resizableRows","setHeight","clearHeight","updatedData","tempData","newRowData","JSON","parse","attrname","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","getRowIndex","detatchModules","deleteRow","group","BaiscVertical","visibility","onlyGroupHeaders","styleRow","render","rowTop","abs","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","containerHeight","ceil","rowHeight","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","firstRender","renderMode","fixedHeight","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRederInPosition","dataPipeline","displayPipeline","leftDir","topDir","scrollRows","renderInPosition","columnsChanged","pagination","_setDataActual","reRenderInPosition","generateColumnsFromRowData","_wipeElements","wipe","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowNumbers","_showPlaceholder","pos","addRowActual","findAddRowPos","reverse","item","addRow","_clearPlaceholder","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","list","getRows","handler","priority","sort","a","b","skipStage","stage","cascadeOrder","resetDisplayRows","setDisplayRows","renderTable","layoutColumnsOnNewData","viewable","visibleRows","RendererVirtualDomVertical","RendererBasicVertical","_clearTable","renderEmptyScroll","initialHeight","otherHeight","external","resize","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","links","initializeElement","querySelector","activate","deactivate","link","footerRedraw","InteractionManager","abortClasses","previousTargets","listeners","componentMap","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","values","comp","subscriptionChanged","added","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","abort","filter","includes","elTargets","targetMatches","previousTarget","ComponentFuctionBinder","bindings","funcName","hanlder","DataLoader","loaderElement","createLoaderElement","msgElement","createMsgElement","loadingElement","errorElement","requestOrder","loading","template","trim","firstElementChild","params","replace","requestNo","showLoader","mapParams","response","objectInvert","rowData","hideLoader","showError","map","shouldLoad","langText","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifiySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","subscriber","confirmed","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Module","_handler","register","func","registerDataPipelineHandler","registerDisplayPipelineHandler","reinitializeColumnWidths","responsiveLayout","modExists","colsWidth","gap","lastCol","responsive","flexWidth","flexGrowUnits","flexColWidth","flexColumns","fixedShrinkColumns","flexShrinkUnits","overflowWidth","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","fitData","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","fitColumns","Layout","mode","registerTableOption","registerColumnOption","modes","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","registerTableFunction","getLang","headerFilters","_setLangProp","desiredLocale","traverseLang","trans","prop","navigator","language","toLowerCase","prefix","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","defaultLangs","Comms","receive","selectors","connections","connection","con","action","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFuctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","prototype","registerModule","mod","registerModuleBinding","findTable","moduleCore","modulesCore","modulesRegular","core","mods","interactionMonitor","browserSlow","browserMobile","rtl","initialzeCoreSystems","_create","_clearObjectPointers","_mapDepricatedFunctionality","InteractionMonitor","getComputedStyle","direction","getSelection","empty","removeAllRanges","selection","rtlCheck","_buildElement","_loadInitialData","reactiveData","_detectBrowser","span","deregister","ua","userAgent","vendor","opera","test","substr","restoreRedraw","extensions","input","accept","file","files","reader","FileReader","readAsText","onload","err","onerror","click","blockActiveLoad","clearData","getDataCount","responses","addRows","newRows","getRowFromPosition","foundRows","fromRow","getDefinitionTree","fromColumn","plugin","required","Accessor","allowedTypes","initializeColumn","transformRow","charAt","toUpperCase","accessor","lookupAccessor","accessors","rowComponent","traverse","colCompnent","defautlAccessors","method","generateParamsList","serializeParams","encoded","encodeURIComponent","join","url","contentType","urlGenerator","ajaxContentType","contentTypeFormatters","headers","body","Accept","location","origin","credentials","fetch","json","status","statusText","stringify","form","FormData","append","Ajax","loaderPromise","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxParams","setParams","ajaxConfig","setConfig","ajaxURL","setUrl","getUrl","requestDataCheck","requestData","previousData","sendRequest","_loadDefaultConfig","defaultConfig","ajaxRequesting","ajaxResponse","defaultContentTypeFormatters","updateOrAddData","insert","addData","clipboard","headerFindSuccess","columnMap","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","generateExportList","clipboardCopyConfig","clipboardCopyStyled","genereateHTMLTable","generatePlainContent","clipboardData","originalEvent","reset","paste","setPasteParser","clipboardPasteParser","setPasteAction","clipboardPasteAction","copy","getKey","range","internal","sel","textRange","createRange","selectNodeContents","toString","addRange","createTextRange","moveToElementText","select","execCommand","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","mutator","valid","tagName","edit","currentCell","defaultPasteActions","defaultPasteParsers","CalcComponent","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","tableRedraw","getResults","userRecalc","recalc","groupBy","recalcRowGroup","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","groups","getChildGroups","generateRowData","dataTree","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","getFormatter","paramKey","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","registerComponentFunction","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","dummyEl","firstCol","getFirstVisibileColumn","dataTreeChildField","dataTreeChildIndent","dataTreeElementColumn","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","dataTreeStartExpanded","layoutRow","rowDelete","rowDataChanged","columnMoving","registerDisplayHandler","getTreeChildren","redrawNeeded","refreshData","childArray","controlEl","generateControlElement","cloneNode","marginRight","getPropertyValue","oldControl","replaceChild","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","subChildren","sub","childData","childRow","childIndex","findChildIndex","recurse","setFileContents","delimiter","fileContents","depth","bom","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","orientation","unit","parseRow","styles","content","colSpan","rowSpan","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","self","sheetName","workbook","XLSX","utils","book_new","tableFeatures","SheetNames","Sheets","generateSheet","merges","worksheet","s","c","r","j","sheet_add_aoa","encode_range","sheetOnly","sheets","sheet","commsSend","intercept","s2ab","buf","ArrayBuffer","view","Uint8Array","charCodeAt","write","bookType","bookSST","csv","pdf","xlsx","Download","blob","download","downloadToTab","filename","interceptCallback","downloadFunc","buildLink","mime","triggerDownload","downloaders","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","Blob","downloadReady","URL","createObjectURL","msSaveOrOpenBlob","defaultDownloaders","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","keyCode","maskAutoFill","onRendered","success","cancel","editorParams","cellValue","search","padding","boxSizing","elementAttributes","getAttribute","preventScroll","onChange","vertNav","verticalNavigation","count","whiteSpace","getRow","heightNow","selectionStart","stopImmediatePropagation","step","blurFunc","cellEl","initialDisplayValue","defaultValue","listEl","multiselect","dataItems","currentItem","displayItems","currentItems","blurable","blockListShow","searchWord","searchWordTimeout","getUniqueColumnValues","getColumnByField","getColumn","parseItems","inputValues","curentValues","dataList","displayList","processComplexListItem","label","itemParams","setItem","sortValuesList","fillList","listItemFormatter","toggleItem","chooseItem","setCurrentItem","scrollIntoView","behavior","block","inline","fillInput","unsetItem","hideList","chooseItems","unsetItems","len","cancelItem","showList","removeScrollListener","scrollTovalue","character","fromCharCode","startsWith","cursor","readOnly","uniqueColumnValues","genUniqueColumnValues","filterList","term","intialLoad","items","searchFunc","addNotice","searchingPlaceholder","fillListIfNotEmpty","showListOnEmpty","notice","searchEl","clearList","itemList","emptyPlaceholder","current","freetext","allowEmpty","showInputValue","maxStars","getElementsByTagName","size","stars","starsHolder","star","createElementNS","starChange","buildStar","starHolder","nextStar","blur","changeValue","overflow","textOverflow","percent","bar","mouseDrag","mouseDragWidth","updateValue","calcVal","round","backgroundColor","screenX","tristate","indetermValue","indeterminateValue","indetermState","marginTop","indeterminate","checked","textarea","number","autocomplete","progress","tickCross","Edit","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellisEdited","clearEdited","editCell","cellCancelEdit","bindEditor","columnDeleteCheck","rowDeleteCheck","cancelEdit","keybindingNavigateNext","newRow","nav","next","edited","nextCell","findNextEditableCell","getIndex","findPrevEditableCell","allowEdit","check","prevCell","editor","editable","validate","clearEditor","variableHeight","cellEditCancelled","contains","button","forceEdit","focusCellNoEvent","getRenderMode","leftEdge","rightEdge","leftMargin","rightMargin","rendered","cellEditor","validationMode","checkForRestyle","focusScrollAdjust","cellClick","cellEditing","editIndex","invalid","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","genereateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","genereateHeaderElement","genereateGroupElement","genereateCalcElement","genereateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","generator","isVisible","cellWrapper","formatCells","formatExportValue","align","renderedCallback","htmlOutputConfig","props","lookup","fromStyle","filterVal","rowVal","filterParams","RegExp","keywords","separator","keyword","matchAll","endsWith","Filter","headerFilterColumns","prevHeaderFilterChangeCheck","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","filterMode","remoteFilterParams","registerDataHandler","initialFilter","setFilter","initialHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","setHeaderFilterColumnPlaceholder","filterType","tagType","attrType","filterChangeCheck","filterFunc","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","reloadData","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","defaultFilters","formatterParams","emptyToSpace","sanitizeHTML","floatVal","integer","decimal","rgx","decimalSym","thousandSym","thousand","symbolAfter","urlPrefix","labelField","urlField","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","DT","DateTime","luxon","inputFormat","outputFormat","invalidPlaceholder","newDatetime","fromFormat","isValid","timezone","shiftTimezone","toFormat","suffix","humanize","date","now","starActive","starInactive","colors","color","percentValue","legendAlign","legend","legendColor","barEl","barContainer","legendEl","holderEl","toggleList","isOpen","checkbox","toggleSelect","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","plaintext","money","image","datetime","datetimediff","traffic","buttonTick","buttonCross","rownum","responsiveCollapse","rowSelection","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","rightPadding","initializationMode","scrollEndTimer","layoutCell","edge","frozenCheck","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","allCells","leftParents","parentEl","getColGroupParentElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","toggleVisibility","groupManager","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","groupList","elementContents","arrowElement","createElements","addBindings","createValueGroups","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","toggleElement","groupContextMenu","groupClickMenu","menu","initializeGroup","groupTap","groupDblTap","groupTapHold","groupToggleElement","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","updateGroupRows","scrollHeader","groupValues","removeGroup","noCalc","_visSet","getHeadersAndRows","hasTopCalcs","detachElement","generateTopRow","hasBottomCalcs","generateBottomRow","groupClosedShowCalcs","getDisplayIndex","checkClassicModeGroupHeaderWidth","prev","compoment","getPath","addBindingsd","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","groupStartOpen","langValue","removeCalcs","getRealColumns","lookupFunc","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","removeRow","insertRow","generateGroups","groupComponents","groupListData","rowCount","headerContent","pullGroupListData","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","samePath","every","groupPath","groupId","cellEdit","rowAdd","_rebindRow","rowMove","posFrom","newValue","posTo","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","getGroup","undoers","redoers","oldRow","defaultUndoers","defaultRedoers","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","newElement","attributes","optionsArr","attrib","_attribValue","exists","_findCol","textContent","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tapDbl","initializeExternalEvents","cellContentsSelectionFixer","selectNode","subscriptionChangeExternal","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","notouch","watchers","componentObj","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","scrollMax","navLeft","navRight","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","actions","mapBinding","symbolsList","ctrl","meta","symbols","code","checkBinding","ctrlKey","shiftKey","metaKey","defaultBindings","defaultActions","Menu","menuElements","blurEvent","hideMenu","escEvent","escMenu","nestedMenuBlock","positionReversedX","contextMenu","clickMenu","initializeCell","headerContextMenu","headerClickMenu","headerMenu","initializeColumnHeader","headerMenuEl","LoadMenuEvent","loadMenu","rowContextMenu","rowClickMenu","touch","MouseEvent","menuEl","itemEl","disabled","hideOldSubMenus","positionMenu","pop","docHeight","innerHeight","x","y","parentOffset","touches","pageX","pageY","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","mousemove","which","startMove","bindTouchEvents","startXMove","prevColWidth","nextColWidthLast","prevColWidthLast","moveToCol","_bindMouseMove","movingCells","_unbindMouseMove","columnHolder","xPos","scrollPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","mouseup","tableRowDrop","previousSibling","rowHandle","startYMove","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","setStartPosition","connectToTables","pointerEvents","getTableElement","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","connectionTables","commsConnections","dropEvent","elementRowDrop","tabulatorElementDropEvent","sender","movableRowsSender","senders","movableRowsReceiver","receivers","connect","disconnect","dropComplete","fromTable","toTable","Mutator","enabled","transformCell","lookupMutator","mutators","mutatorEdit","defaultMutators","Page","progressiveLoad","page","initialLoad","dataChanging","pageSizes","dataReceivedNames","dataSentNames","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","rowAddingPosition","initialLoadComplete","calculatePageSizes","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePaginator","initializeProgressive","scrollVertical","dispRows","testElRow","testElCell","paginationSize","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","hidden","pageSelectLabel","paginationElement","paginationInitialPage","paginationButtonCount","generatePageSizeSelectList","trigger","leftSize","rightSize","_generatePageButton","setMaxRows","_setPageButtons","last_page","progressiveLoadDelay","footer","local","id","localStorage","getItem","cookie","cookiePos","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","testKey","removeItem","persistence","persistenceMode","persistenceID","retreivedData","localStorageTest","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retreiveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","getColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","Print","manualBlock","printAsHtml","replaceTable","cleanup","printFullscreen","genereateTable","printConfig","printStyled","printRowRange","scrollX","scrollY","footerEl","tableEl","footerContent","printHeader","printFooter","printFormatter","scrollTo","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","getRowFromDataObject","startRow","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","ResizeColumns","startColumn","startWidth","prevHandle","layoutCellHandles","layoutColumnHeader","resizable","handleDown","nearestColumn","_checkResizability","_mouseDown","prevHandleDown","colIndex","mouseMove","checkCellHeights","mouseUp","ResizeRows","startHeight","screenY","ResizeTable","observer","containerObserver","tableHeight","containerWidth","autoResize","tableStyle","ResizeObserver","entry","nodeHeight","contentRect","nodeWidth","observe","tableResized","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","generateCollapsedRowContent","colCount","working","getFlexBaseWidth","hideColumn","showColumn","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","titleData","valueData","node_content","titleHighlight","innerText","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","selectablePersistence","_deselectRow","_rowSelectionChanged","endSelect","selected","selectableCheck","selectableRangeMode","_clearSelection","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","getCurrentCell","_selectRow","rowMatch","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","emptyAlign","langLocale","localeCompare","el1","el2","calc","d","as","bs","a1","b1","L","rx","rd","isFinite","string","time","boolean","array","alphanum","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortElement","columnHeaderSortMulti","newSortList","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","findSorter","setColumnHeader","_sortItems","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","defaultSorters","parameters","numeric","starts","ends","minLength","maxLength","regex","reg","unique","cellData","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","cellValidate","columnValidate","rowValidate","validator","_extractValidator","substring","_buildValidator","validators","invalidIndex","defaultValidators","TabulatorFull"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tabulator.js","sources":["../../src/js/core/defaults/options.js","../../src/js/core/CoreFeature.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/Column.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFuctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/TableRegistry.js","../../src/js/core/Module.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/Tabulator.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnMaxWidth:false, //minimum global width for a column\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //seperatpr for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}","export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value != value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = typeof def.headerTooltip === \"undefined\" ? def.tooltip : def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.offsetHeight;\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData();\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tthis.setWidthActual(maxWidth + 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj){\r\n\t\tvar clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tif(obj[i] != null && typeof(obj[i]) === \"object\"){\r\n\t\t\t\tif (obj[i] instanceof Date) {\r\n\t\t\t\t\tclone[i] = new Date(obj[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn clone;\r\n\t}\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = {};\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determin weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\r\n\t\tthis.fitDataColAvg = 0;\r\n\r\n\t\tthis.window = 200; //pixel margin to make column visible before it is shown on screen\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tthis.columns = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.compatabilityCheck();\r\n\t}\r\n\r\n\tcompatabilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\r\n\t\treturn ok;\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.window));\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t};\r\n\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.clear();\r\n\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.window;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\tvar colPos = 0;\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\r\n\t\t\t\tconfig.width = width;\r\n\r\n\t\t\t\tif (this.options(\"layout\") === \"fitData\") {\r\n\t\t\t\t\tconfig.fitDataCheck = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t \t\t//column is visible\r\n\r\n\t \t\tif(this.leftCol == -1){\r\n\t \t\t\tthis.leftCol = this.columns.length;\r\n\t \t\t\tthis.vDomPadLeft = colPos;\r\n\t \t\t}\r\n\r\n\t \t\tthis.rightCol = this.columns.length;\r\n\t \t}else{\r\n\t \t\t// column is hidden\r\n\t \t\tif(this.leftCol !== -1){\r\n\t \t\t\tthis.vDomPadRight += width;\r\n\t \t\t}\r\n\t \t}\r\n\r\n\t \tthis.columns.push(column);\r\n\r\n\t \tcolumn.modules.vdomHoz = config;\r\n\r\n\t \tcolPos += width;\r\n\t }\r\n\t });\r\n\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.renitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\r\n\t\tif(this.options(\"layout\") === \"fitData\"){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows()[0];\r\n\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\tif(row){\r\n\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\r\n\t\t\t\t\t\trow.generateCells();\r\n\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\r\n\t\t\t\t\t\t\tif(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\t\t\t\tthis.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\r\n\t\t\t\t\t\tfor(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t\tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn !match;\r\n\t}\r\n\r\n\trenitializeRows(){\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(diff > (this.elementVertical.clientWidth * .8)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\r\n\taddColRight(){\r\n\t\tvar column = this.columns[this.rightCol + 1],\r\n\t\trows, newWidth, widthDiff;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tthis.rightCol++;\r\n\r\n\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.addColRight();\r\n\t\t}\r\n\t}\r\n\r\n\taddColLeft(){\r\n\t\tvar column = this.columns[this.leftCol - 1],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tif(!this.leftCol){\r\n\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol--;\r\n\r\n\t\t\tthis.addColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColRight(column){\r\n\t\tvar column = this.columns[this.rightCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tcolumn.modules.vdomHoz.visible = false;\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.rightCol --;\r\n\r\n\t\t\tthis.removeColRight();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColLeft(){\r\n\t\tvar column = this.columns[this.leftCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\tif(cell.parentNode){\r\n\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol ++;\r\n\r\n\t\t\tthis.removeColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.rightCol + 2, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t};\r\n\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\");\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\r\n\t\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\r\n\t\t\tvar nextEl = nextToColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\t_verticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibileColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis._verticalAlignHeaders();\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(force){\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tthis._verticalAlignHeaders();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.render();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold caluclation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\r\n\t\tthis.firstRender = true;\r\n\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\t\t\t}\r\n\r\n\t\t\t//handle verical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\r\n\t\t\t\tthis._setDataActual(data);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\r\n\t\tthis._wipeElements();\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\r\n\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\r\n\t\t\tlength = data.length - 1;\r\n\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRenderInPosition();\r\n\r\n\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\r\n\t\treturn pos;\r\n\t}\r\n\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\r\n\t\t}else{\r\n\r\n\t\t\tif(top){\r\n\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\r\n\t\tthis.moveRowActual(from, to, after);\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\r\n\t\tif(from !== to){\r\n\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\r\n\t\t\tif (fromIndex > -1) {\r\n\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\r\n\t\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\r\n\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn nextRow;\r\n\t}\r\n\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn prevRow;\r\n\t}\r\n\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\r\n\t\trow = this.findRow(row);\r\n\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\r\n\t\treturn rows.length;\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\r\n\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tthis.dispatch(\"data-refeshing\");\r\n\r\n\t\t\tif(!handler){\r\n\t\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t\t}\r\n\r\n\t\t\t//cascade through data refresh stages\r\n\t\t\tswitch(stage){\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\t//handle case where alldata needs refreshing\r\n\r\n\t\t\t\tcase \"dataPipeline\":\r\n\r\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\r\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\r\n\t\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\t\tcase \"display\":\r\n\t\t\t\tindex = 0;\r\n\t\t\t\tthis.resetDisplayRows();\r\n\r\n\t\t\t\tcase \"displayPipeline\":\r\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\r\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcase \"end\":\r\n\t\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t\t}\r\n\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.renderTable();\r\n\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"data-refeshed\");\r\n\t\t}\r\n\t}\r\n\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\r\n\t\tvar output = true;\r\n\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\r\n\tgetVisibleRows(viewable){\r\n\t\treturn this.renderer.visibleRows(!viewable);\r\n\t}\r\n\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRederInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\r\n\trenderTable(){\r\n\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis._clearTable();\r\n\t\t\tthis.renderer.renderRows();\r\n\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-layout\");\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.table.options.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\tthis._clearPlaceholder();\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\r\n\t_showPlaceholder(){\r\n\t\tif(this.table.options.placeholder){\r\n\r\n\t\t\tthis.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\r\n\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\tthis.table.options.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearPlaceholder(){\r\n\t\tif(this.table.options.placeholder && this.table.options.placeholder.parentNode){\r\n\t\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\r\n\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\r\n\t\t\tthis.renderer.resize();\r\n\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRederInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.redrawBlockRederInPosition = false;\r\n\t}\r\n\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\r\n\t\tthis.adjustTableSize();\r\n\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\tif(!this.displayRowsCount){\r\n\t\t\t\tif(this.table.options.placeholder){\r\n\t\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tinitialize(){\r\n\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.el = this.table.element;\r\n\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\r\n\t\tthis.previousTargets = {};\r\n\r\n\t\tthis.listeners = [\r\n\t\t\"click\",\r\n\t\t\"dblclick\",\r\n\t\t\"contextmenu\",\r\n\t\t\"mouseenter\",\r\n\t\t\"mouseleave\",\r\n\t\t\"mouseover\",\r\n\t\t\"mouseout\",\r\n\t\t\"mousemove\",\r\n\t\t\"touchstart\",\r\n\t\t\"touchend\",\r\n\t\t];\r\n\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t}\r\n\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.previousTargets = targetMatches;\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFuctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", data, params, config, silent)){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tvar params = this.chain(\"data-params\", [data, config, silent], params || {}, {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], Promise.resolve([]));\r\n\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, 3000);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(optionsList, debug){\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name].prototype[property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\r\n\t\t\t\tthis.modules[name] = new mod(this);\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore[name] = this.modules[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.modulesRegular[name] = this.modules[name];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFuctionBinder from './tools/ComponentFuctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFuctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = {}; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = {}; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initialzeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediatly after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inderdevice communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitialzeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDepricatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\trtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//convert depricated functionality to new functions\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//concreate table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis.rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(this.options.data && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tfor (let key in this.modulesCore){\r\n\t\t\tlet mod = this.modulesCore[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\t//configure placeholder element\r\n\t\tif(typeof options.placeholder == \"string\"){\r\n\r\n\t\t\tvar el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\r\n\t\t\tvar span = document.createElement(\"span\");\r\n\t\t\tspan.innerHTML = options.placeholder;\r\n\r\n\t\t\tel.appendChild(span);\r\n\r\n\t\t\toptions.placeholder = el;\r\n\t\t}\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && this.options.data){\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tfor (let key in this.modulesRegular){\r\n\t\t\tlet mod = this.modulesRegular[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inderdevice communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(ua.substr(0,4));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//local data from local file\r\n\tsetDataFromLocalFile(extensions){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.type = \"file\";\r\n\t\t\tinput.accept = extensions || \".json,application/json\";\r\n\r\n\t\t\tinput.addEventListener(\"change\", (e) => {\r\n\t\t\t\tvar file = input.files[0],\r\n\t\t\t\treader = new FileReader(),\r\n\t\t\t\tdata;\r\n\r\n\t\t\t\treader.readAsText(file);\r\n\r\n\t\t\t\treader.onload = (e) => {\r\n\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tdata = JSON.parse(reader.result);\r\n\t\t\t\t\t} catch(e) {\r\n\t\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\r\n\t\t\t\t\t\treject(e);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.setData(data)\r\n\t\t\t\t\t.then((data) => {\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\tresolve(err);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\treader.onerror = (e) => {\r\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\r\n\t\t\t\t\treject();\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tinput.click();\r\n\t\t});\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\tresolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;","export default {}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach(function(type){\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {\r\n\tmethod: \"GET\",\r\n};","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","export default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\tvar output = this.generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = false; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\r\n\t\tthis.loaderPromise = false;\r\n\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\r\n\t\tif(this.table.options.ajaxParams){\r\n\t\t\tthis.setParams(this.table.options.ajaxParams);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxConfig){\r\n\t\t\tthis.setConfig(this.table.options.ajaxConfig);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\r\n\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\r\n\trequestData(data, params, config, silent, previousData){\r\n\t\tif(this.requestDataCheck(data)){\r\n\t\t\tif(data){\r\n\t\t\t\tthis.setUrl(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(params){\r\n\t\t\t\tthis.setParams(params, true);\r\n\t\t\t}\r\n\r\n\t\t\tif(config){\r\n\t\t\t\tthis.setConfig(config);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.sendRequest();\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\r\n\t//set ajax params\r\n\tsetParams(params, update){\r\n\t\tif(update){\r\n\t\t\tthis.params = this.params || {};\r\n\r\n\t\t\tfor(let key in params){\r\n\t\t\t\tthis.params[key] = params[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.params = params;\r\n\t\t}\r\n\t}\r\n\r\n\tgetParams(){\r\n\t\treturn this.params || {};\r\n\t}\r\n\r\n\t//load config object\r\n\tsetConfig(config){\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tfor(let key in config){\r\n\t\t\t\tthis.config[key] = config[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create config object from default\r\n\t_loadDefaultConfig(force){\r\n\t\tif(!this.config || force){\r\n\r\n\t\t\tthis.config = {};\r\n\r\n\t\t\t//load base config from defaults\r\n\t\t\tfor(let key in Ajax.defaultConfig){\r\n\t\t\t\tthis.config[key] = Ajax.defaultConfig[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\r\n\t//send ajax request\r\n\tsendRequest(silent){\r\n\t\tvar url = this.url,\r\n\t\tesc, query;\r\n\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, this.url, this.params) !== false){\r\n\t\t\treturn this.loaderPromise(url, this.config, this.params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, this.url, this.params, data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refeshed\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(this);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\tfirstCol = this.table.columnManager.getFirstVisibileColumn(),\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\t\t\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-relayout\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tcheckForRestyle(cell){\r\n\t\tif(!cell.row.cells.indexOf(cell)){\r\n\t\t\tcell.row.reinitialize();\r\n\t\t}\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}else{\r\n\t\t\t\trowData.push(\"\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refeshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tnav.next();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.validate){\r\n\t\t\t\t\tcell.validate();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tcolumns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tif(left !== this.table.rowManager.element.scrollLeft){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tthis.changed = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = (window.DateTime || luxon.DateTime).fromFormat(value, inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = DT.fromFormat(value, inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-before\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\r\n\t\tif(!column.isGroup){\r\n\r\n\t\t\tif(this.frozenCheck(column)){\r\n\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.active = true;\r\n\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\r\n\t\treturn frozen;\r\n\t}\r\n\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\t//layout all rows after scroll is complete\r\n\t\t\tthis.scrollEndTimer = setTimeout(() => {\r\n\t\t\t\tthis.layout();\r\n\t\t\t}, 100);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate margins for rows\r\n\tcalcMargins(){\r\n\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\r\n\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\r\n\t\tvar leftParents = [];\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this._calcSpace(this.leftColumns, i) + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - this._calcSpace(this.rightColumns, i + 1)) + \"px\";\r\n\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\r\n\t//layout columns appropropriatly\r\n\tlayout(){\r\n\t\tvar rightMargin = 0;\r\n\r\n\t\tif(this.active){\r\n\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutElement(element, column){\r\n\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.arrowElement = false;\r\n\t\t\tthis.elementContents = false;\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\taddBindings(){\r\n\t\tvar dblTap,\ttapHold, tap, toggleElement;\r\n\r\n\t\tif ((this.groupManager.table.options.groupContextMenu || this.groupManager.table.options.groupClickMenu) && this.groupManager.table.modExists(\"menu\")){\r\n\t\t\tthis.groupManager.table.modules.menu.initializeGroup.call(this.groupManager.table.modules.menu, this);\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTap){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tthis.groupManager.table.options.groupTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupDblTap){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tthis.groupManager.table.options.groupDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTapHold){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tthis.groupManager.table.options.groupTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\t_addRowToGroup(row){\r\n\r\n\t\tvar level = this.level + 1;\r\n\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\r\n\t\trow.updateData(data);\r\n\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trow.modules.group = this;\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\r\n\tscrollHeader(left){\r\n\t\tthis.arrowElement.style.marginLeft = left;\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\tchild.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tgetRowIndex(row){}\r\n\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\r\n\t\toutput.push(this);\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\r\n\t\t\tvar prev = this.getElement();\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\r\n\t\tif(typeof this.visible == \"function\"){\r\n\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\r\n\t////////////// Standard Row Functions //////////////\r\n\r\n\tgetElement(){\r\n\t\tthis.addBindingsd = false;\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t// this.addBindings();\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.groupIDLookups.length){\r\n\r\n\t\t\tif(!Object.keys(this.groups).length){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList =[];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.history.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"table-building\", this.tableElementCheck.bind(this));\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.element.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.element,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for tablator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\t//create new element\r\n\t\tvar newElement = document.createElement(\"div\");\r\n\r\n\t\t//transfer attributes to new element\r\n\t\tvar attributes = element.attributes;\r\n\r\n\t\t// loop through attributes and apply them on div\r\n\r\n\t\tfor(var i in attributes){\r\n\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// replace table with div element\r\n\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\r\n\t\tthis.table.element = newElement;\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for tablator inline options\r\n\t\t\tattributes = header.attributes;\r\n\r\n\t\t\t// //check for tablator inline options\r\n\t\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:\"ctrl + 90\",\r\n\tredo:\"ctrl + 89\",\r\n\tcopyToClipboard:\"ctrl + 67\",\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", []); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\r\n\t\t\tfor(let key in Keybindings.bindings){\r\n\t\t\t\tmergedBindings[key] = Keybindings.bindings[key];\r\n\t\t\t}\r\n\r\n\t\t\tif(Object.keys(bindings).length){\r\n\r\n\t\t\t\tfor(let key in bindings){\r\n\t\t\t\t\tmergedBindings[key] = bindings[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tthis.mapBinding(key, binding);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tif(cell.column.definition.contextMenu || cell.column.definition.clickMenu){\r\n\t\t\tthis.initializeCell(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerContextMenu || def.headerClickMenu || def.headerMenu){\r\n\t\t\tthis.initializeColumnHeader(column);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnHeader(column){\r\n\t\tvar headerMenuEl;\r\n\r\n\t\tif(column.definition.headerContextMenu){\r\n\t\t\tcolumn.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));\r\n\t\t\tthis.tapHold(column, column.definition.headerContextMenu);\r\n\t\t}\r\n\r\n\t\t// if(column.definition.headerClickMenu){\r\n\t\t// \tcolumn.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));\r\n\t\t// }\r\n\r\n\t\tif(column.definition.headerMenu){\r\n\r\n\t\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\r\n\t\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.LoadMenuEvent(column, column.definition.headerMenu, e);\r\n\t\t\t});\r\n\r\n\t\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t\t}\r\n\t}\r\n\r\n\tLoadMenuEvent(component, menu, e){\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\r\n\t\t// if(component instanceof Cell){\r\n\t\t// \te.stopImmediatePropagation();\r\n\t\t// }\r\n\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\r\n\ttapHold(component, menu){\r\n\t\tvar element = component.getElement(),\r\n\t\ttapHold = null,\r\n\t\tloaded = false;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\tloaded = false;\r\n\r\n\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t\tloaded = true;\r\n\r\n\t\t\t\tthis.LoadMenuEvent(component, menu, e);\r\n\t\t\t}, 1000);\r\n\r\n\t\t}, {passive: true});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tif(loaded){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.contextMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));\r\n\t\t\tthis.tapHold(cell, cell.column.definition.contextMenu);\r\n\t\t}\r\n\r\n\t\tif(cell.column.definition.clickMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"click\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\trow.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));\r\n\t\t\tthis.tapHold(row, this.table.options.rowContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\trow.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroup (group){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));\r\n\t\t\tthis.tapHold(group, this.table.options.groupContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tloadMenu(e, component, menu, parentEl){\r\n\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t}\r\n\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar docHeight = Math.max(document.body.offsetHeight, window.innerHeight),\r\n\t\tx, y, parentOffset;\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\r\n\t\tdocument.body.appendChild(element);\r\n\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) >= docHeight){\r\n\t\t\telement.style.top = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.bottom = (docHeight - parentOffset.top - parentEl.offsetHeight - 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.bottom = (docHeight - y) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= document.body.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t}\r\n\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\r\n\thideMenu(){\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\r\n\t\tif(!column.modules.frozen){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement();\r\n\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = \"0\";\r\n\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Page extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\r\n\t\tthis.pageSizes = [];\r\n\r\n\t\tthis.dataReceivedNames = {}; //TODO - remove once pagimation update is complete\r\n\t\tthis.dataSentNames = {}; //TODO - remove once pagimation update is complete\r\n\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initail page to show on load\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {index, top}\r\n\t}\r\n\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Promise.reject();\r\n\t}\r\n\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup pageination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel;\r\n\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set the maxmum page\r\n\tsetMaxPage(max){\r\n\r\n\t\tmax = parseInt(max);\r\n\r\n\t\tthis.max = max || 1;\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\r\n\t\tpage = parseInt(page);\r\n\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\r\n\t\treturn button;\r\n\t}\r\n\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger()\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar output, start, end;\r\n\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\r\n\t\t\tthis.setMaxRows(data.length);\r\n\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tif(data[i]){\r\n\t\t\t\t\toutput.push(data[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\ttrigger(){\r\n\t\tvar left;\r\n\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.last_page + \"' property\");\r\n\t\t}\r\n\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.table.rowManager.getData().concat(data.data);\r\n\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.data + \"' property\");\r\n\t\t}\r\n\r\n\t\treturn data.data;\r\n\t}\r\n\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.element;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.substr(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.substr(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar pushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[this.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? this.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = this.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tthis.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\r\n\t\tif(mode === true || mode == type){\r\n\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\r\n\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn();\r\n\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tthis.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate resposive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//detemine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column, i){\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && self.mode === \"collapse\"){\r\n\t\t\t\t\t\tself.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort(function(a, b){\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initialize();\r\n\t\t}\r\n\r\n\t\t//this.update();\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerText = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.clearSelectionData.bind(this));\r\n\r\n\t\t\tif(this.table.options.selectable && this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refeshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\r\n\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\r\n\t\trow.modules.select = {selected:false};\r\n\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\r\n\r\n\t\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\r\n\t\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\r\n\r\n\t\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\r\n\t\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\r\n\t\t\t\t\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\t\ttoggledRows.forEach(function(toggledRow){\r\n\t\t\t\t\t\t\t\t\tif(toggledRow !== self.lastClickedRow){\r\n\r\n\t\t\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true && !self.isRowSelected(row)){\r\n\t\t\t\t\t\t\t\t\t\t\tif(self.selectedRows.length < self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\r\n\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true){\r\n\t\t\t\t\t\t\t\t\tif(toggledRows.length > self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tself.selectRows(toggledRows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\t\t\t\t\t\t\tself.selectRows(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"string\":\r\n\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\r\n\t\tif(typeof rows == \"undefined\"){\r\n\r\n\t\t\trowCount = self.selectedRows.length;\r\n\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\r\n\t\t\tself._rowSelectionChanged(silent);\r\n\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetSelectedRows(){\r\n\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = DT.fromFormat(a, format);\r\n\t\tb = DT.fromFormat(b, format);\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach(function(item){\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach(function(item){\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;"],"names":["debugEventsExternal","debugEventsInternal","debugInvalidOptions","height","minHeight","maxHeight","columnMaxWidth","columnHeaderVertAlign","columns","columnDefaults","data","autoColumns","autoColumnsDefinitions","nestedFieldSeparator","tooltipGenerationMode","footerElement","index","textDirection","addRowPos","headerVisible","renderVertical","renderHorizontal","renderVerticalBuffer","scrollToRowPosition","scrollToRowIfVisible","scrollToColumnPosition","scrollToColumnIfVisible","rowFormatter","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","placeholder","dataLoader","dataLoaderLoading","dataLoaderError","dataSendParams","dataReceiveParams","CoreFeature","table","silent","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","value","options","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","cells","forEach","cell","push","getComponent","visible","isGroup","show","hide","output","length","parent","Column","columnManager","scrollToColumn","to","after","toColumn","findColumn","moveColumn","console","warn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","width","result","reinitializeWidth","setWidth","renderer","rerenderColumns","CellComponent","_cell","getValue","getOldValue","initialValue","row","getData","mutate","setValue","setValueActual","checkHeight","Cell","element","oldValue","minWidth","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","field","vertAligns","top","bottom","middle","hozAligns","left","right","center","style","textAlign","hozAlign","vertAlign","display","alignItems","justifyContent","definition","cssClass","classNames","split","classList","add","addEventListener","e","_generateTooltip","val","innerHTML","Node","firstChild","removeChild","appendChild","tooltip","containerOnly","layoutElement","changed","setValueProcessData","cellRendered","dispatchExternal","subscribedExternal","rowManager","setFieldValue","_generateContents","widthStyled","offsetWidth","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getCellIndex","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleFormatterRendered","mapDefinitions","setField","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","el","defaults","optionsList","generate","defaultOptionList","Object","keys","indexOf","title","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","headerTooltip","langBind","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","setTooltip","dblTap","tapHold","tap","headerClick","headerDblClick","headerContext","headerTap","passive","headerDblTap","clearTimeout","setTimeout","headerTapHold","classeNames","setMinWidth","parseInt","setMaxWidth","headerHozAlign","_buildColumnHeaderTitle","editableTitle","stopPropagation","focus","text","_formatColumnHeaderTitle","contents","dataObj","structure","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","paddingTop","verticalAlign","clearVerticalAlign","formatter","rowNumColumn","getFirstColumn","getLastColumn","getTopColumn","updateBranches","colDefs","responsiveToggle","_verticalAlignHeaders","matchChildWidths","childWidth","child","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","Promise","resolve","reject","cellCount","deregisterColumn","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","force","fitToData","clearWidth","assign","addColumn","then","error","defaultOptions","Helpers","box","getBoundingClientRect","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","obj","clone","Array","isArray","Date","deepClone","OptionsList","msgType","registeredDefaults","option","userOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","callback","update","blockRedraw","dir","includingBuffer","getDisplayRows","rowEl","remove","clearRows","clearColumns","renderRows","renderColumns","rerenderRows","position","ifVisible","rowIndex","offset","elVisible","elOffset","scrollToRowNearestTop","scrollToRow","scrollHeight","scrollTop","offsetTop","BaiscHorizontal","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","initialized","compatabilityCheck","frozen","ok","find","col","dataChange","scroll","old","cols","clear","colPos","columnsByIndex","config","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","renitializeRows","initializeRow","reinitializeRow","change","collsWidth","colEnd","generateCells","layoutRefresh","match","getVisibleRows","diff","addColRight","removeColLeft","addColLeft","removeColRight","start","end","getCell","fitDataColActualWidthCheck","prepend","newWidth","widthDiff","colPositionAdjust","ColumnManager","blockHozScrollEvent","headersElement","columnsByField","initializeRenderer","createHeadersElement","createHeaderElement","insertBefore","scrollHorizontal","renderClass","renderers","RendererVirtualDomHorizontal","RendererBasicHorizontal","initialize","hozAdjust","scrollWidth","marginLeft","scrollColumns","definitions","sorter","call","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","parentIndex","nextEl","nextSibling","unshift","columnRendered","getHeight","adjustTableSize","subject","_getSelf","HTMLElement","root","matches","fieldRoot","findIndex","active","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","getComponents","updateRows","fromIndex","toIndex","concat","adjust","offsetLeft","generateCell","totalWidth","fixedWidth","colWidth","layoutMode","resetScroll","footerManager","RowComponent","_row","transform","getCells","getRowPosition","moveToRow","updateData","normalizeHeight","nextRow","prevRow","Row","manualHeight","outerHeight","created","setData","create","deleteCells","renderRowCells","rerenderRowCells","children","resizableRows","setHeight","clearHeight","updatedData","tempData","newRowData","JSON","parse","attrname","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","getRowIndex","detatchModules","deleteRow","group","BaiscVertical","visibility","onlyGroupHeaders","styleRow","render","rowTop","abs","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","containerHeight","ceil","rowHeight","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","firstRender","renderMode","fixedHeight","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRederInPosition","dataPipeline","displayPipeline","leftDir","topDir","scrollRows","renderInPosition","columnsChanged","pagination","_setDataActual","reRenderInPosition","generateColumnsFromRowData","_wipeElements","wipe","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowNumbers","_showPlaceholder","pos","addRowActual","findAddRowPos","reverse","item","addRow","_clearPlaceholder","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","list","getRows","handler","priority","sort","a","b","skipStage","stage","cascadeOrder","resetDisplayRows","setDisplayRows","renderTable","layoutColumnsOnNewData","viewable","visibleRows","RendererVirtualDomVertical","RendererBasicVertical","_clearTable","renderEmptyScroll","initialHeight","otherHeight","external","resize","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","links","initializeElement","querySelector","activate","deactivate","link","footerRedraw","InteractionManager","abortClasses","previousTargets","listeners","componentMap","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","values","comp","subscriptionChanged","added","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","abort","filter","includes","elTargets","targetMatches","previousTarget","ComponentFuctionBinder","bindings","funcName","hanlder","startsWith","DataLoader","loaderElement","createLoaderElement","msgElement","createMsgElement","loadingElement","errorElement","requestOrder","loading","template","trim","firstElementChild","params","replace","requestNo","showLoader","mapParams","response","objectInvert","rowData","hideLoader","showError","map","shouldLoad","langText","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifiySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","subscriber","confirmed","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Module","_handler","register","func","registerDataPipelineHandler","registerDisplayPipelineHandler","reinitializeColumnWidths","responsiveLayout","modExists","colsWidth","gap","lastCol","responsive","flexWidth","flexGrowUnits","flexColWidth","flexColumns","fixedShrinkColumns","flexShrinkUnits","overflowWidth","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","fitData","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","fitColumns","Layout","mode","registerTableOption","registerColumnOption","modes","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","registerTableFunction","getLang","headerFilters","_setLangProp","desiredLocale","traverseLang","trans","prop","navigator","language","toLowerCase","prefix","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","defaultLangs","Comms","receive","selectors","connections","connection","con","action","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFuctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","prototype","registerModule","mod","registerModuleBinding","findTable","moduleCore","modulesCore","modulesRegular","core","mods","interactionMonitor","browserSlow","browserMobile","rtl","initialzeCoreSystems","_create","_clearObjectPointers","_mapDepricatedFunctionality","InteractionMonitor","getComputedStyle","direction","getSelection","empty","removeAllRanges","selection","rtlCheck","_buildElement","_loadInitialData","reactiveData","_detectBrowser","span","deregister","ua","userAgent","vendor","opera","test","substr","restoreRedraw","extensions","input","accept","file","files","reader","FileReader","readAsText","onload","err","onerror","click","blockActiveLoad","clearData","getDataCount","responses","addRows","newRows","getRowFromPosition","foundRows","fromRow","getDefinitionTree","fromColumn","plugin","required","Accessor","allowedTypes","initializeColumn","transformRow","charAt","toUpperCase","accessor","lookupAccessor","accessors","rowComponent","traverse","colCompnent","defautlAccessors","method","generateParamsList","serializeParams","encoded","encodeURIComponent","join","url","contentType","urlGenerator","ajaxContentType","contentTypeFormatters","headers","body","Accept","location","origin","credentials","fetch","json","status","statusText","stringify","form","FormData","append","Ajax","loaderPromise","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxParams","setParams","ajaxConfig","setConfig","ajaxURL","setUrl","getUrl","requestDataCheck","requestData","previousData","sendRequest","_loadDefaultConfig","defaultConfig","ajaxRequesting","ajaxResponse","defaultContentTypeFormatters","updateOrAddData","insert","addData","clipboard","headerFindSuccess","columnMap","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","generateExportList","clipboardCopyConfig","clipboardCopyStyled","genereateHTMLTable","generatePlainContent","clipboardData","originalEvent","reset","paste","setPasteParser","clipboardPasteParser","setPasteAction","clipboardPasteAction","copy","getKey","range","internal","sel","textRange","createRange","selectNodeContents","toString","addRange","createTextRange","moveToElementText","select","execCommand","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","mutator","valid","tagName","edit","currentCell","defaultPasteActions","defaultPasteParsers","CalcComponent","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","tableRedraw","getResults","userRecalc","recalc","groupBy","recalcRowGroup","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","groups","getChildGroups","generateRowData","dataTree","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","getFormatter","paramKey","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","registerComponentFunction","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","dummyEl","firstCol","getFirstVisibileColumn","dataTreeChildField","dataTreeChildIndent","dataTreeElementColumn","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","dataTreeStartExpanded","layoutRow","rowDelete","rowDataChanged","columnMoving","registerDisplayHandler","getTreeChildren","redrawNeeded","refreshData","childArray","controlEl","generateControlElement","cloneNode","marginRight","getPropertyValue","oldControl","replaceChild","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","subChildren","sub","childData","childRow","childIndex","findChildIndex","recurse","setFileContents","delimiter","fileContents","depth","bom","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","orientation","unit","parseRow","styles","content","colSpan","rowSpan","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","self","sheetName","workbook","XLSX","utils","book_new","tableFeatures","SheetNames","Sheets","generateSheet","merges","worksheet","s","c","r","j","sheet_add_aoa","encode_range","sheetOnly","sheets","sheet","commsSend","intercept","s2ab","buf","ArrayBuffer","view","Uint8Array","charCodeAt","write","bookType","bookSST","csv","pdf","xlsx","Download","blob","download","downloadToTab","filename","interceptCallback","downloadFunc","buildLink","mime","triggerDownload","downloaders","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","Blob","downloadReady","URL","createObjectURL","msSaveOrOpenBlob","defaultDownloaders","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","keyCode","maskAutoFill","onRendered","success","cancel","editorParams","cellValue","search","padding","boxSizing","elementAttributes","getAttribute","preventScroll","onChange","vertNav","verticalNavigation","count","whiteSpace","getRow","heightNow","selectionStart","stopImmediatePropagation","step","blurFunc","cellEl","initialDisplayValue","defaultValue","listEl","multiselect","dataItems","currentItem","displayItems","currentItems","blurable","blockListShow","searchWord","searchWordTimeout","getUniqueColumnValues","getColumnByField","getColumn","parseItems","inputValues","curentValues","dataList","displayList","processComplexListItem","label","itemParams","setItem","sortValuesList","fillList","listItemFormatter","toggleItem","chooseItem","setCurrentItem","scrollIntoView","behavior","block","inline","fillInput","unsetItem","hideList","chooseItems","unsetItems","len","cancelItem","showList","removeScrollListener","scrollTovalue","character","fromCharCode","cursor","readOnly","uniqueColumnValues","genUniqueColumnValues","filterList","term","intialLoad","items","searchFunc","addNotice","searchingPlaceholder","fillListIfNotEmpty","showListOnEmpty","notice","searchEl","clearList","itemList","emptyPlaceholder","current","freetext","allowEmpty","showInputValue","maxStars","getElementsByTagName","size","stars","starsHolder","star","createElementNS","starChange","buildStar","starHolder","nextStar","blur","changeValue","overflow","textOverflow","percent","bar","mouseDrag","mouseDragWidth","updateValue","calcVal","round","backgroundColor","screenX","tristate","indetermValue","indeterminateValue","indetermState","marginTop","indeterminate","checked","textarea","number","autocomplete","progress","tickCross","Edit","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellisEdited","clearEdited","editCell","cellCancelEdit","bindEditor","columnDeleteCheck","rowDeleteCheck","cancelEdit","keybindingNavigateNext","newRow","nav","next","edited","nextCell","findNextEditableCell","getIndex","findPrevEditableCell","allowEdit","check","prevCell","editor","editable","validate","clearEditor","variableHeight","cellEditCancelled","contains","button","forceEdit","focusCellNoEvent","getRenderMode","leftEdge","rightEdge","leftMargin","rightMargin","rendered","cellEditor","validationMode","checkForRestyle","focusScrollAdjust","cellClick","cellEditing","editIndex","invalid","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","genereateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","genereateHeaderElement","genereateGroupElement","genereateCalcElement","genereateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","generator","isVisible","cellWrapper","formatCells","formatExportValue","align","renderedCallback","htmlOutputConfig","props","lookup","fromStyle","filterVal","rowVal","filterParams","RegExp","keywords","separator","keyword","matchAll","endsWith","Filter","headerFilterColumns","prevHeaderFilterChangeCheck","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","filterMode","remoteFilterParams","registerDataHandler","initialFilter","setFilter","initialHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","setHeaderFilterColumnPlaceholder","filterType","tagType","attrType","filterChangeCheck","filterFunc","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","reloadData","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","defaultFilters","formatterParams","emptyToSpace","sanitizeHTML","floatVal","integer","decimal","rgx","decimalSym","thousandSym","thousand","symbolAfter","urlPrefix","labelField","urlField","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","DT","DateTime","luxon","inputFormat","outputFormat","invalidPlaceholder","newDatetime","fromFormat","isValid","timezone","shiftTimezone","toFormat","suffix","humanize","date","now","starActive","starInactive","colors","color","percentValue","legendAlign","legend","legendColor","barEl","barContainer","legendEl","holderEl","toggleList","isOpen","checkbox","toggleSelect","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","plaintext","money","image","datetime","datetimediff","traffic","buttonTick","buttonCross","rownum","responsiveCollapse","rowSelection","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","rightPadding","initializationMode","scrollEndTimer","layoutCell","edge","frozenCheck","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","allCells","leftParents","parentEl","getColGroupParentElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","toggleVisibility","groupManager","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","groupList","elementContents","arrowElement","createElements","addBindings","createValueGroups","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","toggleElement","groupContextMenu","groupClickMenu","menu","initializeGroup","groupTap","groupDblTap","groupTapHold","groupToggleElement","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","updateGroupRows","scrollHeader","groupValues","removeGroup","noCalc","_visSet","getHeadersAndRows","hasTopCalcs","detachElement","generateTopRow","hasBottomCalcs","generateBottomRow","groupClosedShowCalcs","getDisplayIndex","checkClassicModeGroupHeaderWidth","prev","compoment","getPath","addBindingsd","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","groupStartOpen","langValue","removeCalcs","getRealColumns","lookupFunc","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","removeRow","insertRow","generateGroups","groupComponents","groupListData","rowCount","headerContent","pullGroupListData","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","samePath","every","groupPath","groupId","cellEdit","rowAdd","_rebindRow","rowMove","posFrom","newValue","posTo","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","getGroup","undoers","redoers","oldRow","defaultUndoers","defaultRedoers","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","newElement","attributes","optionsArr","attrib","_attribValue","exists","_findCol","textContent","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tapDbl","initializeExternalEvents","cellContentsSelectionFixer","selectNode","subscriptionChangeExternal","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","notouch","watchers","componentObj","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","scrollMax","navLeft","navRight","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","actions","mapBinding","symbolsList","ctrl","meta","symbols","code","checkBinding","ctrlKey","shiftKey","metaKey","defaultBindings","defaultActions","Menu","menuElements","blurEvent","hideMenu","escEvent","escMenu","nestedMenuBlock","positionReversedX","contextMenu","clickMenu","initializeCell","headerContextMenu","headerClickMenu","headerMenu","initializeColumnHeader","headerMenuEl","LoadMenuEvent","loadMenu","rowContextMenu","rowClickMenu","touch","MouseEvent","menuEl","itemEl","disabled","hideOldSubMenus","positionMenu","pop","docHeight","innerHeight","x","y","parentOffset","touches","pageX","pageY","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","mousemove","which","startMove","bindTouchEvents","startXMove","prevColWidth","nextColWidthLast","prevColWidthLast","moveToCol","_bindMouseMove","movingCells","_unbindMouseMove","columnHolder","xPos","scrollPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","mouseup","tableRowDrop","previousSibling","rowHandle","startYMove","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","setStartPosition","connectToTables","pointerEvents","getTableElement","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","connectionTables","commsConnections","dropEvent","elementRowDrop","tabulatorElementDropEvent","sender","movableRowsSender","senders","movableRowsReceiver","receivers","connect","disconnect","dropComplete","fromTable","toTable","Mutator","enabled","transformCell","lookupMutator","mutators","mutatorEdit","defaultMutators","Page","progressiveLoad","page","initialLoad","dataChanging","pageSizes","dataReceivedNames","dataSentNames","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","rowAddingPosition","initialLoadComplete","calculatePageSizes","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePaginator","initializeProgressive","scrollVertical","dispRows","testElRow","testElCell","paginationSize","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","hidden","pageSelectLabel","paginationElement","paginationInitialPage","paginationButtonCount","generatePageSizeSelectList","trigger","leftSize","rightSize","_generatePageButton","setMaxRows","_setPageButtons","last_page","progressiveLoadDelay","footer","local","id","localStorage","getItem","cookie","cookiePos","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","testKey","removeItem","persistence","persistenceMode","persistenceID","retreivedData","localStorageTest","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retreiveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","getColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","Print","manualBlock","printAsHtml","replaceTable","cleanup","printFullscreen","genereateTable","printConfig","printStyled","printRowRange","scrollX","scrollY","footerEl","tableEl","footerContent","printHeader","printFooter","printFormatter","scrollTo","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","getRowFromDataObject","startRow","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","ResizeColumns","startColumn","startWidth","prevHandle","layoutCellHandles","layoutColumnHeader","resizable","handleDown","nearestColumn","_checkResizability","_mouseDown","prevHandleDown","colIndex","mouseMove","checkCellHeights","mouseUp","ResizeRows","startHeight","screenY","ResizeTable","observer","containerObserver","tableHeight","containerWidth","autoResize","tableStyle","ResizeObserver","entry","nodeHeight","contentRect","nodeWidth","observe","tableResized","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","generateCollapsedRowContent","colCount","working","getFlexBaseWidth","hideColumn","showColumn","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","titleData","valueData","node_content","titleHighlight","innerText","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","selectablePersistence","_deselectRow","_rowSelectionChanged","endSelect","selected","selectableCheck","selectableRangeMode","_clearSelection","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","getCurrentCell","_selectRow","rowMatch","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","emptyAlign","langLocale","localeCompare","el1","el2","calc","d","as","bs","a1","b1","L","rx","rd","isFinite","string","time","boolean","array","alphanum","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortElement","columnHeaderSortMulti","newSortList","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","findSorter","setColumnHeader","_sortItems","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","defaultSorters","parameters","numeric","starts","ends","minLength","maxLength","regex","reg","unique","cellData","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","cellValidate","columnValidate","rowValidate","validator","_extractValidator","substring","_buildValidator","validators","invalidIndex","defaultValidators","TabulatorFull"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/tabulator.min.js b/dist/js/tabulator.min.js index dcdb89a22..7aa09af2c 100644 --- a/dist/js/tabulator.min.js +++ b/dist/js/tabulator.min.js @@ -1,3 +1,3 @@ -/* Tabulator v5.0.0 (c) Oliver Folkerd 2021 */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Tabulator=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var i=0;ie.length)&&(t=e.length);for(var i=0,n=new Array(t);i=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,r=!0,s=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return r=e.done,e},e:function(e){s=!0,a=e},f:function(){try{r||null==i.return||i.return()}finally{if(s)throw a}}}}var f=function(){function e(i){t(this,e),this.table=i}return o(e,[{key:"reloadData",value:function(e,t){return this.table.dataLoader.load(e,void 0,void 0,void 0,t)}},{key:"langText",value:function(){var e;return(e=this.table.modules.localize).getText.apply(e,arguments)}},{key:"langBind",value:function(){var e;return(e=this.table.modules.localize).bind.apply(e,arguments)}},{key:"langLocale",value:function(){var e;return(e=this.table.modules.localize).getLocale.apply(e,arguments)}},{key:"commsConnections",value:function(){var e;return(e=this.table.modules.comms).getConnections.apply(e,arguments)}},{key:"commsSend",value:function(){var e;return(e=this.table.modules.comms).send.apply(e,arguments)}},{key:"layoutMode",value:function(){return this.table.modules.layout.getMode()}},{key:"layoutRefresh",value:function(){return this.table.modules.layout.layout()}},{key:"subscribe",value:function(){var e;return(e=this.table.eventBus).subscribe.apply(e,arguments)}},{key:"unsubscribe",value:function(){var e;return(e=this.table.eventBus).unsubscribe.apply(e,arguments)}},{key:"subscribed",value:function(e){return this.table.eventBus.subscribed(e)}},{key:"subscriptionChange",value:function(){var e;return(e=this.table.eventBus).subscriptionChange.apply(e,arguments)}},{key:"dispatch",value:function(){var e;return(e=this.table.eventBus).dispatch.apply(e,arguments)}},{key:"chain",value:function(){var e;return(e=this.table.eventBus).chain.apply(e,arguments)}},{key:"confirm",value:function(){var e;return(e=this.table.eventBus).confirm.apply(e,arguments)}},{key:"dispatchExternal",value:function(){var e;return(e=this.table.externalEvents).dispatch.apply(e,arguments)}},{key:"subscribedExternal",value:function(e){return this.table.externalEvents.subscribed(e)}},{key:"subscriptionChangeExternal",value:function(){var e;return(e=this.table.externalEvents).subscriptionChange.apply(e,arguments)}},{key:"options",value:function(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}},{key:"setOption",value:function(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}},{key:"module",value:function(e){return this.table.module(e)}}]),e}(),g=function(){function e(i){return t(this,e),this._column=i,this.type="ColumnComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._column.table.componentFunctionBinder.handle("column",e._column,t)}})}return o(e,[{key:"getElement",value:function(){return this._column.getElement()}},{key:"getDefinition",value:function(){return this._column.getDefinition()}},{key:"getField",value:function(){return this._column.getField()}},{key:"getCells",value:function(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}},{key:"isVisible",value:function(){return this._column.visible}},{key:"show",value:function(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}},{key:"hide",value:function(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}},{key:"toggle",value:function(){this._column.visible?this.hide():this.show()}},{key:"delete",value:function(){return this._column.delete()}},{key:"getSubColumns",value:function(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}},{key:"getParentColumn",value:function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()}},{key:"_getSelf",value:function(){return this._column}},{key:"scrollTo",value:function(){return this._column.table.columnManager.scrollToColumn(this._column)}},{key:"getTable",value:function(){return this._column.table}},{key:"move",value:function(e,t){var i=this._column.table.columnManager.findColumn(e);i?this._column.table.columnManager.moveColumn(this._column,i,t):console.warn("Move Error - No matching column found:",i)}},{key:"getNextColumn",value:function(){var e=this._column.nextColumn();return!!e&&e.getComponent()}},{key:"getPrevColumn",value:function(){var e=this._column.prevColumn();return!!e&&e.getComponent()}},{key:"updateDefinition",value:function(e){return this._column.updateDefinition(e)}},{key:"getWidth",value:function(){return this._column.getWidth()}},{key:"setWidth",value:function(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.renderer.rerenderColumns(!0),t}}]),e}(),v={title:void 0,field:void 0,columns:void 0,visible:void 0,hozAlign:void 0,vertAlign:void 0,width:void 0,minWidth:40,maxWidth:void 0,tooltip:void 0,cssClass:void 0,variableHeight:void 0,headerTooltip:void 0,headerVertical:void 0,headerHozAlign:void 0,editableTitle:void 0},b=function(){function e(i){return t(this,e),this._cell=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}return o(e,[{key:"getValue",value:function(){return this._cell.getValue()}},{key:"getOldValue",value:function(){return this._cell.getOldValue()}},{key:"getInitialValue",value:function(){return this._cell.initialValue}},{key:"getElement",value:function(){return this._cell.getElement()}},{key:"getRow",value:function(){return this._cell.row.getComponent()}},{key:"getData",value:function(){return this._cell.row.getData()}},{key:"getField",value:function(){return this._cell.column.getField()}},{key:"getColumn",value:function(){return this._cell.column.getComponent()}},{key:"setValue",value:function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}},{key:"restoreOldValue",value:function(){this._cell.setValueActual(this._cell.getOldValue())}},{key:"restoreInitialValue",value:function(){this._cell.setValueActual(this._cell.initialValue)}},{key:"checkHeight",value:function(){this._cell.checkHeight()}},{key:"getTable",value:function(){return this._cell.table}},{key:"_getSelf",value:function(){return this._cell}}]),e}(),y=function(i){a(r,i);var n=c(r);function r(e,i){var o;return t(this,r),(o=n.call(this,e.table)).table=e.table,o.column=e,o.row=i,o.element=null,o.value=null,o.initialValue,o.oldValue=null,o.modules={},o.height=null,o.width=null,o.minWidth=null,o.component=null,o.loaded=!1,o.build(),o}return o(r,[{key:"build",value:function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}},{key:"generateElement",value:function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element}},{key:"_configureCell",value:function(){var e=this,t=this.element,i=this.column.getField();(t.style.textAlign=this.column.hozAlign,this.column.vertAlign&&(t.style.display="inline-flex",t.style.alignItems={top:"flex-start",bottom:"flex-end",middle:"center"}[this.column.vertAlign]||"",this.column.hozAlign&&(t.style.justifyContent={left:"flex-start",right:"flex-end",center:"center"}[this.column.hozAlign]||"")),i&&t.setAttribute("tabulator-field",i),this.column.definition.cssClass)&&this.column.definition.cssClass.split(" ").forEach((function(e){t.classList.add(e)}));"hover"===this.table.options.tooltipGenerationMode&&t.addEventListener("mouseenter",(function(t){e._generateTooltip()})),this.dispatch("cell-init",this),this.column.visible||this.hide()}},{key:"_generateContents",value:function(){var t,i=this;switch(e(t=this.chain("cell-format",this,null,(function(){return i.element.innerHTML=i.value})))){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}}},{key:"cellRendered",value:function(){this.dispatch("cell-rendered",this)}},{key:"_generateTooltip",value:function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")}},{key:"getElement",value:function(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}},{key:"getValue",value:function(){return this.value}},{key:"getOldValue",value:function(){return this.oldValue}},{key:"setValue",value:function(e,t){this.setValueProcessData(e,t)&&(this.dispatch("cell-value-updated",this),this.cellRendered(),this.dispatchExternal("cellEdited",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()))}},{key:"setValueProcessData",value:function(e,t){var i=!1;return this.value!=e&&(i=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),i&&this.dispatch("cell-value-changed",this),i}},{key:"setValueActual",value:function(e){this.oldValue=this.value,this.value=e,this.dispatch("cell-value-save-before",this),this.column.setFieldValue(this.row.data,e),this.dispatch("cell-value-save-after",this),this.loaded&&this.layoutElement()}},{key:"layoutElement",value:function(){this._generateContents(),this._generateTooltip(),this.dispatch("cell-layout",this)}},{key:"setWidth",value:function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}},{key:"clearWidth",value:function(){this.width="",this.element.style.width=""}},{key:"getWidth",value:function(){return this.width||this.element.offsetWidth}},{key:"setMinWidth",value:function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}},{key:"setMaxWidth",value:function(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}},{key:"checkHeight",value:function(){this.row.reinitializeHeight()}},{key:"clearHeight",value:function(){this.element.style.height="",this.height=null}},{key:"setHeight",value:function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled}},{key:"getHeight",value:function(){return this.height||this.element.offsetHeight}},{key:"show",value:function(){this.element.style.display=this.column.vertAlign?"inline-flex":""}},{key:"hide",value:function(){this.element.style.display="none"}},{key:"delete",value:function(){this.dispatch("cell-delete",this),!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}}},{key:"getIndex",value:function(){return this.row.getCellIndex(this)}},{key:"getComponent",value:function(){return this.component||(this.component=new b(this)),this.component}}]),r}(f),w=function(i){a(r,i);var n=c(r);function r(e,i){var o;return t(this,r),(o=n.call(this,i.table)).definition=e,o.parent=i,o.type="column",o.columns=[],o.cells=[],o.element=o.createElement(),o.contentElement=!1,o.titleHolderElement=!1,o.titleElement=!1,o.groupElement=o.createGroupElement(),o.isGroup=!1,o.tooltip=!1,o.hozAlign="",o.vertAlign="",o.field="",o.fieldStructure="",o.getFieldValue="",o.setFieldValue="",o.titleFormatterRendered=!1,o.mapDefinitions(),o.setField(o.definition.field),o.modules={},o.width=null,o.widthStyled="",o.maxWidth=null,o.maxWidthStyled="",o.minWidth=null,o.minWidthStyled="",o.widthFixed=!1,o.visible=!0,o.component=null,o.definition.columns?(o.isGroup=!0,o.definition.columns.forEach((function(e,t){var i=new r(e,l(o));o.attachColumn(i)})),o.checkColumnVisibility()):i.registerColumnField(l(o)),o._initialize(),o.bindModuleColumns(),o}return o(r,[{key:"createElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e}},{key:"createGroupElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}},{key:"mapDefinitions",value:function(){var e=this.table.options.columnDefaults;if(e)for(var t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(r.defaultOptionList,this.definition)}},{key:"checkDefinition",value:function(){var e=this;Object.keys(this.definition).forEach((function(t){-1===r.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)}))}},{key:"setField",value:function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData}},{key:"registerColumnPosition",value:function(e){this.parent.registerColumnPosition(e)}},{key:"registerColumnField",value:function(e){this.parent.registerColumnField(e)}},{key:"reRegisterPosition",value:function(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}},{key:"_mapDepricatedFunctionality",value:function(){}},{key:"setTooltip",value:function(){var e=this,t=this.definition,i=void 0===t.headerTooltip?t.tooltip:t.headerTooltip;i?!0===i?t.field?this.langBind("columns|"+t.field,(function(i){e.element.setAttribute("title",i||t.title)})):this.element.setAttribute("title",t.title):("function"==typeof i&&!1===(i=i(this.getComponent()))&&(i=""),this.element.setAttribute("title",i)):this.element.setAttribute("title","")}},{key:"_initialize",value:function(){for(var e=this,t=this.definition;this.element.firstChild;)this.element.removeChild(this.element.firstChild);t.headerVertical&&(this.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&this.element.classList.add("tabulator-col-vertical-flip")),this.contentElement=this._bindEvents(),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.setTooltip(),this.dispatch("column-init",this),this.element.addEventListener("mouseenter",(function(t){e.setTooltip()}))}},{key:"_bindEvents",value:function(){var e,t,i,n=this,o=this.definition;"function"==typeof o.headerClick&&this.element.addEventListener("click",(function(e){o.headerClick(e,n.getComponent())})),"function"==typeof o.headerDblClick&&this.element.addEventListener("dblclick",(function(e){o.headerDblClick(e,n.getComponent())})),"function"==typeof o.headerContext&&this.element.addEventListener("contextmenu",(function(e){o.headerContext(e,n.getComponent())})),"function"==typeof o.headerTap&&(i=!1,this.element.addEventListener("touchstart",(function(e){i=!0}),{passive:!0}),this.element.addEventListener("touchend",(function(e){i&&o.headerTap(e,n.getComponent()),i=!1}))),"function"==typeof o.headerDblTap&&(e=null,this.element.addEventListener("touchend",(function(t){e?(clearTimeout(e),e=null,o.headerDblTap(t,n.getComponent())):e=setTimeout((function(){clearTimeout(e),e=null}),300)}))),"function"==typeof o.headerTapHold&&(t=null,this.element.addEventListener("touchstart",(function(e){clearTimeout(t),t=setTimeout((function(){clearTimeout(t),t=null,i=!1,o.headerTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(function(e){clearTimeout(t),t=null})))}},{key:"_buildColumnHeader",value:function(){var e=this,t=this.definition;this.table;(this.dispatch("column-layout",this),void 0!==t.visible&&(t.visible?this.show(!0):this.hide(!0)),t.cssClass)&&t.cssClass.split(" ").forEach((function(t){e.element.classList.add(t)}));t.field&&this.element.setAttribute("tabulator-field",t.field),this.setMinWidth(parseInt(t.minWidth)),t.maxWidth&&this.setMaxWidth(parseInt(t.maxWidth)),this.reinitializeWidth(),this.tooltip=this.definition.tooltip,this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}},{key:"_buildColumnHeaderContent",value:function(){this.definition,this.table;var e=document.createElement("div");return e.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),e.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),e}},{key:"_buildColumnHeaderTitle",value:function(){var e=this,t=this.definition,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),t.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("change",(function(){t.title=n.value,e.dispatchExternal("columnTitleChanged",e.getComponent())})),i.appendChild(n),t.field?this.langBind("columns|"+t.field,(function(e){n.value=e||t.title||" "})):n.value=t.title||" "}else t.field?this.langBind("columns|"+t.field,(function(n){e._formatColumnHeaderTitle(i,n||t.title||" ")})):this._formatColumnHeaderTitle(i,t.title||" ");return i}},{key:"_formatColumnHeaderTitle",value:function(t,i){var n=this.chain("column-format",[this,i,t],null,(function(){return i}));switch(e(n)){case"object":n instanceof Node?t.appendChild(n):(t.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",n));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=n}}},{key:"_buildGroupHeader",value:function(){var e=this;(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass)&&this.definition.cssClass.split(" ").forEach((function(t){e.element.classList.add(t)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}},{key:"_getFlatData",value:function(e){return e[this.field]}},{key:"_getNestedData",value:function(e){for(var t,i=e,n=this.fieldStructure,o=n.length,a=0;a-1&&this.columns.splice(t,1),this.columns.length||this.delete()}},{key:"setWidth",value:function(e){this.widthFixed=!0,this.setWidthActual(e)}},{key:"setWidthActual",value:function(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.maxWidth&&(e=Math.min(this.maxWidth,e)),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach((function(e){e.setWidth()})),this.parent.isGroup&&this.parent.matchChildWidths(),this.dispatch("column-width",this)}},{key:"checkCellHeights",value:function(){var e=[];this.cells.forEach((function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)})),e.forEach((function(e){e.calcHeight()})),e.forEach((function(e){e.setCellHeight()}))}},{key:"getWidth",value:function(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}},{key:"getHeight",value:function(){return this.element.offsetHeight}},{key:"setMinWidth",value:function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}},{key:"setMaxWidth",value:function(e){this.maxWidth=e,this.maxWidthStyled=e?e+"px":"",this.element.style.maxWidth=this.maxWidthStyled,this.cells.forEach((function(e){e.setMaxWidth()}))}},{key:"delete",value:function(){var e=this;return new Promise((function(t,i){e.isGroup&&e.columns.forEach((function(e){e.delete()})),e.dispatch("column-delete",e);for(var n=e.cells.length,o=0;o-1&&this._nextVisibleColumn(e+1)}},{key:"_nextVisibleColumn",value:function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}},{key:"prevColumn",value:function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}},{key:"_prevVisibleColumn",value:function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}},{key:"reinitializeWidth",value:function(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.dispatch("column-width-fit-before",this),this.fitToData(),this.dispatch("column-width-fit-after",this)}},{key:"fitToData",value:function(){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((function(e){e.clearWidth()})));var e=this.element.offsetWidth;this.width&&this.widthFixed||(this.cells.forEach((function(t){var i=t.getWidth();i>e&&(e=i)})),e&&this.setWidthActual(e+1))}}},{key:"updateDefinition",value:function(e){var t,i=this;return this.isGroup||this.parent.isGroup?(console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"),Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(t=Object.assign({},this.getDefinition()),t=Object.assign(t,e),this.table.columnManager.addColumn(t,!1,this).then((function(e){return t.field==i.field&&(i.field=!1),i.delete().then((function(){return e.getComponent()}))})))}},{key:"deleteCell",value:function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},{key:"getComponent",value:function(){return this.component||(this.component=new g(this)),this.component}}]),r}(f);w.defaultOptionList=v;var C=function(){function i(){t(this,i)}return o(i,null,[{key:"elVisible",value:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}},{key:"elOffset",value:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}},{key:"deepClone",value:function(t){var i=Object.assign(Array.isArray(t)?[]:{},t);for(var n in t)null!=t[n]&&"object"===e(t[n])&&(t[n]instanceof Date?i[n]=new Date(t[n]):i[n]=this.deepClone(t[n]));return i}}]),i}(),E=function(){function i(e,n){t(this,i),this.table=e,this.msgType=n,this.registeredDefaults={}}return o(i,[{key:"register",value:function(e,t){this.registeredDefaults[e]=t}},{key:"generate",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object.assign({},this.registeredDefaults);if(Object.assign(n,t),!1!==i.debugInvalidOptions||this.table.options.debugInvalidOptions)for(var o in i)n.hasOwnProperty(o)||console.warn("Invalid "+this.msgType+" option:",o);for(var o in n)o in i?n[o]=i[o]:Array.isArray(n[o])?n[o]=Object.assign([],n[o]):"object"===e(n[o])&&null!==n[o]?n[o]=Object.assign({},n[o]):void 0===n[o]&&delete n[o];return n}}]),i}(),k=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).elementVertical=e.rowManager.element,o.elementHorizontal=e.columnManager.element,o.tableElement=e.rowManager.tableElement,o.verticalFillMode="fit",o}return o(n,[{key:"initialize",value:function(){}},{key:"clearRows",value:function(){}},{key:"clearColumns",value:function(){}},{key:"reinitializeColumnWidths",value:function(e){}},{key:"renderRows",value:function(){}},{key:"renderColumns",value:function(){}},{key:"rerenderRows",value:function(e){e&&e()}},{key:"rerenderColumns",value:function(e,t){}},{key:"renderRowCells",value:function(e){}},{key:"rerenderRowCells",value:function(e,t){}},{key:"scrollColumns",value:function(e,t){}},{key:"scrollRows",value:function(e,t){}},{key:"resize",value:function(){}},{key:"scrollToRow",value:function(e){}},{key:"scrollToRowNearestTop",value:function(e){}},{key:"visibleRows",value:function(e){return[]}},{key:"rows",value:function(){return this.table.rowManager.getDisplayRows()}},{key:"styleRow",value:function(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}},{key:"clear",value:function(){this.clearRows(),this.clearColumns()}},{key:"render",value:function(){this.renderRows(),this.renderColumns()}},{key:"rerender",value:function(e){this.rerenderRows(),this.rerenderColumns()}},{key:"scrollToRowPosition",value:function(e,t,i){var n=this,o=this.rows().indexOf(e),a=e.getElement(),r=0;return new Promise((function(s,l){if(o>-1){if(void 0===i&&(i=n.table.options.scrollToRowIfVisible),!i&&C.elVisible(a)&&(r=C.elOffset(a).top-C.elOffset(n.elementVertical).top)>0&&ri.vDomScrollPosLeft&&othis.vDomScrollPosRight)break}for(e.parentNode.removeChild(e),this.fitDataColAvg=Math.floor(o/(a+1));a.8*this.elementVertical.clientWidth?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}},{key:"colPositionAdjust",value:function(e,t,i){for(var n=e;n=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=e.getWidth(),this.tableElement.style.paddingRight=this.vDomPadRight+"px",this.addColRight())}},{key:"addColLeft",value:function(){var e=this.columns[this.leftCol-1];e&&e.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft&&(this.table.rowManager.getVisibleRows().forEach((function(t){if("group"!==t.type){var i=t.getCell(e);t.getElement().prepend(i.getElement()),i.cellRendered()}})),this.fitDataColActualWidthCheck(e),this.leftCol?this.vDomPadLeft-=e.getWidth():this.vDomPadLeft=0,this.tableElement.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol--,this.addColLeft())}},{key:"removeColRight",value:function(e){var t;(e=this.columns[this.rightCol])&&e.modules.vdomHoz.leftPos>this.vDomScrollPosRight&&(t=this.table.rowManager.getVisibleRows(),e.modules.vdomHoz.visible=!1,t.forEach((function(t){if("group"!==t.type){var i=t.getCell(e);t.getElement().removeChild(i.getElement())}})),this.vDomPadRight+=e.getWidth(),this.tableElement.style.paddingRight=this.vDomPadRight+"px",this.rightCol--,this.removeColRight())}},{key:"removeColLeft",value:function(){var e=this.columns[this.leftCol];e&&e.modules.vdomHoz.rightPosi?(t=e-i,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.renderer.scrollColumns(e)}},{key:"generateColumnsFromRowData",value:function(t){var i,n,o=[],a=this.table.options.autoColumnsDefinitions;if(t&&t.length){for(var r in i=t[0]){var s={field:r,title:r},l=i[r];switch(e(l)){case"undefined":n="string";break;case"boolean":n="boolean";break;case"object":n=Array.isArray(l)?"array":"string";break;default:n=isNaN(l)||""===l?l.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=n,o.push(s)}if(a)switch(e(a)){case"function":this.table.options.columns=a.call(this.table,o);break;case"object":Array.isArray(a)?o.forEach((function(e){var t=a.find((function(t){return t.field===e.field}));t&&Object.assign(e,t)})):o.forEach((function(e){a[e.field]&&Object.assign(e,a[e.field])})),this.table.options.columns=o}else this.table.options.columns=o;this.setColumns(this.table.options.columns)}}},{key:"setColumns",value:function(e,t){for(var i=this;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach((function(e,t){i._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.renderer.rerenderColumns(!1,!0),this.redraw(!0)}},{key:"_addColumn",value:function(e,t,i){var n=new w(e,this),o=n.getElement(),a=i?this.findColumnIndex(i):i;if(i&&a>-1){var r=this.columns.indexOf(i.getTopColumn()),s=i.getElement();t?(this.columns.splice(r,0,n),s.parentNode.insertBefore(o,s)):(this.columns.splice(r+1,0,n),s.parentNode.insertBefore(o,s.nextSibling))}else t?(this.columns.unshift(n),this.headersElement.insertBefore(n.getElement(),this.headersElement.firstChild)):(this.columns.push(n),this.headersElement.appendChild(n.getElement())),n.columnRendered();return n}},{key:"registerColumnField",value:function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}},{key:"registerColumnPosition",value:function(e){this.columnsByIndex.push(e)}},{key:"_reIndexColumns",value:function(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}},{key:"_verticalAlignHeaders",value:function(){var e=this,t=0;this.columns.forEach((function(e){var i;e.clearVerticalAlign(),(i=e.getHeight())>t&&(t=i)})),this.columns.forEach((function(i){i.verticalAlign(e.table.options.columnHeaderVertAlign,t)})),this.table.rowManager.adjustTableSize()}},{key:"findColumn",value:function(t){return"object"!=e(t)?this.columnsByField[t]||!1:t instanceof w?t:t instanceof g?t._getSelf()||!1:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&this.columns.find((function(e){return e.element===t}))||!1}},{key:"getColumnByField",value:function(e){return this.columnsByField[e]}},{key:"getColumnsByFieldRoot",value:function(e){var t=this,i=[];return Object.keys(this.columnsByField).forEach((function(n){n.split(".")[0]===e&&i.push(t.columnsByField[n])})),i}},{key:"getColumnByIndex",value:function(e){return this.columnsByIndex[e]}},{key:"getFirstVisibileColumn",value:function(e){return(e=this.columnsByIndex.findIndex((function(e){return e.visible})))>-1&&this.columnsByIndex[e]}},{key:"getColumns",value:function(){return this.columns}},{key:"findColumnIndex",value:function(e){return this.columnsByIndex.findIndex((function(t){return e===t}))}},{key:"getRealColumns",value:function(){return this.columnsByIndex}},{key:"traverse",value:function(e){this.columnsByIndex.forEach((function(t,i){e(t,i)}))}},{key:"getDefinitions",value:function(e){var t=[];return this.columnsByIndex.forEach((function(i){(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}},{key:"getDefinitionTree",value:function(){var e=[];return this.columns.forEach((function(t){e.push(t.getDefinition(!0))})),e}},{key:"getComponents",value:function(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((function(e){t.push(e.getComponent())})),t}},{key:"getWidth",value:function(){var e=0;return this.columnsByIndex.forEach((function(t){t.visible&&(e+=t.getWidth())})),e}},{key:"moveColumn",value:function(e,t,i){this.moveColumnActual(e,t,i),t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()}},{key:"moveColumnActual",value:function(e,t,i){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,i):this._moveColumnInArray(this.columns,e,t,i),this._moveColumnInArray(this.columnsByIndex,e,t,i,!0),this.renderer.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}},{key:"_moveColumnInArray",value:function(e,t,i,n,o){var a,r=e.indexOf(t);r>-1&&(e.splice(r,1),(a=e.indexOf(i))>-1?n&&(a+=1):a=r,e.splice(a,0,t),o&&(this.chain("column-moving-rows",[t,i,n],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(a,0,t)}})))}},{key:"scrollToColumn",value:function(e,t,i){var n=this,o=0,a=0,r=0,s=e.getElement();return new Promise((function(l,u){if(void 0===t&&(t=n.table.options.scrollToColumnPosition),void 0===i&&(i=n.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":r=-n.element.clientWidth/2;break;case"right":r=s.clientWidth-n.headersElement.clientWidth}if(!i&&(a=s.offsetLeft)>0&&a+s.offsetWidththis.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var n,o,a;i.visible&&(n=i.definition.width||0,o=parseInt(i.minWidth),a="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,t+=a>o?a:o)})),t}},{key:"addColumn",value:function(e,t,i){var n=this;return new Promise((function(o,a){var r=n._addColumn(e,t,i);n._reIndexColumns(),n.dispatch("column-add",e,t,i),n.redraw(!0),"fitColumns"!=n.layoutMode()&&r.reinitializeWidth(),n._verticalAlignHeaders(),n.table.rowManager.reinitialize(),n.renderer.rerenderColumns(),o(r)}))}},{key:"deregisterColumn",value:function(e){var t,i=e.getField();i&&delete this.columnsByField[i],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this._verticalAlignHeaders(),this.redraw()}},{key:"redraw",value:function(e){e&&(C.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}]),r}(f),M=function(){function e(i){return t(this,e),this._row=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}return o(e,[{key:"getData",value:function(e){return this._row.getData(e)}},{key:"getElement",value:function(){return this._row.getElement()}},{key:"getCells",value:function(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}},{key:"getCell",value:function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}},{key:"getIndex",value:function(){return this._row.getData("data")[this._row.table.options.index]}},{key:"getPosition",value:function(e){return this._row.table.rowManager.getRowPosition(this._row,e)}},{key:"delete",value:function(){return this._row.delete()}},{key:"scrollTo",value:function(){return this._row.table.rowManager.scrollToRow(this._row)}},{key:"move",value:function(e,t){this._row.moveToRow(e,t)}},{key:"update",value:function(e){return this._row.updateData(e)}},{key:"normalizeHeight",value:function(){this._row.normalizeHeight(!0)}},{key:"_getSelf",value:function(){return this._row}},{key:"reformat",value:function(){return this._row.reinitialize()}},{key:"getTable",value:function(){return this._row.table}},{key:"getNextRow",value:function(){var e=this._row.nextRow();return e?e.getComponent():e}},{key:"getPrevRow",value:function(){var e=this._row.prevRow();return e?e.getComponent():e}}]),e}(),L=function(e){a(n,e);var i=c(n);function n(e,o){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";return t(this,n),(a=i.call(this,o.table)).parent=o,a.data={},a.type=r,a.element=!1,a.modules={},a.cells=[],a.height=0,a.heightStyled="",a.manualHeight=!1,a.outerHeight=0,a.initialized=!1,a.heightInitialized=!1,a.component=null,a.created=!1,a.setData(e),a}return o(n,[{key:"create",value:function(){this.created||(this.created=!0,this.generateElement())}},{key:"createElement",value:function(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}},{key:"getElement",value:function(){return this.create(),this.element}},{key:"detachElement",value:function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}},{key:"generateElement",value:function(){this.createElement(),this.dispatch("row-init",this)}},{key:"generateCells",value:function(){this.cells=this.table.columnManager.generateCells(this)}},{key:"initialize",value:function(e){if(this.create(),!this.initialized||e){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.dispatch("row-layout-before",this),this.generateCells(),this.table.columnManager.renderer.renderRowCells(this),e&&this.normalizeHeight(),this.dispatch("row-layout",this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.initialized=!0,this.dispatch("row-layout-after",this)}else this.table.columnManager.renderer.rerenderRowCells(this)}},{key:"reinitializeHeight",value:function(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}},{key:"reinitialize",value:function(e){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),this.element&&null!==this.element.offsetParent&&this.initialize(!0),this.dispatch("row-relayout",this)}},{key:"calcHeight",value:function(e){var t=0,i=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach((function(e){var i=e.getHeight();i>t&&(t=i)})),this.height=e?Math.max(t,i):this.manualHeight?this.height:Math.max(t,i),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight}},{key:"setCellHeight",value:function(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}},{key:"clearCellHeight",value:function(){this.cells.forEach((function(e){e.clearHeight()}))}},{key:"normalizeHeight",value:function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}},{key:"setHeight",value:function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}},{key:"getHeight",value:function(){return this.outerHeight}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"deleteCell",value:function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},{key:"setData",value:function(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}},{key:"updateData",value:function(e){var t,i=this,n=this.element&&C.elVisible(this.element),o={};return new Promise((function(a,r){for(var s in"string"==typeof e&&(e=JSON.parse(e)),i.dispatch("row-data-save-before",i),i.subscribed("row-data-changing")&&(o=Object.assign(o,i.data),o=Object.assign(o,e)),t=i.chain("row-data-changing",[i,o,e],null,e))i.data[s]=t[s];for(var s in i.dispatch("row-data-save-after",i),e){i.table.columnManager.getColumnsByFieldRoot(s).forEach((function(e){var o=i.getCell(e.getField());if(o){var a=e.getFieldValue(t);o.getValue()!=a&&(o.setValueProcessData(a),n&&o.cellRendered())}}))}n?(i.normalizeHeight(!0),i.table.options.rowFormatter&&i.table.options.rowFormatter(i.getComponent())):(i.initialized=!1,i.height=0,i.heightStyled=""),i.dispatch("row-data-changed",i,n,e),i.dispatchExternal("rowUpdated",i.getComponent()),i.subscribedExternal("dataChanged")&&i.dispatchExternal("dataChanged",i.table.rowManager.getData()),a()}))}},{key:"getData",value:function(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}},{key:"getCell",value:function(e){return e=this.table.columnManager.findColumn(e),this.initialized||this.generateCells(),this.cells.find((function(t){return t.column===e}))}},{key:"getCellIndex",value:function(e){return this.cells.findIndex((function(t){return t===e}))}},{key:"findCell",value:function(e){return this.cells.find((function(t){return t.element===e}))}},{key:"getCells",value:function(){return this.initialized||this.generateCells(),this.cells}},{key:"nextRow",value:function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}},{key:"prevRow",value:function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}},{key:"moveToRow",value:function(e,t){var i=this.table.rowManager.findRow(e);i?(this.table.rowManager.moveRowActual(this,i,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)}},{key:"delete",value:function(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}},{key:"deleteActual",value:function(e){this.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}},{key:"detatchModules",value:function(){this.dispatch("row-deleting",this)}},{key:"deleteCells",value:function(){for(var e=this.cells.length,t=0;tMath.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-t))}},{key:"scrollToRow",value:function(e){var t=e.getElement();this.elementVertical.scrollTop=C.elOffset(t).top-C.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}},{key:"visibleRows",value:function(e){return this.rows()}}]),n}(k),S=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).verticalFillMode="fill",o.scrollTop=0,o.scrollLeft=0,o.vDomRowHeight=20,o.vDomTop=0,o.vDomBottom=0,o.vDomScrollPosTop=0,o.vDomScrollPosBottom=0,o.vDomTopPad=0,o.vDomBottomPad=0,o.vDomMaxRenderChain=90,o.vDomWindowBuffer=0,o.vDomWindowMinTotalRows=20,o.vDomWindowMinMarginRows=5,o.vDomTopNewRows=[],o.vDomBottomNewRows=[],o}return o(n,[{key:"clearRows",value:function(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.elementVertical.scrollTop=0,this.elementVertical.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0}},{key:"renderRows",value:function(){this._virtualRenderFill()}},{key:"rerenderRows",value:function(e){for(var t=this.elementVertical.scrollTop,i=!1,n=!1,o=this.table.rowManager.scrollLeft,a=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(a[r]){var s=t-a[r].getElement().offsetTop;if(!(!1===n||Math.abs(s)o||n>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*a.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(a,-i),n<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(a,-n):this.vDomScrollPosBottom=this.scrollTop)):(n>=0&&this._addBottomRow(a,n),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(a,i):this.vDomScrollPosTop=this.scrollTop))}},{key:"resize",value:function(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}},{key:"scrollToRowNearestTop",value:function(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}},{key:"scrollToRow",value:function(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}},{key:"visibleRows",value:function(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,n=!1,o=0,a=0,r=this.rows();if(e)o=this.vDomTop,a=this.vDomBottom;else for(var s=this.vDomTop;s<=this.vDomBottom;s++)if(r[s])if(n){if(!(i-r[s].getElement().offsetTop>=0))break;a=s}else if(t-r[s].getElement().offsetTop>=0)o=s;else{if(n=!0,!(i-r[s].getElement().offsetTop>=0))break;a=s}return r.slice(o,a+1)}},{key:"_virtualRenderFill",value:function(e,t,i){var n=this.tableElement,o=this.elementVertical,a=0,r=0,s=0,l=0,u=0,c=this.rows(),h=c.length,d=this.elementVertical.clientHeight;if(i=i||0,e=e||0){for(;n.firstChild;)n.removeChild(n.firstChild);(s=(h-e+1)*this.vDomRowHeight)this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*m),this.vDomBottom++,u++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+i:this.scrollTop-l,this.vDomBottomPad=this.vDomBottom==h-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-r-l,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((r+l)/u),this.vDomBottomPad=this.vDomRowHeight*(h-this.vDomBottom-1),this.vDomScrollHeight=l+r+this.vDomBottomPad-d),n.style.paddingTop=this.vDomTopPad+"px",n.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+l+i-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-d:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-d),this.elementVertical.scrollWidth>this.elementVertical.offsetWidth&&t&&(this.scrollTop+=this.elementVertical.offsetHeight-d),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,o.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}},{key:"_addTopRow",value:function(e,t){for(var i=this.tableElement,n=[],o=0,a=this.vDomTop-1,r=0;this.vDomTop;){var s=e[a],l=void 0,u=void 0;if(!(s&&r=l))break;this.styleRow(s,a),i.insertBefore(s.getElement(),i.firstChild),s.initialized&&s.heightInitialized||n.push(s),s.initialize(),u||(l=s.getElement().offsetHeight)>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l),t-=l,o+=l,this.vDomTop--,a--,r++}for(var c=0,h=n;c=(r=a.getHeight()||this.vDomRowHeight)))break;this.vDomTop++,t-=r,n+=r,i.push(a),o++}for(var s=0,l=i;s=l))break;this.styleRow(s,a),i.appendChild(s.getElement()),s.initialized&&s.heightInitialized||n.push(s),s.initialize(),u||(l=s.getElement().offsetHeight)>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l),t-=l,o+=l,this.vDomBottom++,a++,r++}for(var c=0,h=n;c=(r=a.getHeight()||this.vDomRowHeight)))break;this.vDomBottom--,t-=r,n+=r,i.push(a),o++}for(var s=0,l=i;st,n=e.element.scrollTop,o=e.scrollTop>n;e.scrollLeft!=t&&(e.scrollLeft=t,e.dispatch("scroll-horizontal",t,i),e.dispatchExternal("scrollHorizontal",t,i)),e.scrollTop!=n&&(e.scrollTop=n,e.renderer.scrollRows(n,o),e.dispatch("scroll-vertical",n,o),e.dispatchExternal("scrollVertical",n,o))}))}},{key:"findRow",value:function(t){var i=this;return"object"!=e(t)?null!=t&&(this.rows.find((function(e){return e.data[i.table.options.index]==t}))||!1):t instanceof L?t:t instanceof M?t._getSelf()||!1:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&this.rows.find((function(e){return e.getElement()===t}))||!1}},{key:"getRowFromDataObject",value:function(e){return this.rows.find((function(t){return t.data===e}))||!1}},{key:"getRowFromPosition",value:function(e,t){return t?this.activeRows[e]:this.rows[e]}},{key:"scrollToRow",value:function(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}},{key:"setData",value:function(e,t,i){var n=this;return new Promise((function(o,a){t&&n.getDisplayRows().length?n.table.options.pagination?n._setDataActual(e,!0):n.reRenderInPosition((function(){n._setDataActual(e)})):(n.table.options.autoColumns&&i&&n.table.columnManager.generateColumnsFromRowData(e),n.resetScroll(),n._setDataActual(e)),o()}))}},{key:"_setDataActual",value:function(t,i){var n=this;this.dispatchExternal("dataProcessing",t),this._wipeElements(),Array.isArray(t)?(this.dispatch("data-processing",t),t.forEach((function(t,i){if(t&&"object"===e(t)){var o=new L(t,n);n.rows.push(o)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)})),this.refreshActiveData(!1,!1,i),this.dispatch("data-processed",t),this.dispatchExternal("dataProcessed",t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",e(t),"\nData: ",t)}},{key:"_wipeElements",value:function(){this.dispatch("rows-wipe"),this.rows.forEach((function(e){e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()}},{key:"deleteRow",value:function(e,t){var i=this.rows.indexOf(e),n=this.activeRows.indexOf(e);n>-1&&this.activeRows.splice(n,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((function(t){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this._showPlaceholder(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}},{key:"addRow",value:function(e,t,i,n){var o=this.addRowActual(e,t,i,n);return this.dispatch("row-added",o,e,t,i),o}},{key:"addRows",value:function(e,t,i){var n=this,o=[];return new Promise((function(a,r){t=n.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length,(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach((function(a,r){var s=n.addRow(a,t,i,!0);o.push(s),n.dispatch("row-added",s,e,t,i)})),n.reRenderInPosition(),n.regenerateRowNumbers(),o.length&&n._clearPlaceholder(),a(o)}))}},{key:"findAddRowPos",value:function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}},{key:"addRowActual",value:function(e,t,i,n){var o,a,r=e instanceof L?e:new L(e||{},this),s=this.findAddRowPos(t),l=-1;return i||(a=this.chain("row-adding-position",[r,s],null,{index:i,top:s}),i=a.index,s=a.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,s],null,i))&&(l=this.rows.indexOf(i)),i&&l>-1?(o=this.activeRows.indexOf(i),this.displayRowIterator((function(e){var t=e.indexOf(i);t>-1&&e.splice(s?t:t+1,0,r)})),o>-1&&this.activeRows.splice(s?o:o+1,0,r),this.rows.splice(s?l:l+1,0,r)):s?(this.displayRowIterator((function(e){e.unshift(r)})),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator((function(e){e.push(r)})),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.dispatchExternal("rowAdded",r.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),n||this.reRenderInPosition(),r}},{key:"moveRow",value:function(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowNumbers(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}},{key:"moveRowActual",value:function(e,t,i){var n=this;this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((function(o){n.moveRowInArray(o,e,t,i)})),this.dispatch("row-moving",e,t,i)}},{key:"moveRowInArray",value:function(e,t,i,n){var o,a,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(a=e.indexOf(i))>-1?n?e.splice(a+1,0,t):e.splice(a,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=a>o?a:o+1;for(var s=o-1&&t}},{key:"nextDisplayRow",value:function(e,t){var i=this.getDisplayRowIndex(e),n=!1;return!1!==i&&i-1)&&i}},{key:"getData",value:function(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}},{key:"getComponents",value:function(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}},{key:"getDataCount",value:function(e){return this.getRows(e).length}},{key:"scrollHorizontal",value:function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}},{key:"registerDataPipelineHandler",value:function(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort((function(e,t){return e.priority-t.priority}))):console.error("Data pipeline handlers must have a priority in order to be registered")}},{key:"registerDisplayPipelineHandler",value:function(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort((function(e,t){return e.priority-t.priority}))):console.error("Display pipeline handlers must have a priority in order to be registered")}},{key:"refreshActiveData",value:function(e,t,i){var n=this.table,o="",a=0,r=["all","dataPipeline","display","displayPipeline","end"];if("function"==typeof e)if((a=this.dataPipeline.findIndex((function(t){return t.handler===e})))>-1)o="dataPipeline",t&&(a==this.dataPipeline.length-1?o="display":a++);else{if(!((a=this.displayPipeline.findIndex((function(t){return t.handler===e})))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);o="displayPipeline",t&&(a==this.displayPipeline.length-1?o="end":a++)}else o=e||"all",a=0;if(this.redrawBlock)(!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===o&&a-1&&(n.splice(o,1),a=!0),a&&this.updateEventListeners()}},{key:"updateEventListeners",value:function(){for(var e in this.listeners){var t=this.listeners[e];t.components.length?t.handler||(t.handler=this.track.bind(this,e),this.el.addEventListener(e,t.handler)):t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}},{key:"track",value:function(e,t){var i=t.composedPath&&t.composedPath()||t.path,n=this.findTargets(i);n=this.bindComponents(e,n),this.triggerEvents(e,t,n)}},{key:"findTargets",value:function(e){var t,i=this,n={},o=Object.keys(this.componentMap),a=p(e);try{for(a.s();!(t=a.n()).done;){var r=t.value,s=r.classList?h(r.classList):[];if(s.filter((function(e){return i.abortClasses.includes(e)})).length)break;var l,u=p(s.filter((function(e){return o.includes(e)})));try{for(u.s();!(l=u.n()).done;){var c=l.value;n[this.componentMap[c]]=r}}catch(e){u.e(e)}finally{u.f()}}}catch(e){a.e(e)}finally{a.f()}return n.group&&n.group===n.row&&delete n.row,n}},{key:"bindComponents",value:function(e,t){var i,n=this,o=Object.keys(t).reverse(),a=this.listeners[e],r={},s=p(o);try{var l=function(){var e=i.value,o=void 0,s=t[e],l=n.previousTargets[e];if(l&&l.target===s)o=l.component;else switch(e){case"row":case"group":if(a.components.includes("row")||a.components.includes("cell"))o=n.table.rowManager.getVisibleRows().find((function(e){return e.getElement()===s}));break;case"column":a.components.includes("column")&&(o=n.table.columnManager.findColumn(s));break;case"cell":a.components.includes("cell")&&(o=t.row.findCell(s))}o&&(t[e]=o,r[e]={target:s,component:o})};for(s.s();!(i=s.n()).done;)l()}catch(e){s.e(e)}finally{s.f()}return this.previousTargets=r,t}},{key:"triggerEvents",value:function(e,t,i){var n=this.listeners[e];for(var o in i)i[o]&&n.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}}]),n}(f),z=function(){function e(i){t(this,e),this.table=i,this.bindings={}}return o(e,[{key:"bind",value:function(e,t,i){this.bindings[e]||(this.bindings[e]={}),this.bindings[e][t]?console.warn("Unable to bind component handler, a matching function name is already bound",e,t,hanlder):this.bindings[e][t]=i}},{key:"handle",value:function(e,t,i){if(this.bindings[e]&&this.bindings[e][i])return this.bindings[e][i].bind(null,t);"then"!==i&&console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}]),e}(),A=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).loaderElement=i.createLoaderElement(),i.msgElement=i.createMsgElement(),i.loadingElement=null,i.errorElement=null,i.requestOrder=0,i.loading=!1,i}return o(r,[{key:"initialize",value:function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.dataLoaderLoading&&("string"==typeof this.table.options.dataLoaderLoading?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderLoading.trim(),this.loadingElement=e.firstElementChild):this.loadingElement=this.table.options.dataLoaderLoading),this.table.options.dataLoaderError&&("string"==typeof this.table.options.dataLoaderError?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderError.trim(),this.errorElement=e.firstElementChild):this.errorElement=this.table.options.dataLoaderError)}},{key:"createLoaderElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e}},{key:"createMsgElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e}},{key:"load",value:function(t,i,n,o,a){var r=this,s=++this.requestOrder;if(this.dispatchExternal("dataLoading",t),!t||0!=t.indexOf("{")&&0!=t.indexOf("[")||(t=JSON.parse(t)),this.confirm("data-loading",t,i,n,a)){this.loading=!0,a||this.showLoader();i=this.chain("data-params",[t,n,a],i||{},{});return i=this.mapParams(i,this.table.options.dataSendParams),this.chain("data-load",[t,i,n,a],Promise.resolve([])).then((function(i){Array.isArray(i)||"object"!=e(i)||(i=r.mapParams(i,r.objectInvert(r.table.options.dataReceiveParams)));var n=r.chain("data-loaded",i,null,i);s==r.requestOrder?(r.hideLoader(),!1!==n&&(r.dispatchExternal("dataLoaded",t),r.table.rowManager.setData(n,o,!o))):console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made")})).catch((function(e){console.error("Data Load Error: ",e),r.dispatchExternal("dataLoadError",e),a||r.showError(),setTimeout((function(){r.hideLoader()}),3e3)})).finally((function(){r.loading=!1}))}return this.dispatchExternal("dataLoaded",t),t||(t=[]),this.table.rowManager.setData(t,o,!o),Promise.resolve()}},{key:"mapParams",value:function(e,t){var i={};for(var n in e)i[t.hasOwnProperty(n)?t[n]:n]=e[n];return i}},{key:"objectInvert",value:function(e){var t={};for(var i in e)t[e[i]]=i;return t}},{key:"blockActiveLoad",value:function(){this.requestOrder++}},{key:"showLoader",value:function(){if("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.langText("data|loading"),this.table.element.appendChild(this.loaderElement)}}},{key:"showError",value:function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.langText("data|error"),this.table.element.appendChild(this.loaderElement)}},{key:"hideLoader",value:function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)}}]),r}(f),O=function(){function e(i,n){t(this,e),this.events={},this.optionsList=i||{},this.subscriptionNotifiers={},this.dispatch=n?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=n}return o(e,[{key:"subscriptionChange",value:function(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}},{key:"subscribe",value:function(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifiySubscriptionChange(e,!0)}},{key:"unsubscribe",value:function(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((function(e){return e===t})))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}else delete this.events[e];this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}},{key:"subscribed",value:function(e){return this.events[e]&&this.events[e].length}},{key:"_notifiySubscriptionChange",value:function(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((function(e){e(t)}))}},{key:"_dispatch",value:function(){var e,t=this,i=Array.from(arguments),n=i.shift();return this.events[n]&&this.events[n].forEach((function(n,o){var a=n.apply(t,i);o||(e=a)})),e}},{key:"_debugDispatch",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="ExternalEvent:"+t[0],!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._dispatch.apply(this,arguments)}}]),e}(),_=function(){function e(i){t(this,e),this.events={},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=i?this._debugChain.bind(this):this._chain.bind(this),this.confirm=i?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=i}return o(e,[{key:"subscriptionChange",value:function(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}},{key:"subscribe",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e4;this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort((function(e,t){return e.priority-t.priority})),this._notifiySubscriptionChange(e,!0)}},{key:"unsubscribe",value:function(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((function(e){return e.callback===t})))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}},{key:"subscribed",value:function(e){return this.events[e]&&this.events[e].length}},{key:"_chain",value:function(e,t,i,n){var o=this,a=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach((function(e,i){a=e.callback.apply(o,t.concat([a]))})),a):"function"==typeof n?n():n}},{key:"_confirm",value:function(e,t){var i=this,n=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach((function(e,o){e.callback.apply(i,t)&&(n=!0)})),n}},{key:"_notifiySubscriptionChange",value:function(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((function(e){e(t)}))}},{key:"_dispatch",value:function(){var e=this,t=Array.from(arguments),i=t.shift();this.events[i]&&this.events[i].forEach((function(i){i.callback.apply(e,t)}))}},{key:"_debugDispatch",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._dispatch.apply(this,arguments)}},{key:"_debugChain",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._chain.apply(this,arguments)}},{key:"_debugConfirm",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._confirm.apply(this,arguments)}}]),e}(),N=function(){function e(){t(this,e)}return o(e,null,[{key:"register",value:function(t){e.tables.push(t)}},{key:"deregister",value:function(t){var i=e.tables.indexOf(t);i>-1&&e.tables.splice(i,1)}},{key:"lookupTable",value:function(t,i){var n,o,a=[];if("string"==typeof t){if((n=document.querySelectorAll(t)).length)for(var r=0;r0?a.setWidth(o):a.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,i,n=this.table.element.clientWidth,o=0,a=0,r=0,s=[],l=[],u=0,c=0;function h(e){return"string"==typeof e?e.indexOf("%")>-1?n/100*parseInt(e):parseInt(e):e}function d(e,t,i,n){var o=[],a=0,s=0,l=0,u=r,c=0,m=0,p=[];function f(e){return i*(e.column.definition.widthGrow||1)}function g(e){return h(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,a){var r=n?g(e):f(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,n;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(n=h(t),o+=n>i?n:i,e.definition.widthShrink&&(l.push({column:e,width:n>i?n:i}),u+=e.definition.widthShrink)):(s.push({column:e,width:0}),r+=e.definition.widthGrow||1))})),a=n-o,t=Math.floor(a/r),c=d(s,a,t,!1),s.length&&c>0&&(s[s.length-1].width+=+c),s.forEach((function(e){a-=e.width})),(i=Math.abs(c)+a)>0&&u&&(c=d(l,i,Math.floor(i/u),!0)),l.length&&(l[l.length-1].width-=c),s.forEach((function(e){e.column.setWidth(e.width)})),l.forEach((function(e){e.column.setWidth(e.width)}))}},W=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e,"layout")).mode=null,o.registerTableOption("layout","fitData"),o.registerTableOption("layoutColumnsOnNewData",!1),o.registerColumnOption("widthGrow"),o.registerColumnOption("widthShrink"),o}return o(n,[{key:"initialize",value:function(){var e=this.table.options.layout;n.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)}},{key:"getMode",value:function(){return this.mode}},{key:"layout",value:function(){n.modes[this.mode].call(this,this.table.columnManager.columnsByIndex),this.dispatch("layout-refreshed")}}]),n}(B);W.moduleName="layout",W.modes=I;var j=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).locale="default",i.lang=!1,i.bindings={},i.langList={},i.registerTableOption("locale",!1),i.registerTableOption("langs",{}),i}return o(r,[{key:"initialize",value:function(){for(var e in this.langList=C.deepClone(r.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder),this.table.options.langs)this.installLang(e,this.table.options.langs[e]);this.setLocale(this.table.options.locale),this.registerTableFunction("setLocale",this.setLocale.bind(this)),this.registerTableFunction("getLocale",this.getLocale.bind(this)),this.registerTableFunction("getLang",this.getLang.bind(this))}},{key:"setHeaderFilterPlaceholder",value:function(e){this.langList.default.headerFilters.default=e}},{key:"setHeaderFilterColumnPlaceholder",value:function(e,t){this.langList.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)}},{key:"installLang",value:function(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}},{key:"_setLangProp",value:function(t,i){for(var n in i)t[n]&&"object"==e(t[n])?this._setLangProp(t[n],i[n]):t[n]=i[n]}},{key:"setLocale",value:function(t){if(!0===(t=t||"default")&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!this.langList[t]){var i=t.split("-")[0];this.langList[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}this.locale=t,this.lang=C.deepClone(this.langList.default||{}),"default"!=t&&function t(i,n){for(var o in i)"object"==e(i[o])?(n[o]||(n[o]={}),t(i[o],n[o])):n[o]=i[o]}(this.langList[t],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}},{key:"getLocale",value:function(e){return this.locale}},{key:"getLang",value:function(e){return e?this.langList[e]:this.lang}},{key:"getText",value:function(e,t){var i=(e=t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}},{key:"_getLangElement",value:function(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}},{key:"bind",value:function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}},{key:"_executeBindings",value:function(){var e=this,t=function(t){e.bindings[t].forEach((function(i){i(e.getText(t),e.lang)}))};for(var i in this.bindings)t(i)}}]),r}(B);j.moduleName="localize",j.langs={default:{groups:{item:"item",items:"items"},columns:{},data:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}};var G=function(e){a(n,e);var i=c(n);function n(e){return t(this,n),i.call(this,e)}return o(n,[{key:"initialize",value:function(){this.registerTableFunction("tableComms",this.receive.bind(this))}},{key:"getConnections",value:function(e){var t=this,i=[];return N.lookupTable(e).forEach((function(e){t.table!==e&&i.push(e)})),i}},{key:"send",value:function(e,t,i,n){var o=this,a=this.getConnections(e);a.forEach((function(e){e.tableComms(o.table.element,t,i,n)})),!a.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}},{key:"receive",value:function(e,t,i,n){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,n);console.warn("Inter-table Comms Error - no such module:",t)}}]),n}(B);G.moduleName="comms";var U=Object.freeze({__proto__:null,LayoutModule:W,LocalizeModule:j,CommsModule:G}),X=function(){function i(e,n){t(this,i),this.bindStaticFuctionality(e),this.bindModules(e,U,!0),n&&this.bindModules(e,n)}return o(i,[{key:"bindStaticFuctionality",value:function(t){t.moduleBindings={},t.extendModule=function(i,n,o){if(t.moduleBindings[i]){var a=t.moduleBindings[i].prototype[n];if(a)if("object"==e(o))for(var r in o)a[r]=o[r];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",n)}else console.warn("Module Error - module does not exist:",i)},t.registerModule=function(e){Array.isArray(e)||(e=[e]),e.forEach((function(e){t.registerModuleBinding(e)}))},t.registerModuleBinding=function(e){t.moduleBindings[e.moduleName]=e},t.findTable=function(e){var t=N.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},t.prototype.bindModules=function(){for(var e in this.modules={},t.moduleBindings){var i=t.moduleBindings[e];this.modules[e]=new i(this),i.prototype.moduleCore?this.modulesCore[e]=this.modules[e]:this.modulesRegular[e]=this.modules[e]}}}},{key:"bindModules",value:function(e,t,i){var n=Object.values(t);i&&n.forEach((function(e){e.prototype.moduleCore=!0})),e.registerModule(n)}}]),i}(),q=function(){function e(i,n){var o=this;t(this,e),this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.vdomHoz=null,this.externalEvents=null,this.eventBus=null,this.interactionMonitor=!1,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.componentFunctionBinder=new z(this),this.dataLoader=!1,this.modules={},this.modulesCore={},this.modulesRegular={},this.optionsList=new E(this,"table constructor"),this.initializeElement(i)&&(this.initialzeCoreSystems(n),setTimeout((function(){o._create()}))),N.register(this)}return o(e,[{key:"initializeElement",value:function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)}},{key:"initialzeCoreSystems",value:function(t){this.columnManager=new T(this),this.rowManager=new F(this),this.footerManager=new P(this),this.dataLoader=new A(this),this.bindModules(),this.options=this.optionsList.generate(e.defaultOptions,t),this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.externalEvents=new O(this.options,this.options.debugEventsExternal),this.eventBus=new _(this.options.debugEventsInternal),this.interactionMonitor=new H(this),this.dataLoader.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this.footerManager.initialize()}},{key:"rtlCheck",value:function(){var e=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==e.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}}},{key:"_mapDepricatedFunctionality",value:function(){}},{key:"_clearSelection",value:function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")}},{key:"_create",value:function(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this.rtlCheck(),this._buildElement(),this._loadInitialData()}},{key:"_clearObjectPointers",value:function(){this.options.columns=this.options.columns.slice(0),this.options.data&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}},{key:"_buildElement",value:function(){var e=this.element,t=this.options;for(e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);for(var i in t.height&&(t.height=isNaN(t.height)?t.height:t.height+"px",e.style.height=t.height),!1!==t.minHeight&&(t.minHeight=isNaN(t.minHeight)?t.minHeight:t.minHeight+"px",e.style.minHeight=t.minHeight),!1!==t.maxHeight&&(t.maxHeight=isNaN(t.maxHeight)?t.maxHeight:t.maxHeight+"px",e.style.maxHeight=t.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modulesCore){this.modulesCore[i].initialize()}if("string"==typeof t.placeholder){var n=document.createElement("div");n.classList.add("tabulator-placeholder");var o=document.createElement("span");o.innerHTML=t.placeholder,n.appendChild(o),t.placeholder=n}for(var a in e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),t.footerElement&&this.footerManager.activate(),t.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modulesRegular){this.modulesRegular[a].initialize()}this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built"),this.externalEvents.dispatch("tableBuilt")}},{key:"_loadInitialData",value:function(){this.dataLoader.load(this.options.data)}},{key:"destroy",value:function(){var e=this.element;for(N.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.rows.forEach((function(e){e.wipe()})),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[];e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")}},{key:"_detectBrowser",value:function(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}},{key:"blockRedraw",value:function(){return this.rowManager.blockRedraw()}},{key:"restoreRedraw",value:function(){return this.rowManager.restoreRedraw()}},{key:"setDataFromLocalFile",value:function(e){var t=this;return new Promise((function(i,n){var o=document.createElement("input");o.type="file",o.accept=e||".json,application/json",o.addEventListener("change",(function(e){var a,r=o.files[0],s=new FileReader;s.readAsText(r),s.onload=function(e){try{a=JSON.parse(s.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void n(e)}t.setData(a).then((function(e){i(e)})).catch((function(e){i(e)}))},s.onerror=function(e){console.warn("File Load Error - Unable to read file"),n()}})),o.click()}))}},{key:"setData",value:function(e,t,i){return this.dataLoader.load(e,t,i,!1)}},{key:"clearData",value:function(){this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}},{key:"getData",value:function(e){return this.rowManager.getData(e)}},{key:"getDataCount",value:function(e){return this.rowManager.getDataCount(e)}},{key:"replaceData",value:function(e,t,i){return this.dataLoader.load(e,t,i,!0,!0)}},{key:"updateData",value:function(e){var t=this,i=0;return new Promise((function(n,o){t.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((function(e){var o=t.rowManager.findRow(e[t.options.index]);o&&(i++,o.updateData(e).then((function(){--i||n()})))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}},{key:"addData",value:function(e,t,i){var n=this;return new Promise((function(o,a){n.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?n.rowManager.addRows(e,t,i).then((function(e){var t=[];e.forEach((function(e){t.push(e.getComponent())})),o(t)})):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))}))}},{key:"updateOrAddData",value:function(e){var t=this,i=[],n=0;return new Promise((function(o,a){t.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((function(e){var a=t.rowManager.findRow(e[t.options.index]);n++,a?a.updateData(e).then((function(){n--,i.push(a.getComponent()),n||o(i)})):t.rowManager.addRows(e).then((function(e){n--,i.push(e[0].getComponent()),n||o(i)}))})):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))}))}},{key:"getRow",value:function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}},{key:"getRowFromPosition",value:function(e,t){var i=this.rowManager.getRowFromPosition(e,t);return i?i.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}},{key:"deleteRow",value:function(e){var t=this,i=[];Array.isArray(e)||(e=[e]);var n,o=p(e);try{for(o.s();!(n=o.n()).done;){var a=n.value,r=this.rowManager.findRow(a,!0);if(!r)return console.error("Delete Error - No matching row found:",a),Promise.reject("Delete Error - No matching row found");i.push(r)}}catch(e){o.e(e)}finally{o.f()}return i.sort((function(e,i){return t.rowManager.rows.indexOf(e)>t.rowManager.rows.indexOf(i)?1:-1})),i.forEach((function(e){e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}},{key:"addRow",value:function(e,t,i){return"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i).then((function(e){return e[0].getComponent()}))}},{key:"updateOrAddRow",value:function(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((function(){return i.getComponent()})):this.rowManager.addRows(t).then((function(e){return e[0].getComponent()}))}},{key:"updateRow",value:function(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((function(){resolve(i.getComponent())})):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}},{key:"scrollToRow",value:function(e,t,i){var n=this.rowManager.findRow(e);return n?this.rowManager.scrollToRow(n,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}},{key:"moveRow",value:function(e,t,i){var n=this.rowManager.findRow(e);n?n.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}},{key:"getRows",value:function(e){return this.rowManager.getComponents(e)}},{key:"getRowPosition",value:function(e,t){var i=this.rowManager.findRow(e);return i?this.rowManager.getRowPosition(i,t):(console.warn("Position Error - No matching row found:",e),!1)}},{key:"setColumns",value:function(e){this.columnManager.setColumns(e)}},{key:"getColumns",value:function(e){return this.columnManager.getComponents(e)}},{key:"getColumn",value:function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}},{key:"getColumnDefinitions",value:function(){return this.columnManager.getDefinitionTree()}},{key:"showColumn",value:function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}},{key:"hideColumn",value:function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}},{key:"toggleColumn",value:function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()}},{key:"addColumn",value:function(e,t,i){var n=this.columnManager.findColumn(i);return this.columnManager.addColumn(e,t,n).then((function(e){return e.getComponent()}))}},{key:"deleteColumn",value:function(e){var t=this.columnManager.findColumn(e);return t?t.delete():(console.warn("Column Delete Error - No matching column found:",e),Promise.reject())}},{key:"updateColumnDefinition",value:function(e,t){var i=this.columnManager.findColumn(e);return i?i.updateDefinition(t):(console.warn("Column Update Error - No matching column found:",e),Promise.reject())}},{key:"moveColumn",value:function(e,t,i){var n=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);n?o?this.columnManager.moveColumn(n,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}},{key:"scrollToColumn",value:function(e,t,i){var n=this;return new Promise((function(o,a){var r=n.columnManager.findColumn(e);return r?n.columnManager.scrollToColumn(r,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}},{key:"redraw",value:function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)}},{key:"setHeight",value:function(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw()}},{key:"on",value:function(e,t){this.externalEvents.subscribe(e,t)}},{key:"off",value:function(e,t){this.externalEvents.unsubscribe(e,t)}},{key:"dispatchEvent",value:function(){var e,t=Array.from(arguments);t.shift();(e=this.externalEvents).dispatch.apply(e,arguments)}},{key:"modExists",value:function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}},{key:"module",value:function(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}]),e}();q.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,height:!1,minHeight:!1,maxHeight:!1,columnMaxWidth:!1,columnHeaderVertAlign:"top",columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",tooltipGenerationMode:"load",footerElement:!1,index:"id",textDirection:"auto",addRowPos:"bottom",headerVisible:!0,renderVertical:"virtual",renderHorizontal:"basic",renderVerticalBuffer:0,scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataSendParams:{},dataReceiveParams:{}},new X(q);var K=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).allowedTypes=["","data","download","clipboard","print","htmlOutput"],i.registerColumnOption("accessor"),i.registerColumnOption("accessorParams"),i.registerColumnOption("accessorData"),i.registerColumnOption("accessorDataParams"),i.registerColumnOption("accessorDownload"),i.registerColumnOption("accessorDownloadParams"),i.registerColumnOption("accessorClipboard"),i.registerColumnOption("accessorClipboardParams"),i.registerColumnOption("accessorPrint"),i.registerColumnOption("accessorPrintParams"),i.registerColumnOption("accessorHtmlOutput"),i.registerColumnOption("accessorHtmlOutputParams"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}},{key:"initializeColumn",value:function(e){var t=!1,i={};this.allowedTypes.forEach((function(n){var o,a="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[a]&&(o=this.lookupAccessor(e.definition[a]))&&(t=!0,i[a]={accessor:o,params:e.definition[a+"Params"]||{}})})),t&&(e.modules.accessor=i)}},{key:"lookupAccessor",value:function(t){var i=!1;switch(e(t)){case"string":r.accessors[t]?i=r.accessors[t]:console.warn("Accessor Error - No such accessor found, ignoring: ",t);break;case"function":i=t}return i}},{key:"transformRow",value:function(e,t){var i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),n=e.getComponent(),o=C.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var a,r,s,l;e.modules.accessor&&(r=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(a=e.getFieldValue(o))&&(l=e.getComponent(),s="function"==typeof r.params?r.params(a,o,t,l,n):r.params,e.setFieldValue(o,r.accessor(a,o,t,s,l,n)))})),o}}]),r}(B);K.moduleName="accessor",K.accessors={};function Y(t,i){var n=[];if(i=i||"",Array.isArray(t))t.forEach((function(e,t){n=n.concat(Y(e,i?i+"["+t+"]":t))}));else if("object"===e(t))for(var o in t)n=n.concat(Y(t[o],i?i+"["+o+"]":o));else n.push({key:i,value:t});return n}function J(e){var t=Y(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}var $={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var n=this.generateParamsList(i),o=new FormData;return n.forEach((function(e){o.append(e.key,e.value)})),o}}},Q=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).config=!1,o.url="",o.urlGenerator=!1,o.params=!1,o.loaderPromise=!1,o.registerTableOption("ajaxURL",!1),o.registerTableOption("ajaxURLGenerator",!1),o.registerTableOption("ajaxParams",{}),o.registerTableOption("ajaxConfig","get"),o.registerTableOption("ajaxContentType","form"),o.registerTableOption("ajaxRequestFunc",!1),o.registerTableOption("ajaxRequesting",(function(){})),o.registerTableOption("ajaxResponse",!1),o.contentTypeFormatters=n.contentTypeFormatters,o}return o(n,[{key:"initialize",value:function(){this.loaderPromise=this.table.options.ajaxRequestFunc||n.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||n.defaultURLGenerator,this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.registerTableFunction("getAjaxUrl",this.getUrl.bind(this)),this.subscribe("data-loading",this.requestDataCheck.bind(this)),this.subscribe("data-load",this.requestData.bind(this))}},{key:"requestDataCheck",value:function(e,t,i,n){return!((e||!this.url)&&"string"!=typeof e)}},{key:"requestData",value:function(e,t,i,n,o){return this.requestDataCheck(e)?(e&&this.setUrl(e),t&&this.setParams(t,!0),i&&this.setConfig(i),this.sendRequest()):o}},{key:"setParams",value:function(e,t){if(t)for(var i in this.params=this.params||{},e)this.params[i]=e[i];else this.params=e}},{key:"getParams",value:function(){return this.params||{}}},{key:"setConfig",value:function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]}},{key:"_loadDefaultConfig",value:function(e){if(!this.config||e)for(var t in this.config={},n.defaultConfig)this.config[t]=n.defaultConfig[t]}},{key:"setUrl",value:function(e){this.url=e}},{key:"getUrl",value:function(){return this.url}},{key:"sendRequest",value:function(e){var t=this,i=this.url;return this._loadDefaultConfig(),!1!==this.table.options.ajaxRequesting.call(this.table,this.url,this.params)?this.loaderPromise(i,this.config,this.params).then((function(e){return t.table.options.ajaxResponse&&(e=t.table.options.ajaxResponse.call(t.table,t.url,t.params,e)),e})):Promise.reject()}}]),n}(B);Q.moduleName="ajax",Q.defaultConfig={method:"GET"},Q.defaultURLGenerator=function(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+J(i))),e},Q.defaultLoaderPromise=function(t,i,n){var o,a=this;return new Promise((function(r,s){if(t=a.urlGenerator.call(a.table,t,i,n),"GET"!=i.method.toUpperCase())if(o="object"===e(a.table.options.ajaxContentType)?a.table.options.ajaxContentType:a.contentTypeFormatters[a.table.options.ajaxContentType]){for(var l in o.headers)i.headers||(i.headers={}),void 0===i.headers[l]&&(i.headers[l]=o.headers[l]);i.body=o.body.call(a,t,i,n)}else console.warn("Ajax Error - Invalid ajaxContentType value:",a.table.options.ajaxContentType);t?(void 0===i.headers&&(i.headers={}),void 0===i.headers.Accept&&(i.headers.Accept="application/json"),void 0===i.headers["X-Requested-With"]&&(i.headers["X-Requested-With"]="XMLHttpRequest"),void 0===i.mode&&(i.mode="cors"),"cors"==i.mode?(void 0===i.headers.Origin&&(i.headers.Origin=window.location.origin),void 0===i.credentials&&(i.credentials="same-origin")):void 0===i.credentials&&(i.credentials="include"),fetch(t,i).then((function(e){e.ok?e.json().then((function(e){r(e)})).catch((function(e){s(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),s(e))})).catch((function(e){console.error("Ajax Load Error - Connection Error: ",e),s(e)}))):(console.warn("Ajax Load Error - No URL Set"),r([]))}))},Q.contentTypeFormatters=$;var Z=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).mode=!0,i.pasteParser=function(){},i.pasteAction=function(){},i.customSelection=!1,i.rowRange=!1,i.blocked=!0,i.registerTableOption("clipboard",!1),i.registerTableOption("clipboardCopyStyled",!0),i.registerTableOption("clipboardCopyConfig",!1),i.registerTableOption("clipboardCopyFormatter",!1),i.registerTableOption("clipboardCopyRowRange","active"),i.registerTableOption("clipboardPasteParser","table"),i.registerTableOption("clipboardPasteAction","insert"),i.registerColumnOption("clipboard"),i.registerColumnOption("titleClipboard"),i}return o(r,[{key:"initialize",value:function(){var e=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(function(t){var i,n;if(!e.blocked){if(t.preventDefault(),e.customSelection)i=e.customSelection,e.table.options.clipboardCopyFormatter&&(i=e.table.options.clipboardCopyFormatter("plain",i));else{var o=e.table.modules.export.generateExportList(e.table.options.clipboardCopyConfig,e.table.options.clipboardCopyStyled,e.rowRange,"clipboard");i=(n=e.table.modules.export.genereateHTMLTable(o))?e.generatePlainContent(o):"",e.table.options.clipboardCopyFormatter&&(i=e.table.options.clipboardCopyFormatter("plain",i),n=e.table.options.clipboardCopyFormatter("html",n))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",i):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",i),n&&t.clipboardData.setData("text/html",n)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",i),n&&t.originalEvent.clipboardData.setData("text/html",n)),e.dispatchExternal("clipboardCopied",i,n),e.reset()}})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(function(t){e.paste(t)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}},{key:"reset",value:function(){this.blocked=!0,this.customSelection=!1}},{key:"generatePlainContent",value:function(t){var i=[];return t.forEach((function(t){var n=[];t.columns.forEach((function(i){var o="";if(i)if("group"===t.type&&(i.value=i.component.getKey()),null===i.value)o="";else switch(e(i.value)){case"object":o=JSON.stringify(i.value);break;case"undefined":o="";break;default:o=i.value}n.push(o)})),i.push(n.join("\t"))})),i.join("\n")}},{key:"copy",value:function(e,t){var i,n;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?((e=document.createRange()).selectNodeContents(this.table.element),(i=window.getSelection()).toString()&&t&&(this.customSelection=i.toString()),i.removeAllRanges(),i.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((n=document.body.createTextRange()).moveToElementText(this.table.element),n.select()),document.execCommand("copy"),i&&i.removeAllRanges())}},{key:"setPasteAction",value:function(t){switch(e(t)){case"string":this.pasteAction=r.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}}},{key:"setPasteParser",value:function(t){switch(e(t)){case"string":this.pasteParser=r.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}}},{key:"paste",value:function(e){var t,i,n;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),n=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,n)):this.dispatchExternal("clipboardPasteError",t))}},{key:"mutateData",value:function(e){var t=this,i=[];return Array.isArray(e)?e.forEach((function(e){i.push(t.table.modules.mutator.transformRow(e,"clipboard"))})):i=e,i}},{key:"checkPaseOrigin",value:function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t}},{key:"getPasteData",value:function(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t}}]),r}(B);Z.moduleName="clipboard",Z.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},Z.pasteParsers={table:function(e){var t=[],i=!0,n=this.table.columnManager.columns,o=[],a=[];return(e=e.split("\n")).forEach((function(e){t.push(e.split("\t"))})),!(!t.length||1===t.length&&t[0].length<2)&&(t[0].forEach((function(e){var t=n.find((function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()}));t?o.push(t):i=!1})),i||(i=!0,o=[],t[0].forEach((function(e){var t=n.find((function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()}));t?o.push(t):i=!1})),i||(o=this.table.columnManager.columnsByIndex)),i&&t.shift(),t.forEach((function(e){var t={};e.forEach((function(e,i){o[i]&&(t[o[i].field]=e)})),a.push(t)})),a)}};var ee=function(){function e(i){return t(this,e),this._row=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}return o(e,[{key:"getData",value:function(e){return this._row.getData(e)}},{key:"getElement",value:function(){return this._row.getElement()}},{key:"getTable",value:function(){return this._row.table}},{key:"getCells",value:function(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}},{key:"getCell",value:function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}},{key:"_getSelf",value:function(){return this._row}}]),e}(),te={avg:function(e,t,i){var n=0,o=void 0!==i.precision?i.precision:2;return e.length&&(n=e.reduce((function(e,t){return Number(e)+Number(t)})),n/=e.length,n=!1!==o?n.toFixed(o):n),parseFloat(n).toString()},max:function(e,t,i){var n=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))>n||null===n)&&(n=e)})),null!==n?!1!==o?n.toFixed(o):n:""},min:function(e,t,i){var n=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))"),n.dataTreeExpandElement?"string"==typeof n.dataTreeExpandElement?((t=document.createElement("div")).innerHTML=n.dataTreeExpandElement,this.expandEl=t.firstChild):this.expandEl=n.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
"),e(n.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return n.dataTreeStartExpanded};break;case"function":this.startOpen=n.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return n.dataTreeStartExpanded[t]}}this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("row-relayout",this.layoutRow.bind(this)),this.subscribe("row-deleted",this.rowDelete.bind(this),0),this.subscribe("row-data-changed",this.rowDataChanged.bind(this),10),this.subscribe("column-moving-rows",this.columnMoving.bind(this)),this.registerDisplayHandler(this.getRows.bind(this),30)}}},{key:"getRowChildren",value:function(e){return this.getTreeChildren(e,!0)}},{key:"columnMoving",value:function(){var e=this,t=[];return this.table.rowManager.rows.forEach((function(i){t=t.concat(e.getTreeChildren(i,!1,!0))})),t}},{key:"rowDataChanged",value:function(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}},{key:"initializeRow",value:function(t){var i=t.getData()[this.field],n=Array.isArray(i),o=n||!n&&"object"===e(i)&&null!==i;!o&&t.modules.dataTree&&t.modules.dataTree.branchEl&&t.modules.dataTree.branchEl.parentNode.removeChild(t.modules.dataTree.branchEl),!o&&t.modules.dataTree&&t.modules.dataTree.controlEl&&t.modules.dataTree.controlEl.parentNode.removeChild(t.modules.dataTree.controlEl),t.modules.dataTree={index:t.modules.dataTree?t.modules.dataTree.index:0,open:!!o&&(t.modules.dataTree?t.modules.dataTree.open:this.startOpen(t.getComponent(),0)),controlEl:!(!t.modules.dataTree||!o)&&t.modules.dataTree.controlEl,branchEl:!(!t.modules.dataTree||!o)&&t.modules.dataTree.branchEl,parent:!!t.modules.dataTree&&t.modules.dataTree.parent,children:o}}},{key:"reinitializeRowChildren",value:function(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}},{key:"layoutRow",value:function(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,t),e.getElement().classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(i.branchEl,t.firstChild),this.table.rtl?i.branchEl.style.marginRight=(i.branchEl.offsetWidth+i.branchEl.style.marginLeft)*(i.index-1)+i.index*this.indent+"px":i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):this.table.rtl?t.style.paddingRight=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-right"))+i.index*this.indent+"px":t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")}},{key:"generateControlElement",value:function(e,t){var i=this,n=e.modules.dataTree,o=(t=t||e.getCells()[0].getElement(),n.controlEl);!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",(function(t){t.stopPropagation(),i.collapseRow(e)}))):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",(function(t){t.stopPropagation(),i.expandRow(e)}))),n.controlEl.addEventListener("mousedown",(function(e){e.stopPropagation()})),o&&o.parentNode===t?o.parentNode.replaceChild(n.controlEl,o):t.insertBefore(n.controlEl,t.firstChild))}},{key:"setDisplayIndex",value:function(e){this.displayIndex=e}},{key:"getDisplayIndex",value:function(){return this.displayIndex}},{key:"getRows",value:function(e){var t=this,i=[];return e.forEach((function(e,n){var o;i.push(e),e instanceof L&&(e.create(),(o=e.modules.dataTree.children).index||!1===o.children||t.getChildren(e).forEach((function(e){e.create(),i.push(e)})))})),i}},{key:"getChildren",value:function(e,t){var i=this,n=e.modules.dataTree,o=[],a=[];return!1!==n.children&&(n.open||t)&&(Array.isArray(n.children)||(n.children=this.generateChildren(e)),o=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(n.children):n.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(o),o.forEach((function(e){a.push(e),i.getChildren(e).forEach((function(e){a.push(e)}))}))),a}},{key:"generateChildren",value:function(e){var t=this,i=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach((function(n){var o=new L(n||{},t.table.rowManager);o.create(),o.modules.dataTree.index=e.modules.dataTree.index+1,o.modules.dataTree.parent=e,o.modules.dataTree.children&&(o.modules.dataTree.open=t.startOpen(o.getComponent(),o.modules.dataTree.index)),i.push(o)})),i}},{key:"expandRow",value:function(e,t){var i=e.modules.dataTree;!1!==i.children&&(i.open=!0,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowExpanded",e.getComponent(),e.modules.dataTree.index))}},{key:"collapseRow",value:function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowCollapsed",e.getComponent(),e.modules.dataTree.index))}},{key:"toggleRow",value:function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}},{key:"getTreeParent",value:function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}},{key:"getFilteredTreeChildren",value:function(e){var t=e.modules.dataTree,i=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),(this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(t.children):t.children).forEach((function(e){e instanceof L&&i.push(e)}))),i}},{key:"rowDelete",value:function(e){var t,i=e.modules.dataTree.parent;i&&(!1!==(t=this.findChildIndex(e,i))&&i.data[this.field].splice(t,1),i.data[this.field].length||delete i.data[this.field],this.initializeRow(i),this.layoutRow(i)),this.refreshData(!0)}},{key:"addTreeChildRow",value:function(e,t,i,n){var o=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==n&&!1!==(o=this.findChildIndex(n,e))&&e.data[this.field].splice(i?o:o+1,0,t),!1===o&&(i?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.refreshData(!0)}},{key:"findChildIndex",value:function(t,i){var n=this,o=!1;return"object"==e(t)?t instanceof L?o=t.data:t instanceof RowComponent?o=t._getSelf().data:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&i.modules.dataTree&&(o=i.modules.dataTree.children.find((function(e){return e instanceof L&&e.element===t})))&&(o=o.data):o=null!=t&&i.data[this.field].find((function(e){return e.data[n.table.options.index]==t})),o&&(Array.isArray(i.data[this.field])&&(o=i.data[this.field].indexOf(o)),-1==o&&(o=!1)),o}},{key:"getTreeChildren",value:function(e,t,i){var n=this,o=e.modules.dataTree,a=[];return o.children&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),o.children.forEach((function(e){e instanceof L&&(a.push(t?e.getComponent():e),i&&(a=a.concat(n.getTreeChildren(e,t,i))))}))),a}},{key:"checkForRestyle",value:function(e){e.row.cells.indexOf(e)||e.row.reinitialize()}},{key:"getChildField",value:function(){return this.field}},{key:"redrawNeeded",value:function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}]),r}(B);ne.moduleName="dataTree";var oe={csv:function(t,i,n){var o=i&&i.delimiter?i.delimiter:",",a=[],r=[];t.forEach((function(t){var i=[];switch(t.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":t.columns.forEach((function(e,t){e&&1===e.depth&&(r[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":t.columns.forEach((function(t){if(t){switch(e(t.value)){case"object":t.value=JSON.stringify(t.value);break;case"undefined":case"null":t.value=""}i.push('"'+String(t.value).split('"').join('""')+'"')}})),a.push(i.join(o))}})),r.length&&a.unshift(r.join(o)),a=a.join("\n"),i.bom&&(a="\ufeff"+a),n(a,"text/csv")},json:function(e,t,i){var n=[];e.forEach((function(e){var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((function(e){e&&(t[e.component.getField()]=e.value)})),n.push(t)}})),i(n=JSON.stringify(n,null,"\t"),"application/json")},pdf:function(t,i,n){var o=[],a=[],r={},s=i.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},l=i.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},u=i.jsPDF||{},c=i&&i.title?i.title:"";function h(t,i){var n=[];return t.columns.forEach((function(t){var o;if(t){switch(e(t.value)){case"object":t.value=JSON.stringify(t.value);break;case"undefined":case"null":t.value=""}o={content:t.value,colSpan:t.width,rowSpan:t.height},i&&(o.styles=i),n.push(o)}else n.push("")})),n}u.orientation||(u.orientation=i.orientation||"landscape"),u.unit||(u.unit="pt"),t.forEach((function(e){switch(e.type){case"header":o.push(h(e));break;case"group":a.push(h(e,s));break;case"calc":a.push(h(e,l));break;case"row":a.push(h(e))}}));var d=new jspdf.jsPDF(u);i&&i.autoTable&&(r="function"==typeof i.autoTable?i.autoTable(d)||{}:i.autoTable),c&&(r.didDrawPage=function(e){d.text(c,40,30)}),r.head=o,r.body=a,d.autoTable(r),i&&i.documentProcessing&&i.documentProcessing(d),n(d.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,n){var o=i.sheetName||"Sheet1",a=XLSX.utils.book_new(),r=new f(this);function s(){var i=[],n=[],o={},a={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce((function(e,t){return e+(t&&t.width?t.width:1)}),0):0,r:t.length}};return t.forEach((function(t,o){var a=[];t.columns.forEach((function(t,i){t?(a.push(t.value instanceof Date||"object"!==e(t.value)?t.value:JSON.stringify(t.value)),(t.width>1||t.height>-1)&&n.push({s:{r:o,c:i},e:{r:o+t.height-1,c:i+t.width-1}})):a.push("")})),i.push(a)})),XLSX.utils.sheet_add_aoa(o,i),o["!ref"]=XLSX.utils.encode_range(a),n.length&&(o["!merges"]=n),o}if(a.SheetNames=[],a.Sheets={},i.sheetOnly)n(s());else{if(i.sheets)for(var l in i.sheets)!0===i.sheets[l]?(a.SheetNames.push(l),a.Sheets[l]=s()):(a.SheetNames.push(l),r.commsSend(i.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){a.Sheets[l]=e}}));else a.SheetNames.push(o),a.Sheets[o]=s();i.documentProcessing&&(a=i.documentProcessing(a)),n(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),n=0;n!=e.length;++n)i[n]=255&e.charCodeAt(n);return t}(XLSX.write(a,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.genereateHTMLTable(e),"text/html")}},ae=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).registerTableOption("downloadReady",(function(e,t){return t})),o.registerTableOption("downloadConfig",{}),o.registerTableOption("downloadRowRange","active"),o.registerColumnOption("download"),o.registerColumnOption("titleDownload"),o}return o(n,[{key:"initialize",value:function(){this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}},{key:"downloadToTab",value:function(e,t,i,n){this.download(e,t,i,n,!0)}},{key:"download",value:function(e,t,i,o,a){var r=!1;if("function"==typeof e?r=e:n.downloaders[e]?r=n.downloaders[e]:console.warn("Download Error - No such download type found: ",e),r){var s=this.generateExportList(o);r.call(this.table,s,i||{},function(i,n){a?!0===a?this.triggerDownload(i,n,e,t,!0):a(i):this.triggerDownload(i,n,e,t)}.bind(this))}}},{key:"generateExportList",value:function(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),i=this.table.options.groupHeaderDownload;return i&&!Array.isArray(i)&&(i=[i]),t.forEach((function(e){var t;"group"===e.type&&(t=e.columns[0],i&&i[e.indent]&&(t.value=i[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))})),t}},{key:"triggerDownload",value:function(e,t,i,n,o){var a=document.createElement("a"),r=new Blob([e],{type:t});n=n||"Tabulator."+("function"==typeof i?"txt":i);(r=this.table.options.downloadReady(e,r))&&(o?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,n):(a.setAttribute("href",window.URL.createObjectURL(r)),a.setAttribute("download",n),a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a)),this.dispatchExternal("downloadComplete"))}},{key:"commsReceived",value:function(e,t,i){switch(t){case"intercept":this.download(i.type,"",i.options,i.active,i.intercept)}}}]),n}(B);function re(e,t){var i=t.mask,n=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",a=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var s=i[t];void 0!==s&&s!==a&&s!==n&&s!==o&&(e.value=e.value+""+s,r(t+1))}e.addEventListener("keydown",(function(t){var r=e.value.length,s=t.key;if(t.keyCode>46){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case n:if(s.toUpperCase()==s.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(s))return t.preventDefault(),t.stopPropagation(),!1;break;case a:break;default:if(s!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(function(i){i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}ae.moduleName="download",ae.downloaders=oe;var se={input:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input");if(s.setAttribute("type",a.search?"search":"text"),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var l in a.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),s.setAttribute(l,s.getAttribute(l)+a.elementAttributes["+"+l])):s.setAttribute(l,a.elementAttributes[l]);function u(e){null==r&&""!==s.value||s.value!==r?n(s.value)&&(r=s.value):o()}return s.value=void 0!==r?r:"",i((function(){s.focus({preventScroll:!0}),s.style.height="100%"})),s.addEventListener("change",u),s.addEventListener("blur",u),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:u();break;case 27:o();break;case 35:case 36:e.stopPropagation()}})),a.mask&&re(s,a),s},textarea:function(t,i,n,o,a){var r=t.getValue(),s=a.verticalNavigation||"hybrid",l=String(null!=r?r:""),u=((l.match(/(?:\r\n|\r|\n)/g)||[]).length,document.createElement("textarea")),c=0;if(u.style.display="block",u.style.padding="2px",u.style.height="100%",u.style.width="100%",u.style.boxSizing="border-box",u.style.whiteSpace="pre-wrap",u.style.resize="none",a.elementAttributes&&"object"==e(a.elementAttributes))for(var h in a.elementAttributes)"+"==h.charAt(0)?(h=h.slice(1),u.setAttribute(h,u.getAttribute(h)+a.elementAttributes["+"+h])):u.setAttribute(h,a.elementAttributes[h]);function d(e){null==r&&""!==u.value||u.value!==r?(n(u.value)&&(r=u.value),setTimeout((function(){t.getRow().normalizeHeight()}),300)):o()}return u.value=l,i((function(){u.focus({preventScroll:!0}),u.style.height="100%",u.scrollHeight,u.style.height=u.scrollHeight+"px",t.getRow().normalizeHeight()})),u.addEventListener("change",d),u.addEventListener("blur",d),u.addEventListener("keyup",(function(){u.style.height="";var e=u.scrollHeight;u.style.height=e+"px",e!=c&&(c=e,t.getRow().normalizeHeight())})),u.addEventListener("keydown",(function(e){switch(e.keyCode){case 27:o();break;case 38:("editor"==s||"hybrid"==s&&u.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==s||"hybrid"==s&&u.selectionStart!==u.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),a.mask&&re(u,a),u},number:function(t,i,n,o,a){var r=t.getValue(),s=a.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==a.max&&l.setAttribute("max",a.max),void 0!==a.min&&l.setAttribute("min",a.min),void 0!==a.step&&l.setAttribute("step",a.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var u in a.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),l.setAttribute(u,l.getAttribute(u)+a.elementAttributes["+"+u])):l.setAttribute(u,a.elementAttributes[u]);l.value=r;var c=function(e){h()};function h(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!==r?n(e)&&(r=e):o()}return i((function(){l.removeEventListener("blur",c),l.focus({preventScroll:!0}),l.style.height="100%",l.addEventListener("blur",c)})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:o();break;case 38:case 40:"editor"==s&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),a.mask&&re(l,a),l},range:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input");if(s.setAttribute("type","range"),void 0!==a.max&&s.setAttribute("max",a.max),void 0!==a.min&&s.setAttribute("min",a.min),void 0!==a.step&&s.setAttribute("step",a.step),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var l in a.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),s.setAttribute(l,s.getAttribute(l)+a.elementAttributes["+"+l])):s.setAttribute(l,a.elementAttributes[l]);function u(){var e=s.value;isNaN(e)||""===e||(e=Number(e)),e!=r?n(e)&&(r=e):o()}return s.value=r,i((function(){s.focus({preventScroll:!0}),s.style.height="100%"})),s.addEventListener("blur",(function(e){u()})),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:u();break;case 27:o()}})),s},select:function(t,i,n,o,a){var r=this,s=this,l=t.getElement(),u=t.getValue(),c=a.verticalNavigation||"editor",h=void 0!==u||null===u?Array.isArray(u)?u:[u]:void 0!==a.defaultValue?a.defaultValue:[],d=document.createElement("input"),m=document.createElement("div"),p=a.multiselect,f=[],g={},v=[],b=[],y=!0,w=!1,E="",k=null;function R(e){var i,n={},o=s.table.getData();return(i=e?s.table.columnManager.getColumnByField(e):t.getColumn()._getSelf())?o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(n[t]=!0)})):console.warn("unable to find matching column to create select lookup list:",e),Object.keys(n)}function x(i,n){var o=[],r=[];function s(e){e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return n.indexOf(e.value)>-1&&M(e),o.push(e),r.push(e),e}if("function"==typeof i&&(i=i(t)),Array.isArray(i))i.forEach((function(t){var i;"object"===e(t)?t.options?(i={label:t.label,group:!0,itemParams:t.itemParams,elementAttributes:t.elementAttributes,element:!1},r.push(i),t.options.forEach((function(e){s(e)}))):s(t):(i={label:t,value:t,element:!1},n.indexOf(i.value)>-1&&M(i),o.push(i),r.push(i))}));else for(var l in i){var u={label:i[l],value:l,element:!1};n.indexOf(u.value)>-1&&M(u),o.push(u),r.push(u)}a.sortValuesList&&(o.sort((function(e,t){return e.labelt.label?1:0})),r.sort((function(e,t){return e.labelt.label?1:0})),"asc"!==a.sortValuesList&&(o.reverse(),r.reverse())),f=o,v=r,function(){for(;m.firstChild;)m.removeChild(m.firstChild);v.forEach((function(i){var n=i.element;if(!n){if(n=document.createElement("div"),i.label=a.listItemFormatter?a.listItemFormatter(i.value,i.label,t,n,i.itemParams):i.label,i.group?(n.classList.add("tabulator-edit-select-list-group"),n.tabIndex=0,n.innerHTML=""===i.label?" ":i.label):(n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=""===i.label?" ":i.label,n.addEventListener("click",(function(){w=!0,setTimeout((function(){w=!1}),10),p?(D(i),d.focus()):S(i)})),b.indexOf(i)>-1&&n.classList.add("active")),i.elementAttributes&&"object"==e(i.elementAttributes))for(var o in i.elementAttributes)"+"==o.charAt(0)?(o=o.slice(1),n.setAttribute(o,d.getAttribute(o)+i.elementAttributes["+"+o])):n.setAttribute(o,i.elementAttributes[o]);n.addEventListener("mousedown",(function(){y=!1,setTimeout((function(){y=!0}),10)})),i.element=n}m.appendChild(n)}))}()}function T(e,t){!p&&g&&g.element&&g.element.classList.remove("active"),g&&g.element&&g.element.classList.remove("focused"),g=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active")),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function M(e){-1==b.indexOf(e)&&(b.push(e),T(e,!0)),P()}function L(e){var t=b[e];e>-1&&(b.splice(e,1),t.element&&t.element.classList.remove("active"))}function D(e){e||(e=g);var t=b.indexOf(e);t>-1?L(t):(!0!==p&&b.length>=p&&L(0),M(e)),P()}function S(e){z(),e||(e=g),e&&(d.value=e.label,n(e.value)),h=[e.value]}function F(e){e||z();var t=[];b.forEach((function(e){t.push(e.value)})),h=t,n(t)}function P(){var e=[];b.forEach((function(t){e.push(t.label)})),d.value=e.join(", "),!1===s.currentCell&&F(!0)}function H(){z(),o()}function z(){m.parentNode&&m.parentNode.removeChild(m),s.table.rowManager.element.removeEventListener("scroll",H)}if((Array.isArray(a)||!Array.isArray(a)&&"object"===e(a)&&!a.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),a={values:a}),d.setAttribute("type","text"),d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",d.style.cursor="default",d.readOnly=0!=this.currentCell,a.elementAttributes&&"object"==e(a.elementAttributes))for(var A in a.elementAttributes)"+"==A.charAt(0)?(A=A.slice(1),d.setAttribute(A,d.getAttribute(A)+a.elementAttributes["+"+A])):d.setAttribute(A,a.elementAttributes[A]);return d.value=void 0!==u||null===u?u:"",d.addEventListener("search",(function(e){d.value||(!function(){for(var e=b.length,t=0;t0&&T(f[t-1],!p));break;case 40:t=f.indexOf(g),("editor"==c||"hybrid"==c&&t=38&&e.keyCode<=90&&function(e){clearTimeout(k);var t=String.fromCharCode(event.keyCode).toLowerCase();E+=t.toLowerCase();var i=f.find((function(e){return void 0!==e.label&&e.label.toLowerCase().startsWith(E)}));i&&T(i,!p),k=setTimeout((function(){E=""}),800)}(e.keyCode)}})),d.addEventListener("blur",(function(e){y&&(p?F():H())})),d.addEventListener("focus",(function(e){w||function(){if(b=[],!m.parentNode){!0===a.values?x(R(),h):"string"==typeof a.values?x(R(a.values),h):x(a.values||[],h);var e=C.elOffset(l);m.style.minWidth=l.offsetWidth+"px",m.style.top=e.top+l.offsetHeight+"px",m.style.left=e.left+"px",m.addEventListener("mousedown",(function(e){y=!1,setTimeout((function(){y=!0}),10)})),document.body.appendChild(m)}}()})),(m=document.createElement("div")).classList.add("tabulator-edit-select-list"),i((function(){d.style.height="100%",d.focus({preventScroll:!0})})),setTimeout((function(){r.table.rowManager.element.addEventListener("scroll",H)}),10),d},autocomplete:function(t,i,n,o,a){var r=this,s=this,l=t.getElement(),u=t.getValue(),c=a.verticalNavigation||"editor",h=void 0!==u||null===u?u:void 0!==a.defaultValue?a.defaultValue:"",d=document.createElement("input"),m=document.createElement("div"),p=[],f=!1,g=!0,v=!1;if(d.setAttribute("type","search"),d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var b in a.elementAttributes)"+"==b.charAt(0)?(b=b.slice(1),d.setAttribute(b,d.getAttribute(b)+a.elementAttributes["+"+b])):d.setAttribute(b,a.elementAttributes[b]);function y(){!0===a.values?v=w():"string"==typeof a.values&&(v=w(a.values))}function w(e){var i,n={},o=s.table.getData();return(i=e?s.table.columnManager.getColumnByField(e):t.getColumn()._getSelf())?(o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(n[t]=!0)})),n=a.sortValuesList?"asc"==a.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create autocomplete lookup list:",e),n}function E(e,t){var i,n,o=[];i=v||(a.values||[]),a.searchFunc?(o=a.searchFunc(e,i))instanceof Promise?(k(void 0!==a.searchingPlaceholder?a.searchingPlaceholder:"Searching..."),o.then((function(e){T(R(e),t)})).catch((function(e){console.err("error in autocomplete search promise:",e)}))):T(R(o),t):(n=R(i),""===e?a.showListOnEmpty&&(o=n):n.forEach((function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&o.push(t)})),T(o,t))}function k(e){var t=document.createElement("div");x(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,m.appendChild(t))}function R(t){var i=[];if(Array.isArray(t))t.forEach((function(t){var n={};"object"===e(t)?(n.title=a.listItemFormatter?a.listItemFormatter(t.value,t.label):t.label,n.value=t.value):(n.title=a.listItemFormatter?a.listItemFormatter(t,t):t,n.value=t),i.push(n)}));else for(var n in t){var o={title:a.listItemFormatter?a.listItemFormatter(n,t[n]):t[n],value:n};i.push(o)}return i}function x(){for(;m.firstChild;)m.removeChild(m.firstChild)}function T(e,t){e.length?function(e,t){var i=!1;x(),(p=e).forEach((function(e){var n=e.element;n||((n=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=e.title,n.addEventListener("click",(function(t){L(e),M()})),n.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),e.element=n,t&&e.value==u&&(d.value=e.title,e.element.classList.add("active"),i=!0),e===f&&(e.element.classList.add("active"),i=!0)),m.appendChild(n)})),i||L(!1)}(e,t):a.emptyPlaceholder&&k(a.emptyPlaceholder)}function M(){D(),f?u!==f.value?(u=f.value,d.value=f.title,n(f.value)):o():a.freetext||a.allowEmpty&&""===d.value?(u=d.value,n(d.value)):o()}function L(e,t){f&&f.element&&f.element.classList.remove("active"),f=e,e&&e.element&&e.element.classList.add("active"),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function D(){m.parentNode&&m.parentNode.removeChild(m),s.table.rowManager.element.removeEventListener("scroll",S)}function S(){D(),o()}return m.classList.add("tabulator-edit-select-list"),m.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),d.addEventListener("keydown",(function(e){var t;switch(e.keyCode){case 38:t=p.indexOf(f),("editor"==c||"hybrid"==c&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),L(t>0&&p[t-1]));break;case 40:t=p.indexOf(f),("editor"==c||"hybrid"==c&&t'):("ie"==r.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function f(e){var t=document.createElement("span"),i=m.cloneNode(!0);h.push(i),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),p(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),n(e),s.blur()})),t.appendChild(i),d.appendChild(t)}function g(e){l=e,p(e)}if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",d.style.verticalAlign="middle",d.style.display="inline-block",d.style.padding="4px",m.setAttribute("width",c),m.setAttribute("height",c),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",a.elementAttributes&&"object"==e(a.elementAttributes))for(var v in a.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),d.setAttribute(v,d.getAttribute(v)+a.elementAttributes["+"+v])):d.setAttribute(v,a.elementAttributes[v]);for(var b=1;b<=u;b++)f(b);return p(l=Math.min(parseInt(l),u)),d.addEventListener("mousemove",(function(e){p(0)})),d.addEventListener("click",(function(e){n(0)})),s.addEventListener("blur",(function(e){o()})),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(l+1);break;case 37:g(l-1);break;case 13:n(l);break;case 27:o()}})),d},progress:function(t,i,n,o,a){var r,s,l=t.getElement(),u=void 0===a.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:a.max,c=void 0===a.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:a.min,h=(u-c)/100,d=t.getValue()||0,m=document.createElement("div"),p=document.createElement("div");function f(){var e=window.getComputedStyle(l,null),t=h*Math.round(p.offsetWidth/((l.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+c;n(t),l.setAttribute("aria-valuenow",t),l.setAttribute("aria-label",d)}if(m.style.position="absolute",m.style.right="0",m.style.top="0",m.style.bottom="0",m.style.width="5px",m.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",a.elementAttributes&&"object"==e(a.elementAttributes))for(var g in a.elementAttributes)"+"==g.charAt(0)?(g=g.slice(1),p.setAttribute(g,p.getAttribute(g)+a.elementAttributes["+"+g])):p.setAttribute(g,a.elementAttributes[g]);return l.style.padding="4px 4px",d=Math.min(parseFloat(d),u),d=Math.max(parseFloat(d),c),d=Math.round((d-c)/h),p.style.width=d+"%",l.setAttribute("aria-valuemin",c),l.setAttribute("aria-valuemax",u),p.appendChild(m),m.addEventListener("mousedown",(function(e){r=e.screenX,s=p.offsetWidth})),m.addEventListener("mouseover",(function(){m.style.cursor="ew-resize"})),l.addEventListener("mousemove",(function(e){r&&(p.style.width=s+e.screenX-r+"px")})),l.addEventListener("mouseup",(function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,s=!1,f())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+l.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-l.clientWidth/100+"px";break;case 9:case 13:f();break;case 27:o()}})),l.addEventListener("blur",(function(){o()})),p},tickCross:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input"),l=a.tristate,u=void 0===a.indeterminateValue?null:a.indeterminateValue,c=!1;if(s.setAttribute("type","checkbox"),s.style.marginTop="5px",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var h in a.elementAttributes)"+"==h.charAt(0)?(h=h.slice(1),s.setAttribute(h,s.getAttribute(h)+a.elementAttributes["+"+h])):s.setAttribute(h,a.elementAttributes[h]);function d(e){return l?e?c?u:s.checked:s.checked&&!c?(s.checked=!1,s.indeterminate=!0,c=!0,u):(c=!1,s.checked):s.checked}return s.value=r,!l||void 0!==r&&r!==u&&""!==r||(c=!0,s.indeterminate=!0),"firefox"!=this.table.browser&&i((function(){s.focus({preventScroll:!0})})),s.checked=!0===r||"true"===r||"True"===r||1===r,i((function(){s.focus()})),s.addEventListener("change",(function(e){n(d())})),s.addEventListener("blur",(function(e){n(d(!0))})),s.addEventListener("keydown",(function(e){13==e.keyCode&&n(d()),27==e.keyCode&&o()})),s}},le=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).currentCell=!1,i.mouseClick=!1,i.recursionBlock=!1,i.invalidEdit=!1,i.editedCells=[],i.editors=r.editors,i.registerColumnOption("editable"),i.registerColumnOption("editor"),i.registerColumnOption("editorParams"),i.registerColumnOption("cellEditing"),i.registerColumnOption("cellEdited"),i.registerColumnOption("cellEditCancelled"),i.registerTableFunction("getEditedCells",i.getEditedCells.bind(l(i))),i.registerTableFunction("clearCellEdited",i.clearCellEdited.bind(l(i))),i.registerTableFunction("navigatePrev",i.navigatePrev.bind(l(i))),i.registerTableFunction("navigateNext",i.navigateNext.bind(l(i))),i.registerTableFunction("navigateLeft",i.navigateLeft.bind(l(i))),i.registerTableFunction("navigateRight",i.navigateRight.bind(l(i))),i.registerTableFunction("navigateUp",i.navigateUp.bind(l(i))),i.registerTableFunction("navigateDown",i.navigateDown.bind(l(i))),i.registerComponentFunction("cell","isEdited",i.cellisEdited.bind(l(i))),i.registerComponentFunction("cell","clearEdited",i.clearEdited.bind(l(i))),i.registerComponentFunction("cell","edit",i.editCell.bind(l(i))),i.registerComponentFunction("cell","cancelEdit",i.cellCancelEdit.bind(l(i))),i.registerComponentFunction("cell","navigatePrev",i.navigatePrev.bind(l(i))),i.registerComponentFunction("cell","navigateNext",i.navigateNext.bind(l(i))),i.registerComponentFunction("cell","navigateLeft",i.navigateLeft.bind(l(i))),i.registerComponentFunction("cell","navigateRight",i.navigateRight.bind(l(i))),i.registerComponentFunction("cell","navigateUp",i.navigateUp.bind(l(i))),i.registerComponentFunction("cell","navigateDown",i.navigateDown.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("data-refeshing",this.cancelEdit.bind(this)),this.subscribe("keybinding-nav-prev",this.navigatePrev.bind(this)),this.subscribe("keybinding-nav-next",this.keybindingNavigateNext.bind(this)),this.subscribe("keybinding-nav-left",this.navigateLeft.bind(this)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this))}},{key:"keybindingNavigateNext",value:function(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(e)||i&&(t.getElement().firstChild.blur(),(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((function(){setTimeout((function(){nav.next()}))}))))}},{key:"cellisEdited",value:function(e){return!!e.modules.edit&&e.modules.edit.edited}},{key:"cellCancelEdit",value:function(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},{key:"clearCellEdited",value:function(e){var t=this;e||(e=this.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((function(e){t.modules.edit.clearEdited(e._getSelf())}))}},{key:"navigatePrev",value:function(e){var t,i,n=this.currentCell;if(n){if(e&&e.preventDefault(),t=this.navigateLeft())return!0;if((i=this.table.rowManager.prevDisplayRow(n.row,!0))&&(t=this.findNextEditableCell(i,i.cells.length)))return t.edit(),!0}return!1}},{key:"navigateNext",value:function(e){var t,i,n=this.currentCell;if(n){if(e&&e.preventDefault(),t=this.navigateRight())return!0;if((i=this.table.rowManager.nextDisplayRow(n.row,!0))&&(t=this.findNextEditableCell(i,-1)))return t.edit(),!0}return!1}},{key:"navigateLeft",value:function(e){var t,i,n=this.currentCell;return!!(n&&(e&&e.preventDefault(),t=n.getIndex(),i=this.findPrevEditableCell(n.row,t)))&&(i.edit(),!0)}},{key:"navigateRight",value:function(e){var t,i,n=this.currentCell;return!!(n&&(e&&e.preventDefault(),t=n.getIndex(),i=this.findNextEditableCell(n.row,t)))&&(i.edit(),!0)}},{key:"navigateUp",value:function(e){var t,i,n=this.currentCell;return!!(n&&(e&&e.preventDefault(),t=n.getIndex(),i=this.table.rowManager.prevDisplayRow(n.row,!0)))&&(i.cells[t].edit(),!0)}},{key:"navigateDown",value:function(e){var t,i,n=this.currentCell;return!!(n&&(e&&e.preventDefault(),t=n.getIndex(),i=this.table.rowManager.nextDisplayRow(n.row,!0)))&&(i.cells[t].edit(),!0)}},{key:"findNextEditableCell",value:function(e,t){var i=!1;if(t0)for(var n=t-1;n>=0;n--){var o=e.cells[n],a=!0;if(o.column.modules.edit&&Helpers.elVisible(o.getElement())&&("function"==typeof o.column.modules.edit.check&&(a=o.column.modules.edit.check(o.getComponent())),a)){i=o;break}}return i}},{key:"initializeColumnCheck",value:function(e){void 0!==e.definition.editor&&this.initializeColumn(e)}},{key:"columnDeleteCheck",value:function(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}},{key:"rowDeleteCheck",value:function(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}},{key:"initializeColumn",value:function(t){var i={editor:!1,blocked:!1,check:t.definition.editable,params:t.definition.editorParams||{}};switch(e(t.definition.editor)){case"string":this.editors[t.definition.editor]?i.editor=this.editors[t.definition.editor]:console.warn("Editor Error - No such editor found: ",t.definition.editor);break;case"function":i.editor=t.definition.editor;break;case"boolean":!0===t.definition.editor&&("function"!=typeof t.definition.formatter?this.editors[t.definition.formatter]?i.editor=this.editors[t.definition.formatter]:i.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",t.definition.formatter))}i.editor&&(t.modules.edit=i)}},{key:"getCurrentCell",value:function(){return!!this.currentCell&&this.currentCell.getComponent()}},{key:"clearEditor",value:function(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),e?i.validate&&i.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-row-editing")}}},{key:"cancelEdit",value:function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.definition.cellEditCancelled&&e.column.definition.cellEditCancelled.call(this.table,t),this.dispatchExternal("cellEditCancelled",t)}}},{key:"bindEditor",value:function(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}},{key:"focusCellNoEvent",value:function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}},{key:"editCell",value:function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}},{key:"focusScrollAdjust",value:function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,n=e.row.getElement();n.offsetTop;n.offsetTopi&&(this.table.rowManager.element.scrollTop+=n.offsetTop+n.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,a=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();r.offsetLeft;this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin),a-=parseInt(this.table.modules.frozenColumns.rightMargin)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),a-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLefta&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-a)}}},{key:"edit",value:function(t,i,n){var o,a,r,s=this,l=!0,u=function(){},c=t.getElement();if(!this.currentCell){if(t.column.modules.edit.blocked)return this.mouseClick=!1,c.blur(),!1;switch(i&&i.stopPropagation(),e(t.column.modules.edit.check)){case"function":l=t.column.modules.edit.check(t.getComponent());break;case"boolean":l=t.column.modules.edit.check}if(l||n){if(s.cancelEdit(),s.currentCell=t,this.focusScrollAdjust(t),a=t.getComponent(),this.mouseClick&&(this.mouseClick=!1,t.column.definition.cellClick&&t.column.definition.cellClick.call(this.table,i,a)),t.column.definition.cellEditing&&t.column.definition.cellEditing.call(this.table,a),this.dispatchExternal("cellEditing",a),r="function"==typeof t.column.modules.edit.params?t.column.modules.edit.params(a):t.column.modules.edit.params,!1===(o=t.column.modules.edit.editor.call(s,a,(function(e){u=e}),(function(e){if(s.currentCell===t){var i=!0;return t.column.modules.validate&&s.table.modExists("validate")&&"manual"!=s.table.options.validationMode&&(i=s.table.modules.validate.validate(t.column.modules.validate,t,e)),!0===i||"highlight"===s.table.options.validationMode?(s.clearEditor(),t.modules.edit||(t.modules.edit={}),t.modules.edit.edited=!0,-1==s.editedCells.indexOf(t)&&s.editedCells.push(t),t.setValue(e,!0),s.table.options.dataTree&&s.table.modExists("dataTree")&&s.table.modules.dataTree.checkForRestyle(t),!0===i||(c.classList.add("tabulator-validation-fail"),s.table.externalEvents.dispatch("validationFailed",t.getComponent(),e,i),!1)):(s.invalidEdit=!0,c.classList.add("tabulator-validation-fail"),s.focusCellNoEvent(t,!0),u(),s.table.externalEvents.dispatch("validationFailed",t.getComponent(),e,i),!1)}}),(function(){s.currentCell===t&&(s.cancelEdit(),s.table.options.dataTree&&s.table.modExists("dataTree")&&s.table.modules.dataTree.checkForRestyle(t))}),r)))return c.blur(),!1;if(!(o instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",o),c.blur(),!1;for(c.classList.add("tabulator-editing"),t.row.getElement().classList.add("tabulator-row-editing");c.firstChild;)c.removeChild(c.firstChild);c.appendChild(o),u();for(var h=c.children,d=0;d-1&&this.editedCells.splice(t,1)}}]),r}(B);le.moduleName="edit",le.editors=se;var ue=function e(i,n,o,a){t(this,e),this.type=i,this.columns=n,this.component=o||!1,this.indent=a||0},ce=function e(i,n,o,a,r){t(this,e),this.value=i,this.component=n||!1,this.width=o,this.height=a,this.depth=r},he=function(n){a(s,n);var r=c(s);function s(e){var i;return t(this,s),(i=r.call(this,e)).config={},i.cloneTableStyle=!0,i.colVisProp="",i.registerTableOption("htmlOutputConfig",!1),i.registerColumnOption("htmlOutput"),i.registerColumnOption("titleHtmlOutput"),i}return o(s,[{key:"initialize",value:function(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}},{key:"generateExportList",value:function(e,t,i,n){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=n;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],a=this.bodyToExportRows(this.rowLookup(i));return o.concat(a)}},{key:"genereateTable",value:function(e,t,i,n){var o=this.generateExportList(e,t,i,n);return this.genereateTableElement(o)}},{key:"rowLookup",value:function(e){var t=this,i=[];if("function"==typeof e)e.call(this.table).forEach((function(e){(e=t.table.rowManager.findRow(e))&&i.push(e)}));else switch(e){case!0:case"visible":i=this.table.rowManager.getVisibleRows(!0);break;case"all":i=this.table.rowManager.rows;break;case"selected":i=this.table.modules.selectRow.selectedRows;break;case"active":default:i=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],i)}},{key:"generateColumnGroupHeaders",value:function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((function(i){var n=e.processColumnGroup(i);n&&t.push(n)})),t}},{key:"processColumnGroup",value:function(e){var t=this,i=e.columns,n=0,o={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(i.length){if(o.subGroups=[],o.width=0,i.forEach((function(e){var i=t.processColumnGroup(e);i&&(o.width+=i.width,o.subGroups.push(i),i.depth>n&&(n=i.depth))})),o.depth+=n,!o.width)return!1}else{if(!this.columnVisCheck(e))return!1;o.width=1}return o}},{key:"columnVisCheck",value:function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])}},{key:"headersToExportRows",value:function(e){var t=[],i=0,n=[];function o(e,n){var a=i-n;if(void 0===t[n]&&(t[n]=[]),e.height=e.subGroups?1:a-e.depth+1,t[n].push(e),e.height>1)for(var r=1;r1)for(var s=1;si&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((function(e){var t=[];e.forEach((function(e){e?t.push(new ce(e.title,e.column.getComponent(),e.width,e.height,e.depth)):t.push(null)})),n.push(new ue("header",t))})),n}},{key:"bodyToExportRows",value:function(e){var t=this,i=[],n=[];return this.table.columnManager.columnsByIndex.forEach((function(e){t.columnVisCheck(e)&&i.push(e.getComponent())})),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),(e=e.filter((function(e){switch(e.type){case"group":return!1!==t.config.rowGroups;case"calc":return!1!==t.config.columnCalcs;case"row":return!(t.table.options.dataTree&&!1===t.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach((function(e,o){var a=e.getData(t.colVisProp),r=[],s=0;switch(e.type){case"group":s=e.level,r.push(new ce(e.key,e.getComponent(),i.length,1));break;case"calc":case"row":i.forEach((function(e){r.push(new ce(e._column.getFieldValue(a),e,1,1))})),t.table.options.dataTree&&!1!==t.config.dataTree&&(s=e.modules.dataTree.index)}n.push(new ue(e.type,r,e.getComponent(),s))})),n}},{key:"genereateTableElement",value:function(e){var t=this,i=document.createElement("table"),n=document.createElement("thead"),o=document.createElement("tbody"),a=this.lookupTableStyles(),r=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],s={};return s.rowFormatter=null!==r?r:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(s.treeElementField=this.table.modules.dataTree.elementField),s.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],s.groupHeader&&!Array.isArray(s.groupHeader)&&(s.groupHeader=[s.groupHeader]),i.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),n,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach((function(e,i){switch(e.type){case"header":n.appendChild(t.genereateHeaderElement(e,s,a));break;case"group":o.appendChild(t.genereateGroupElement(e,s,a));break;case"calc":o.appendChild(t.genereateCalcElement(e,s,a));break;case"row":var r=t.genereateRowElement(e,s,a);t.mapElementStyles(i%2&&a.evenRow?a.evenRow:a.oddRow,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),o.appendChild(r)}})),n.innerHTML&&i.appendChild(n),i.appendChild(o),this.mapElementStyles(this.table.element,i,["border-top","border-left","border-right","border-bottom"]),i}},{key:"lookupTableStyles",value:function(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e}},{key:"genereateHeaderElement",value:function(e,t,i){var n=this,o=document.createElement("tr");return e.columns.forEach((function(e){if(e){var t=document.createElement("th"),i=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,n.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),n.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?n.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&n.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),o.appendChild(t)}})),o}},{key:"genereateGroupElement",value:function(e,t,i){var n=document.createElement("tr"),o=document.createElement("td"),a=e.columns[0];return n.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?a.value=t.groupHeader[e.indent](a.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1===t.groupHeader?a.value=a.value:a.value=e.component._group.generator(a.value,e.component._group.getRowCount(),e.component._group.getData(),e.component),o.colSpan=a.width,o.innerHTML=a.value,n.classList.add("tabulator-print-table-group"),n.classList.add("tabulator-group-level-"+e.indent),a.component.isVisible()&&n.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(i.firstGroup,o,["padding-top","padding-left","padding-right","padding-bottom"]),n.appendChild(o),n}},{key:"genereateCalcElement",value:function(e,t,i){var n=this.genereateRowElement(e,t,i);return n.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n}},{key:"genereateRowElement",value:function(t,n,o){var a=this,r=document.createElement("tr");return r.classList.add("tabulator-print-table-row"),t.columns.forEach((function(s){if(s){var l=document.createElement("td"),u=s.component._column,c=s.value,h={modules:{},getValue:function(){return c},getField:function(){return u.definition.field},getElement:function(){return l},getColumn:function(){return u.getComponent()},getData:function(){return t.component.getData()},getRow:function(){return t.component},getComponent:function(){return h},column:u};if((u.definition.cssClass?u.definition.cssClass.split(" "):[]).forEach((function(e){l.classList.add(e)})),a.table.modExists("format")&&!1!==a.config.formatCells)c=a.table.modules.format.formatExportValue(h,a.colVisProp);else switch(e(c)){case"object":c=JSON.stringify(c);break;case"undefined":case"null":c="";break;default:c=c}c instanceof Node?l.appendChild(c):l.innerHTML=c,o.firstCell&&(a.mapElementStyles(o.firstCell,l,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),u.definition.align&&(l.style.textAlign=u.definition.align)),a.table.options.dataTree&&!1!==a.config.dataTree&&(n.treeElementField&&n.treeElementField==u.field||!n.treeElementField&&0==i)&&(t.component._row.modules.dataTree.controlEl&&l.insertBefore(t.component._row.modules.dataTree.controlEl.cloneNode(!0),l.firstChild),t.component._row.modules.dataTree.branchEl&&l.insertBefore(t.component._row.modules.dataTree.branchEl.cloneNode(!0),l.firstChild)),r.appendChild(l),h.modules.format&&h.modules.format.renderedCallback&&h.modules.format.renderedCallback(),n.rowFormatter&&!1!==a.config.formatCells&&n.rowFormatter(t.component)}})),r}},{key:"genereateHTMLTable",value:function(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML}},{key:"getHtml",value:function(e,t,i,n){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,n||"htmlOutput");return this.genereateHTMLTable(o)}},{key:"mapElementStyles",value:function(e,t,i){if(this.cloneTableStyle&&e&&t){var n={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var o=window.getComputedStyle(e);i.forEach((function(e){t.style[n[e]]=o.getPropertyValue(e)}))}}}}]),s}(B);he.moduleName="export";var de={"=":function(e,t,i,n){return t==e},"<":function(e,t,i,n){return t":function(e,t,i,n){return t>e},">=":function(e,t,i,n){return t>=e},"!=":function(e,t,i,n){return t!=e},regex:function(e,t,i,n){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,n){var o=e.toLowerCase().split(void 0===n.separator?" ":n.separator),a=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((function(e){a.includes(e)&&r.push(!0)})),n.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,n){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},me=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).filterList=[],i.headerFilters={},i.headerFilterColumns=[],i.prevHeaderFilterChangeCheck="",i.prevHeaderFilterChangeCheck="{}",i.changed=!1,i.registerTableOption("filterMode","local"),i.registerTableOption("initialFilter",!1),i.registerTableOption("initialHeaderFilter",!1),i.registerTableOption("headerFilterLiveFilterDelay",300),i.registerColumnOption("headerFilter"),i.registerColumnOption("headerFilterPlaceholder"),i.registerColumnOption("headerFilterParams"),i.registerColumnOption("headerFilterEmptyCheck"),i.registerColumnOption("headerFilterFunc"),i.registerColumnOption("headerFilterFuncParams"),i.registerColumnOption("headerFilterLiveFilter"),i.registerTableFunction("searchRows",i.searchRows.bind(l(i))),i.registerTableFunction("searchData",i.searchData.bind(l(i))),i.registerTableFunction("setFilter",i.userSetFilter.bind(l(i))),i.registerTableFunction("refreshFilter",i.userRefreshFilter.bind(l(i))),i.registerTableFunction("addFilter",i.userAddFilter.bind(l(i))),i.registerTableFunction("getFilters",i.getFilters.bind(l(i))),i.registerTableFunction("setHeaderFilterFocus",i.userSetHeaderFilterFocus.bind(l(i))),i.registerTableFunction("getHeaderFilterValue",i.userGetHeaderFilterValue.bind(l(i))),i.registerTableFunction("setHeaderFilterValue",i.userSetHeaderFilterValue.bind(l(i))),i.registerTableFunction("getHeaderFilters",i.getHeaderFilters.bind(l(i))),i.registerTableFunction("removeFilter",i.userRemoveFilter.bind(l(i))),i.registerTableFunction("clearFilter",i.userClearFilter.bind(l(i))),i.registerTableFunction("clearHeaderFilter",i.userClearHeaderFilter.bind(l(i))),i.registerComponentFunction("column","headerFilterFocus",i.setHeaderFilterFocus.bind(l(i))),i.registerComponentFunction("column","reloadHeaderFilter",i.reloadHeaderFilter.bind(l(i))),i.registerComponentFunction("column","getHeaderFilterValue",i.getHeaderFilterValue.bind(l(i))),i.registerComponentFunction("column","setHeaderFilterValue",i.setHeaderFilterValue.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){this.subscribe("column-init",this.initializeColumnHeaderFilter.bind(this)),this.subscribe("column-width-fit-before",this.hideHeaderFilterElements.bind(this)),this.subscribe("column-width-fit-after",this.showHeaderFilterElements.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}},{key:"tableBuilt",value:function(){var e=this;this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((function(t){var i=e.table.columnManager.findColumn(t.field);if(!i)return console.warn("Column Filter Error - No matching column found:",t.field),!1;e.setHeaderFilterValue(i,t.value)}))}},{key:"remoteFilterParams",value:function(e,t,i,n){return n.filter=this.getFilters(!0,!0),n}},{key:"userSetFilter",value:function(e,t,i,n){this.setFilter(e,t,i,n),this.refreshFilter()}},{key:"userRefreshFilter",value:function(){this.refreshFilter()}},{key:"userAddFilter",value:function(e,t,i,n){this.addFilter(e,t,i,n),this.refreshFilter()}},{key:"userSetHeaderFilterFocus",value:function(e){var t=this.table.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.setHeaderFilterFocus(t)}},{key:"userGetHeaderFilterValue",value:function(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}},{key:"userSetHeaderFilterValue",value:function(e,t){var i=this.table.columnManager.findColumn(e);if(!i)return console.warn("Column Filter Error - No matching column found:",e),!1;this.setHeaderFilterValue(i,t)}},{key:"userRemoveFilter",value:function(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}},{key:"userClearFilter",value:function(e){this.clearFilter(e),this.refreshFilter()}},{key:"userClearHeaderFilter",value:function(){this.clearHeaderFilter(),this.refreshFilter()}},{key:"searchRows",value:function(e,t,i){return this.search("rows",e,t,i)}},{key:"searchData",value:function(e,t,i){return this.search("data",e,t,i)}},{key:"initializeColumnHeaderFilter",value:function(e){var t=e.definition;t.headerFilter&&(void 0!==t.headerFilterPlaceholder&&t.field&&this.module("localize").setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),this.initializeColumn(e))}},{key:"initializeColumn",value:function(t,i){var n=this,o=t.getField();t.modules.filter={success:function(i){var a,s="input"==t.modules.filter.tagType&&"text"==t.modules.filter.attrType||"textarea"==t.modules.filter.tagType?"partial":"match",l="",u="";if(void 0===t.modules.filter.prevSuccess||t.modules.filter.prevSuccess!==i){if(t.modules.filter.prevSuccess=i,t.modules.filter.emptyFunc(i))delete n.headerFilters[o];else{switch(t.modules.filter.value=i,e(t.definition.headerFilterFunc)){case"string":r.filters[t.definition.headerFilterFunc]?(l=t.definition.headerFilterFunc,a=function(e){var n=t.definition.headerFilterFuncParams||{},o=t.getFieldValue(e);return n="function"==typeof n?n(i,o,e):n,r.filters[t.definition.headerFilterFunc](i,o,e,n)}):console.warn("Header Filter Error - Matching filter function not found: ",t.definition.headerFilterFunc);break;case"function":l=a=function(e){var n=t.definition.headerFilterFuncParams||{},o=t.getFieldValue(e);return n="function"==typeof n?n(i,o,e):n,t.definition.headerFilterFunc(i,o,e,n)}}if(!a)switch(s){case"partial":a=function(e){var n=t.getFieldValue(e);return null!=n&&String(n).toLowerCase().indexOf(String(i).toLowerCase())>-1},l="like";break;default:a=function(e){return t.getFieldValue(e)==i},l="="}n.headerFilters[o]={value:i,func:a,type:l,params:{}}}u=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==u&&(n.prevHeaderFilterChangeCheck=u,n.trackChanges(),n.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(t)}},{key:"generateHeaderFilterElement",value:function(t,i,n){var o,a,r,s,l,u,c,h=this,d=this,m=t.modules.filter.success,p=t.getField();if(t.modules.filter.headerElement&&t.modules.filter.headerElement.parentNode&&t.contentElement.removeChild(t.modules.filter.headerElement.parentNode),p){switch(t.modules.filter.emptyFunc=t.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e&&0!==e},(o=document.createElement("div")).classList.add("tabulator-header-filter"),e(t.definition.headerFilter)){case"string":d.table.modules.edit.editors[t.definition.headerFilter]?(a=d.table.modules.edit.editors[t.definition.headerFilter],"tick"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",t.definition.editor);break;case"function":a=t.definition.headerFilter;break;case"boolean":t.modules.edit&&t.modules.edit.editor?a=t.modules.edit.editor:t.definition.formatter&&d.table.modules.edit.editors[t.definition.formatter]?(a=d.table.modules.edit.editors[t.definition.formatter],"tick"!==t.definition.formatter&&"tickCross"!==t.definition.formatter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):a=d.table.modules.edit.editors.input}if(a){if(s={getValue:function(){return void 0!==i?i:""},getField:function(){return t.definition.field},getElement:function(){return o},getColumn:function(){return t.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},c="function"==typeof(c=t.definition.headerFilterParams||{})?c.call(d.table):c,!(r=a.call(this.table.modules.edit,s,(function(){}),m,(function(){}),c)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",r);p?d.langBind("headerFilters|columns|"+t.definition.field,(function(e){r.setAttribute("placeholder",void 0!==e&&e?e:d.langText("headerFilters|default"))})):d.langBind("headerFilters|default",(function(e){r.setAttribute("placeholder",e)})),r.addEventListener("click",(function(e){e.stopPropagation(),r.focus()})),r.addEventListener("focus",(function(e){var t=h.table.columnManager.element.scrollLeft;t!==h.table.rowManager.element.scrollLeft&&(h.table.rowManager.scrollHorizontal(t),h.table.columnManager.scrollHorizontal(t))})),l=!1,u=function(e){l&&clearTimeout(l),l=setTimeout((function(){m(r.value)}),d.table.options.headerFilterLiveFilterDelay)},t.modules.filter.headerElement=r,t.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",t.modules.filter.tagType=r.tagName.toLowerCase(),!1!==t.definition.headerFilterLiveFilter&&("autocomplete"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter&&("autocomplete"!==t.definition.editor&&"tickCross"!==t.definition.editor||!0!==t.definition.headerFilter)&&(r.addEventListener("keyup",u),r.addEventListener("search",u),"number"==t.modules.filter.attrType&&r.addEventListener("change",(function(e){m(r.value)})),"text"==t.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=t.modules.filter.tagType&&"select"!=t.modules.filter.tagType&&"textarea"!=t.modules.filter.tagType||r.addEventListener("mousedown",(function(e){e.stopPropagation()}))),o.appendChild(r),t.contentElement.appendChild(o),n||d.headerFilterColumns.push(t)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",t.definition.title)}},{key:"hideHeaderFilterElements",value:function(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}},{key:"showHeaderFilterElements",value:function(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}},{key:"setHeaderFilterFocus",value:function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())}},{key:"getHeaderFilterValue",value:function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())}},{key:"setHeaderFilterValue",value:function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}},{key:"reloadHeaderFilter",value:function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}},{key:"refreshFilter",value:function(){"remote"===this.table.options.filterMode?this.reloadData():this.refreshData()}},{key:"trackChanges",value:function(){this.changed=!0,this.dispatch("filter-changed")}},{key:"hasChanged",value:function(){var e=this.changed;return this.changed=!1,e}},{key:"setFilter",value:function(e,t,i,n){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:n}]),this.addFilter(e)}},{key:"addFilter",value:function(e,t,i,n){var o=this;Array.isArray(e)||(e=[{field:e,type:t,value:i,params:n}]),e.forEach((function(e){(e=o.findFilter(e))&&(o.filterList.push(e),o.changed=!0)}))}},{key:"findFilter",value:function(e){var t;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:r.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return r.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return r.filters[e.type](e.value,t[e.field],t,e.params||{})}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e}},{key:"findSubFilters",value:function(e){var t=this,i=[];return e.forEach((function(e){(e=t.findFilter(e))&&i.push(e)})),!!i.length&&i}},{key:"getFilters",value:function(e,t){var i=[];return e&&(i=this.getHeaderFilters()),t&&i.forEach((function(e){"function"==typeof e.type&&(e.type="function")})),i=i.concat(this.filtersToArray(this.filterList,t))}},{key:"filtersToArray",value:function(e,t){var i=this,n=[];return e.forEach((function(e){var o;Array.isArray(e)?n.push(i.filtersToArray(e,t)):(o={field:e.field,type:e.type,value:e.value},t&&"function"==typeof o.type&&(o.type="function"),n.push(o))})),n}},{key:"getHeaderFilters",value:function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}},{key:"removeFilter",value:function(t,i,n){var o=this;Array.isArray(t)||(t=[{field:t,type:i,value:n}]),t.forEach((function(t){var i=-1;(i="object"==e(t.field)?o.filterList.findIndex((function(e){return t===e})):o.filterList.findIndex((function(e){return t.field===e.field&&t.type===e.type&&t.value===e.value})))>-1?o.filterList.splice(i,1):console.warn("Filter Error - No matching filter type found, ignoring: ",t.type)})),this.trackChanges()}},{key:"clearFilter",value:function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}},{key:"clearHeaderFilter",value:function(){var e=this;this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((function(t){void 0!==t.modules.filter.value&&delete t.modules.filter.value,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)})),this.trackChanges()}},{key:"search",value:function(e,t,i,n){var o=this,a=[],r=[];return Array.isArray(t)||(t=[{field:t,type:i,value:n}]),t.forEach((function(e){(e=o.findFilter(e))&&r.push(e)})),this.table.rowManager.rows.forEach((function(t){var i=!0;r.forEach((function(e){o.filterRecurse(e,t.getData())||(i=!1)})),i&&a.push("data"===e?t.getData("data"):t.getComponent())})),a}},{key:"filter",value:function(e,t){var i=this,n=[],o=[];return this.subscribedExternal("dataFiltering")&&this.dispatchExternal("dataFiltering",this.getFilters()),"remote"!==this.table.options.filterMode&&(this.filterList.length||Object.keys(this.headerFilters).length)?e.forEach((function(e){i.filterRow(e)&&n.push(e)})):n=e.slice(0),this.subscribedExternal("dataFiltered")&&(n.forEach((function(e){o.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(),o)),n}},{key:"filterRow",value:function(e,t){var i=this,n=!0,o=e.getData();for(var a in this.filterList.forEach((function(e){i.filterRecurse(e,o)||(n=!1)})),this.headerFilters)this.headerFilters[a].func(o)||(n=!1);return n}},{key:"filterRecurse",value:function(e,t){var i=this,n=!1;return Array.isArray(e)?e.forEach((function(e){i.filterRecurse(e,t)&&(n=!0)})):n=e.func(t),n}}]),r}(B);me.moduleName="filter",me.filters=de;var pe={plaintext:function(e,t,i){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,i){return e.getValue()},textarea:function(e,t,i){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,i){var n,o,a,r,s=parseFloat(e.getValue()),l=t.decimal||".",u=t.thousand||",",c=t.symbol||"",h=!!t.symbolAfter,d=void 0!==t.precision?t.precision:2;if(isNaN(s))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(n=!1!==d?s.toFixed(d):s,o=(n=String(n).split("."))[0],a=n.length>1?l+n[1]:"",r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+u+"$2");return h?o+a+c:c+o+a},link:function(t,i,n){var o=t.getValue(),a=i.urlPrefix||"",r=i.download,s=o,l=document.createElement("a");if(i.labelField&&(s=t.getData()[i.labelField]),i.label)switch(e(i.label)){case"string":s=i.label;break;case"function":s=i.label(t)}if(s){if(i.urlField&&(o=t.getData()[i.urlField]),i.url)switch(e(i.url)){case"string":o=i.url;break;case"function":o=i.url(t)}return l.setAttribute("href",a+o),i.target&&l.setAttribute("target",i.target),i.download&&(r="function"==typeof r?r(t):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(s)),l}return" "},image:function(t,i,n){var o=document.createElement("img"),a=t.getValue();switch(i.urlPrefix&&(a=i.urlPrefix+t.getValue()),i.urlSuffix&&(a+=i.urlSuffix),o.setAttribute("src",a),e(i.height)){case"number":o.style.height=i.height+"px";break;case"string":o.style.height=i.height}switch(e(i.width)){case"number":o.style.width=i.width+"px";break;case"string":o.style.width=i.width}return o.addEventListener("load",(function(){t.getRow().normalizeHeight()})),o},tickCross:function(e,t,i){var n=e.getValue(),o=e.getElement(),a=t.allowEmpty,r=t.allowTruthy,s=void 0!==t.tickElement?t.tickElement:'',l=void 0!==t.crossElement?t.crossElement:'';return r&&n||!0===n||"true"===n||"True"===n||1===n||"1"===n?(o.setAttribute("aria-checked",!0),s||""):!a||"null"!==n&&""!==n&&null!=n?(o.setAttribute("aria-checked",!1),l||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var n=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",a=t.outputFormat||"dd/MM/yyyy HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",s=e.getValue();if(void 0!==n){var l=(window.DateTime||luxon.DateTime).fromFormat(s,o);return l.isValid?(t.timezone&&(l=l.shiftTimezone(t.timezone)),l.toFormat(a)):!0===r?s:"function"==typeof r?r(s):r}console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var n=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=void 0!==t.suffix&&t.suffix,s=void 0!==t.unit?t.unit:"days",l=void 0!==t.humanize&&t.humanize,u=void 0!==t.date?t.date:n.now(),c=e.getValue();if(void 0!==n){var h=n.fromFormat(c,o);if(!h.isValid)return!0===a?c:"function"==typeof a?a(c):a;if(!l)return parseInt(h.diff(u,s)[s])+(r?" "+r:"")}else console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var n=e.getValue();return void 0===t[n]?(console.warn("Missing display value for "+n),n):t[n]},star:function(e,t,i){var n=e.getValue(),o=e.getElement(),a=t&&t.stars?t.stars:5,r=document.createElement("span"),s=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",s.setAttribute("width","14"),s.setAttribute("height","14"),s.setAttribute("viewBox","0 0 512 512"),s.setAttribute("xml:space","preserve"),s.style.padding="0 1px",n=n&&!isNaN(n)?parseInt(n):0,n=Math.max(0,Math.min(n,a));for(var l=1;l<=a;l++){var u=s.cloneNode(!0);u.innerHTML=l<=n?'':'',r.appendChild(u)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",n),r},traffic:function(t,i,n){var o,a,r=this.sanitizeHTML(t.getValue())||0,s=document.createElement("span"),l=i&&i.max?i.max:100,u=i&&i.min?i.min:0,c=i&&void 0!==i.color?i.color:["red","orange","green"],h="#666666";if(!isNaN(r)&&void 0!==t.getValue()){switch(s.classList.add("tabulator-traffic-light"),a=parseFloat(r)<=l?parseFloat(r):l,a=parseFloat(a)>=u?parseFloat(a):u,o=(l-u)/100,a=Math.round((a-u)/o),e(c)){case"string":h=c;break;case"function":h=c(r);break;case"object":if(Array.isArray(c)){var d=100/c.length,m=Math.floor(a/d);m=Math.min(m,c.length-1),h=c[m=Math.max(m,0)];break}}return s.style.backgroundColor=h,s}},progress:function(t,i,n){var o,a,r,s,l,u=this.sanitizeHTML(t.getValue())||0,c=t.getElement(),h=i&&i.max?i.max:100,d=i&&i.min?i.min:0,m=i&&i.legendAlign?i.legendAlign:"center";switch(a=parseFloat(u)<=h?parseFloat(u):h,a=parseFloat(a)>=d?parseFloat(a):d,o=(h-d)/100,a=Math.round((a-d)/o),e(i.color)){case"string":r=i.color;break;case"function":r=i.color(u);break;case"object":if(Array.isArray(i.color)){var p=100/i.color.length,f=Math.floor(a/p);f=Math.min(f,i.color.length-1),f=Math.max(f,0),r=i.color[f];break}default:r="#2DC214"}switch(e(i.legend)){case"string":s=i.legend;break;case"function":s=i.legend(u);break;case"boolean":s=u;break;default:s=!1}switch(e(i.legendColor)){case"string":l=i.legendColor;break;case"function":l=i.legendColor(u);break;case"object":if(Array.isArray(i.legendColor)){p=100/i.legendColor.length,f=Math.floor(a/p);f=Math.min(f,i.legendColor.length-1),f=Math.max(f,0),l=i.legendColor[f]}break;default:l="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a);var g=document.createElement("div");g.style.display="inline-block",g.style.position="absolute",g.style.width=a+"%",g.style.backgroundColor=r,g.style.height="100%",g.setAttribute("data-max",h),g.setAttribute("data-min",d);var v=document.createElement("div");if(v.style.position="relative",v.style.width="100%",v.style.height="100%",s){var y=document.createElement("div");y.style.position="absolute",y.style.top=0,y.style.left=0,y.style.textAlign=m,y.style.width="100%",y.style.color=l,y.innerHTML=s}return n((function(){if(!(t instanceof b)){var e=document.createElement("div");e.style.position="absolute",e.style.top="4px",e.style.bottom="4px",e.style.left="4px",e.style.right="4px",c.appendChild(e),c=e}c.appendChild(v),v.appendChild(g),s&&v.appendChild(y)})),""},color:function(e,t,i){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,i){return''},buttonCross:function(e,t,i){return''},rownum:function(e,t,i){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
"},responsiveCollapse:function(e,t,i){var n=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function a(e){var t=o.element;o.open=e,t&&(o.open?(n.classList.add("open"),t.style.display=""):(n.classList.remove("open"),t.style.display="none"))}return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="+-",e.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",(function(e){e.stopImmediatePropagation(),a(!o.open)})),a(o.open),n},rowSelection:function(e,t,i){var n=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",(function(e){e.stopPropagation()})),"function"==typeof e.getRow){var a=e.getRow();a instanceof M?(o.addEventListener("change",(function(e){a.toggleSelect()})),o.checked=a.isSelected&&a.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(a,o)):o=""}else o.addEventListener("change",(function(e){n.table.modules.selectRow.selectedRows.length?n.table.deselectRow():n.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},fe=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).registerColumnOption("formatter"),i.registerColumnOption("formatterParams"),i.registerColumnOption("formatterPrint"),i.registerColumnOption("formatterPrintParams"),i.registerColumnOption("formatterClipboard"),i.registerColumnOption("formatterClipboardParams"),i.registerColumnOption("formatterHtmlOutput"),i.registerColumnOption("formatterHtmlOutputParams"),i.registerColumnOption("titleFormatter"),i.registerColumnOption("titleFormatterParams"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-format",this.formatValue.bind(this)),this.subscribe("cell-rendered",this.cellRendered.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-format",this.formatHeader.bind(this))}},{key:"initializeColumn",value:function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))}},{key:"lookupFormatter",value:function(t,i){var n={params:t.definition["formatter"+i+"Params"]||{}},o=t.definition["formatter"+i];switch(e(o)){case"string":r.formatters[o]?n.formatter=r.formatters[o]:(console.warn("Formatter Error - No such formatter found: ",o),n.formatter=r.formatters.plaintext);break;case"function":n.formatter=o;break;default:n.formatter=r.formatters.plaintext}return n}},{key:"cellRendered",value:function(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}},{key:"formatHeader",value:function(e,t,i){var n,o,a,r;return e.definition.titleFormatter?(n=this.getFormatter(e.definition.titleFormatter),a=function(t){e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i}},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,n.call(this,r,o,a)):t}},{key:"formatValue",value:function(e){var t=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}},{key:"formatExportValue",value:function(e,t){var i,n=e.column.modules.format[t];if(n){return i="function"==typeof n.params?n.params(component):n.params,n.formatter.call(this,e.getComponent(),i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}return this.formatValue(e)}},{key:"sanitizeHTML",value:function(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,(function(e){return t[e]}))}return e}},{key:"emptyToSpace",value:function(e){return null==e||""===e?" ":e}},{key:"getFormatter",value:function(t){switch(e(t)){case"string":r.formatters[t]?t=r.formatters[t]:(console.warn("Formatter Error - No such formatter found: ",t),t=r.formatters.plaintext);break;case"function":t=t;break;default:t=r.formatters.plaintext}return t}}]),r}(B);fe.moduleName="format",fe.formatters=pe;var ge=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).leftColumns=[],o.rightColumns=[],o.leftMargin=0,o.rightMargin=0,o.rightPadding=0,o.initializationMode="left",o.active=!1,o.scrollEndTimer=!1,o.registerColumnOption("frozen"),o}return o(n,[{key:"reset",value:function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0}},{key:"initialize",value:function(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-width",this.layout.bind(this)),this.subscribe("row-layout-before",this.layoutRow.bind(this)),this.subscribe("table-layout",this.layout.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("table-redraw",this.layout.bind(this))}},{key:"layoutCell",value:function(e){this.layoutElement(e.element,e.column)}},{key:"initializeColumn",value:function(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")}},{key:"frozenCheck",value:function(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen}},{key:"scrollHorizontal",value:function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout((function(){t.layout()}),100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach((function(e){"row"===e.type&&t.layoutRow(e)})),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)}},{key:"calcMargins",value:function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft}},{key:"layoutCalcRows",value:function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))}},{key:"layoutColumnPosition",value:function(e){var t=this,i=[];this.leftColumns.forEach((function(n,o){if(n.modules.frozen.margin=t._calcSpace(t.leftColumns,o)+t.table.columnManager.scrollLeft+"px",o==t.leftColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,n.parent.isGroup){var a=t.getColGroupParentElement(n);i.includes(a)||(t.layoutElement(a,n),i.push(a)),n.modules.frozen.edge&&a.classList.add("tabulator-frozen-"+n.modules.frozen.position)}else t.layoutElement(n.getElement(),n);e&&n.cells.forEach((function(e){t.layoutElement(e.getElement(!0),n)}))})),this.rightColumns.forEach((function(i,n){i.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,n+1)+"px",n==t.rightColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup?t.layoutElement(t.getColGroupParentElement(i),i):t.layoutElement(i.getElement(),i),e&&i.cells.forEach((function(e){t.layoutElement(e.getElement(!0),i)}))}))}},{key:"getColGroupParentElement",value:function(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}},{key:"layout",value:function(){var e=this;this.active&&(this.calcMargins(),this.table.rowManager.getDisplayRows().forEach((function(t){"row"===t.type&&e.layoutRow(t)})),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)}},{key:"layoutRow",value:function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach((function(i){var n=e.getCell(i);n&&t.layoutElement(n.getElement(!0),i)})),this.rightColumns.forEach((function(i){var n=e.getCell(i);n&&t.layoutElement(n.getElement(!0),i)}))}},{key:"layoutElement",value:function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}},{key:"_calcSpace",value:function(e,t){for(var i=0,n=0;n-1}},{key:"isFrozen",value:function(){return!!this.rows.length}},{key:"getRows",value:function(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}},{key:"freezeRow",value:function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.refreshData(!1,"display"),this.styleRows())}},{key:"unfreezeRow",value:function(e){this.rows.indexOf(e);e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.refreshData(!1,"display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")}},{key:"detachRow",value:function(e){var t=this.rows.indexOf(e);if(t>-1){var i=e.getElement();i.parentNode.removeChild(i),this.rows.splice(t,1)}}},{key:"styleRows",value:function(e){var t=this;this.rows.forEach((function(e,i){t.table.rowManager.styleRow(e,i)}))}}]),n}(B);ve.moduleName="frozenRows";var be=function(){function e(i){return t(this,e),this._group=i,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.table.componentFunctionBinder.handle("row",e._group,t)}})}return o(e,[{key:"getKey",value:function(){return this._group.key}},{key:"getField",value:function(){return this._group.field}},{key:"getElement",value:function(){return this._group.element}},{key:"getRows",value:function(){return this._group.getRows(!0)}},{key:"getSubGroups",value:function(){return this._group.getSubGroups(!0)}},{key:"getParentGroup",value:function(){return!!this._group.parent&&this._group.parent.getComponent()}},{key:"isVisible",value:function(){return this._group.visible}},{key:"show",value:function(){this._group.show()}},{key:"hide",value:function(){this._group.hide()}},{key:"toggle",value:function(){this._group.toggleVisibility()}},{key:"_getSelf",value:function(){return this._group}},{key:"getTable",value:function(){return this._group.groupManager.table}}]),e}(),ye=function(){function e(i,n,o,a,r,s,l){t(this,e),this.groupManager=i,this.parent=n,this.key=a,this.level=o,this.field=r,this.hasSubGroups=o-1?i?this.rows.splice(o+1,0,e):this.rows.splice(o,0,e):i?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}},{key:"scrollHeader",value:function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)}))}},{key:"getRowIndex",value:function(e){}},{key:"conformRowData",value:function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e}},{key:"removeRow",value:function(e){var t=this.rows.indexOf(e),i=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(i.parentNode&&i.parentNode.removeChild(i),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))}},{key:"removeGroup",value:function(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))}},{key:"getHeadersAndRows",value:function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach((function(i){t=t.concat(i.getHeadersAndRows(e))})):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t}},{key:"getData",value:function(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((function(e){i.push(e.getData(t||"data"))})),i}},{key:"getRowCount",value:function(){var e=0;return this.groupList.length?this.groupList.forEach((function(t){e+=t.getRowCount()})):e=this.rows.length,e}},{key:"toggleVisibility",value:function(){this.visible?this.hide():this.show()}},{key:"hide",value:function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((function(e){e.getHeadersAndRows().forEach((function(e){e.detachElement()}))})):this.rows.forEach((function(e){var t=e.getElement();t.parentNode.removeChild(t)})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}},{key:"show",value:function(){if(this.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.getElement();this.groupList.length?this.groupList.forEach((function(t){t.getHeadersAndRows().forEach((function(t){var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((function(t){var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}},{key:"_visSet",value:function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach((function(t){e.push(t.getData())})),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))}},{key:"getRowGroup",value:function(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var n=i.getRowGroup(e);n&&(t=n)})):this.rows.find((function(t){return t===e}))&&(t=this),t}},{key:"getSubGroups",value:function(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"getRows",value:function(e){var t=[];return this.rows.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"generateGroupHeaderContents",value:function(){var e=[];for(this.rows.forEach((function(t){e.push(t.getData())})),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)}},{key:"getPath",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}},{key:"getElement",value:function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;en.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),this.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],this.langBind("groups|item",(function(t,i){e.headerGenerator[0]=function(e,n,o){return(void 0===e?"":e)+"("+n+" "+(1===n?t:i.groups.items)+")"}})),this.groupIDLookups=[],Array.isArray(t)||t)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs)this.table.columnManager.getRealColumns().forEach((function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(t)||(t=[t]),t.forEach((function(t,i){var n,o;n="function"==typeof t?t:(o=e.table.columnManager.getColumnByField(t))?function(e){return o.getFieldValue(e)}:function(e){return e[t]},e.groupIDLookups.push({field:"function"!=typeof t&&t,func:n,values:!!e.allowedValues&&e.allowedValues[i]})})),i&&(Array.isArray(i)||(i=[i]),i.forEach((function(e){})),this.startOpen=i),n&&(this.headerGenerator=Array.isArray(n)?n:[n]),this.table.options.groupUpdateOnCellEdit&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("row-data-changed",this.reassignRowToGroup.bind(this),0)),this.subscribe("row-deleting",this.rowDeleting.bind(this)),this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("scroll-horizontal",this.scrollHeaders.bind(this)),this.subscribe("rows-wipe",this.wipe.bind(this)),this.subscribe("rows-added",this.rowsUpdated.bind(this)),this.subscribe("row-moving",this.rowMoving.bind(this)),this.subscribe("row-adding-index",this.rowAddingIndex.bind(this)),this.subscribe("rows-sample",this.rowSample.bind(this)),this.subscribe("render-virtual-fill",this.virtualRenderFill.bind(this)),this.registerDisplayHandler(this.displayHandler,20),this.initialized=!0}}},{key:"rowSample",value:function(e,t){var i=this.getGroups(!1)[0];return t.push(i.getRows(!1)[0]),t}},{key:"virtualRenderFill",value:function(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();t=t.filter((function(e){return"group"!==e.type})),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}},{key:"rowAddingIndex",value:function(e,t,i){this.assignRowToGroup(e);var n=e.modules.group.rows;return n.length>1&&(!t||t&&-1==n.indexOf(t)?i?n[0]!==e&&(t=n[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):n[n.length-1]!==e&&(t=n[n.length-1],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)),t}},{key:"trackChanges",value:function(){this.dispatch("group-changed")}},{key:"setGroupBy",value:function(e){this.table.options.groupBy=e,this.initialize(),this.refreshData(!1,"display"),this.trackChanges()}},{key:"setGroupValues",value:function(e){this.table.options.groupValues=e,this.initialize(),this.refreshData(!1,"display"),this.trackChanges()}},{key:"setGroupStartOpen",value:function(e){this.table.options.groupStartOpen=e,this.initialize(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}},{key:"setGroupHeader",value:function(e){this.table.options.groupHeader=e,this.initialize(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}},{key:"userGetGroups",value:function(e){return this.getGroups(!0)}},{key:"userGetGroupedData",value:function(){return this.table.options.groupBy?this.getGroupedData():this.getData()}},{key:"rowGetGroup",value:function(e){return!!e.modules.group&&e.modules.group.getComponent()}},{key:"rowMoving",value:function(e,t,i){!i&&t instanceof ye&&(t=this.table.rowManager.prevDisplayRow(e)||t);var n=t instanceof ye?t:t.modules.group,o=e instanceof ye?e:e.modules.group;n===o?this.table.rowManager.moveRowInArray(n.rows,e,t,i):(o&&o.removeRow(e),n.insertRow(e,t,i))}},{key:"rowDeleting",value:function(e){e.modules.group&&e.modules.group.removeRow(e)}},{key:"rowsUpdated",value:function(e){this.updateGroupRows(!0)}},{key:"cellUpdated",value:function(e){this.reassignRowToGroup(e.row)}},{key:"setDisplayIndex",value:function(e){this.displayIndex=e}},{key:"getDisplayIndex",value:function(){return this.displayIndex}},{key:"getRows",value:function(e){return this.groupIDLookups.length?(Object.keys(this.groups).length||(this.dispatchExternal("dataGrouping"),this.generateGroups(e),this.subscribedExternal("dataGrouped")&&this.dispatchExternal("dataGrouped",this.getGroups(!0))),this.updateGroupRows()):e.slice(0)}},{key:"getGroups",value:function(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"getChildGroups",value:function(e){var t=this,i=[];return e||(e=this),e.groupList.forEach((function(e){e.groupList.length?i=i.concat(t.getChildGroups(e)):i.push(e)})),i}},{key:"wipe",value:function(){this.groupList.forEach((function(e){e.wipe()}))}},{key:"pullGroupListData",value:function(e){var t=this,i=[];return e.forEach((function(e){var n={level:0,rowCount:0,headerContent:""},o=[];e.hasSubGroups?(o=t.pullGroupListData(e.groupList),n.level=e.level,n.rowCount=o.length-e.groupList.length,n.headerContent=e.generator(e.key,n.rowCount,e.rows,e),i.push(n),i=i.concat(o)):(n.level=e.level,n.headerContent=e.generator(e.key,e.rows.length,e.rows,e),n.rowCount=e.getRows().length,i.push(n),e.getRows().forEach((function(e){i.push(e.getData("data"))})))})),i}},{key:"getGroupedData",value:function(){return this.pullGroupListData(this.groupList)}},{key:"getRowGroup",value:function(e){var t=!1;return this.groupList.forEach((function(i){var n=i.getRowGroup(e);n&&(t=n)})),t}},{key:"countGroups",value:function(){return this.groupList.length}},{key:"generateGroups",value:function(e){var t=this,i=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((function(e){t.createGroup(e,0,i)})),e.forEach((function(e){t.assignRowToExistingGroup(e,i)}))):e.forEach((function(e){t.assignRowToGroup(e,i)}))}},{key:"createGroup",value:function(e,t,i){var n,o=t+"_"+e;i=i||[],n=new ye(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=n,this.groupList.push(n)}},{key:"assignRowToExistingGroup",value:function(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}},{key:"assignRowToGroup",value:function(e,t){var i=this.groupIDLookups[0].func(e.getData()),n=!this.groups["0_"+i];return n&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!n}},{key:"reassignRowToGroup",value:function(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),n=this.getExpectedPath(e);i.length==n.length&&i.every((function(e,t){return e===n[t]}))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}},{key:"getExpectedPath",value:function(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((function(e){t.push(e.func(i))})),t}},{key:"updateGroupRows",value:function(e){var t=[];return this.groupList.forEach((function(e){t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0,this.displayHandler),t}},{key:"scrollHeaders",value:function(e){"virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((function(t){t.scrollHeader(e)}))}},{key:"removeGroup",value:function(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))}}]),n}(B);we.moduleName="groupRows";var Ce=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).history=[],o.index=-1,o.registerTableOption("history",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.history&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("cell-delete",this.clearComponentHistory.bind(this)),this.subscribe("row-delete",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clear.bind(this)),this.subscribe("row-added",this.rowAdded.bind(this)),this.subscribe("row-move",this.rowMoved.bind(this))),this.registerTableFunction("undo",this.undo.bind(this)),this.registerTableFunction("redo",this.redo.bind(this)),this.registerTableFunction("getHistoryUndoSize",this.getHistoryUndoSize.bind(this)),this.registerTableFunction("getHistoryRedoSize",this.getHistoryRedoSize.bind(this)),this.registerTableFunction("clearHistory",this.clear.bind(this))}},{key:"rowMoved",value:function(e,t,i){this.action("rowMove",e,{posFrom:this.table.rowManager.getRowPosition(e),posTo:this.table.rowManager.getRowPosition(t),to:t,after:i})}},{key:"rowAdded",value:function(e,t,i,n){this.action("rowAdd",e,{data:t,pos:i,index:n})}},{key:"rowDeleted",value:function(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup().rows).indexOf(e))&&(t=i[t-1]):(t=e.table.rowManager.getRowIndex(e))&&(t=e.table.rowManager.rows[t-1]),this.history.action("rowDelete",e,{data:e.getData(),pos:!t,index:t})}},{key:"cellUpdated",value:function(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}},{key:"clear",value:function(){this.history=[],this.index=-1}},{key:"action",value:function(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}},{key:"getHistoryUndoSize",value:function(){return this.index+1}},{key:"getHistoryRedoSize",value:function(){return this.history.length-(this.index+1)}},{key:"clearComponentHistory",value:function(e){var t=this.history.findIndex((function(t){return t.component===e}));t>-1&&(this.history.splice(t,1),t<=this.index&&this.index--,this.clearComponentHistory(e))}},{key:"undo",value:function(){if(this.index>-1){var e=this.history[this.index];return n.undoers[e.type].call(this,e),this.index--,this.dispatchExternal("historyUndo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1}},{key:"redo",value:function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return n.redoers[e.type].call(this,e),this.dispatchExternal("historyRedo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1}},{key:"_rebindRow",value:function(e,t){this.history.forEach((function(i){if(i.component instanceof Row)i.component===e&&(i.component=t);else if(i.component instanceof Cell&&i.component.row===e){var n=i.component.column.getField();n&&(i.component=t.getCell(n))}}))}}]),n}(B);Ce.moduleName="history",Ce.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},Ce.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}};var Ee=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).fieldIndex=[],i.hasIndex=!1,i}return o(r,[{key:"initialize",value:function(){this.subscribe("table-building",this.tableElementCheck.bind(this))}},{key:"tableElementCheck",value:function(){"TABLE"===this.table.element.tagName&&this.parseTable()}},{key:"parseTable",value:function(){var t=this.table.element,i=this.table.options,n=(i.columns,t.getElementsByTagName("th")),o=t.getElementsByTagName("tbody")[0],a=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),o=o?o.getElementsByTagName("tr"):[],this._extractOptions(t,i),n.length?this._extractHeaders(n,o):this._generateBlankHeaders(n,o);for(var r=0;r-1&&e.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}},{key:"clearBindings",value:function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}},{key:"checkBinding",value:function(e,t){var i=this,n=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((function(e){-1==i.pressedKeys.indexOf(e)&&(n=!1)})),n&&t.action.call(this,e),!0)}}]),r}(B);Re.moduleName="keybindings",Re.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},Re.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i>=0?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,i=t.scrollTop+t.element.clientHeight,n=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=n?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){this.dispatch("keybinding-nav-prev",e)},navNext:function(e){this.dispatch("keybinding-nav-next",e)},navLeft:function(e){this.dispatch("keybinding-nav-left",e)},navRight:function(e){this.dispatch("keybinding-nav-right",e)},navUp:function(e){this.dispatch("keybinding-nav-up",e)},navDown:function(e){this.dispatch("keybinding-nav-down",e)},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}};var xe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).menuElements=[],o.blurEvent=o.hideMenu.bind(l(o)),o.escEvent=o.escMenu.bind(l(o)),o.nestedMenuBlock=!1,o.positionReversedX=!1,o.registerTableOption("rowContextMenu",!1),o.registerTableOption("rowClickMenu",!1),o.registerTableOption("groupContextMenu",!1),o.registerTableOption("groupClickMenu",!1),o.registerColumnOption("headerContextMenu"),o.registerColumnOption("headerMenu"),o.registerColumnOption("contextMenu"),o.registerColumnOption("clickMenu"),o}return o(n,[{key:"initialize",value:function(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this))}},{key:"layoutCell",value:function(e){(e.column.definition.contextMenu||e.column.definition.clickMenu)&&this.initializeCell(e)}},{key:"initializeColumn",value:function(e){var t=e.definition;(t.headerContextMenu||t.headerClickMenu||t.headerMenu)&&this.initializeColumnHeader(e)}},{key:"initializeColumnHeader",value:function(e){var t,i=this;e.definition.headerContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.definition.headerContextMenu)),this.tapHold(e,e.definition.headerContextMenu)),e.definition.headerMenu&&((t=document.createElement("span")).classList.add("tabulator-header-menu-button"),t.innerHTML="⋮",t.addEventListener("click",(function(t){t.stopPropagation(),t.preventDefault(),i.LoadMenuEvent(e,e.definition.headerMenu,t)})),e.titleElement.insertBefore(t,e.titleElement.firstChild))}},{key:"LoadMenuEvent",value:function(e,t,i){t="function"==typeof t?t.call(this.table,e.getComponent(),i):t,this.loadMenu(i,e,t)}},{key:"tapHold",value:function(e,t){var i=this,n=e.getElement(),o=null,a=!1;n.addEventListener("touchstart",(function(n){clearTimeout(o),a=!1,o=setTimeout((function(){clearTimeout(o),o=null,a=!0,i.LoadMenuEvent(e,t,n)}),1e3)}),{passive:!0}),n.addEventListener("touchend",(function(e){clearTimeout(o),o=null,a&&e.preventDefault()}))}},{key:"initializeCell",value:function(e){e.column.definition.contextMenu&&(e.getElement(!0).addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.column.definition.contextMenu)),this.tapHold(e,e.column.definition.contextMenu)),e.column.definition.clickMenu&&e.getElement(!0).addEventListener("click",this.LoadMenuEvent.bind(this,e,e.column.definition.clickMenu))}},{key:"initializeRow",value:function(e){this.table.options.rowContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.rowContextMenu)),this.tapHold(e,this.table.options.rowContextMenu)),this.table.options.rowClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.rowClickMenu))}},{key:"initializeGroup",value:function(e){this.table.options.groupContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.groupContextMenu)),this.tapHold(e,this.table.options.groupContextMenu)),this.table.options.groupClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.groupClickMenu))}},{key:"loadMenu",value:function(e,t,i,n){var o=this,a=!(e instanceof MouseEvent),r=document.createElement("div");if(r.classList.add("tabulator-menu"),a||e.preventDefault(),i&&i.length){if(!n){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout((function(){o.nestedMenuBlock=!1}),100);this.hideMenu(),this.menuElements=[]}i.forEach((function(e){var i=document.createElement("div"),n=e.label,a=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof n&&(n=n.call(o.table,t.getComponent())),n instanceof Node?i.appendChild(n):i.innerHTML=n,"function"==typeof a&&(a=a.call(o.table,t.getComponent())),a?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(function(e){e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(function(n){n.stopPropagation(),o.hideOldSubMenus(r),o.loadMenu(n,t,e.menu,i)})):e.action&&i.addEventListener("click",(function(i){e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),r.appendChild(i)})),r.addEventListener("click",(function(e){o.hideMenu()})),this.menuElements.push(r),this.positionMenu(r,n,a,e)}}},{key:"hideOldSubMenus",value:function(e){var t=this.menuElements.indexOf(e);if(t>-1)for(var i=this.menuElements.length-1;i>t;i--){var n=this.menuElements[i];n.parentNode&&n.parentNode.removeChild(n),this.menuElements.pop()}}},{key:"positionMenu",value:function(e,t,i,n){var o,a,r,s=this,l=Math.max(document.body.offsetHeight,window.innerHeight);t?(o=(r=C.elOffset(t)).left+t.offsetWidth,a=r.top-1):(o=i?n.touches[0].pageX:n.pageX,a=i?n.touches[0].pageY:n.pageY,this.positionReversedX=!1),e.style.top=a+"px",e.style.left=o+"px",setTimeout((function(){s.table.rowManager.element.addEventListener("scroll",s.blurEvent),document.body.addEventListener("click",s.blurEvent),document.body.addEventListener("contextmenu",s.blurEvent),window.addEventListener("resize",s.blurEvent),document.body.addEventListener("keydown",s.escEvent)}),100),document.body.appendChild(e),a+e.offsetHeight>=l&&(e.style.top="",e.style.bottom=t?l-r.top-t.offsetHeight-1+"px":l-a+"px"),(o+e.offsetWidth>=document.body.offsetWidth||this.positionReversedX)&&(e.style.left="",e.style.right=t?document.documentElement.offsetWidth-r.left+"px":document.documentElement.offsetWidth-o+"px",this.positionReversedX=!0)}},{key:"isOpen",value:function(){return!!this.menuElements.length}},{key:"escMenu",value:function(e){27==e.keyCode&&this.hideMenu()}},{key:"hideMenu",value:function(){this.menuElements.forEach((function(e){e.parentNode&&e.parentNode.removeChild(e)})),document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent)}}]),n}(B);xe.moduleName="menu";var Te=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).placeholderElement=o.createPlaceholderElement(),o.hoverElement=!1,o.checkTimeout=!1,o.checkPeriod=250,o.moving=!1,o.toCol=!1,o.toColAfter=!1,o.startX=0,o.autoScrollMargin=40,o.autoScrollStep=5,o.autoScrollTimeout=!1,o.touchMove=!1,o.moveHover=o.moveHover.bind(l(o)),o.endMove=o.endMove.bind(l(o)),o.registerTableOption("movableColumns",!1),o}return o(n,[{key:"createPlaceholderElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}},{key:"initialize",value:function(){this.subscribe("column-init",this.initializeColumn.bind(this))}},{key:"initializeColumn",value:function(e){var t,i=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===i.moving.parent&&((i.touchMove?n.touches[0].pageX:n.pageX)-C.elOffset(t).left+i.table.columnManager.element.scrollLeft>e.getWidth()/2?i.toCol===e&&i.toColAfter||(t.parentNode.insertBefore(i.placeholderElement,t.nextSibling),i.moveColumn(e,!0)):(i.toCol!==e||i.toColAfter)&&(t.parentNode.insertBefore(i.placeholderElement,t),i.moveColumn(e,!1)))}.bind(i),t.addEventListener("mousedown",(function(t){i.touchMove=!1,1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),i.bindTouchEvents(e)),e.modules.moveColumn=n}},{key:"bindTouchEvents",value:function(e){var t,i,n,o,a,r,s=this,l=e.getElement(),u=!1;l.addEventListener("touchstart",(function(l){s.checkTimeout=setTimeout((function(){s.touchMove=!0,t=e.nextColumn(),n=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,a=0,r=0,u=!1,s.startMove(l,e)}),s.checkPeriod)}),{passive:!0}),l.addEventListener("touchmove",(function(l){var c,h;s.moving&&(s.moveHover(l),u||(u=l.touches[0].pageX),(c=l.touches[0].pageX-u)>0?t&&c-a>n&&(h=t)!==e&&(u=l.touches[0].pageX,h.getElement().parentNode.insertBefore(s.placeholderElement,h.getElement().nextSibling),s.moveColumn(h,!0)):i&&-c-r>o&&(h=i)!==e&&(u=l.touches[0].pageX,h.getElement().parentNode.insertBefore(s.placeholderElement,h.getElement()),s.moveColumn(h,!1)),h&&(t=h.nextColumn(),a=n,n=t?t.getWidth()/2:0,i=h.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),l.addEventListener("touchend",(function(e){s.checkTimeout&&clearTimeout(s.checkTimeout),s.moving&&s.endMove(e)}))}},{key:"startMove",value:function(e,t){var i=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-C.elOffset(i).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}},{key:"_bindMouseMove",value:function(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}},{key:"_unbindMouseMove",value:function(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}},{key:"moveColumn",value:function(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var n=e.getElement(!0);n.parentNode&&n.parentNode.insertBefore(i[t].getElement(),n.nextSibling)})):e.getCells().forEach((function(e,t){var n=e.getElement(!0);n.parentNode&&n.parentNode.insertBefore(i[t].getElement(),n)}))}},{key:"endMove",value:function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))}},{key:"moveHover",value:function(e){var t,i=this,n=this.table.columnManager.getElement(),o=n.scrollLeft,a=(this.touchMove?e.touches[0].pageX:e.pageX)-C.elOffset(n).left+o;this.hoverElement.style.left=a-this.startX+"px",a-oe.getHeight()/2?t.toRow===e&&t.toRowAfter||((n=e.getElement()).parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(n=e.getElement()).previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=i}},{key:"initializeRow",value:function(e){var t,i=this,n={};n.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),n.mousemove=function(t){var n=e.getElement();t.pageY-C.elOffset(n).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||(n.parentNode.insertBefore(i.placeholderElement,n.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(n.parentNode.insertBefore(i.placeholderElement,n),i.moveRow(e,!1))}.bind(i),this.hasHandle||((t=e.getElement()).addEventListener("mousedown",(function(t){1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=n}},{key:"initializeColumn",value:function(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}},{key:"initializeCell",value:function(e){if(e.column.definition.rowHandle&&!1!==this.table.options.movableRows){var t=this,i=e.getElement(!0);i.addEventListener("mousedown",(function(i){1===i.which&&(t.checkTimeout=setTimeout((function(){t.startMove(i,e.row)}),t.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)})),this.bindTouchEvents(e.row,i)}}},{key:"bindTouchEvents",value:function(e,t){var i,n,o,a,r,s,l=this,u=!1;t.addEventListener("touchstart",(function(t){l.checkTimeout=setTimeout((function(){l.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,n=e.prevRow(),a=n?n.getHeight()/2:0,r=0,s=0,u=!1,l.startMove(t,e)}),l.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(function(t){var c,h;l.moving&&(t.preventDefault(),l.moveHover(t),u||(u=t.touches[0].pageY),(c=t.touches[0].pageY-u)>0?i&&c-r>o&&(h=i)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveRow(h,!0)):n&&-c-s>a&&(h=n)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveRow(h,!1)),h&&(i=h.nextRow(),r=o,o=i?i.getHeight()/2:0,n=h.prevRow(),s=a,a=n?n.getHeight()/2:0))})),t.addEventListener("touchend",(function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&(l.endMove(e),l.touchMove=!1)}))}},{key:"_bindMouseMove",value:function(){this.table.rowManager.getDisplayRows().forEach((function(e){("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}},{key:"_unbindMouseMove",value:function(){this.table.rowManager.getDisplayRows().forEach((function(e){("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}},{key:"startMove",value:function(e,t){var i=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i)),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)}},{key:"setStartPosition",value:function(e,t){var i,n,o=this.touchMove?e.touches[0].pageX:e.pageX,a=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(n=i.getBoundingClientRect(),this.startX=n.left-o+window.pageXOffset,this.startY=n.top-a+window.pageYOffset):this.startY=a-i.getBoundingClientRect().top}},{key:"endMove",value:function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))}},{key:"moveRow",value:function(e,t){this.toRow=e,this.toRowAfter=t}},{key:"moveHover",value:function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}},{key:"moveHoverTable",value:function(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=n-this.startY+"px"}},{key:"moveHoverConnections",value:function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"}},{key:"elementRowDrop",value:function(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}},{key:"connectToTables",value:function(e){var t,i=this;this.connectionSelectorsTables&&(t=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStart",t),this.commsSend(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach((function(e){"string"==typeof e?i.connectionElements=i.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):i.connectionElements.push(e)})),this.connectionElements.forEach((function(e){var t=function(t){i.elementRowDrop(t,e,i.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}},{key:"disconnectFromTables",value:function(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}},{key:"connect",value:function(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)})),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStart",t,e),!0)}},{key:"disconnect",value:function(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)})),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStop",e)):console.warn("Move Row Error - trying to disconnect from non connected table")}},{key:"dropComplete",value:function(t,i,n){var o=!1;if(n){switch(e(this.table.options.movableRowsSender)){case"string":o=this.senders[this.table.options.movableRowsSender];break;case"function":o=this.table.options.movableRowsSender}o?o.call(this,this.moving.getComponent(),i?i.getComponent():void 0,t):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),i?i.getComponent():void 0,t)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),i?i.getComponent():void 0,t);this.endMove()}},{key:"tableRowDrop",value:function(t,i){var n=!1,o=!1;switch(t.stopImmediatePropagation(),e(this.table.options.movableRowsReceiver)){case"string":n=this.receivers[this.table.options.movableRowsReceiver];break;case"function":n=this.table.options.movableRowsReceiver}n?o=n.call(this,this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),o?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:i,success:o})}},{key:"commsReceived",value:function(e,t,i){switch(t){case"connect":return this.connect(e,i.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,i.row,i.success)}}}]),r}(B);Me.prototype.receivers={insert:function(e,t,i){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,i){return this.table.addRow(e.getData()),!0},update:function(e,t,i){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,i){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},Me.prototype.senders={delete:function(e,t,i){e.delete()}},Me.moduleName="moveRow";var Le=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).allowedTypes=["","data","edit","clipboard"],i.enabled=!0,i.registerColumnOption("mutator"),i.registerColumnOption("mutatorParams"),i.registerColumnOption("mutatorData"),i.registerColumnOption("mutatorDataParams"),i.registerColumnOption("mutatorEdit"),i.registerColumnOption("mutatorEditParams"),i.registerColumnOption("mutatorClipboard"),i.registerColumnOption("mutatorClipboardParams"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-value-changing",this.transformCell.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-init-before",this.rowDataChanged.bind(this)),this.subscribe("row-data-changing",this.rowDataChanged.bind(this))}},{key:"rowDataChanged",value:function(e,t,i){return this.transformRow(t,"data",i)}},{key:"initializeColumn",value:function(e){var t=this,i=!1,n={};this.allowedTypes.forEach((function(o){var a,r="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));e.definition[r]&&(a=t.lookupMutator(e.definition[r]))&&(i=!0,n[r]={mutator:a,params:e.definition[r+"Params"]||{}})})),i&&(e.modules.mutate=n)}},{key:"lookupMutator",value:function(t){var i=!1;switch(e(t)){case"string":r.mutators[t]?i=r.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":i=t}return i}},{key:"transformRow",value:function(e,t,i){var n,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((function(a){var r,s,l;a.modules.mutate&&(r=a.modules.mutate[o]||a.modules.mutate.mutator||!1)&&(n=a.getFieldValue(void 0!==i?i:e),"data"!=t&&void 0===n||(l=a.getComponent(),s="function"==typeof r.params?r.params(n,e,t,l):r.params,a.setFieldValue(e,r.mutator(n,e,t,s,l))))})),e}},{key:"transformCell",value:function(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,n={};if(i)return n=Object.assign(n,e.row.getData()),e.column.setFieldValue(n,t),i.mutator(t,n,"edit",i.params,e.getComponent())}return t}},{key:"enable",value:function(){this.enabled=!0}},{key:"disable",value:function(){this.enabled=!1}}]),r}(B);Le.moduleName="mutator",Le.mutators={};var De=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).mode="local",o.progressiveLoad=!1,o.size=0,o.page=1,o.count=5,o.max=1,o.displayIndex=0,o.initialLoad=!0,o.dataChanging=!1,o.pageSizes=[],o.dataReceivedNames={},o.dataSentNames={},o.registerTableOption("pagination",!1),o.registerTableOption("paginationMode","local"),o.registerTableOption("paginationSize",!1),o.registerTableOption("paginationInitialPage",1),o.registerTableOption("paginationButtonCount",5),o.registerTableOption("paginationSizeSelector",!1),o.registerTableOption("paginationElement",!1),o.registerTableOption("paginationAddRow","page"),o.registerTableOption("progressiveLoad",!1),o.registerTableOption("progressiveLoadDelay",0),o.registerTableOption("progressiveLoadScrollMargin",0),o.registerTableFunction("setMaxPage",o.setMaxPage.bind(l(o))),o.registerTableFunction("setPage",o.setPage.bind(l(o))),o.registerTableFunction("setPageToRow",o.userSetPageToRow.bind(l(o))),o.registerTableFunction("setPageSize",o.userSetPageSize.bind(l(o))),o.registerTableFunction("getPageSize",o.getPageSize.bind(l(o))),o.registerTableFunction("previousPage",o.previousPage.bind(l(o))),o.registerTableFunction("nextPage",o.nextPage.bind(l(o))),o.registerTableFunction("getPage",o.getPage.bind(l(o))),o.registerTableFunction("getPageMax",o.getPageMax.bind(l(o))),o.registerComponentFunction("row","pageTo",o.setPageToRow.bind(l(o))),o}return o(n,[{key:"initialize",value:function(){this.table.options.pagination?(this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("row-adding-position",this.rowAddingPosition.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),"remote"===this.table.options.paginationMode&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this))),this.table.options.progressiveLoad&&console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"),this.registerDisplayHandler(this.restOnRenderBefore.bind(this),40),this.registerDisplayHandler(this.getRows.bind(this),50),this.createElements(),this.initializePaginator()):this.table.options.progressiveLoad&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.initializeProgressive(this.table.options.progressiveLoad),"scroll"===this.table.options.progressiveLoad&&this.subscribe("scroll-vertical",this.scrollVertical.bind(this)))}},{key:"rowAddingPosition",value:function(e,t){var i,n=this.table.rowManager,o=n.getDisplayRows();return t?o.length?i=o[0]:n.activeRows.length&&(i=n.activeRows[n.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.lengththis.max&&(this.page=this.max)}},{key:"reset",value:function(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1)}},{key:"setMaxPage",value:function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}},{key:"setPage",value:function(e){switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return(e=parseInt(e))>0&&e<=this.max||"local"!==this.mode?(this.page=e,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Requested page is out of range of 1 - "+this.max+":",e),Promise.reject())}},{key:"setPageToRow",value:function(e){var t=this.table.rowManager.getDisplayRows(this.displayIndex-1).indexOf(e);if(t>-1){var i=!0===this.size?1:Math.ceil((t+1)/this.size);return this.setPage(i)}return console.warn("Pagination Error - Requested row is not visible"),Promise.reject()}},{key:"setPageSize",value:function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}},{key:"_setPageButtons",value:function(){for(var e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&o<=this.max&&this.pagesElement.appendChild(this._generatePageButton(o));this.footerRedraw()}},{key:"_generatePageButton",value:function(e){var t=this,i=document.createElement("button");return i.classList.add("tabulator-page"),e==this.page&&i.classList.add("active"),i.setAttribute("type","button"),i.setAttribute("role","button"),this.langBind("pagination|page_title",(function(t){i.setAttribute("aria-label",t+" "+e),i.setAttribute("title",t+" "+e)})),i.setAttribute("data-page",e),i.textContent=e,i.addEventListener("click",(function(i){t.setPage(e)})),i}},{key:"previousPage",value:function(){return this.page>1?(this.page--,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Previous page would be less than page 1:",0),Promise.reject())}},{key:"nextPage",value:function(){return this.page-1&&(o=o.substr(r),(i=o.indexOf(";"))>-1&&(o=o.substr(0,i)),n=o.replace(a+"=","")),!!n&&JSON.parse(n)}},Fe={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var n=new Date;n.setDate(n.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+n.toUTCString()}},Pe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).mode="",o.id="",o.defWatcherBlock=!1,o.config={},o.readFunc=!1,o.writeFunc=!1,o.registerTableOption("persistence",!1),o.registerTableOption("persistenceID",""),o.registerTableOption("persistenceMode",!0),o.registerTableOption("persistenceReaderFunc",!1),o.registerTableOption("persistenceWriterFunc",!1),o}return o(n,[{key:"localStorageTest",value:function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}},{key:"initialize",value:function(){if(this.table.options.persistence){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:n.readers[this.table.options.persistenceReaderFunc]?this.readFunc=n.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):n.readers[this.mode]?this.readFunc=n.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:n.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=n.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):n.writers[this.mode]?this.writeFunc=n.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader)),this.config.columns&&(this.table.options.columns=this.load("columns",this.table.options.columns),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-show",this.save.bind(this,"columns")),this.subscribe("column-hide",this.save.bind(this,"columns")),this.subscribe("column-moved",this.save.bind(this,"columns")),this.subscribe("table-built",this.tableBuilt.bind(this),0)),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("filter-changed",this.eventSave.bind(this,"filter")),this.subscribe("sort-changed",this.eventSave.bind(this,"sort")),this.subscribe("group-changed",this.eventSave.bind(this,"group")),this.subscribe("page-changed",this.eventSave.bind(this,"page")),this.subscribe("column-resized",this.eventSave.bind(this,"columns")),this.subscribe("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}},{key:"eventSave",value:function(e){this.config[e]&&this.save(e)}},{key:"tableBuilt",value:function(){var e,t;this.table.options;this.config.sort&&!1==!(e=this.load("sort"))&&(this.table.initialSort=e),this.config.filter&&!1==!(t=this.load("filter"))&&(this.table.initialFilter=t)}},{key:"tableRedraw",value:function(e){e&&this.config.columns&&this.save("columns")}},{key:"getColumnLayout",value:function(){return this.parseColumns(this.table.columnManager.getColumns())}},{key:"setColumnLayout",value:function(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e)),!0}},{key:"initializeColumn",value:function(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((function(e){var i=Object.getOwnPropertyDescriptor(t,e),n=t[e];i&&Object.defineProperty(t,e,{set:function(e){n=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),n}})})),this.defWatcherBlock=!1)}},{key:"load",value:function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}},{key:"retreiveData",value:function(e){return!!this.readFunc&&this.readFunc(this.id,e)}},{key:"mergeDefinition",value:function(e,t){var i=this,n=[];return(t=t||[]).forEach((function(t,o){var a,r=i._findColumn(e,t);r&&(!0===i.config.columns||null==i.config.columns?(a=Object.keys(r)).push("width"):a=i.config.columns,a.forEach((function(e){"columns"!==e&&void 0!==t[e]&&(r[e]=t[e])})),r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),n.push(r))})),e.forEach((function(e,o){i._findColumn(t,e)||(n.length>o?n.splice(o,0,e):n.push(e))})),n}},{key:"_findColumn",value:function(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find((function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}}))}},{key:"save",value:function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)}},{key:"validateSorters",value:function(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}},{key:"getGroupConfig",value:function(){var e={};return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e}},{key:"getPageConfig",value:function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e}},{key:"parseColumns",value:function(e){var t=this,i=[],n=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((function(e){var o,a={},r=e.getDefinition();e.isGroup?(a.title=r.title,a.columns=t.parseColumns(e.getColumns())):(a.field=e.getField(),!0===t.config.columns||null==t.config.columns?(o=Object.keys(r)).push("width"):o=t.config.columns,o.forEach((function(t){switch(t){case"width":a.width=e.getWidth();break;case"visible":a.visible=e.visible;break;default:"function"!=typeof r[t]&&-1===n.indexOf(t)&&(a[t]=r[t])}}))),i.push(a)})),i}}]),n}(B);Pe.moduleName="persistence",Pe.readers=Se,Pe.writers=Fe;var He=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).element=!1,o.manualBlock=!1,o.registerTableOption("printAsHtml",!1),o.registerTableOption("printFormatter",!1),o.registerTableOption("printHeader",!1),o.registerTableOption("printFooter",!1),o.registerTableOption("printStyled",!0),o.registerTableOption("printRowRange","visible"),o.registerTableOption("printConfig",{}),o.registerColumnOption("print"),o.registerColumnOption("titlePrint"),o}return o(n,[{key:"initialize",value:function(){this.table.options.printAsHtml&&(window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}},{key:"replaceTable",value:function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))}},{key:"cleanup",value:function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}},{key:"printFullscreen",value:function(e,t,i){var n,o,a=window.scrollX,r=window.scrollY,s=document.createElement("div"),l=document.createElement("div"),u=this.table.modules.export.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e||this.table.options.printRowRange,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(s.classList.add("tabulator-print-header"),"string"==typeof(n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?s.innerHTML=n:s.appendChild(n),this.element.appendChild(s)),this.element.appendChild(u),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(o="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=o:l.appendChild(o),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,u),window.print(),this.cleanup(),window.scrollTo(a,r),this.manualBlock=!1}}]),n}(B);He.moduleName="print";var ze=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).data=!1,o.blocked=!1,o.origFuncs={},o.currentVersion=0,o.registerTableOption("reactiveData",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this)),this.subscribe("cell-value-save-after",this.unblock.bind(this)),this.subscribe("row-data-save-before",this.block.bind(this)),this.subscribe("row-data-save-after",this.unblock.bind(this)),this.subscribe("row-data-init-after",this.watchRow.bind(this)),this.subscribe("data-processing",this.watchData.bind(this)),this.subscribe("table-destroy",this.unwatchData.bind(this)))}},{key:"watchData",value:function(e){var t,i=arguments,n=this;this.currentVersion++,t=this.currentVersion,this.unwatchData(),this.data=e,this.origFuncs.push=e.push,Object.defineProperty(this.data,"push",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(i);return n.blocked||t!==n.currentVersion||o.forEach((function(e){n.table.rowManager.addRowActual(e,!1)})),n.origFuncs.push.apply(e,i)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(i);return n.blocked||t!==n.currentVersion||o.forEach((function(e){n.table.rowManager.addRowActual(e,!0)})),n.origFuncs.unshift.apply(e,i)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return n.blocked||t!==n.currentVersion||n.data.length&&(i=n.table.rowManager.getRowFromDataObject(n.data[0]))&&i.deleteActual(),n.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return n.blocked||t!==n.currentVersion||n.data.length&&(i=n.table.rowManager.getRowFromDataObject(n.data[n.data.length-1]))&&i.deleteActual(),n.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var o,a=Array.from(i),r=a[0]<0?e.length+a[0]:a[0],s=a[1],l=!!a[2]&&a.slice(2);if(!n.blocked&&t===n.currentVersion){if(l&&((o=!!e[r]&&n.table.rowManager.getRowFromDataObject(e[r]))?l.forEach((function(e){n.table.rowManager.addRowActual(e,!0,o,!0)})):(l=l.slice().reverse()).forEach((function(e){n.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==s){var u=e.slice(r,void 0===a[1]?a[1]:r+s);u.forEach((function(e,t){var i=n.table.rowManager.getRowFromDataObject(e);i&&i.deleteActual(t!==u.length-1)}))}(l||0!==s)&&n.table.rowManager.reRenderInPosition()}return n.origFuncs.splice.apply(e,i)}})}},{key:"unwatchData",value:function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})}},{key:"watchRow",value:function(e){var t=e.getData();for(var i in this.blocked=!0,t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1}},{key:"watchTreeChildren",value:function(e){var t=arguments,i=e.getData()[this.table.options.dataTreeChildField],n={};function o(){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}i&&(n.push=i.push,Object.defineProperty(i,"push",{enumerable:!1,configurable:!0,value:function(){var e=n.push.apply(i,t);return o(),e}}),n.unshift=i.unshift,Object.defineProperty(i,"unshift",{enumerable:!1,configurable:!0,value:function(){var e=n.unshift.apply(i,t);return o(),e}}),n.shift=i.shift,Object.defineProperty(i,"shift",{enumerable:!1,configurable:!0,value:function(){var e=n.shift.call(i);return o(),e}}),n.pop=i.pop,Object.defineProperty(i,"pop",{enumerable:!1,configurable:!0,value:function(){var e=n.pop.call(i);return o(),e}}),n.splice=i.splice,Object.defineProperty(i,"splice",{enumerable:!1,configurable:!0,value:function(){var e=n.splice.apply(i,t);return o(),e}}))}},{key:"watchKey",value:function(e,t,i){var n=this,o=Object.getOwnPropertyDescriptor(t,i),a=t[i],r=this.currentVersion;Object.defineProperty(t,i,{set:function(t){if(a=t,!n.blocked&&r===n.currentVersion){var s={};s[i]=t,e.updateData(s)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),a}})}},{key:"unwatchRow",value:function(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}},{key:"block",value:function(){this.blocked=!0}},{key:"unblock",value:function(){this.blocked=!1}}]),n}(B);ze.moduleName="reactiveData";var Ae=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).startColumn=!1,o.startX=!1,o.startWidth=!1,o.handle=null,o.prevHandle=null,o.registerColumnOption("resizable",!0),o}return o(n,[{key:"initialize",value:function(){this.subscribe("cell-layout",this.layoutCellHandles.bind(this)),this.subscribe("column-init",this.layoutColumnHeader.bind(this))}},{key:"layoutCellHandles",value:function(e){"row"===e.row.type&&this.initializeColumn("cell",e.column,e.element)}},{key:"layoutColumnHeader",value:function(e){this.initializeColumn("header",e,e.element)}},{key:"initializeColumn",value:function(e,t,i){var n=this,o=!1,a=t.definition.resizable;if("header"===e&&(o="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:o}),!0===a||a==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var s=document.createElement("div");s.className="tabulator-col-resize-handle prev",r.addEventListener("click",(function(e){e.stopPropagation()}));var l=function(e){var i=t.getLastColumn();i&&n._checkResizability(i)&&(n.startColumn=t,n._mouseDown(e,i,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",(function(e){var i=t.getLastColumn();i&&n._checkResizability(i)&&(e.stopPropagation(),i.reinitializeWidth(!0))})),s.addEventListener("click",(function(e){e.stopPropagation()}));var u=function(e){var i,o,a;(i=t.getFirstColumn())&&(a=(o=n.table.columnManager.findColumnIndex(i))>0&&n.table.columnManager.getColumnByIndex(o-1))&&n._checkResizability(a)&&(n.startColumn=t,n._mouseDown(e,a,s))};s.addEventListener("mousedown",u),s.addEventListener("touchstart",u,{passive:!0}),s.addEventListener("dblclick",(function(e){var i,o,a;(i=t.getFirstColumn())&&(a=(o=n.table.columnManager.findColumnIndex(i))>0&&n.table.columnManager.getColumnByIndex(o-1))&&n._checkResizability(a)&&(e.stopPropagation(),a.reinitializeWidth(!0))})),i.appendChild(r),i.appendChild(s)}}},{key:"_checkResizability",value:function(e){return e.definition.resizable}},{key:"_mouseDown",value:function(e,t,i){var n=this;function o(e){n.table.rtl?t.setWidth(n.startWidth-((void 0===e.screenX?e.touches[0].screenX:e.screenX)-n.startX)):t.setWidth(n.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-n.startX)),n.table.columnManager.renderer.rerenderColumns(!0),!n.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function a(e){n.startColumn.modules.edit&&(n.startColumn.modules.edit.blocked=!1),n.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",a),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",a),n.table.element.classList.remove("tabulator-block-select"),n.dispatch("column-resized",t),n.table.externalEvents.dispatch("columnResized",t.getComponent())}n.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),n.startColumn.modules.edit&&(n.startColumn.modules.edit.blocked=!0),n.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,n.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",a),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",a)}}]),n}(B);Ae.moduleName="resizeColumns";var Oe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).startColumn=!1,o.startY=!1,o.startHeight=!1,o.handle=null,o.prevHandle=null,o.registerTableOption("resizableRows",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}},{key:"initializeRow",value:function(e){var t=this,i=e.getElement(),n=document.createElement("div");n.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",n.addEventListener("click",(function(e){e.stopPropagation()}));var a=function(i){t.startRow=e,t._mouseDown(i,e,n)};n.addEventListener("mousedown",a),n.addEventListener("touchstart",a,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var n=t.table.rowManager.prevDisplayRow(e);n&&(t.startRow=n,t._mouseDown(i,n,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(n),i.appendChild(o)}},{key:"_mouseDown",value:function(e,t,i){var n=this;function o(e){t.setHeight(n.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-n.startY))}function a(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",a),n.table.element.classList.remove("tabulator-block-select"),this.dispatchExternal("rowResized",t.getComponent())}n.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),n.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,n.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",a),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",a)}}]),n}(B);Oe.moduleName="resizeRows";var _e=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).binding=!1,o.observer=!1,o.containerObserver=!1,o.tableHeight=0,o.tableWidth=0,o.containerHeight=0,o.containerWidth=0,o.autoResize=!1,o.registerTableOption("autoResize",!0),o}return o(n,[{key:"initialize",value:function(){var e=this;if(this.table.options.autoResize){var t,i=this.table;this.tableHeight=i.element.clientHeight,this.tableWidth=i.element.clientWidth,i.element.parentNode&&(this.containerHeight=i.element.parentNode.clientHeight,this.containerWidth=i.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver((function(t){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var n=Math.floor(t[0].contentRect.height),o=Math.floor(t[0].contentRect.width);e.tableHeight==n&&e.tableWidth==o||(e.tableHeight=n,e.tableWidth=o,i.element.parentNode&&(e.containerHeight=i.element.parentNode.clientHeight,e.containerWidth=i.element.parentNode.clientWidth),e.table.columnManager.renderer.rerenderColumns(!0),i.redraw())}})),this.observer.observe(i.element),t=window.getComputedStyle(i.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((function(t){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var n=Math.floor(t[0].contentRect.height),o=Math.floor(t[0].contentRect.width);e.containerHeight==n&&e.containerWidth==o||(e.containerHeight=n,e.containerWidth=o,e.tableHeight=i.element.clientHeight,e.tableWidth=i.element.clientWidth),i.columnManager.renderer.rerenderColumns(!0),i.redraw()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell)&&(i.columnManager.renderer.rerenderColumns(!0),i.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}},{key:"tableResized",value:function(){this.table.rowManager.redraw()}},{key:"clearBindings",value:function(){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}]),n}(B);_e.moduleName="resizeTable";var Ne=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).columns=[],o.hiddenColumns=[],o.mode="",o.index=0,o.collapseFormatter=[],o.collapseStartOpen=!0,o.collapseHandleColumn=!1,o.registerTableOption("responsiveLayout",!1),o.registerTableOption("responsiveLayoutCollapseStartOpen",!0),o.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),o.registerTableOption("responsiveLayoutCollapseFormatter",!1),o.registerColumnOption("responsive"),o}return o(n,[{key:"initialize",value:function(){this.table.options.responsiveLayout&&(this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-show",this.updateColumnVisibility.bind(this)),this.subscribe("column-hide",this.updateColumnVisibility.bind(this)),this.subscribe("columns-loaded",this.initializeResponsivity.bind(this)),this.subscribe("column-moved",this.initializeResponsivity.bind(this)),this.subscribe("column-add",this.initializeResponsivity.bind(this)),this.subscribe("column-delete",this.initializeResponsivity.bind(this)),this.subscribe("table-redrawing",this.tableRedraw.bind(this)),"collapse"===this.table.options.responsiveLayout&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}},{key:"tableRedraw",value:function(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}},{key:"initializeResponsivity",value:function(){var e=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach((function(t,i){t.modules.responsive&&t.modules.responsive.order&&t.modules.responsive.visible&&(t.modules.responsive.index=i,e.push(t),t.visible||"collapse"!==self.mode||self.hiddenColumns.push(t))})),e=(e=e.reverse()).sort((function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index})),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent();var t,i=p(this.table.columnManager.columnsByIndex);try{for(i.s();!(t=i.n()).done;){var n=t.value;if("responsiveCollapse"==n.definition.formatter){this.collapseHandleColumn=n;break}}}catch(e){i.e(e)}finally{i.f()}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}},{key:"initializeColumn",value:function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}},{key:"initializeRow",value:function(e){var t;"calc"!==e.type&&((t=document.createElement("div")).classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))}},{key:"layoutRow",value:function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}},{key:"updateColumnVisibility",value:function(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initialize())}},{key:"hideColumn",value:function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())}},{key:"showColumn",value:function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())}},{key:"update",value:function(){for(var e=this,t=!0;t;){var i="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),n=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-i;if(n<0){var o=e.columns[e.index];o?(e.hideColumn(o),e.index++):t=!1}else{var a=e.columns[e.index-1];a&&n>0&&n>=a.getWidth()?(e.showColumn(a),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}}},{key:"generateCollapsedContent",value:function(){var e=this;this.table.rowManager.getDisplayRows().forEach((function(t){e.generateCollapsedRowContent(t)}))}},{key:"generateCollapsedRowContent",value:function(e){var t,i;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(i=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(i)}}},{key:"generateCollapsedRowData",value:function(e){var t,i=this,n=e.getData(),o=[];return this.hiddenColumns.forEach((function(a){var r=a.getFieldValue(n);a.definition.title&&a.field&&(a.modules.format&&i.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return r},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return a.getComponent()}},o.push({field:a.field,title:a.definition.title,value:a.modules.format.formatter.call(i.table.modules.format,t,a.modules.format.params)})):o.push({field:a.field,title:a.definition.title,value:r}))})),o}},{key:"formatCollapsedData",value:function(e){var t=document.createElement("table");return e.forEach((function(e){var i,n=document.createElement("tr"),o=document.createElement("td"),a=document.createElement("td"),r=document.createElement("strong");o.appendChild(r),this.langBind("columns|"+e.field,(function(t){r.innerText=t||e.title})),e.value instanceof Node?((i=document.createElement("div")).appendChild(e.value),a.appendChild(i)):a.innerHTML=e.value,n.appendChild(o),n.appendChild(a),t.appendChild(n)}),this),Object.keys(e).length?t:""}}]),n}(B);Ne.moduleName="responsiveLayout";var Be=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).selecting=!1,i.lastClickedRow=!1,i.selectPrev=[],i.selectedRows=[],i.headerCheckboxElement=null,i.registerTableOption("selectable","highlight"),i.registerTableOption("selectableRangeMode","drag"),i.registerTableOption("selectableRollingSelection",!0),i.registerTableOption("selectablePersistence",!0),i.registerTableOption("selectableCheck",(function(e,t){return!0})),i.registerTableFunction("selectRow",i.selectRows.bind(l(i))),i.registerTableFunction("deselectRow",i.deselectRows.bind(l(i))),i.registerTableFunction("toggleSelectRow",i.toggleRow.bind(l(i))),i.registerTableFunction("getSelectedRows",i.getSelectedRows.bind(l(i))),i.registerTableFunction("getSelectedData",i.getSelectedData.bind(l(i))),i.registerComponentFunction("row","select",i.selectRows.bind(l(i))),i.registerComponentFunction("row","deselect",i.deselectRows.bind(l(i))),i.registerComponentFunction("row","toggleSelect",i.toggleRow.bind(l(i))),i.registerComponentFunction("row","isSelected",i.isRowSelected.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){!1!==this.table.options.selectable&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-deleting",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clearSelectionData.bind(this)),this.subscribe("rows-retrieve",this.clearSelectionData.bind(this)),this.table.options.selectable&&this.table.options.selectablePersistence&&this.subscribe("data-refeshing",this.deselectRows.bind(this)))}},{key:"rowRetrieve",value:function(e,t){return"selected"===e?this.selectedRows:t}},{key:"rowDeleted",value:function(e){this._deselectRow(e,!0)}},{key:"clearSelectionData",value:function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],!0!==e&&this._rowSelectionChanged()}},{key:"initializeRow",value:function(e){var t=this,i=e.getElement(),n=function e(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",(function(i){if(i.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var n=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),o=t.table.rowManager.getDisplayRowIndex(e),a=n<=o?n:o,r=n>=o?n:o,s=t.table.rowManager.getDisplayRows().slice(0).splice(a,r-a+1);i.ctrlKey||i.metaKey?(s.forEach((function(i){i!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)||t.selectedRows.lengtht.table.options.selectable&&(s=s.slice(0,t.table.options.selectable)),t.selectRows(s)),t.table._clearSelection()}else i.ctrlKey||i.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)})):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",n),document.body.addEventListener("keyup",n),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}},{key:"toggleRow",value:function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}},{key:"selectRows",value:function(t){var i,n=this;switch(e(t)){case"undefined":this.table.rowManager.rows.forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;case"string":(i=this.table.rowManager.findRow(t))?this._selectRow(i,!0,!0):this.table.rowManager.getRows(t).forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;default:Array.isArray(t)?(t.forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged()):this._selectRow(t,!1,!0)}}},{key:"_selectRow",value:function(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var n=this.table.rowManager.findRow(e);n?-1==this.selectedRows.indexOf(n)&&(n.getElement().classList.add("tabulator-selected"),n.modules.select||(n.modules.select={}),n.modules.select.selected=!0,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!0),this.selectedRows.push(n),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!0),t||this.dispatchExternal("rowSelected",n.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}},{key:"isRowSelected",value:function(e){return-1!==this.selectedRows.indexOf(e)}},{key:"deselectRows",value:function(e,t){var i,n=this;if(void 0===e){i=n.selectedRows.length;for(var o=0;o-1&&(o.getElement().classList.remove("tabulator-selected"),o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.modules.select.checkboxEl&&(o.modules.select.checkboxEl.checked=!1),n.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(o,!1),t||this.dispatchExternal("rowDeselected",o.getComponent()),n._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}},{key:"getSelectedData",value:function(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}},{key:"getSelectedRows",value:function(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}},{key:"_rowSelectionChanged",value:function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows())}},{key:"registerRowSelectCheckbox",value:function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}},{key:"registerHeaderSelectCheckbox",value:function(e){this.headerCheckboxElement=e}},{key:"childRowSelection",value:function(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t){var n,o=p(i);try{for(o.s();!(n=o.n()).done;){var a=n.value;this._selectRow(a,!0)}}catch(e){o.e(e)}finally{o.f()}}else{var r,s=p(i);try{for(s.s();!(r=s.n()).done;){var l=r.value;this._deselectRow(l,!0)}}catch(e){s.e(e)}finally{s.f()}}}}]),r}(B);function Ve(e,t,i,n,o,a,r){var s=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",u=r.alignEmptyValues,c=0;if(void 0!==s){if(e=s.fromFormat(e,l),t=s.fromFormat(t,l),e.isValid){if(t.isValid)return e-t;c=1}else c=t.isValid?-1:0;return("top"===u&&"desc"===a||"bottom"===u&&"asc"===a)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}Be.moduleName="selectRow";var Ie={number:function(e,t,i,n,o,a,r){var s=r.alignEmptyValues,l=r.decimalSeparator,u=r.thousandSeparator,c=0;if(e=String(e),t=String(t),u&&(e=e.split(u).join(""),t=t.split(u).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))c=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;c=1}return("top"===s&&"desc"===a||"bottom"===s&&"asc"===a)&&(c*=-1),c},string:function(t,i,n,o,a,r,s){var l,u=s.alignEmptyValues,c=0;if(t){if(i){switch(e(s.locale)){case"boolean":s.locale&&(l=this.langLocale());break;case"string":l=s.locale}return String(t).toLowerCase().localeCompare(String(i).toLowerCase(),l)}c=1}else c=i?-1:0;return("top"===u&&"desc"===r||"bottom"===u&&"asc"===r)&&(c*=-1),c},date:function(e,t,i,n,o,a,r){return r.format||(r.format="dd/MM/yyyy"),Ve.call(this,e,t,i,n,o,a,r)},time:function(e,t,i,n,o,a,r){return r.format||(r.format="HH:mm"),Ve.call(this,e,t,i,n,o,a,r)},datetime:Ve,boolean:function(e,t,i,n,o,a,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,i,n,o,a,r){var s=r.type||"length",l=r.alignEmptyValues,u=0;function c(e){switch(s){case"length":return e.length;case"sum":return e.reduce((function(e,t){return e+t}));case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce((function(e,t){return e+t}))/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?c(e):0)-(t?c(t):0);l=1}else l=Array.isArray(t)?-1:0;return("top"===l&&"desc"===a||"bottom"===l&&"asc"===a)&&(u*=-1),u},exists:function(e,t,i,n,o,a,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,n,o,a,r){var s,l,u,c,h,d=0,m=/(\d+)|(\D+)/g,p=/\d/,f=r.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((s=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!p.test(s)||!p.test(l))return s>l?1:-1;for(s=s.match(m),l=l.match(m),h=s.length>l.length?l.length:s.length;dc?1:-1;return s.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===f&&"desc"===a||"bottom"===f&&"asc"===a)&&(g*=-1),g}},We=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).sortList=[],i.changed=!1,i.registerTableOption("sortMode","local"),i.registerTableOption("initialSort",!1),i.registerTableOption("columnHeaderSortMulti",!0),i.registerTableOption("sortOrderReverse",!1),i.registerTableOption("headerSortElement","
"),i.registerColumnOption("sorter"),i.registerColumnOption("sorterParams"),i.registerColumnOption("headerSort",!0),i.registerColumnOption("headerSortStartingDir"),i.registerColumnOption("headerSortTristate"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.registerDataHandler(this.sort.bind(this),20),this.registerTableFunction("setSort",this.userSetSort.bind(this)),this.registerTableFunction("getSorters",this.getSort.bind(this)),this.registerTableFunction("clearSort",this.clearSort.bind(this)),"remote"===this.table.options.sortMode&&this.subscribe("data-params",this.remoteSortParams.bind(this))}},{key:"tableBuilt",value:function(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}},{key:"remoteSortParams",value:function(e,t,i,n){var o=this.getSort();return o.forEach((function(e){delete e.column})),n.sort=o,n}},{key:"userSetSort",value:function(e,t){this.setSort(e,t),this.refreshSort()}},{key:"clearSort",value:function(){this.clear(),this.refreshSort()}},{key:"initializeColumn",value:function(t){var i,n,o=this,a=!1;switch(e(t.definition.sorter)){case"string":r.sorters[t.definition.sorter]?a=r.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":a=t.definition.sorter}t.modules.sort={sorter:a,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:t.definition.headerSortTristate},!1!==t.definition.headerSort&&((i=t.getElement()).classList.add("tabulator-sortable"),(n=document.createElement("div")).classList.add("tabulator-col-sorter"),"object"==e(this.table.options.headerSortElement)?n.appendChild(this.table.options.headerSortElement):n.innerHTML=this.table.options.headerSortElement,t.titleHolderElement.appendChild(n),t.modules.sort.element=n,i.addEventListener("click",(function(e){var i="",n=[],a=!1;if(t.modules.sort){if(t.modules.sort.tristate)i="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=t.modules.sort.startingDir}o.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?((a=(n=o.getSort()).findIndex((function(e){return e.field===t.getField()})))>-1?(n[a].dir=i,a!=n.length-1&&(a=n.splice(a,1)[0],"none"!=i&&n.push(a))):"none"!=i&&n.push({column:t,dir:i}),o.setSort(n)):"none"==i?o.clear():o.setSort(t,i),o.refreshSort()}})))}},{key:"refreshSort",value:function(){"remote"===this.table.options.sortMode?this.reloadData():this.refreshData()}},{key:"hasChanged",value:function(){var e=this.changed;return this.changed=!1,e}},{key:"getSort",value:function(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}},{key:"setSort",value:function(e,t){var i=this,n=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,n.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=n,this.dispatch("sort-changed")}},{key:"clear",value:function(){this.setSort([])}},{key:"findSorter",value:function(t){var i,n=this.table.rowManager.activeRows[0],o="string";if(n&&(n=n.getData(),t.getField()))switch(e(i=t.getFieldValue(n))){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(i)||""===i?i.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return r.sorters[o]}},{key:"sort",value:function(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,n=[],o=[];return this.subscribedExternal("dataSorting")&&this.dispatchExternal("dataSorting",t.getSort()),t.clearColumnHeaders(),"remote"!==this.table.options.sortMode?(i.forEach((function(e,i){var o=e.column.modules.sort;e.column&&o&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,n.push(e)),t.setColumnHeader(e.column,e.dir)})),n.length&&t._sortItems(e,n)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((function(e){o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}},{key:"clearColumnHeaders",value:function(){this.table.columnManager.getRealColumns().forEach((function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))}))}},{key:"setColumnHeader",value:function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)}},{key:"_sortItems",value:function(e,t){var i=this,n=t.length-1;e.sort((function(e,o){for(var a,r=n;r>=0;r--){var s=t[r];if(0!==(a=i._sortRow(e,o,s.column,s.dir,s.params)))break}return a}))}},{key:"_sortRow",value:function(e,t,i,n,o){var a,r,s="asc"==n?e:t,l="asc"==n?t:e;return e=void 0!==(e=i.getFieldValue(s.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",a=s.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,a,r,i.getComponent(),n,o)}}]),r}(B);We.moduleName="sort",We.sorters=Ie;var je={integer:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,i){return""===t||null==t||!isNaN(t)},string:function(e,t,i){return""===t||null==t||isNaN(t)},max:function(e,t,i){return""===t||null==t||parseFloat(t)<=i},min:function(e,t,i){return""===t||null==t||parseFloat(t)>=i},starts:function(e,t,i){return""===t||null==t||String(t).toLowerCase().startsWith(String(i).toLowerCase())},ends:function(e,t,i){return""===t||null==t||String(t).toLowerCase().endsWith(String(i).toLowerCase())},minLength:function(e,t,i){return""===t||null==t||String(t).length>=i},maxLength:function(e,t,i){return""===t||null==t||String(t).length<=i},in:function(e,t,i){return""===t||null==t||("string"==typeof i&&(i=i.split("|")),""===t||i.indexOf(t)>-1)},regex:function(e,t,i){return""===t||null==t||new RegExp(i).test(t)},unique:function(e,t,i){if(""===t||null==t)return!0;var n=!0,o=e.getData(),a=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==a.getFieldValue(i)&&(n=!1)})),n},required:function(e,t,i){return""!==t&&null!=t}},Ge=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).invalidCells=[],i.registerTableOption("validationMode","blocking"),i.registerColumnOption("validator"),i.registerTableFunction("getInvalidCells",i.getInvalidCells.bind(l(i))),i.registerTableFunction("clearCellValidation",i.userClearCellValidation.bind(l(i))),i.registerTableFunction("validate",i.userValidate.bind(l(i))),i.registerComponentFunction("cell","isValid",i.cellIsValid.bind(l(i))),i.registerComponentFunction("cell","clearValidation",i.clearValidation.bind(l(i))),i.registerComponentFunction("cell","validate",i.cellValidate.bind(l(i))),i.registerComponentFunction("column","validate",i.columnValidate.bind(l(i))),i.registerComponentFunction("row","validate",i.rowValidate.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-delete",this.clearValidation.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this))}},{key:"cellIsValid",value:function(e){return!e.modules.validate||!e.modules.validate.invalid}},{key:"cellValidate",value:function(e){return this.validate(e.column.modules.validate,e,e.getValue())}},{key:"columnValidate",value:function(e){var t=[];return e.cells.forEach((function(e){this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}},{key:"rowValidate",value:function(e){var t=[];return e.cells.forEach((function(e){this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}},{key:"userClearCellValidation",value:function(e){var t=this;e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((function(e){t.clearValidation(e._getSelf())}))}},{key:"userValidate",value:function(e){var t=[];return this.table.rowManager.rows.forEach((function(e){var i=e.validate();!0!==i&&(t=t.concat(i))})),!t.length||t}},{key:"initializeColumnCheck",value:function(e){void 0!==e.definition.validator&&this.initializeColumn(e)}},{key:"initializeColumn",value:function(e){var t,i=this,n=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((function(e){(t=i._extractValidator(e))&&n.push(t)})):(t=this._extractValidator(e.definition.validator))&&n.push(t),e.modules.validate=!!n.length&&n)}},{key:"_extractValidator",value:function(t){var i,n,o;switch(e(t)){case"string":return(o=t.indexOf(":"))>-1?(i=t.substring(0,o),n=t.substring(o+1)):i=t,this._buildValidator(i,n);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}}},{key:"_buildValidator",value:function(e,t){var i="function"==typeof e?e:r.validators[e];return i?{type:"function"==typeof e?"function":e,func:i,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)}},{key:"validate",value:function(e,t,i){var n=this,o=[],a=this.invalidCells.indexOf(t);return e&&e.forEach((function(e){e.func.call(n,t.getComponent(),i,e.params)||o.push({type:e.type,parameters:e.params})})),o=!o.length||o,t.modules.validate||(t.modules.validate={}),!0===o?(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),a>-1&&this.invalidCells.splice(a,1)):(t.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==a&&this.invalidCells.push(t)),o}},{key:"getInvalidCells",value:function(){var e=[];return this.invalidCells.forEach((function(t){e.push(t.getComponent())})),e}},{key:"clearValidation",value:function(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.getElement().classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))}}]),r}(B);Ge.moduleName="validate",Ge.validators=je;var Ue=Object.freeze({__proto__:null,AccessorModule:K,AjaxModule:Q,ClipboardModule:Z,ColumnCalcsModule:ie,DataTreeModule:ne,DownloadModule:ae,EditModule:le,ExportModule:he,FilterModule:me,FormatModule:fe,FrozenColumnsModule:ge,FrozenRowsModule:ve,GroupRowsModule:we,HistoryModule:Ce,HtmlTableImportModule:Ee,InteractionModule:ke,KeybindingsModule:Re,MenuModule:xe,MoveColumnsModule:Te,MoveRowsModule:Me,MutatorModule:Le,PageModule:De,PersistenceModule:Pe,PrintModule:He,ReactiveDataModule:ze,ResizeColumnsModule:Ae,ResizeRowsModule:Oe,ResizeTableModule:_e,ResponsiveLayoutModule:Ne,SelectRowModule:Be,SortModule:We,ValidateModule:Ge}),Xe=function(e){a(n,e);var i=c(n);function n(){return t(this,n),i.apply(this,arguments)}return n}(q);return new X(Xe,Ue),Xe})); +/* Tabulator v5.0.1 (c) Oliver Folkerd 2021 */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Tabulator=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var i=0;ie.length)&&(t=e.length);for(var i=0,n=new Array(t);i=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,r=!0,s=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return r=e.done,e},e:function(e){s=!0,a=e},f:function(){try{r||null==i.return||i.return()}finally{if(s)throw a}}}}var f=function(){function e(i){t(this,e),this.table=i}return o(e,[{key:"reloadData",value:function(e,t){return this.table.dataLoader.load(e,void 0,void 0,void 0,t)}},{key:"langText",value:function(){var e;return(e=this.table.modules.localize).getText.apply(e,arguments)}},{key:"langBind",value:function(){var e;return(e=this.table.modules.localize).bind.apply(e,arguments)}},{key:"langLocale",value:function(){var e;return(e=this.table.modules.localize).getLocale.apply(e,arguments)}},{key:"commsConnections",value:function(){var e;return(e=this.table.modules.comms).getConnections.apply(e,arguments)}},{key:"commsSend",value:function(){var e;return(e=this.table.modules.comms).send.apply(e,arguments)}},{key:"layoutMode",value:function(){return this.table.modules.layout.getMode()}},{key:"layoutRefresh",value:function(){return this.table.modules.layout.layout()}},{key:"subscribe",value:function(){var e;return(e=this.table.eventBus).subscribe.apply(e,arguments)}},{key:"unsubscribe",value:function(){var e;return(e=this.table.eventBus).unsubscribe.apply(e,arguments)}},{key:"subscribed",value:function(e){return this.table.eventBus.subscribed(e)}},{key:"subscriptionChange",value:function(){var e;return(e=this.table.eventBus).subscriptionChange.apply(e,arguments)}},{key:"dispatch",value:function(){var e;return(e=this.table.eventBus).dispatch.apply(e,arguments)}},{key:"chain",value:function(){var e;return(e=this.table.eventBus).chain.apply(e,arguments)}},{key:"confirm",value:function(){var e;return(e=this.table.eventBus).confirm.apply(e,arguments)}},{key:"dispatchExternal",value:function(){var e;return(e=this.table.externalEvents).dispatch.apply(e,arguments)}},{key:"subscribedExternal",value:function(e){return this.table.externalEvents.subscribed(e)}},{key:"subscriptionChangeExternal",value:function(){var e;return(e=this.table.externalEvents).subscriptionChange.apply(e,arguments)}},{key:"options",value:function(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}},{key:"setOption",value:function(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}},{key:"module",value:function(e){return this.table.module(e)}}]),e}(),g=function(){function e(i){return t(this,e),this._column=i,this.type="ColumnComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._column.table.componentFunctionBinder.handle("column",e._column,t)}})}return o(e,[{key:"getElement",value:function(){return this._column.getElement()}},{key:"getDefinition",value:function(){return this._column.getDefinition()}},{key:"getField",value:function(){return this._column.getField()}},{key:"getCells",value:function(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}},{key:"isVisible",value:function(){return this._column.visible}},{key:"show",value:function(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}},{key:"hide",value:function(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}},{key:"toggle",value:function(){this._column.visible?this.hide():this.show()}},{key:"delete",value:function(){return this._column.delete()}},{key:"getSubColumns",value:function(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}},{key:"getParentColumn",value:function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()}},{key:"_getSelf",value:function(){return this._column}},{key:"scrollTo",value:function(){return this._column.table.columnManager.scrollToColumn(this._column)}},{key:"getTable",value:function(){return this._column.table}},{key:"move",value:function(e,t){var i=this._column.table.columnManager.findColumn(e);i?this._column.table.columnManager.moveColumn(this._column,i,t):console.warn("Move Error - No matching column found:",i)}},{key:"getNextColumn",value:function(){var e=this._column.nextColumn();return!!e&&e.getComponent()}},{key:"getPrevColumn",value:function(){var e=this._column.prevColumn();return!!e&&e.getComponent()}},{key:"updateDefinition",value:function(e){return this._column.updateDefinition(e)}},{key:"getWidth",value:function(){return this._column.getWidth()}},{key:"setWidth",value:function(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.renderer.rerenderColumns(!0),t}}]),e}(),v={title:void 0,field:void 0,columns:void 0,visible:void 0,hozAlign:void 0,vertAlign:void 0,width:void 0,minWidth:40,maxWidth:void 0,tooltip:void 0,cssClass:void 0,variableHeight:void 0,headerTooltip:void 0,headerVertical:void 0,headerHozAlign:void 0,editableTitle:void 0},b=function(){function e(i){return t(this,e),this._cell=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}return o(e,[{key:"getValue",value:function(){return this._cell.getValue()}},{key:"getOldValue",value:function(){return this._cell.getOldValue()}},{key:"getInitialValue",value:function(){return this._cell.initialValue}},{key:"getElement",value:function(){return this._cell.getElement()}},{key:"getRow",value:function(){return this._cell.row.getComponent()}},{key:"getData",value:function(){return this._cell.row.getData()}},{key:"getField",value:function(){return this._cell.column.getField()}},{key:"getColumn",value:function(){return this._cell.column.getComponent()}},{key:"setValue",value:function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}},{key:"restoreOldValue",value:function(){this._cell.setValueActual(this._cell.getOldValue())}},{key:"restoreInitialValue",value:function(){this._cell.setValueActual(this._cell.initialValue)}},{key:"checkHeight",value:function(){this._cell.checkHeight()}},{key:"getTable",value:function(){return this._cell.table}},{key:"_getSelf",value:function(){return this._cell}}]),e}(),y=function(i){a(r,i);var n=c(r);function r(e,i){var o;return t(this,r),(o=n.call(this,e.table)).table=e.table,o.column=e,o.row=i,o.element=null,o.value=null,o.initialValue,o.oldValue=null,o.modules={},o.height=null,o.width=null,o.minWidth=null,o.component=null,o.loaded=!1,o.build(),o}return o(r,[{key:"build",value:function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}},{key:"generateElement",value:function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element}},{key:"_configureCell",value:function(){var e=this,t=this.element,i=this.column.getField();(t.style.textAlign=this.column.hozAlign,this.column.vertAlign&&(t.style.display="inline-flex",t.style.alignItems={top:"flex-start",bottom:"flex-end",middle:"center"}[this.column.vertAlign]||"",this.column.hozAlign&&(t.style.justifyContent={left:"flex-start",right:"flex-end",center:"center"}[this.column.hozAlign]||"")),i&&t.setAttribute("tabulator-field",i),this.column.definition.cssClass)&&this.column.definition.cssClass.split(" ").forEach((function(e){t.classList.add(e)}));"hover"===this.table.options.tooltipGenerationMode&&t.addEventListener("mouseenter",(function(t){e._generateTooltip()})),this.dispatch("cell-init",this),this.column.visible||this.hide()}},{key:"_generateContents",value:function(){var t,i=this;switch(e(t=this.chain("cell-format",this,null,(function(){return i.element.innerHTML=i.value})))){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}}},{key:"cellRendered",value:function(){this.dispatch("cell-rendered",this)}},{key:"_generateTooltip",value:function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")}},{key:"getElement",value:function(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}},{key:"getValue",value:function(){return this.value}},{key:"getOldValue",value:function(){return this.oldValue}},{key:"setValue",value:function(e,t){this.setValueProcessData(e,t)&&(this.dispatch("cell-value-updated",this),this.cellRendered(),this.dispatchExternal("cellEdited",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()))}},{key:"setValueProcessData",value:function(e,t){var i=!1;return this.value!=e&&(i=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),i&&this.dispatch("cell-value-changed",this),i}},{key:"setValueActual",value:function(e){this.oldValue=this.value,this.value=e,this.dispatch("cell-value-save-before",this),this.column.setFieldValue(this.row.data,e),this.dispatch("cell-value-save-after",this),this.loaded&&this.layoutElement()}},{key:"layoutElement",value:function(){this._generateContents(),this._generateTooltip(),this.dispatch("cell-layout",this)}},{key:"setWidth",value:function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}},{key:"clearWidth",value:function(){this.width="",this.element.style.width=""}},{key:"getWidth",value:function(){return this.width||this.element.offsetWidth}},{key:"setMinWidth",value:function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}},{key:"setMaxWidth",value:function(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}},{key:"checkHeight",value:function(){this.row.reinitializeHeight()}},{key:"clearHeight",value:function(){this.element.style.height="",this.height=null}},{key:"setHeight",value:function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled}},{key:"getHeight",value:function(){return this.height||this.element.offsetHeight}},{key:"show",value:function(){this.element.style.display=this.column.vertAlign?"inline-flex":""}},{key:"hide",value:function(){this.element.style.display="none"}},{key:"delete",value:function(){this.dispatch("cell-delete",this),!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}}},{key:"getIndex",value:function(){return this.row.getCellIndex(this)}},{key:"getComponent",value:function(){return this.component||(this.component=new b(this)),this.component}}]),r}(f),w=function(i){a(r,i);var n=c(r);function r(e,i){var o;return t(this,r),(o=n.call(this,i.table)).definition=e,o.parent=i,o.type="column",o.columns=[],o.cells=[],o.element=o.createElement(),o.contentElement=!1,o.titleHolderElement=!1,o.titleElement=!1,o.groupElement=o.createGroupElement(),o.isGroup=!1,o.tooltip=!1,o.hozAlign="",o.vertAlign="",o.field="",o.fieldStructure="",o.getFieldValue="",o.setFieldValue="",o.titleFormatterRendered=!1,o.mapDefinitions(),o.setField(o.definition.field),o.modules={},o.width=null,o.widthStyled="",o.maxWidth=null,o.maxWidthStyled="",o.minWidth=null,o.minWidthStyled="",o.widthFixed=!1,o.visible=!0,o.component=null,o.definition.columns?(o.isGroup=!0,o.definition.columns.forEach((function(e,t){var i=new r(e,l(o));o.attachColumn(i)})),o.checkColumnVisibility()):i.registerColumnField(l(o)),o._initialize(),o.bindModuleColumns(),o}return o(r,[{key:"createElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e}},{key:"createGroupElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}},{key:"mapDefinitions",value:function(){var e=this.table.options.columnDefaults;if(e)for(var t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(r.defaultOptionList,this.definition)}},{key:"checkDefinition",value:function(){var e=this;Object.keys(this.definition).forEach((function(t){-1===r.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)}))}},{key:"setField",value:function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData}},{key:"registerColumnPosition",value:function(e){this.parent.registerColumnPosition(e)}},{key:"registerColumnField",value:function(e){this.parent.registerColumnField(e)}},{key:"reRegisterPosition",value:function(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}},{key:"_mapDepricatedFunctionality",value:function(){}},{key:"setTooltip",value:function(){var e=this,t=this.definition,i=void 0===t.headerTooltip?t.tooltip:t.headerTooltip;i?!0===i?t.field?this.langBind("columns|"+t.field,(function(i){e.element.setAttribute("title",i||t.title)})):this.element.setAttribute("title",t.title):("function"==typeof i&&!1===(i=i(this.getComponent()))&&(i=""),this.element.setAttribute("title",i)):this.element.setAttribute("title","")}},{key:"_initialize",value:function(){for(var e=this,t=this.definition;this.element.firstChild;)this.element.removeChild(this.element.firstChild);t.headerVertical&&(this.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&this.element.classList.add("tabulator-col-vertical-flip")),this.contentElement=this._bindEvents(),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.setTooltip(),this.dispatch("column-init",this),this.element.addEventListener("mouseenter",(function(t){e.setTooltip()}))}},{key:"_bindEvents",value:function(){var e,t,i,n=this,o=this.definition;"function"==typeof o.headerClick&&this.element.addEventListener("click",(function(e){o.headerClick(e,n.getComponent())})),"function"==typeof o.headerDblClick&&this.element.addEventListener("dblclick",(function(e){o.headerDblClick(e,n.getComponent())})),"function"==typeof o.headerContext&&this.element.addEventListener("contextmenu",(function(e){o.headerContext(e,n.getComponent())})),"function"==typeof o.headerTap&&(i=!1,this.element.addEventListener("touchstart",(function(e){i=!0}),{passive:!0}),this.element.addEventListener("touchend",(function(e){i&&o.headerTap(e,n.getComponent()),i=!1}))),"function"==typeof o.headerDblTap&&(e=null,this.element.addEventListener("touchend",(function(t){e?(clearTimeout(e),e=null,o.headerDblTap(t,n.getComponent())):e=setTimeout((function(){clearTimeout(e),e=null}),300)}))),"function"==typeof o.headerTapHold&&(t=null,this.element.addEventListener("touchstart",(function(e){clearTimeout(t),t=setTimeout((function(){clearTimeout(t),t=null,i=!1,o.headerTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(function(e){clearTimeout(t),t=null})))}},{key:"_buildColumnHeader",value:function(){var e=this,t=this.definition;this.table;(this.dispatch("column-layout",this),void 0!==t.visible&&(t.visible?this.show(!0):this.hide(!0)),t.cssClass)&&t.cssClass.split(" ").forEach((function(t){e.element.classList.add(t)}));t.field&&this.element.setAttribute("tabulator-field",t.field),this.setMinWidth(parseInt(t.minWidth)),t.maxWidth&&this.setMaxWidth(parseInt(t.maxWidth)),this.reinitializeWidth(),this.tooltip=this.definition.tooltip,this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}},{key:"_buildColumnHeaderContent",value:function(){this.definition,this.table;var e=document.createElement("div");return e.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),e.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),e}},{key:"_buildColumnHeaderTitle",value:function(){var e=this,t=this.definition,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),t.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("change",(function(){t.title=n.value,e.dispatchExternal("columnTitleChanged",e.getComponent())})),i.appendChild(n),t.field?this.langBind("columns|"+t.field,(function(e){n.value=e||t.title||" "})):n.value=t.title||" "}else t.field?this.langBind("columns|"+t.field,(function(n){e._formatColumnHeaderTitle(i,n||t.title||" ")})):this._formatColumnHeaderTitle(i,t.title||" ");return i}},{key:"_formatColumnHeaderTitle",value:function(t,i){var n=this.chain("column-format",[this,i,t],null,(function(){return i}));switch(e(n)){case"object":n instanceof Node?t.appendChild(n):(t.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",n));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=n}}},{key:"_buildGroupHeader",value:function(){var e=this;(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass)&&this.definition.cssClass.split(" ").forEach((function(t){e.element.classList.add(t)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}},{key:"_getFlatData",value:function(e){return e[this.field]}},{key:"_getNestedData",value:function(e){for(var t,i=e,n=this.fieldStructure,o=n.length,a=0;a-1&&this.columns.splice(t,1),this.columns.length||this.delete()}},{key:"setWidth",value:function(e){this.widthFixed=!0,this.setWidthActual(e)}},{key:"setWidthActual",value:function(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.maxWidth&&(e=Math.min(this.maxWidth,e)),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach((function(e){e.setWidth()})),this.parent.isGroup&&this.parent.matchChildWidths(),this.dispatch("column-width",this)}},{key:"checkCellHeights",value:function(){var e=[];this.cells.forEach((function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)})),e.forEach((function(e){e.calcHeight()})),e.forEach((function(e){e.setCellHeight()}))}},{key:"getWidth",value:function(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}},{key:"getHeight",value:function(){return this.element.offsetHeight}},{key:"setMinWidth",value:function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}},{key:"setMaxWidth",value:function(e){this.maxWidth=e,this.maxWidthStyled=e?e+"px":"",this.element.style.maxWidth=this.maxWidthStyled,this.cells.forEach((function(e){e.setMaxWidth()}))}},{key:"delete",value:function(){var e=this;return new Promise((function(t,i){e.isGroup&&e.columns.forEach((function(e){e.delete()})),e.dispatch("column-delete",e);for(var n=e.cells.length,o=0;o-1&&this._nextVisibleColumn(e+1)}},{key:"_nextVisibleColumn",value:function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}},{key:"prevColumn",value:function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}},{key:"_prevVisibleColumn",value:function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}},{key:"reinitializeWidth",value:function(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.dispatch("column-width-fit-before",this),this.fitToData(),this.dispatch("column-width-fit-after",this)}},{key:"fitToData",value:function(){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((function(e){e.clearWidth()})));var e=this.element.offsetWidth;this.width&&this.widthFixed||(this.cells.forEach((function(t){var i=t.getWidth();i>e&&(e=i)})),e&&this.setWidthActual(e+1))}}},{key:"updateDefinition",value:function(e){var t,i=this;return this.isGroup||this.parent.isGroup?(console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"),Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(t=Object.assign({},this.getDefinition()),t=Object.assign(t,e),this.table.columnManager.addColumn(t,!1,this).then((function(e){return t.field==i.field&&(i.field=!1),i.delete().then((function(){return e.getComponent()}))})))}},{key:"deleteCell",value:function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},{key:"getComponent",value:function(){return this.component||(this.component=new g(this)),this.component}}]),r}(f);w.defaultOptionList=v;var C=function(){function i(){t(this,i)}return o(i,null,[{key:"elVisible",value:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}},{key:"elOffset",value:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}},{key:"deepClone",value:function(t){var i=Object.assign(Array.isArray(t)?[]:{},t);for(var n in t)null!=t[n]&&"object"===e(t[n])&&(t[n]instanceof Date?i[n]=new Date(t[n]):i[n]=this.deepClone(t[n]));return i}}]),i}(),E=function(){function i(e,n){t(this,i),this.table=e,this.msgType=n,this.registeredDefaults={}}return o(i,[{key:"register",value:function(e,t){this.registeredDefaults[e]=t}},{key:"generate",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object.assign({},this.registeredDefaults);if(Object.assign(n,t),!1!==i.debugInvalidOptions||this.table.options.debugInvalidOptions)for(var o in i)n.hasOwnProperty(o)||console.warn("Invalid "+this.msgType+" option:",o);for(var o in n)o in i?n[o]=i[o]:Array.isArray(n[o])?n[o]=Object.assign([],n[o]):"object"===e(n[o])&&null!==n[o]?n[o]=Object.assign({},n[o]):void 0===n[o]&&delete n[o];return n}}]),i}(),k=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).elementVertical=e.rowManager.element,o.elementHorizontal=e.columnManager.element,o.tableElement=e.rowManager.tableElement,o.verticalFillMode="fit",o}return o(n,[{key:"initialize",value:function(){}},{key:"clearRows",value:function(){}},{key:"clearColumns",value:function(){}},{key:"reinitializeColumnWidths",value:function(e){}},{key:"renderRows",value:function(){}},{key:"renderColumns",value:function(){}},{key:"rerenderRows",value:function(e){e&&e()}},{key:"rerenderColumns",value:function(e,t){}},{key:"renderRowCells",value:function(e){}},{key:"rerenderRowCells",value:function(e,t){}},{key:"scrollColumns",value:function(e,t){}},{key:"scrollRows",value:function(e,t){}},{key:"resize",value:function(){}},{key:"scrollToRow",value:function(e){}},{key:"scrollToRowNearestTop",value:function(e){}},{key:"visibleRows",value:function(e){return[]}},{key:"rows",value:function(){return this.table.rowManager.getDisplayRows()}},{key:"styleRow",value:function(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}},{key:"clear",value:function(){this.clearRows(),this.clearColumns()}},{key:"render",value:function(){this.renderRows(),this.renderColumns()}},{key:"rerender",value:function(e){this.rerenderRows(),this.rerenderColumns()}},{key:"scrollToRowPosition",value:function(e,t,i){var n=this,o=this.rows().indexOf(e),a=e.getElement(),r=0;return new Promise((function(s,l){if(o>-1){if(void 0===i&&(i=n.table.options.scrollToRowIfVisible),!i&&C.elVisible(a)&&(r=C.elOffset(a).top-C.elOffset(n.elementVertical).top)>0&&ri.vDomScrollPosLeft&&othis.vDomScrollPosRight)break}for(e.parentNode.removeChild(e),this.fitDataColAvg=Math.floor(o/(a+1));a.8*this.elementVertical.clientWidth?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}},{key:"colPositionAdjust",value:function(e,t,i){for(var n=e;n=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=e.getWidth(),this.tableElement.style.paddingRight=this.vDomPadRight+"px",this.addColRight())}},{key:"addColLeft",value:function(){var e=this.columns[this.leftCol-1];e&&e.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft&&(this.table.rowManager.getVisibleRows().forEach((function(t){if("group"!==t.type){var i=t.getCell(e);t.getElement().prepend(i.getElement()),i.cellRendered()}})),this.fitDataColActualWidthCheck(e),this.leftCol?this.vDomPadLeft-=e.getWidth():this.vDomPadLeft=0,this.tableElement.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol--,this.addColLeft())}},{key:"removeColRight",value:function(e){var t;(e=this.columns[this.rightCol])&&e.modules.vdomHoz.leftPos>this.vDomScrollPosRight&&(t=this.table.rowManager.getVisibleRows(),e.modules.vdomHoz.visible=!1,t.forEach((function(t){if("group"!==t.type){var i=t.getCell(e);t.getElement().removeChild(i.getElement())}})),this.vDomPadRight+=e.getWidth(),this.tableElement.style.paddingRight=this.vDomPadRight+"px",this.rightCol--,this.removeColRight())}},{key:"removeColLeft",value:function(){var e=this.columns[this.leftCol];e&&e.modules.vdomHoz.rightPosi?(t=e-i,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.renderer.scrollColumns(e)}},{key:"generateColumnsFromRowData",value:function(t){var i,n,o=[],a=this.table.options.autoColumnsDefinitions;if(t&&t.length){for(var r in i=t[0]){var s={field:r,title:r},l=i[r];switch(e(l)){case"undefined":n="string";break;case"boolean":n="boolean";break;case"object":n=Array.isArray(l)?"array":"string";break;default:n=isNaN(l)||""===l?l.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=n,o.push(s)}if(a)switch(e(a)){case"function":this.table.options.columns=a.call(this.table,o);break;case"object":Array.isArray(a)?o.forEach((function(e){var t=a.find((function(t){return t.field===e.field}));t&&Object.assign(e,t)})):o.forEach((function(e){a[e.field]&&Object.assign(e,a[e.field])})),this.table.options.columns=o}else this.table.options.columns=o;this.setColumns(this.table.options.columns)}}},{key:"setColumns",value:function(e,t){for(var i=this;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach((function(e,t){i._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.renderer.rerenderColumns(!1,!0),this.redraw(!0)}},{key:"_addColumn",value:function(e,t,i){var n=new w(e,this),o=n.getElement(),a=i?this.findColumnIndex(i):i;if(i&&a>-1){var r=this.columns.indexOf(i.getTopColumn()),s=i.getElement();t?(this.columns.splice(r,0,n),s.parentNode.insertBefore(o,s)):(this.columns.splice(r+1,0,n),s.parentNode.insertBefore(o,s.nextSibling))}else t?(this.columns.unshift(n),this.headersElement.insertBefore(n.getElement(),this.headersElement.firstChild)):(this.columns.push(n),this.headersElement.appendChild(n.getElement())),n.columnRendered();return n}},{key:"registerColumnField",value:function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}},{key:"registerColumnPosition",value:function(e){this.columnsByIndex.push(e)}},{key:"_reIndexColumns",value:function(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}},{key:"_verticalAlignHeaders",value:function(){var e=this,t=0;this.columns.forEach((function(e){var i;e.clearVerticalAlign(),(i=e.getHeight())>t&&(t=i)})),this.columns.forEach((function(i){i.verticalAlign(e.table.options.columnHeaderVertAlign,t)})),this.table.rowManager.adjustTableSize()}},{key:"findColumn",value:function(t){return"object"!=e(t)?this.columnsByField[t]||!1:t instanceof w?t:t instanceof g?t._getSelf()||!1:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&this.columns.find((function(e){return e.element===t}))||!1}},{key:"getColumnByField",value:function(e){return this.columnsByField[e]}},{key:"getColumnsByFieldRoot",value:function(e){var t=this,i=[];return Object.keys(this.columnsByField).forEach((function(n){n.split(".")[0]===e&&i.push(t.columnsByField[n])})),i}},{key:"getColumnByIndex",value:function(e){return this.columnsByIndex[e]}},{key:"getFirstVisibileColumn",value:function(e){return(e=this.columnsByIndex.findIndex((function(e){return e.visible})))>-1&&this.columnsByIndex[e]}},{key:"getColumns",value:function(){return this.columns}},{key:"findColumnIndex",value:function(e){return this.columnsByIndex.findIndex((function(t){return e===t}))}},{key:"getRealColumns",value:function(){return this.columnsByIndex}},{key:"traverse",value:function(e){this.columnsByIndex.forEach((function(t,i){e(t,i)}))}},{key:"getDefinitions",value:function(e){var t=[];return this.columnsByIndex.forEach((function(i){(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}},{key:"getDefinitionTree",value:function(){var e=[];return this.columns.forEach((function(t){e.push(t.getDefinition(!0))})),e}},{key:"getComponents",value:function(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((function(e){t.push(e.getComponent())})),t}},{key:"getWidth",value:function(){var e=0;return this.columnsByIndex.forEach((function(t){t.visible&&(e+=t.getWidth())})),e}},{key:"moveColumn",value:function(e,t,i){this.moveColumnActual(e,t,i),t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()}},{key:"moveColumnActual",value:function(e,t,i){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,i):this._moveColumnInArray(this.columns,e,t,i),this._moveColumnInArray(this.columnsByIndex,e,t,i,!0),this.renderer.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}},{key:"_moveColumnInArray",value:function(e,t,i,n,o){var a,r=e.indexOf(t);r>-1&&(e.splice(r,1),(a=e.indexOf(i))>-1?n&&(a+=1):a=r,e.splice(a,0,t),o&&(this.chain("column-moving-rows",[t,i,n],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(a,0,t)}})))}},{key:"scrollToColumn",value:function(e,t,i){var n=this,o=0,a=0,r=0,s=e.getElement();return new Promise((function(l,u){if(void 0===t&&(t=n.table.options.scrollToColumnPosition),void 0===i&&(i=n.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":r=-n.element.clientWidth/2;break;case"right":r=s.clientWidth-n.headersElement.clientWidth}if(!i&&(a=s.offsetLeft)>0&&a+s.offsetWidththis.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var n,o,a;i.visible&&(n=i.definition.width||0,o=parseInt(i.minWidth),a="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,t+=a>o?a:o)})),t}},{key:"addColumn",value:function(e,t,i){var n=this;return new Promise((function(o,a){var r=n._addColumn(e,t,i);n._reIndexColumns(),n.dispatch("column-add",e,t,i),n.redraw(!0),"fitColumns"!=n.layoutMode()&&r.reinitializeWidth(),n._verticalAlignHeaders(),n.table.rowManager.reinitialize(),n.renderer.rerenderColumns(),o(r)}))}},{key:"deregisterColumn",value:function(e){var t,i=e.getField();i&&delete this.columnsByField[i],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this._verticalAlignHeaders(),this.redraw()}},{key:"redraw",value:function(e){e&&(C.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}]),r}(f),M=function(){function e(i){return t(this,e),this._row=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}return o(e,[{key:"getData",value:function(e){return this._row.getData(e)}},{key:"getElement",value:function(){return this._row.getElement()}},{key:"getCells",value:function(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}},{key:"getCell",value:function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}},{key:"getIndex",value:function(){return this._row.getData("data")[this._row.table.options.index]}},{key:"getPosition",value:function(e){return this._row.table.rowManager.getRowPosition(this._row,e)}},{key:"delete",value:function(){return this._row.delete()}},{key:"scrollTo",value:function(){return this._row.table.rowManager.scrollToRow(this._row)}},{key:"move",value:function(e,t){this._row.moveToRow(e,t)}},{key:"update",value:function(e){return this._row.updateData(e)}},{key:"normalizeHeight",value:function(){this._row.normalizeHeight(!0)}},{key:"_getSelf",value:function(){return this._row}},{key:"reformat",value:function(){return this._row.reinitialize()}},{key:"getTable",value:function(){return this._row.table}},{key:"getNextRow",value:function(){var e=this._row.nextRow();return e?e.getComponent():e}},{key:"getPrevRow",value:function(){var e=this._row.prevRow();return e?e.getComponent():e}}]),e}(),L=function(e){a(n,e);var i=c(n);function n(e,o){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";return t(this,n),(a=i.call(this,o.table)).parent=o,a.data={},a.type=r,a.element=!1,a.modules={},a.cells=[],a.height=0,a.heightStyled="",a.manualHeight=!1,a.outerHeight=0,a.initialized=!1,a.heightInitialized=!1,a.component=null,a.created=!1,a.setData(e),a}return o(n,[{key:"create",value:function(){this.created||(this.created=!0,this.generateElement())}},{key:"createElement",value:function(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}},{key:"getElement",value:function(){return this.create(),this.element}},{key:"detachElement",value:function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}},{key:"generateElement",value:function(){this.createElement(),this.dispatch("row-init",this)}},{key:"generateCells",value:function(){this.cells=this.table.columnManager.generateCells(this)}},{key:"initialize",value:function(e){if(this.create(),!this.initialized||e){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.dispatch("row-layout-before",this),this.generateCells(),this.table.columnManager.renderer.renderRowCells(this),e&&this.normalizeHeight(),this.dispatch("row-layout",this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.initialized=!0,this.dispatch("row-layout-after",this)}else this.table.columnManager.renderer.rerenderRowCells(this)}},{key:"reinitializeHeight",value:function(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}},{key:"reinitialize",value:function(e){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),this.element&&null!==this.element.offsetParent&&this.initialize(!0),this.dispatch("row-relayout",this)}},{key:"calcHeight",value:function(e){var t=0,i=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach((function(e){var i=e.getHeight();i>t&&(t=i)})),this.height=e?Math.max(t,i):this.manualHeight?this.height:Math.max(t,i),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight}},{key:"setCellHeight",value:function(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}},{key:"clearCellHeight",value:function(){this.cells.forEach((function(e){e.clearHeight()}))}},{key:"normalizeHeight",value:function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}},{key:"setHeight",value:function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}},{key:"getHeight",value:function(){return this.outerHeight}},{key:"getWidth",value:function(){return this.element.offsetWidth}},{key:"deleteCell",value:function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}},{key:"setData",value:function(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}},{key:"updateData",value:function(e){var t,i=this,n=this.element&&C.elVisible(this.element),o={};return new Promise((function(a,r){for(var s in"string"==typeof e&&(e=JSON.parse(e)),i.dispatch("row-data-save-before",i),i.subscribed("row-data-changing")&&(o=Object.assign(o,i.data),o=Object.assign(o,e)),t=i.chain("row-data-changing",[i,o,e],null,e))i.data[s]=t[s];for(var s in i.dispatch("row-data-save-after",i),e){i.table.columnManager.getColumnsByFieldRoot(s).forEach((function(e){var o=i.getCell(e.getField());if(o){var a=e.getFieldValue(t);o.getValue()!=a&&(o.setValueProcessData(a),n&&o.cellRendered())}}))}n?(i.normalizeHeight(!0),i.table.options.rowFormatter&&i.table.options.rowFormatter(i.getComponent())):(i.initialized=!1,i.height=0,i.heightStyled=""),i.dispatch("row-data-changed",i,n,e),i.dispatchExternal("rowUpdated",i.getComponent()),i.subscribedExternal("dataChanged")&&i.dispatchExternal("dataChanged",i.table.rowManager.getData()),a()}))}},{key:"getData",value:function(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}},{key:"getCell",value:function(e){return e=this.table.columnManager.findColumn(e),this.initialized||this.generateCells(),this.cells.find((function(t){return t.column===e}))}},{key:"getCellIndex",value:function(e){return this.cells.findIndex((function(t){return t===e}))}},{key:"findCell",value:function(e){return this.cells.find((function(t){return t.element===e}))}},{key:"getCells",value:function(){return this.initialized||this.generateCells(),this.cells}},{key:"nextRow",value:function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}},{key:"prevRow",value:function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}},{key:"moveToRow",value:function(e,t){var i=this.table.rowManager.findRow(e);i?(this.table.rowManager.moveRowActual(this,i,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)}},{key:"delete",value:function(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}},{key:"deleteActual",value:function(e){this.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}},{key:"detatchModules",value:function(){this.dispatch("row-deleting",this)}},{key:"deleteCells",value:function(){for(var e=this.cells.length,t=0;tMath.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-t))}},{key:"scrollToRow",value:function(e){var t=e.getElement();this.elementVertical.scrollTop=C.elOffset(t).top-C.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}},{key:"visibleRows",value:function(e){return this.rows()}}]),n}(k),S=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).verticalFillMode="fill",o.scrollTop=0,o.scrollLeft=0,o.vDomRowHeight=20,o.vDomTop=0,o.vDomBottom=0,o.vDomScrollPosTop=0,o.vDomScrollPosBottom=0,o.vDomTopPad=0,o.vDomBottomPad=0,o.vDomMaxRenderChain=90,o.vDomWindowBuffer=0,o.vDomWindowMinTotalRows=20,o.vDomWindowMinMarginRows=5,o.vDomTopNewRows=[],o.vDomBottomNewRows=[],o}return o(n,[{key:"clearRows",value:function(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.elementVertical.scrollTop=0,this.elementVertical.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0}},{key:"renderRows",value:function(){this._virtualRenderFill()}},{key:"rerenderRows",value:function(e){for(var t=this.elementVertical.scrollTop,i=!1,n=!1,o=this.table.rowManager.scrollLeft,a=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(a[r]){var s=t-a[r].getElement().offsetTop;if(!(!1===n||Math.abs(s)o||n>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*a.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(a,-i),n<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(a,-n):this.vDomScrollPosBottom=this.scrollTop)):(n>=0&&this._addBottomRow(a,n),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(a,i):this.vDomScrollPosTop=this.scrollTop))}},{key:"resize",value:function(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}},{key:"scrollToRowNearestTop",value:function(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}},{key:"scrollToRow",value:function(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}},{key:"visibleRows",value:function(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,n=!1,o=0,a=0,r=this.rows();if(e)o=this.vDomTop,a=this.vDomBottom;else for(var s=this.vDomTop;s<=this.vDomBottom;s++)if(r[s])if(n){if(!(i-r[s].getElement().offsetTop>=0))break;a=s}else if(t-r[s].getElement().offsetTop>=0)o=s;else{if(n=!0,!(i-r[s].getElement().offsetTop>=0))break;a=s}return r.slice(o,a+1)}},{key:"_virtualRenderFill",value:function(e,t,i){var n=this.tableElement,o=this.elementVertical,a=0,r=0,s=0,l=0,u=0,c=this.rows(),h=c.length,d=this.elementVertical.clientHeight;if(i=i||0,e=e||0){for(;n.firstChild;)n.removeChild(n.firstChild);(s=(h-e+1)*this.vDomRowHeight)this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*m),this.vDomBottom++,u++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+i:this.scrollTop-l,this.vDomBottomPad=this.vDomBottom==h-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-r-l,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((r+l)/u),this.vDomBottomPad=this.vDomRowHeight*(h-this.vDomBottom-1),this.vDomScrollHeight=l+r+this.vDomBottomPad-d),n.style.paddingTop=this.vDomTopPad+"px",n.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+l+i-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-d:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-d),this.elementVertical.scrollWidth>this.elementVertical.offsetWidth&&t&&(this.scrollTop+=this.elementVertical.offsetHeight-d),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,o.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}},{key:"_addTopRow",value:function(e,t){for(var i=this.tableElement,n=[],o=0,a=this.vDomTop-1,r=0;this.vDomTop;){var s=e[a],l=void 0,u=void 0;if(!(s&&r=l))break;this.styleRow(s,a),i.insertBefore(s.getElement(),i.firstChild),s.initialized&&s.heightInitialized||n.push(s),s.initialize(),u||(l=s.getElement().offsetHeight)>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l),t-=l,o+=l,this.vDomTop--,a--,r++}for(var c=0,h=n;c=(r=a.getHeight()||this.vDomRowHeight)))break;this.vDomTop++,t-=r,n+=r,i.push(a),o++}for(var s=0,l=i;s=l))break;this.styleRow(s,a),i.appendChild(s.getElement()),s.initialized&&s.heightInitialized||n.push(s),s.initialize(),u||(l=s.getElement().offsetHeight)>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l),t-=l,o+=l,this.vDomBottom++,a++,r++}for(var c=0,h=n;c=(r=a.getHeight()||this.vDomRowHeight)))break;this.vDomBottom--,t-=r,n+=r,i.push(a),o++}for(var s=0,l=i;st,n=e.element.scrollTop,o=e.scrollTop>n;e.scrollLeft!=t&&(e.scrollLeft=t,e.dispatch("scroll-horizontal",t,i),e.dispatchExternal("scrollHorizontal",t,i)),e.scrollTop!=n&&(e.scrollTop=n,e.renderer.scrollRows(n,o),e.dispatch("scroll-vertical",n,o),e.dispatchExternal("scrollVertical",n,o))}))}},{key:"findRow",value:function(t){var i=this;return"object"!=e(t)?null!=t&&(this.rows.find((function(e){return e.data[i.table.options.index]==t}))||!1):t instanceof L?t:t instanceof M?t._getSelf()||!1:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&this.rows.find((function(e){return e.getElement()===t}))||!1}},{key:"getRowFromDataObject",value:function(e){return this.rows.find((function(t){return t.data===e}))||!1}},{key:"getRowFromPosition",value:function(e,t){return t?this.activeRows[e]:this.rows[e]}},{key:"scrollToRow",value:function(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}},{key:"setData",value:function(e,t,i){var n=this;return new Promise((function(o,a){t&&n.getDisplayRows().length?n.table.options.pagination?n._setDataActual(e,!0):n.reRenderInPosition((function(){n._setDataActual(e)})):(n.table.options.autoColumns&&i&&n.table.columnManager.generateColumnsFromRowData(e),n.resetScroll(),n._setDataActual(e)),o()}))}},{key:"_setDataActual",value:function(t,i){var n=this;this.dispatchExternal("dataProcessing",t),this._wipeElements(),Array.isArray(t)?(this.dispatch("data-processing",t),t.forEach((function(t,i){if(t&&"object"===e(t)){var o=new L(t,n);n.rows.push(o)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)})),this.refreshActiveData(!1,!1,i),this.dispatch("data-processed",t),this.dispatchExternal("dataProcessed",t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",e(t),"\nData: ",t)}},{key:"_wipeElements",value:function(){this.dispatch("rows-wipe"),this.rows.forEach((function(e){e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()}},{key:"deleteRow",value:function(e,t){var i=this.rows.indexOf(e),n=this.activeRows.indexOf(e);n>-1&&this.activeRows.splice(n,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((function(t){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this._showPlaceholder(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}},{key:"addRow",value:function(e,t,i,n){var o=this.addRowActual(e,t,i,n);return this.dispatch("row-added",o,e,t,i),o}},{key:"addRows",value:function(e,t,i){var n=this,o=[];return new Promise((function(a,r){t=n.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length,(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach((function(a,r){var s=n.addRow(a,t,i,!0);o.push(s),n.dispatch("row-added",s,e,t,i)})),n.reRenderInPosition(),n.regenerateRowNumbers(),o.length&&n._clearPlaceholder(),a(o)}))}},{key:"findAddRowPos",value:function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}},{key:"addRowActual",value:function(e,t,i,n){var o,a,r=e instanceof L?e:new L(e||{},this),s=this.findAddRowPos(t),l=-1;return i||(a=this.chain("row-adding-position",[r,s],null,{index:i,top:s}),i=a.index,s=a.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,s],null,i))&&(l=this.rows.indexOf(i)),i&&l>-1?(o=this.activeRows.indexOf(i),this.displayRowIterator((function(e){var t=e.indexOf(i);t>-1&&e.splice(s?t:t+1,0,r)})),o>-1&&this.activeRows.splice(s?o:o+1,0,r),this.rows.splice(s?l:l+1,0,r)):s?(this.displayRowIterator((function(e){e.unshift(r)})),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator((function(e){e.push(r)})),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.dispatchExternal("rowAdded",r.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),n||this.reRenderInPosition(),r}},{key:"moveRow",value:function(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowNumbers(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}},{key:"moveRowActual",value:function(e,t,i){var n=this;this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((function(o){n.moveRowInArray(o,e,t,i)})),this.dispatch("row-moving",e,t,i)}},{key:"moveRowInArray",value:function(e,t,i,n){var o,a,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(a=e.indexOf(i))>-1?n?e.splice(a+1,0,t):e.splice(a,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=a>o?a:o+1;for(var s=o-1&&t}},{key:"nextDisplayRow",value:function(e,t){var i=this.getDisplayRowIndex(e),n=!1;return!1!==i&&i-1)&&i}},{key:"getData",value:function(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}},{key:"getComponents",value:function(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}},{key:"getDataCount",value:function(e){return this.getRows(e).length}},{key:"scrollHorizontal",value:function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}},{key:"registerDataPipelineHandler",value:function(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort((function(e,t){return e.priority-t.priority}))):console.error("Data pipeline handlers must have a priority in order to be registered")}},{key:"registerDisplayPipelineHandler",value:function(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort((function(e,t){return e.priority-t.priority}))):console.error("Display pipeline handlers must have a priority in order to be registered")}},{key:"refreshActiveData",value:function(e,t,i){var n=this.table,o="",a=0,r=["all","dataPipeline","display","displayPipeline","end"];if("function"==typeof e)if((a=this.dataPipeline.findIndex((function(t){return t.handler===e})))>-1)o="dataPipeline",t&&(a==this.dataPipeline.length-1?o="display":a++);else{if(!((a=this.displayPipeline.findIndex((function(t){return t.handler===e})))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);o="displayPipeline",t&&(a==this.displayPipeline.length-1?o="end":a++)}else o=e||"all",a=0;if(this.redrawBlock)(!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===o&&a-1&&(n.splice(o,1),a=!0),a&&this.updateEventListeners()}},{key:"updateEventListeners",value:function(){for(var e in this.listeners){var t=this.listeners[e];t.components.length?t.handler||(t.handler=this.track.bind(this,e),this.el.addEventListener(e,t.handler)):t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}},{key:"track",value:function(e,t){var i=t.composedPath&&t.composedPath()||t.path,n=this.findTargets(i);n=this.bindComponents(e,n),this.triggerEvents(e,t,n)}},{key:"findTargets",value:function(e){var t,i=this,n={},o=Object.keys(this.componentMap),a=p(e);try{for(a.s();!(t=a.n()).done;){var r=t.value,s=r.classList?h(r.classList):[];if(s.filter((function(e){return i.abortClasses.includes(e)})).length)break;var l,u=p(s.filter((function(e){return o.includes(e)})));try{for(u.s();!(l=u.n()).done;){var c=l.value;n[this.componentMap[c]]=r}}catch(e){u.e(e)}finally{u.f()}}}catch(e){a.e(e)}finally{a.f()}return n.group&&n.group===n.row&&delete n.row,n}},{key:"bindComponents",value:function(e,t){var i,n=this,o=Object.keys(t).reverse(),a=this.listeners[e],r={},s=p(o);try{var l=function(){var e=i.value,o=void 0,s=t[e],l=n.previousTargets[e];if(l&&l.target===s)o=l.component;else switch(e){case"row":case"group":if(a.components.includes("row")||a.components.includes("cell"))o=n.table.rowManager.getVisibleRows().find((function(e){return e.getElement()===s}));break;case"column":a.components.includes("column")&&(o=n.table.columnManager.findColumn(s));break;case"cell":a.components.includes("cell")&&(o=t.row.findCell(s))}o&&(t[e]=o,r[e]={target:s,component:o})};for(s.s();!(i=s.n()).done;)l()}catch(e){s.e(e)}finally{s.f()}return this.previousTargets=r,t}},{key:"triggerEvents",value:function(e,t,i){var n=this.listeners[e];for(var o in i)i[o]&&n.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}}]),n}(f),z=function(){function e(i){t(this,e),this.table=i,this.bindings={}}return o(e,[{key:"bind",value:function(e,t,i){this.bindings[e]||(this.bindings[e]={}),this.bindings[e][t]?console.warn("Unable to bind component handler, a matching function name is already bound",e,t,hanlder):this.bindings[e][t]=i}},{key:"handle",value:function(e,t,i){if(this.bindings[e]&&this.bindings[e][i])return this.bindings[e][i].bind(null,t);"then"===i||"string"!=typeof i||i.startsWith("_")||console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}]),e}(),A=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).loaderElement=i.createLoaderElement(),i.msgElement=i.createMsgElement(),i.loadingElement=null,i.errorElement=null,i.requestOrder=0,i.loading=!1,i}return o(r,[{key:"initialize",value:function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.dataLoaderLoading&&("string"==typeof this.table.options.dataLoaderLoading?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderLoading.trim(),this.loadingElement=e.firstElementChild):this.loadingElement=this.table.options.dataLoaderLoading),this.table.options.dataLoaderError&&("string"==typeof this.table.options.dataLoaderError?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderError.trim(),this.errorElement=e.firstElementChild):this.errorElement=this.table.options.dataLoaderError)}},{key:"createLoaderElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e}},{key:"createMsgElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e}},{key:"load",value:function(t,i,n,o,a){var r=this,s=++this.requestOrder;if(this.dispatchExternal("dataLoading",t),!t||0!=t.indexOf("{")&&0!=t.indexOf("[")||(t=JSON.parse(t)),this.confirm("data-loading",t,i,n,a)){this.loading=!0,a||this.showLoader();i=this.chain("data-params",[t,n,a],i||{},{});return i=this.mapParams(i,this.table.options.dataSendParams),this.chain("data-load",[t,i,n,a],Promise.resolve([])).then((function(i){Array.isArray(i)||"object"!=e(i)||(i=r.mapParams(i,r.objectInvert(r.table.options.dataReceiveParams)));var n=r.chain("data-loaded",i,null,i);s==r.requestOrder?(r.hideLoader(),!1!==n&&(r.dispatchExternal("dataLoaded",t),r.table.rowManager.setData(n,o,!o))):console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made")})).catch((function(e){console.error("Data Load Error: ",e),r.dispatchExternal("dataLoadError",e),a||r.showError(),setTimeout((function(){r.hideLoader()}),3e3)})).finally((function(){r.loading=!1}))}return this.dispatchExternal("dataLoaded",t),t||(t=[]),this.table.rowManager.setData(t,o,!o),Promise.resolve()}},{key:"mapParams",value:function(e,t){var i={};for(var n in e)i[t.hasOwnProperty(n)?t[n]:n]=e[n];return i}},{key:"objectInvert",value:function(e){var t={};for(var i in e)t[e[i]]=i;return t}},{key:"blockActiveLoad",value:function(){this.requestOrder++}},{key:"showLoader",value:function(){if("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.langText("data|loading"),this.table.element.appendChild(this.loaderElement)}}},{key:"showError",value:function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.langText("data|error"),this.table.element.appendChild(this.loaderElement)}},{key:"hideLoader",value:function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)}}]),r}(f),O=function(){function e(i,n){t(this,e),this.events={},this.optionsList=i||{},this.subscriptionNotifiers={},this.dispatch=n?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=n}return o(e,[{key:"subscriptionChange",value:function(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}},{key:"subscribe",value:function(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifiySubscriptionChange(e,!0)}},{key:"unsubscribe",value:function(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((function(e){return e===t})))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}else delete this.events[e];this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}},{key:"subscribed",value:function(e){return this.events[e]&&this.events[e].length}},{key:"_notifiySubscriptionChange",value:function(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((function(e){e(t)}))}},{key:"_dispatch",value:function(){var e,t=this,i=Array.from(arguments),n=i.shift();return this.events[n]&&this.events[n].forEach((function(n,o){var a=n.apply(t,i);o||(e=a)})),e}},{key:"_debugDispatch",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="ExternalEvent:"+t[0],!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._dispatch.apply(this,arguments)}}]),e}(),_=function(){function e(i){t(this,e),this.events={},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=i?this._debugChain.bind(this):this._chain.bind(this),this.confirm=i?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=i}return o(e,[{key:"subscriptionChange",value:function(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}},{key:"subscribe",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e4;this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort((function(e,t){return e.priority-t.priority})),this._notifiySubscriptionChange(e,!0)}},{key:"unsubscribe",value:function(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((function(e){return e.callback===t})))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}},{key:"subscribed",value:function(e){return this.events[e]&&this.events[e].length}},{key:"_chain",value:function(e,t,i,n){var o=this,a=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach((function(e,i){a=e.callback.apply(o,t.concat([a]))})),a):"function"==typeof n?n():n}},{key:"_confirm",value:function(e,t){var i=this,n=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach((function(e,o){e.callback.apply(i,t)&&(n=!0)})),n}},{key:"_notifiySubscriptionChange",value:function(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((function(e){e(t)}))}},{key:"_dispatch",value:function(){var e=this,t=Array.from(arguments),i=t.shift();this.events[i]&&this.events[i].forEach((function(i){i.callback.apply(e,t)}))}},{key:"_debugDispatch",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._dispatch.apply(this,arguments)}},{key:"_debugChain",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._chain.apply(this,arguments)}},{key:"_debugConfirm",value:function(){var e,t=Array.from(arguments),i=t[0];(t[0]="InternalEvent:"+i,!0===this.debug||this.debug.includes(i))&&(e=console).log.apply(e,h(t));return this._confirm.apply(this,arguments)}}]),e}(),N=function(){function e(){t(this,e)}return o(e,null,[{key:"register",value:function(t){e.tables.push(t)}},{key:"deregister",value:function(t){var i=e.tables.indexOf(t);i>-1&&e.tables.splice(i,1)}},{key:"lookupTable",value:function(t,i){var n,o,a=[];if("string"==typeof t){if((n=document.querySelectorAll(t)).length)for(var r=0;r0?a.setWidth(o):a.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,i,n=this.table.element.clientWidth,o=0,a=0,r=0,s=[],l=[],u=0,c=0;function h(e){return"string"==typeof e?e.indexOf("%")>-1?n/100*parseInt(e):parseInt(e):e}function d(e,t,i,n){var o=[],a=0,s=0,l=0,u=r,c=0,m=0,p=[];function f(e){return i*(e.column.definition.widthGrow||1)}function g(e){return h(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,a){var r=n?g(e):f(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,n;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(n=h(t),o+=n>i?n:i,e.definition.widthShrink&&(l.push({column:e,width:n>i?n:i}),u+=e.definition.widthShrink)):(s.push({column:e,width:0}),r+=e.definition.widthGrow||1))})),a=n-o,t=Math.floor(a/r),c=d(s,a,t,!1),s.length&&c>0&&(s[s.length-1].width+=+c),s.forEach((function(e){a-=e.width})),(i=Math.abs(c)+a)>0&&u&&(c=d(l,i,Math.floor(i/u),!0)),l.length&&(l[l.length-1].width-=c),s.forEach((function(e){e.column.setWidth(e.width)})),l.forEach((function(e){e.column.setWidth(e.width)}))}},W=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e,"layout")).mode=null,o.registerTableOption("layout","fitData"),o.registerTableOption("layoutColumnsOnNewData",!1),o.registerColumnOption("widthGrow"),o.registerColumnOption("widthShrink"),o}return o(n,[{key:"initialize",value:function(){var e=this.table.options.layout;n.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)}},{key:"getMode",value:function(){return this.mode}},{key:"layout",value:function(){n.modes[this.mode].call(this,this.table.columnManager.columnsByIndex),this.dispatch("layout-refreshed")}}]),n}(B);W.moduleName="layout",W.modes=I;var j=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).locale="default",i.lang=!1,i.bindings={},i.langList={},i.registerTableOption("locale",!1),i.registerTableOption("langs",{}),i}return o(r,[{key:"initialize",value:function(){for(var e in this.langList=C.deepClone(r.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder),this.table.options.langs)this.installLang(e,this.table.options.langs[e]);this.setLocale(this.table.options.locale),this.registerTableFunction("setLocale",this.setLocale.bind(this)),this.registerTableFunction("getLocale",this.getLocale.bind(this)),this.registerTableFunction("getLang",this.getLang.bind(this))}},{key:"setHeaderFilterPlaceholder",value:function(e){this.langList.default.headerFilters.default=e}},{key:"setHeaderFilterColumnPlaceholder",value:function(e,t){this.langList.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)}},{key:"installLang",value:function(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}},{key:"_setLangProp",value:function(t,i){for(var n in i)t[n]&&"object"==e(t[n])?this._setLangProp(t[n],i[n]):t[n]=i[n]}},{key:"setLocale",value:function(t){if(!0===(t=t||"default")&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!this.langList[t]){var i=t.split("-")[0];this.langList[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}this.locale=t,this.lang=C.deepClone(this.langList.default||{}),"default"!=t&&function t(i,n){for(var o in i)"object"==e(i[o])?(n[o]||(n[o]={}),t(i[o],n[o])):n[o]=i[o]}(this.langList[t],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}},{key:"getLocale",value:function(e){return this.locale}},{key:"getLang",value:function(e){return e?this.langList[e]:this.lang}},{key:"getText",value:function(e,t){var i=(e=t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}},{key:"_getLangElement",value:function(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}},{key:"bind",value:function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}},{key:"_executeBindings",value:function(){var e=this,t=function(t){e.bindings[t].forEach((function(i){i(e.getText(t),e.lang)}))};for(var i in this.bindings)t(i)}}]),r}(B);j.moduleName="localize",j.langs={default:{groups:{item:"item",items:"items"},columns:{},data:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}};var G=function(e){a(n,e);var i=c(n);function n(e){return t(this,n),i.call(this,e)}return o(n,[{key:"initialize",value:function(){this.registerTableFunction("tableComms",this.receive.bind(this))}},{key:"getConnections",value:function(e){var t=this,i=[];return N.lookupTable(e).forEach((function(e){t.table!==e&&i.push(e)})),i}},{key:"send",value:function(e,t,i,n){var o=this,a=this.getConnections(e);a.forEach((function(e){e.tableComms(o.table.element,t,i,n)})),!a.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}},{key:"receive",value:function(e,t,i,n){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,n);console.warn("Inter-table Comms Error - no such module:",t)}}]),n}(B);G.moduleName="comms";var U=Object.freeze({__proto__:null,LayoutModule:W,LocalizeModule:j,CommsModule:G}),X=function(){function i(e,n){t(this,i),this.bindStaticFuctionality(e),this.bindModules(e,U,!0),n&&this.bindModules(e,n)}return o(i,[{key:"bindStaticFuctionality",value:function(t){t.moduleBindings={},t.extendModule=function(i,n,o){if(t.moduleBindings[i]){var a=t.moduleBindings[i].prototype[n];if(a)if("object"==e(o))for(var r in o)a[r]=o[r];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",n)}else console.warn("Module Error - module does not exist:",i)},t.registerModule=function(e){Array.isArray(e)||(e=[e]),e.forEach((function(e){t.registerModuleBinding(e)}))},t.registerModuleBinding=function(e){t.moduleBindings[e.moduleName]=e},t.findTable=function(e){var t=N.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},t.prototype.bindModules=function(){for(var e in this.modules={},t.moduleBindings){var i=t.moduleBindings[e];this.modules[e]=new i(this),i.prototype.moduleCore?this.modulesCore[e]=this.modules[e]:this.modulesRegular[e]=this.modules[e]}}}},{key:"bindModules",value:function(e,t,i){var n=Object.values(t);i&&n.forEach((function(e){e.prototype.moduleCore=!0})),e.registerModule(n)}}]),i}(),q=function(){function e(i,n){var o=this;t(this,e),this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.vdomHoz=null,this.externalEvents=null,this.eventBus=null,this.interactionMonitor=!1,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.componentFunctionBinder=new z(this),this.dataLoader=!1,this.modules={},this.modulesCore={},this.modulesRegular={},this.optionsList=new E(this,"table constructor"),this.initialized=!1,this.initializeElement(i)&&(this.initialzeCoreSystems(n),setTimeout((function(){o._create()}))),N.register(this)}return o(e,[{key:"initializeElement",value:function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)}},{key:"initialzeCoreSystems",value:function(t){this.columnManager=new T(this),this.rowManager=new F(this),this.footerManager=new P(this),this.dataLoader=new A(this),this.bindModules(),this.options=this.optionsList.generate(e.defaultOptions,t),this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.externalEvents=new O(this.options,this.options.debugEventsExternal),this.eventBus=new _(this.options.debugEventsInternal),this.interactionMonitor=new H(this),this.dataLoader.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this.footerManager.initialize()}},{key:"rtlCheck",value:function(){var e=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==e.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}}},{key:"_mapDepricatedFunctionality",value:function(){}},{key:"_clearSelection",value:function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")}},{key:"_create",value:function(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this.rtlCheck(),this._buildElement(),this._loadInitialData(),this.initialized=!0}},{key:"_clearObjectPointers",value:function(){this.options.columns=this.options.columns.slice(0),this.options.data&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}},{key:"_buildElement",value:function(){var e=this.element,t=this.options;for(e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);for(var i in t.height&&(t.height=isNaN(t.height)?t.height:t.height+"px",e.style.height=t.height),!1!==t.minHeight&&(t.minHeight=isNaN(t.minHeight)?t.minHeight:t.minHeight+"px",e.style.minHeight=t.minHeight),!1!==t.maxHeight&&(t.maxHeight=isNaN(t.maxHeight)?t.maxHeight:t.maxHeight+"px",e.style.maxHeight=t.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modulesCore){this.modulesCore[i].initialize()}if("string"==typeof t.placeholder){var n=document.createElement("div");n.classList.add("tabulator-placeholder");var o=document.createElement("span");o.innerHTML=t.placeholder,n.appendChild(o),t.placeholder=n}for(var a in e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),t.footerElement&&this.footerManager.activate(),t.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modulesRegular){this.modulesRegular[a].initialize()}this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built"),this.externalEvents.dispatch("tableBuilt")}},{key:"_loadInitialData",value:function(){this.dataLoader.load(this.options.data)}},{key:"destroy",value:function(){var e=this.element;for(N.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.rows.forEach((function(e){e.wipe()})),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[];e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")}},{key:"_detectBrowser",value:function(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}},{key:"blockRedraw",value:function(){return this.rowManager.blockRedraw()}},{key:"restoreRedraw",value:function(){return this.rowManager.restoreRedraw()}},{key:"setDataFromLocalFile",value:function(e){var t=this;return new Promise((function(i,n){var o=document.createElement("input");o.type="file",o.accept=e||".json,application/json",o.addEventListener("change",(function(e){var a,r=o.files[0],s=new FileReader;s.readAsText(r),s.onload=function(e){try{a=JSON.parse(s.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void n(e)}t.setData(a).then((function(e){i(e)})).catch((function(e){i(e)}))},s.onerror=function(e){console.warn("File Load Error - Unable to read file"),n()}})),o.click()}))}},{key:"setData",value:function(e,t,i){if(this.initialized)return this.dataLoader.load(e,t,i,!1);console.warn("setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.")}},{key:"clearData",value:function(){this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}},{key:"getData",value:function(e){return this.rowManager.getData(e)}},{key:"getDataCount",value:function(e){return this.rowManager.getDataCount(e)}},{key:"replaceData",value:function(e,t,i){return this.dataLoader.load(e,t,i,!0,!0)}},{key:"updateData",value:function(e){var t=this,i=0;return new Promise((function(n,o){t.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((function(e){var o=t.rowManager.findRow(e[t.options.index]);o&&(i++,o.updateData(e).then((function(){--i||n()})))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}},{key:"addData",value:function(e,t,i){var n=this;return new Promise((function(o,a){n.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?n.rowManager.addRows(e,t,i).then((function(e){var t=[];e.forEach((function(e){t.push(e.getComponent())})),o(t)})):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))}))}},{key:"updateOrAddData",value:function(e){var t=this,i=[],n=0;return new Promise((function(o,a){t.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((function(e){var a=t.rowManager.findRow(e[t.options.index]);n++,a?a.updateData(e).then((function(){n--,i.push(a.getComponent()),n||o(i)})):t.rowManager.addRows(e).then((function(e){n--,i.push(e[0].getComponent()),n||o(i)}))})):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))}))}},{key:"getRow",value:function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}},{key:"getRowFromPosition",value:function(e,t){var i=this.rowManager.getRowFromPosition(e,t);return i?i.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}},{key:"deleteRow",value:function(e){var t=this,i=[];Array.isArray(e)||(e=[e]);var n,o=p(e);try{for(o.s();!(n=o.n()).done;){var a=n.value,r=this.rowManager.findRow(a,!0);if(!r)return console.error("Delete Error - No matching row found:",a),Promise.reject("Delete Error - No matching row found");i.push(r)}}catch(e){o.e(e)}finally{o.f()}return i.sort((function(e,i){return t.rowManager.rows.indexOf(e)>t.rowManager.rows.indexOf(i)?1:-1})),i.forEach((function(e){e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}},{key:"addRow",value:function(e,t,i){return"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i).then((function(e){return e[0].getComponent()}))}},{key:"updateOrAddRow",value:function(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((function(){return i.getComponent()})):this.rowManager.addRows(t).then((function(e){return e[0].getComponent()}))}},{key:"updateRow",value:function(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((function(){resolve(i.getComponent())})):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}},{key:"scrollToRow",value:function(e,t,i){var n=this.rowManager.findRow(e);return n?this.rowManager.scrollToRow(n,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}},{key:"moveRow",value:function(e,t,i){var n=this.rowManager.findRow(e);n?n.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}},{key:"getRows",value:function(e){return this.rowManager.getComponents(e)}},{key:"getRowPosition",value:function(e,t){var i=this.rowManager.findRow(e);return i?this.rowManager.getRowPosition(i,t):(console.warn("Position Error - No matching row found:",e),!1)}},{key:"setColumns",value:function(e){this.columnManager.setColumns(e)}},{key:"getColumns",value:function(e){return this.columnManager.getComponents(e)}},{key:"getColumn",value:function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}},{key:"getColumnDefinitions",value:function(){return this.columnManager.getDefinitionTree()}},{key:"showColumn",value:function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}},{key:"hideColumn",value:function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}},{key:"toggleColumn",value:function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()}},{key:"addColumn",value:function(e,t,i){var n=this.columnManager.findColumn(i);return this.columnManager.addColumn(e,t,n).then((function(e){return e.getComponent()}))}},{key:"deleteColumn",value:function(e){var t=this.columnManager.findColumn(e);return t?t.delete():(console.warn("Column Delete Error - No matching column found:",e),Promise.reject())}},{key:"updateColumnDefinition",value:function(e,t){var i=this.columnManager.findColumn(e);return i?i.updateDefinition(t):(console.warn("Column Update Error - No matching column found:",e),Promise.reject())}},{key:"moveColumn",value:function(e,t,i){var n=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);n?o?this.columnManager.moveColumn(n,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}},{key:"scrollToColumn",value:function(e,t,i){var n=this;return new Promise((function(o,a){var r=n.columnManager.findColumn(e);return r?n.columnManager.scrollToColumn(r,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}},{key:"redraw",value:function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)}},{key:"setHeight",value:function(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw()}},{key:"on",value:function(e,t){this.externalEvents.subscribe(e,t)}},{key:"off",value:function(e,t){this.externalEvents.unsubscribe(e,t)}},{key:"dispatchEvent",value:function(){var e,t=Array.from(arguments);t.shift();(e=this.externalEvents).dispatch.apply(e,arguments)}},{key:"modExists",value:function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}},{key:"module",value:function(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}]),e}();q.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,height:!1,minHeight:!1,maxHeight:!1,columnMaxWidth:!1,columnHeaderVertAlign:"top",columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",tooltipGenerationMode:"load",footerElement:!1,index:"id",textDirection:"auto",addRowPos:"bottom",headerVisible:!0,renderVertical:"virtual",renderHorizontal:"basic",renderVerticalBuffer:0,scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataSendParams:{},dataReceiveParams:{}},new X(q);var K=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).allowedTypes=["","data","download","clipboard","print","htmlOutput"],i.registerColumnOption("accessor"),i.registerColumnOption("accessorParams"),i.registerColumnOption("accessorData"),i.registerColumnOption("accessorDataParams"),i.registerColumnOption("accessorDownload"),i.registerColumnOption("accessorDownloadParams"),i.registerColumnOption("accessorClipboard"),i.registerColumnOption("accessorClipboardParams"),i.registerColumnOption("accessorPrint"),i.registerColumnOption("accessorPrintParams"),i.registerColumnOption("accessorHtmlOutput"),i.registerColumnOption("accessorHtmlOutputParams"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}},{key:"initializeColumn",value:function(e){var t=!1,i={};this.allowedTypes.forEach((function(n){var o,a="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[a]&&(o=this.lookupAccessor(e.definition[a]))&&(t=!0,i[a]={accessor:o,params:e.definition[a+"Params"]||{}})})),t&&(e.modules.accessor=i)}},{key:"lookupAccessor",value:function(t){var i=!1;switch(e(t)){case"string":r.accessors[t]?i=r.accessors[t]:console.warn("Accessor Error - No such accessor found, ignoring: ",t);break;case"function":i=t}return i}},{key:"transformRow",value:function(e,t){var i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),n=e.getComponent(),o=C.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var a,r,s,l;e.modules.accessor&&(r=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(a=e.getFieldValue(o))&&(l=e.getComponent(),s="function"==typeof r.params?r.params(a,o,t,l,n):r.params,e.setFieldValue(o,r.accessor(a,o,t,s,l,n)))})),o}}]),r}(B);K.moduleName="accessor",K.accessors={};function Y(t,i){var n=[];if(i=i||"",Array.isArray(t))t.forEach((function(e,t){n=n.concat(Y(e,i?i+"["+t+"]":t))}));else if("object"===e(t))for(var o in t)n=n.concat(Y(t[o],i?i+"["+o+"]":o));else n.push({key:i,value:t});return n}function J(e){var t=Y(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}var $={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var n=this.generateParamsList(i),o=new FormData;return n.forEach((function(e){o.append(e.key,e.value)})),o}}},Q=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).config=!1,o.url="",o.urlGenerator=!1,o.params=!1,o.loaderPromise=!1,o.registerTableOption("ajaxURL",!1),o.registerTableOption("ajaxURLGenerator",!1),o.registerTableOption("ajaxParams",{}),o.registerTableOption("ajaxConfig","get"),o.registerTableOption("ajaxContentType","form"),o.registerTableOption("ajaxRequestFunc",!1),o.registerTableOption("ajaxRequesting",(function(){})),o.registerTableOption("ajaxResponse",!1),o.contentTypeFormatters=n.contentTypeFormatters,o}return o(n,[{key:"initialize",value:function(){this.loaderPromise=this.table.options.ajaxRequestFunc||n.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||n.defaultURLGenerator,this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.registerTableFunction("getAjaxUrl",this.getUrl.bind(this)),this.subscribe("data-loading",this.requestDataCheck.bind(this)),this.subscribe("data-load",this.requestData.bind(this))}},{key:"requestDataCheck",value:function(e,t,i,n){return!((e||!this.url)&&"string"!=typeof e)}},{key:"requestData",value:function(e,t,i,n,o){return this.requestDataCheck(e)?(e&&this.setUrl(e),t&&this.setParams(t,!0),i&&this.setConfig(i),this.sendRequest()):o}},{key:"setParams",value:function(e,t){if(t)for(var i in this.params=this.params||{},e)this.params[i]=e[i];else this.params=e}},{key:"getParams",value:function(){return this.params||{}}},{key:"setConfig",value:function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]}},{key:"_loadDefaultConfig",value:function(e){if(!this.config||e)for(var t in this.config={},n.defaultConfig)this.config[t]=n.defaultConfig[t]}},{key:"setUrl",value:function(e){this.url=e}},{key:"getUrl",value:function(){return this.url}},{key:"sendRequest",value:function(e){var t=this,i=this.url;return this._loadDefaultConfig(),!1!==this.table.options.ajaxRequesting.call(this.table,this.url,this.params)?this.loaderPromise(i,this.config,this.params).then((function(e){return t.table.options.ajaxResponse&&(e=t.table.options.ajaxResponse.call(t.table,t.url,t.params,e)),e})):Promise.reject()}}]),n}(B);Q.moduleName="ajax",Q.defaultConfig={method:"GET"},Q.defaultURLGenerator=function(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+J(i))),e},Q.defaultLoaderPromise=function(t,i,n){var o,a=this;return new Promise((function(r,s){if(t=a.urlGenerator.call(a.table,t,i,n),"GET"!=i.method.toUpperCase())if(o="object"===e(a.table.options.ajaxContentType)?a.table.options.ajaxContentType:a.contentTypeFormatters[a.table.options.ajaxContentType]){for(var l in o.headers)i.headers||(i.headers={}),void 0===i.headers[l]&&(i.headers[l]=o.headers[l]);i.body=o.body.call(a,t,i,n)}else console.warn("Ajax Error - Invalid ajaxContentType value:",a.table.options.ajaxContentType);t?(void 0===i.headers&&(i.headers={}),void 0===i.headers.Accept&&(i.headers.Accept="application/json"),void 0===i.headers["X-Requested-With"]&&(i.headers["X-Requested-With"]="XMLHttpRequest"),void 0===i.mode&&(i.mode="cors"),"cors"==i.mode?(void 0===i.headers.Origin&&(i.headers.Origin=window.location.origin),void 0===i.credentials&&(i.credentials="same-origin")):void 0===i.credentials&&(i.credentials="include"),fetch(t,i).then((function(e){e.ok?e.json().then((function(e){r(e)})).catch((function(e){s(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),s(e))})).catch((function(e){console.error("Ajax Load Error - Connection Error: ",e),s(e)}))):(console.warn("Ajax Load Error - No URL Set"),r([]))}))},Q.contentTypeFormatters=$;var Z=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).mode=!0,i.pasteParser=function(){},i.pasteAction=function(){},i.customSelection=!1,i.rowRange=!1,i.blocked=!0,i.registerTableOption("clipboard",!1),i.registerTableOption("clipboardCopyStyled",!0),i.registerTableOption("clipboardCopyConfig",!1),i.registerTableOption("clipboardCopyFormatter",!1),i.registerTableOption("clipboardCopyRowRange","active"),i.registerTableOption("clipboardPasteParser","table"),i.registerTableOption("clipboardPasteAction","insert"),i.registerColumnOption("clipboard"),i.registerColumnOption("titleClipboard"),i}return o(r,[{key:"initialize",value:function(){var e=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(function(t){var i,n;if(!e.blocked){if(t.preventDefault(),e.customSelection)i=e.customSelection,e.table.options.clipboardCopyFormatter&&(i=e.table.options.clipboardCopyFormatter("plain",i));else{var o=e.table.modules.export.generateExportList(e.table.options.clipboardCopyConfig,e.table.options.clipboardCopyStyled,e.rowRange,"clipboard");i=(n=e.table.modules.export.genereateHTMLTable(o))?e.generatePlainContent(o):"",e.table.options.clipboardCopyFormatter&&(i=e.table.options.clipboardCopyFormatter("plain",i),n=e.table.options.clipboardCopyFormatter("html",n))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",i):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",i),n&&t.clipboardData.setData("text/html",n)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",i),n&&t.originalEvent.clipboardData.setData("text/html",n)),e.dispatchExternal("clipboardCopied",i,n),e.reset()}})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(function(t){e.paste(t)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}},{key:"reset",value:function(){this.blocked=!0,this.customSelection=!1}},{key:"generatePlainContent",value:function(t){var i=[];return t.forEach((function(t){var n=[];t.columns.forEach((function(i){var o="";if(i)if("group"===t.type&&(i.value=i.component.getKey()),null===i.value)o="";else switch(e(i.value)){case"object":o=JSON.stringify(i.value);break;case"undefined":o="";break;default:o=i.value}n.push(o)})),i.push(n.join("\t"))})),i.join("\n")}},{key:"copy",value:function(e,t){var i,n;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?((e=document.createRange()).selectNodeContents(this.table.element),(i=window.getSelection()).toString()&&t&&(this.customSelection=i.toString()),i.removeAllRanges(),i.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((n=document.body.createTextRange()).moveToElementText(this.table.element),n.select()),document.execCommand("copy"),i&&i.removeAllRanges())}},{key:"setPasteAction",value:function(t){switch(e(t)){case"string":this.pasteAction=r.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}}},{key:"setPasteParser",value:function(t){switch(e(t)){case"string":this.pasteParser=r.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}}},{key:"paste",value:function(e){var t,i,n;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),n=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,n)):this.dispatchExternal("clipboardPasteError",t))}},{key:"mutateData",value:function(e){var t=this,i=[];return Array.isArray(e)?e.forEach((function(e){i.push(t.table.modules.mutator.transformRow(e,"clipboard"))})):i=e,i}},{key:"checkPaseOrigin",value:function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t}},{key:"getPasteData",value:function(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t}}]),r}(B);Z.moduleName="clipboard",Z.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},Z.pasteParsers={table:function(e){var t=[],i=!0,n=this.table.columnManager.columns,o=[],a=[];return(e=e.split("\n")).forEach((function(e){t.push(e.split("\t"))})),!(!t.length||1===t.length&&t[0].length<2)&&(t[0].forEach((function(e){var t=n.find((function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()}));t?o.push(t):i=!1})),i||(i=!0,o=[],t[0].forEach((function(e){var t=n.find((function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()}));t?o.push(t):i=!1})),i||(o=this.table.columnManager.columnsByIndex)),i&&t.shift(),t.forEach((function(e){var t={};e.forEach((function(e,i){o[i]&&(t[o[i].field]=e)})),a.push(t)})),a)}};var ee=function(){function e(i){return t(this,e),this._row=i,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}return o(e,[{key:"getData",value:function(e){return this._row.getData(e)}},{key:"getElement",value:function(){return this._row.getElement()}},{key:"getTable",value:function(){return this._row.table}},{key:"getCells",value:function(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}},{key:"getCell",value:function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}},{key:"_getSelf",value:function(){return this._row}}]),e}(),te={avg:function(e,t,i){var n=0,o=void 0!==i.precision?i.precision:2;return e.length&&(n=e.reduce((function(e,t){return Number(e)+Number(t)})),n/=e.length,n=!1!==o?n.toFixed(o):n),parseFloat(n).toString()},max:function(e,t,i){var n=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))>n||null===n)&&(n=e)})),null!==n?!1!==o?n.toFixed(o):n:""},min:function(e,t,i){var n=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))"),n.dataTreeExpandElement?"string"==typeof n.dataTreeExpandElement?((t=document.createElement("div")).innerHTML=n.dataTreeExpandElement,this.expandEl=t.firstChild):this.expandEl=n.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
"),e(n.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return n.dataTreeStartExpanded};break;case"function":this.startOpen=n.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return n.dataTreeStartExpanded[t]}}this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("row-relayout",this.layoutRow.bind(this)),this.subscribe("row-deleted",this.rowDelete.bind(this),0),this.subscribe("row-data-changed",this.rowDataChanged.bind(this),10),this.subscribe("column-moving-rows",this.columnMoving.bind(this)),this.registerDisplayHandler(this.getRows.bind(this),30)}}},{key:"getRowChildren",value:function(e){return this.getTreeChildren(e,!0)}},{key:"columnMoving",value:function(){var e=this,t=[];return this.table.rowManager.rows.forEach((function(i){t=t.concat(e.getTreeChildren(i,!1,!0))})),t}},{key:"rowDataChanged",value:function(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}},{key:"initializeRow",value:function(t){var i=t.getData()[this.field],n=Array.isArray(i),o=n||!n&&"object"===e(i)&&null!==i;!o&&t.modules.dataTree&&t.modules.dataTree.branchEl&&t.modules.dataTree.branchEl.parentNode.removeChild(t.modules.dataTree.branchEl),!o&&t.modules.dataTree&&t.modules.dataTree.controlEl&&t.modules.dataTree.controlEl.parentNode.removeChild(t.modules.dataTree.controlEl),t.modules.dataTree={index:t.modules.dataTree?t.modules.dataTree.index:0,open:!!o&&(t.modules.dataTree?t.modules.dataTree.open:this.startOpen(t.getComponent(),0)),controlEl:!(!t.modules.dataTree||!o)&&t.modules.dataTree.controlEl,branchEl:!(!t.modules.dataTree||!o)&&t.modules.dataTree.branchEl,parent:!!t.modules.dataTree&&t.modules.dataTree.parent,children:o}}},{key:"reinitializeRowChildren",value:function(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}},{key:"layoutRow",value:function(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,t),e.getElement().classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(i.branchEl,t.firstChild),this.table.rtl?i.branchEl.style.marginRight=(i.branchEl.offsetWidth+i.branchEl.style.marginLeft)*(i.index-1)+i.index*this.indent+"px":i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):this.table.rtl?t.style.paddingRight=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-right"))+i.index*this.indent+"px":t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")}},{key:"generateControlElement",value:function(e,t){var i=this,n=e.modules.dataTree,o=(t=t||e.getCells()[0].getElement(),n.controlEl);!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",(function(t){t.stopPropagation(),i.collapseRow(e)}))):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",(function(t){t.stopPropagation(),i.expandRow(e)}))),n.controlEl.addEventListener("mousedown",(function(e){e.stopPropagation()})),o&&o.parentNode===t?o.parentNode.replaceChild(n.controlEl,o):t.insertBefore(n.controlEl,t.firstChild))}},{key:"setDisplayIndex",value:function(e){this.displayIndex=e}},{key:"getDisplayIndex",value:function(){return this.displayIndex}},{key:"getRows",value:function(e){var t=this,i=[];return e.forEach((function(e,n){var o;i.push(e),e instanceof L&&(e.create(),(o=e.modules.dataTree.children).index||!1===o.children||t.getChildren(e).forEach((function(e){e.create(),i.push(e)})))})),i}},{key:"getChildren",value:function(e,t){var i=this,n=e.modules.dataTree,o=[],a=[];return!1!==n.children&&(n.open||t)&&(Array.isArray(n.children)||(n.children=this.generateChildren(e)),o=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(n.children):n.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(o),o.forEach((function(e){a.push(e),i.getChildren(e).forEach((function(e){a.push(e)}))}))),a}},{key:"generateChildren",value:function(e){var t=this,i=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach((function(n){var o=new L(n||{},t.table.rowManager);o.create(),o.modules.dataTree.index=e.modules.dataTree.index+1,o.modules.dataTree.parent=e,o.modules.dataTree.children&&(o.modules.dataTree.open=t.startOpen(o.getComponent(),o.modules.dataTree.index)),i.push(o)})),i}},{key:"expandRow",value:function(e,t){var i=e.modules.dataTree;!1!==i.children&&(i.open=!0,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowExpanded",e.getComponent(),e.modules.dataTree.index))}},{key:"collapseRow",value:function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowCollapsed",e.getComponent(),e.modules.dataTree.index))}},{key:"toggleRow",value:function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}},{key:"getTreeParent",value:function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}},{key:"getFilteredTreeChildren",value:function(e){var t=e.modules.dataTree,i=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),(this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(t.children):t.children).forEach((function(e){e instanceof L&&i.push(e)}))),i}},{key:"rowDelete",value:function(e){var t,i=e.modules.dataTree.parent;i&&(!1!==(t=this.findChildIndex(e,i))&&i.data[this.field].splice(t,1),i.data[this.field].length||delete i.data[this.field],this.initializeRow(i),this.layoutRow(i)),this.refreshData(!0)}},{key:"addTreeChildRow",value:function(e,t,i,n){var o=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==n&&!1!==(o=this.findChildIndex(n,e))&&e.data[this.field].splice(i?o:o+1,0,t),!1===o&&(i?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.refreshData(!0)}},{key:"findChildIndex",value:function(t,i){var n=this,o=!1;return"object"==e(t)?t instanceof L?o=t.data:t instanceof RowComponent?o=t._getSelf().data:"undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&i.modules.dataTree&&(o=i.modules.dataTree.children.find((function(e){return e instanceof L&&e.element===t})))&&(o=o.data):o=null!=t&&i.data[this.field].find((function(e){return e.data[n.table.options.index]==t})),o&&(Array.isArray(i.data[this.field])&&(o=i.data[this.field].indexOf(o)),-1==o&&(o=!1)),o}},{key:"getTreeChildren",value:function(e,t,i){var n=this,o=e.modules.dataTree,a=[];return o.children&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),o.children.forEach((function(e){e instanceof L&&(a.push(t?e.getComponent():e),i&&(a=a.concat(n.getTreeChildren(e,t,i))))}))),a}},{key:"checkForRestyle",value:function(e){e.row.cells.indexOf(e)||e.row.reinitialize()}},{key:"getChildField",value:function(){return this.field}},{key:"redrawNeeded",value:function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}]),r}(B);ne.moduleName="dataTree";var oe={csv:function(t,i,n){var o=i&&i.delimiter?i.delimiter:",",a=[],r=[];t.forEach((function(t){var i=[];switch(t.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":t.columns.forEach((function(e,t){e&&1===e.depth&&(r[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":t.columns.forEach((function(t){if(t){switch(e(t.value)){case"object":t.value=JSON.stringify(t.value);break;case"undefined":case"null":t.value=""}i.push('"'+String(t.value).split('"').join('""')+'"')}})),a.push(i.join(o))}})),r.length&&a.unshift(r.join(o)),a=a.join("\n"),i.bom&&(a="\ufeff"+a),n(a,"text/csv")},json:function(e,t,i){var n=[];e.forEach((function(e){var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((function(e){e&&(t[e.component.getField()]=e.value)})),n.push(t)}})),i(n=JSON.stringify(n,null,"\t"),"application/json")},pdf:function(t,i,n){var o=[],a=[],r={},s=i.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},l=i.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},u=i.jsPDF||{},c=i&&i.title?i.title:"";function h(t,i){var n=[];return t.columns.forEach((function(t){var o;if(t){switch(e(t.value)){case"object":t.value=JSON.stringify(t.value);break;case"undefined":case"null":t.value=""}o={content:t.value,colSpan:t.width,rowSpan:t.height},i&&(o.styles=i),n.push(o)}else n.push("")})),n}u.orientation||(u.orientation=i.orientation||"landscape"),u.unit||(u.unit="pt"),t.forEach((function(e){switch(e.type){case"header":o.push(h(e));break;case"group":a.push(h(e,s));break;case"calc":a.push(h(e,l));break;case"row":a.push(h(e))}}));var d=new jspdf.jsPDF(u);i&&i.autoTable&&(r="function"==typeof i.autoTable?i.autoTable(d)||{}:i.autoTable),c&&(r.didDrawPage=function(e){d.text(c,40,30)}),r.head=o,r.body=a,d.autoTable(r),i&&i.documentProcessing&&i.documentProcessing(d),n(d.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,n){var o=i.sheetName||"Sheet1",a=XLSX.utils.book_new(),r=new f(this);function s(){var i=[],n=[],o={},a={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce((function(e,t){return e+(t&&t.width?t.width:1)}),0):0,r:t.length}};return t.forEach((function(t,o){var a=[];t.columns.forEach((function(t,i){t?(a.push(t.value instanceof Date||"object"!==e(t.value)?t.value:JSON.stringify(t.value)),(t.width>1||t.height>-1)&&n.push({s:{r:o,c:i},e:{r:o+t.height-1,c:i+t.width-1}})):a.push("")})),i.push(a)})),XLSX.utils.sheet_add_aoa(o,i),o["!ref"]=XLSX.utils.encode_range(a),n.length&&(o["!merges"]=n),o}if(a.SheetNames=[],a.Sheets={},i.sheetOnly)n(s());else{if(i.sheets)for(var l in i.sheets)!0===i.sheets[l]?(a.SheetNames.push(l),a.Sheets[l]=s()):(a.SheetNames.push(l),r.commsSend(i.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){a.Sheets[l]=e}}));else a.SheetNames.push(o),a.Sheets[o]=s();i.documentProcessing&&(a=i.documentProcessing(a)),n(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),n=0;n!=e.length;++n)i[n]=255&e.charCodeAt(n);return t}(XLSX.write(a,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.genereateHTMLTable(e),"text/html")}},ae=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).registerTableOption("downloadReady",(function(e,t){return t})),o.registerTableOption("downloadConfig",{}),o.registerTableOption("downloadRowRange","active"),o.registerColumnOption("download"),o.registerColumnOption("titleDownload"),o}return o(n,[{key:"initialize",value:function(){this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}},{key:"downloadToTab",value:function(e,t,i,n){this.download(e,t,i,n,!0)}},{key:"download",value:function(e,t,i,o,a){var r=!1;if("function"==typeof e?r=e:n.downloaders[e]?r=n.downloaders[e]:console.warn("Download Error - No such download type found: ",e),r){var s=this.generateExportList(o);r.call(this.table,s,i||{},function(i,n){a?!0===a?this.triggerDownload(i,n,e,t,!0):a(i):this.triggerDownload(i,n,e,t)}.bind(this))}}},{key:"generateExportList",value:function(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),i=this.table.options.groupHeaderDownload;return i&&!Array.isArray(i)&&(i=[i]),t.forEach((function(e){var t;"group"===e.type&&(t=e.columns[0],i&&i[e.indent]&&(t.value=i[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))})),t}},{key:"triggerDownload",value:function(e,t,i,n,o){var a=document.createElement("a"),r=new Blob([e],{type:t});n=n||"Tabulator."+("function"==typeof i?"txt":i);(r=this.table.options.downloadReady(e,r))&&(o?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,n):(a.setAttribute("href",window.URL.createObjectURL(r)),a.setAttribute("download",n),a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a)),this.dispatchExternal("downloadComplete"))}},{key:"commsReceived",value:function(e,t,i){switch(t){case"intercept":this.download(i.type,"",i.options,i.active,i.intercept)}}}]),n}(B);function re(e,t){var i=t.mask,n=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",a=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var s=i[t];void 0!==s&&s!==a&&s!==n&&s!==o&&(e.value=e.value+""+s,r(t+1))}e.addEventListener("keydown",(function(t){var r=e.value.length,s=t.key;if(t.keyCode>46){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case n:if(s.toUpperCase()==s.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(s))return t.preventDefault(),t.stopPropagation(),!1;break;case a:break;default:if(s!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(function(i){i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}ae.moduleName="download",ae.downloaders=oe;var se={input:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input");if(s.setAttribute("type",a.search?"search":"text"),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var l in a.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),s.setAttribute(l,s.getAttribute(l)+a.elementAttributes["+"+l])):s.setAttribute(l,a.elementAttributes[l]);function u(e){null==r&&""!==s.value||s.value!==r?n(s.value)&&(r=s.value):o()}return s.value=void 0!==r?r:"",i((function(){s.focus({preventScroll:!0}),s.style.height="100%"})),s.addEventListener("change",u),s.addEventListener("blur",u),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:u();break;case 27:o();break;case 35:case 36:e.stopPropagation()}})),a.mask&&re(s,a),s},textarea:function(t,i,n,o,a){var r=t.getValue(),s=a.verticalNavigation||"hybrid",l=String(null!=r?r:""),u=((l.match(/(?:\r\n|\r|\n)/g)||[]).length,document.createElement("textarea")),c=0;if(u.style.display="block",u.style.padding="2px",u.style.height="100%",u.style.width="100%",u.style.boxSizing="border-box",u.style.whiteSpace="pre-wrap",u.style.resize="none",a.elementAttributes&&"object"==e(a.elementAttributes))for(var h in a.elementAttributes)"+"==h.charAt(0)?(h=h.slice(1),u.setAttribute(h,u.getAttribute(h)+a.elementAttributes["+"+h])):u.setAttribute(h,a.elementAttributes[h]);function d(e){null==r&&""!==u.value||u.value!==r?(n(u.value)&&(r=u.value),setTimeout((function(){t.getRow().normalizeHeight()}),300)):o()}return u.value=l,i((function(){u.focus({preventScroll:!0}),u.style.height="100%",u.scrollHeight,u.style.height=u.scrollHeight+"px",t.getRow().normalizeHeight()})),u.addEventListener("change",d),u.addEventListener("blur",d),u.addEventListener("keyup",(function(){u.style.height="";var e=u.scrollHeight;u.style.height=e+"px",e!=c&&(c=e,t.getRow().normalizeHeight())})),u.addEventListener("keydown",(function(e){switch(e.keyCode){case 27:o();break;case 38:("editor"==s||"hybrid"==s&&u.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==s||"hybrid"==s&&u.selectionStart!==u.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),a.mask&&re(u,a),u},number:function(t,i,n,o,a){var r=t.getValue(),s=a.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==a.max&&l.setAttribute("max",a.max),void 0!==a.min&&l.setAttribute("min",a.min),void 0!==a.step&&l.setAttribute("step",a.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var u in a.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),l.setAttribute(u,l.getAttribute(u)+a.elementAttributes["+"+u])):l.setAttribute(u,a.elementAttributes[u]);l.value=r;var c=function(e){h()};function h(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!==r?n(e)&&(r=e):o()}return i((function(){l.removeEventListener("blur",c),l.focus({preventScroll:!0}),l.style.height="100%",l.addEventListener("blur",c)})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:o();break;case 38:case 40:"editor"==s&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),a.mask&&re(l,a),l},range:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input");if(s.setAttribute("type","range"),void 0!==a.max&&s.setAttribute("max",a.max),void 0!==a.min&&s.setAttribute("min",a.min),void 0!==a.step&&s.setAttribute("step",a.step),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var l in a.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),s.setAttribute(l,s.getAttribute(l)+a.elementAttributes["+"+l])):s.setAttribute(l,a.elementAttributes[l]);function u(){var e=s.value;isNaN(e)||""===e||(e=Number(e)),e!=r?n(e)&&(r=e):o()}return s.value=r,i((function(){s.focus({preventScroll:!0}),s.style.height="100%"})),s.addEventListener("blur",(function(e){u()})),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:u();break;case 27:o()}})),s},select:function(t,i,n,o,a){var r=this,s=this,l=t.getElement(),u=t.getValue(),c=a.verticalNavigation||"editor",h=void 0!==u||null===u?Array.isArray(u)?u:[u]:void 0!==a.defaultValue?a.defaultValue:[],d=document.createElement("input"),m=document.createElement("div"),p=a.multiselect,f=[],g={},v=[],b=[],y=!0,w=!1,E="",k=null;function R(e){var i,n={},o=s.table.getData();return(i=e?s.table.columnManager.getColumnByField(e):t.getColumn()._getSelf())?o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(n[t]=!0)})):console.warn("unable to find matching column to create select lookup list:",e),Object.keys(n)}function x(i,n){var o=[],r=[];function s(e){e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return n.indexOf(e.value)>-1&&M(e),o.push(e),r.push(e),e}if("function"==typeof i&&(i=i(t)),Array.isArray(i))i.forEach((function(t){var i;"object"===e(t)?t.options?(i={label:t.label,group:!0,itemParams:t.itemParams,elementAttributes:t.elementAttributes,element:!1},r.push(i),t.options.forEach((function(e){s(e)}))):s(t):(i={label:t,value:t,element:!1},n.indexOf(i.value)>-1&&M(i),o.push(i),r.push(i))}));else for(var l in i){var u={label:i[l],value:l,element:!1};n.indexOf(u.value)>-1&&M(u),o.push(u),r.push(u)}a.sortValuesList&&(o.sort((function(e,t){return e.labelt.label?1:0})),r.sort((function(e,t){return e.labelt.label?1:0})),"asc"!==a.sortValuesList&&(o.reverse(),r.reverse())),f=o,v=r,function(){for(;m.firstChild;)m.removeChild(m.firstChild);v.forEach((function(i){var n=i.element;if(!n){if(n=document.createElement("div"),i.label=a.listItemFormatter?a.listItemFormatter(i.value,i.label,t,n,i.itemParams):i.label,i.group?(n.classList.add("tabulator-edit-select-list-group"),n.tabIndex=0,n.innerHTML=""===i.label?" ":i.label):(n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=""===i.label?" ":i.label,n.addEventListener("click",(function(){w=!0,setTimeout((function(){w=!1}),10),p?(D(i),d.focus()):S(i)})),b.indexOf(i)>-1&&n.classList.add("active")),i.elementAttributes&&"object"==e(i.elementAttributes))for(var o in i.elementAttributes)"+"==o.charAt(0)?(o=o.slice(1),n.setAttribute(o,d.getAttribute(o)+i.elementAttributes["+"+o])):n.setAttribute(o,i.elementAttributes[o]);n.addEventListener("mousedown",(function(){y=!1,setTimeout((function(){y=!0}),10)})),i.element=n}m.appendChild(n)}))}()}function T(e,t){!p&&g&&g.element&&g.element.classList.remove("active"),g&&g.element&&g.element.classList.remove("focused"),g=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active")),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function M(e){-1==b.indexOf(e)&&(b.push(e),T(e,!0)),P()}function L(e){var t=b[e];e>-1&&(b.splice(e,1),t.element&&t.element.classList.remove("active"))}function D(e){e||(e=g);var t=b.indexOf(e);t>-1?L(t):(!0!==p&&b.length>=p&&L(0),M(e)),P()}function S(e){z(),e||(e=g),e&&(d.value=e.label,n(e.value)),h=[e.value]}function F(e){e||z();var t=[];b.forEach((function(e){t.push(e.value)})),h=t,n(t)}function P(){var e=[];b.forEach((function(t){e.push(t.label)})),d.value=e.join(", "),!1===s.currentCell&&F(!0)}function H(){z(),o()}function z(){m.parentNode&&m.parentNode.removeChild(m),s.table.rowManager.element.removeEventListener("scroll",H)}if((Array.isArray(a)||!Array.isArray(a)&&"object"===e(a)&&!a.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),a={values:a}),d.setAttribute("type","text"),d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",d.style.cursor="default",d.readOnly=0!=this.currentCell,a.elementAttributes&&"object"==e(a.elementAttributes))for(var A in a.elementAttributes)"+"==A.charAt(0)?(A=A.slice(1),d.setAttribute(A,d.getAttribute(A)+a.elementAttributes["+"+A])):d.setAttribute(A,a.elementAttributes[A]);return d.value=void 0!==u||null===u?u:"",d.addEventListener("search",(function(e){d.value||(!function(){for(var e=b.length,t=0;t0&&T(f[t-1],!p));break;case 40:t=f.indexOf(g),("editor"==c||"hybrid"==c&&t=38&&e.keyCode<=90&&function(e){clearTimeout(k);var t=String.fromCharCode(event.keyCode).toLowerCase();E+=t.toLowerCase();var i=f.find((function(e){return void 0!==e.label&&e.label.toLowerCase().startsWith(E)}));i&&T(i,!p),k=setTimeout((function(){E=""}),800)}(e.keyCode)}})),d.addEventListener("blur",(function(e){y&&(p?F():H())})),d.addEventListener("focus",(function(e){w||function(){if(b=[],!m.parentNode){!0===a.values?x(R(),h):"string"==typeof a.values?x(R(a.values),h):x(a.values||[],h);var e=C.elOffset(l);m.style.minWidth=l.offsetWidth+"px",m.style.top=e.top+l.offsetHeight+"px",m.style.left=e.left+"px",m.addEventListener("mousedown",(function(e){y=!1,setTimeout((function(){y=!0}),10)})),document.body.appendChild(m)}}()})),(m=document.createElement("div")).classList.add("tabulator-edit-select-list"),i((function(){d.style.height="100%",d.focus({preventScroll:!0})})),setTimeout((function(){r.table.rowManager.element.addEventListener("scroll",H)}),10),d},autocomplete:function(t,i,n,o,a){var r=this,s=this,l=t.getElement(),u=t.getValue(),c=a.verticalNavigation||"editor",h=void 0!==u||null===u?u:void 0!==a.defaultValue?a.defaultValue:"",d=document.createElement("input"),m=document.createElement("div"),p=[],f=!1,g=!0,v=!1;if(d.setAttribute("type","search"),d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var b in a.elementAttributes)"+"==b.charAt(0)?(b=b.slice(1),d.setAttribute(b,d.getAttribute(b)+a.elementAttributes["+"+b])):d.setAttribute(b,a.elementAttributes[b]);function y(){!0===a.values?v=w():"string"==typeof a.values&&(v=w(a.values))}function w(e){var i,n={},o=s.table.getData();return(i=e?s.table.columnManager.getColumnByField(e):t.getColumn()._getSelf())?(o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(n[t]=!0)})),n=a.sortValuesList?"asc"==a.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create autocomplete lookup list:",e),n}function E(e,t){var i,n,o=[];i=v||(a.values||[]),a.searchFunc?(o=a.searchFunc(e,i))instanceof Promise?(k(void 0!==a.searchingPlaceholder?a.searchingPlaceholder:"Searching..."),o.then((function(e){T(R(e),t)})).catch((function(e){console.err("error in autocomplete search promise:",e)}))):T(R(o),t):(n=R(i),""===e?a.showListOnEmpty&&(o=n):n.forEach((function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&o.push(t)})),T(o,t))}function k(e){var t=document.createElement("div");x(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,m.appendChild(t))}function R(t){var i=[];if(Array.isArray(t))t.forEach((function(t){var n={};"object"===e(t)?(n.title=a.listItemFormatter?a.listItemFormatter(t.value,t.label):t.label,n.value=t.value):(n.title=a.listItemFormatter?a.listItemFormatter(t,t):t,n.value=t),i.push(n)}));else for(var n in t){var o={title:a.listItemFormatter?a.listItemFormatter(n,t[n]):t[n],value:n};i.push(o)}return i}function x(){for(;m.firstChild;)m.removeChild(m.firstChild)}function T(e,t){e.length?function(e,t){var i=!1;x(),(p=e).forEach((function(e){var n=e.element;n||((n=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=e.title,n.addEventListener("click",(function(t){L(e),M()})),n.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),e.element=n,t&&e.value==u&&(d.value=e.title,e.element.classList.add("active"),i=!0),e===f&&(e.element.classList.add("active"),i=!0)),m.appendChild(n)})),i||L(!1)}(e,t):a.emptyPlaceholder&&k(a.emptyPlaceholder)}function M(){D(),f?u!==f.value?(u=f.value,d.value=f.title,n(f.value)):o():a.freetext||a.allowEmpty&&""===d.value?(u=d.value,n(d.value)):o()}function L(e,t){f&&f.element&&f.element.classList.remove("active"),f=e,e&&e.element&&e.element.classList.add("active"),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function D(){m.parentNode&&m.parentNode.removeChild(m),s.table.rowManager.element.removeEventListener("scroll",S)}function S(){D(),o()}return m.classList.add("tabulator-edit-select-list"),m.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),d.addEventListener("keydown",(function(e){var t;switch(e.keyCode){case 38:t=p.indexOf(f),("editor"==c||"hybrid"==c&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),L(t>0&&p[t-1]));break;case 40:t=p.indexOf(f),("editor"==c||"hybrid"==c&&t'):("ie"==r.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function f(e){var t=document.createElement("span"),i=m.cloneNode(!0);h.push(i),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),p(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),n(e),s.blur()})),t.appendChild(i),d.appendChild(t)}function g(e){l=e,p(e)}if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",d.style.verticalAlign="middle",d.style.display="inline-block",d.style.padding="4px",m.setAttribute("width",c),m.setAttribute("height",c),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",a.elementAttributes&&"object"==e(a.elementAttributes))for(var v in a.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),d.setAttribute(v,d.getAttribute(v)+a.elementAttributes["+"+v])):d.setAttribute(v,a.elementAttributes[v]);for(var b=1;b<=u;b++)f(b);return p(l=Math.min(parseInt(l),u)),d.addEventListener("mousemove",(function(e){p(0)})),d.addEventListener("click",(function(e){n(0)})),s.addEventListener("blur",(function(e){o()})),s.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(l+1);break;case 37:g(l-1);break;case 13:n(l);break;case 27:o()}})),d},progress:function(t,i,n,o,a){var r,s,l=t.getElement(),u=void 0===a.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:a.max,c=void 0===a.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:a.min,h=(u-c)/100,d=t.getValue()||0,m=document.createElement("div"),p=document.createElement("div");function f(){var e=window.getComputedStyle(l,null),t=h*Math.round(p.offsetWidth/((l.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+c;n(t),l.setAttribute("aria-valuenow",t),l.setAttribute("aria-label",d)}if(m.style.position="absolute",m.style.right="0",m.style.top="0",m.style.bottom="0",m.style.width="5px",m.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",a.elementAttributes&&"object"==e(a.elementAttributes))for(var g in a.elementAttributes)"+"==g.charAt(0)?(g=g.slice(1),p.setAttribute(g,p.getAttribute(g)+a.elementAttributes["+"+g])):p.setAttribute(g,a.elementAttributes[g]);return l.style.padding="4px 4px",d=Math.min(parseFloat(d),u),d=Math.max(parseFloat(d),c),d=Math.round((d-c)/h),p.style.width=d+"%",l.setAttribute("aria-valuemin",c),l.setAttribute("aria-valuemax",u),p.appendChild(m),m.addEventListener("mousedown",(function(e){r=e.screenX,s=p.offsetWidth})),m.addEventListener("mouseover",(function(){m.style.cursor="ew-resize"})),l.addEventListener("mousemove",(function(e){r&&(p.style.width=s+e.screenX-r+"px")})),l.addEventListener("mouseup",(function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,s=!1,f())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+l.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-l.clientWidth/100+"px";break;case 9:case 13:f();break;case 27:o()}})),l.addEventListener("blur",(function(){o()})),p},tickCross:function(t,i,n,o,a){var r=t.getValue(),s=document.createElement("input"),l=a.tristate,u=void 0===a.indeterminateValue?null:a.indeterminateValue,c=!1;if(s.setAttribute("type","checkbox"),s.style.marginTop="5px",s.style.boxSizing="border-box",a.elementAttributes&&"object"==e(a.elementAttributes))for(var h in a.elementAttributes)"+"==h.charAt(0)?(h=h.slice(1),s.setAttribute(h,s.getAttribute(h)+a.elementAttributes["+"+h])):s.setAttribute(h,a.elementAttributes[h]);function d(e){return l?e?c?u:s.checked:s.checked&&!c?(s.checked=!1,s.indeterminate=!0,c=!0,u):(c=!1,s.checked):s.checked}return s.value=r,!l||void 0!==r&&r!==u&&""!==r||(c=!0,s.indeterminate=!0),"firefox"!=this.table.browser&&i((function(){s.focus({preventScroll:!0})})),s.checked=!0===r||"true"===r||"True"===r||1===r,i((function(){s.focus()})),s.addEventListener("change",(function(e){n(d())})),s.addEventListener("blur",(function(e){n(d(!0))})),s.addEventListener("keydown",(function(e){13==e.keyCode&&n(d()),27==e.keyCode&&o()})),s}},le=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).currentCell=!1,i.mouseClick=!1,i.recursionBlock=!1,i.invalidEdit=!1,i.editedCells=[],i.editors=r.editors,i.registerColumnOption("editable"),i.registerColumnOption("editor"),i.registerColumnOption("editorParams"),i.registerColumnOption("cellEditing"),i.registerColumnOption("cellEdited"),i.registerColumnOption("cellEditCancelled"),i.registerTableFunction("getEditedCells",i.getEditedCells.bind(l(i))),i.registerTableFunction("clearCellEdited",i.clearCellEdited.bind(l(i))),i.registerTableFunction("navigatePrev",i.navigatePrev.bind(l(i))),i.registerTableFunction("navigateNext",i.navigateNext.bind(l(i))),i.registerTableFunction("navigateLeft",i.navigateLeft.bind(l(i))),i.registerTableFunction("navigateRight",i.navigateRight.bind(l(i))),i.registerTableFunction("navigateUp",i.navigateUp.bind(l(i))),i.registerTableFunction("navigateDown",i.navigateDown.bind(l(i))),i.registerComponentFunction("cell","isEdited",i.cellisEdited.bind(l(i))),i.registerComponentFunction("cell","clearEdited",i.clearEdited.bind(l(i))),i.registerComponentFunction("cell","edit",i.editCell.bind(l(i))),i.registerComponentFunction("cell","cancelEdit",i.cellCancelEdit.bind(l(i))),i.registerComponentFunction("cell","navigatePrev",i.navigatePrev.bind(l(i))),i.registerComponentFunction("cell","navigateNext",i.navigateNext.bind(l(i))),i.registerComponentFunction("cell","navigateLeft",i.navigateLeft.bind(l(i))),i.registerComponentFunction("cell","navigateRight",i.navigateRight.bind(l(i))),i.registerComponentFunction("cell","navigateUp",i.navigateUp.bind(l(i))),i.registerComponentFunction("cell","navigateDown",i.navigateDown.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("data-refeshing",this.cancelEdit.bind(this)),this.subscribe("keybinding-nav-prev",this.navigatePrev.bind(this)),this.subscribe("keybinding-nav-next",this.keybindingNavigateNext.bind(this)),this.subscribe("keybinding-nav-left",this.navigateLeft.bind(this)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this))}},{key:"keybindingNavigateNext",value:function(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(e)||i&&(t.getElement().firstChild.blur(),(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((function(){setTimeout((function(){nav.next()}))}))))}},{key:"cellisEdited",value:function(e){return!!e.modules.edit&&e.modules.edit.edited}},{key:"cellCancelEdit",value:function(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},{key:"clearCellEdited",value:function(e){var t=this;e||(e=this.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((function(e){t.modules.edit.clearEdited(e._getSelf())}))}},{key:"navigatePrev",value:function(e){var t,i,n=this.currentCell;if(n){if(e&&e.preventDefault(),t=this.navigateLeft())return!0;if((i=this.table.rowManager.prevDisplayRow(n.row,!0))&&(t=this.findNextEditableCell(i,i.cells.length)))return t.edit(),!0}return!1}},{key:"navigateNext",value:function(e){var t,i,n=this.currentCell;if(n){if(e&&e.preventDefault(),t=this.navigateRight())return!0;if((i=this.table.rowManager.nextDisplayRow(n.row,!0))&&(t=this.findNextEditableCell(i,-1)))return t.edit(),!0}return!1}},{key:"navigateLeft",value:function(e){var t,i,n=this.currentCell;return!!(n&&(e&&e.preventDefault(),t=n.getIndex(),i=this.findPrevEditableCell(n.row,t)))&&(i.edit(),!0)}},{key:"navigateRight",value:function(e){var t,i,n=this.currentCell;return!!(n&&(e&&e.preventDefault(),t=n.getIndex(),i=this.findNextEditableCell(n.row,t)))&&(i.edit(),!0)}},{key:"navigateUp",value:function(e){var t,i,n=this.currentCell;return!!(n&&(e&&e.preventDefault(),t=n.getIndex(),i=this.table.rowManager.prevDisplayRow(n.row,!0)))&&(i.cells[t].edit(),!0)}},{key:"navigateDown",value:function(e){var t,i,n=this.currentCell;return!!(n&&(e&&e.preventDefault(),t=n.getIndex(),i=this.table.rowManager.nextDisplayRow(n.row,!0)))&&(i.cells[t].edit(),!0)}},{key:"findNextEditableCell",value:function(e,t){var i=!1;if(t0)for(var n=t-1;n>=0;n--){var o=e.cells[n],a=!0;if(o.column.modules.edit&&Helpers.elVisible(o.getElement())&&("function"==typeof o.column.modules.edit.check&&(a=o.column.modules.edit.check(o.getComponent())),a)){i=o;break}}return i}},{key:"initializeColumnCheck",value:function(e){void 0!==e.definition.editor&&this.initializeColumn(e)}},{key:"columnDeleteCheck",value:function(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}},{key:"rowDeleteCheck",value:function(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}},{key:"initializeColumn",value:function(t){var i={editor:!1,blocked:!1,check:t.definition.editable,params:t.definition.editorParams||{}};switch(e(t.definition.editor)){case"string":this.editors[t.definition.editor]?i.editor=this.editors[t.definition.editor]:console.warn("Editor Error - No such editor found: ",t.definition.editor);break;case"function":i.editor=t.definition.editor;break;case"boolean":!0===t.definition.editor&&("function"!=typeof t.definition.formatter?this.editors[t.definition.formatter]?i.editor=this.editors[t.definition.formatter]:i.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",t.definition.formatter))}i.editor&&(t.modules.edit=i)}},{key:"getCurrentCell",value:function(){return!!this.currentCell&&this.currentCell.getComponent()}},{key:"clearEditor",value:function(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),e?i.validate&&i.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-row-editing")}}},{key:"cancelEdit",value:function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.definition.cellEditCancelled&&e.column.definition.cellEditCancelled.call(this.table,t),this.dispatchExternal("cellEditCancelled",t)}}},{key:"bindEditor",value:function(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}},{key:"focusCellNoEvent",value:function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}},{key:"editCell",value:function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}},{key:"focusScrollAdjust",value:function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,n=e.row.getElement();n.offsetTop;n.offsetTopi&&(this.table.rowManager.element.scrollTop+=n.offsetTop+n.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,a=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();r.offsetLeft;this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin),a-=parseInt(this.table.modules.frozenColumns.rightMargin)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),a-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLefta&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-a)}}},{key:"edit",value:function(t,i,n){var o,a,r,s=this,l=!0,u=function(){},c=t.getElement();if(!this.currentCell){if(t.column.modules.edit.blocked)return this.mouseClick=!1,c.blur(),!1;switch(i&&i.stopPropagation(),e(t.column.modules.edit.check)){case"function":l=t.column.modules.edit.check(t.getComponent());break;case"boolean":l=t.column.modules.edit.check}if(l||n){if(s.cancelEdit(),s.currentCell=t,this.focusScrollAdjust(t),a=t.getComponent(),this.mouseClick&&(this.mouseClick=!1,t.column.definition.cellClick&&t.column.definition.cellClick.call(this.table,i,a)),t.column.definition.cellEditing&&t.column.definition.cellEditing.call(this.table,a),this.dispatchExternal("cellEditing",a),r="function"==typeof t.column.modules.edit.params?t.column.modules.edit.params(a):t.column.modules.edit.params,!1===(o=t.column.modules.edit.editor.call(s,a,(function(e){u=e}),(function(e){if(s.currentCell===t){var i=!0;return t.column.modules.validate&&s.table.modExists("validate")&&"manual"!=s.table.options.validationMode&&(i=s.table.modules.validate.validate(t.column.modules.validate,t,e)),!0===i||"highlight"===s.table.options.validationMode?(s.clearEditor(),t.modules.edit||(t.modules.edit={}),t.modules.edit.edited=!0,-1==s.editedCells.indexOf(t)&&s.editedCells.push(t),t.setValue(e,!0),s.table.options.dataTree&&s.table.modExists("dataTree")&&s.table.modules.dataTree.checkForRestyle(t),!0===i||(c.classList.add("tabulator-validation-fail"),s.table.externalEvents.dispatch("validationFailed",t.getComponent(),e,i),!1)):(s.invalidEdit=!0,c.classList.add("tabulator-validation-fail"),s.focusCellNoEvent(t,!0),u(),s.table.externalEvents.dispatch("validationFailed",t.getComponent(),e,i),!1)}}),(function(){s.currentCell===t&&(s.cancelEdit(),s.table.options.dataTree&&s.table.modExists("dataTree")&&s.table.modules.dataTree.checkForRestyle(t))}),r)))return c.blur(),!1;if(!(o instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",o),c.blur(),!1;for(c.classList.add("tabulator-editing"),t.row.getElement().classList.add("tabulator-row-editing");c.firstChild;)c.removeChild(c.firstChild);c.appendChild(o),u();for(var h=c.children,d=0;d-1&&this.editedCells.splice(t,1)}}]),r}(B);le.moduleName="edit",le.editors=se;var ue=function e(i,n,o,a){t(this,e),this.type=i,this.columns=n,this.component=o||!1,this.indent=a||0},ce=function e(i,n,o,a,r){t(this,e),this.value=i,this.component=n||!1,this.width=o,this.height=a,this.depth=r},he=function(n){a(s,n);var r=c(s);function s(e){var i;return t(this,s),(i=r.call(this,e)).config={},i.cloneTableStyle=!0,i.colVisProp="",i.registerTableOption("htmlOutputConfig",!1),i.registerColumnOption("htmlOutput"),i.registerColumnOption("titleHtmlOutput"),i}return o(s,[{key:"initialize",value:function(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}},{key:"generateExportList",value:function(e,t,i,n){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=n;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],a=this.bodyToExportRows(this.rowLookup(i));return o.concat(a)}},{key:"genereateTable",value:function(e,t,i,n){var o=this.generateExportList(e,t,i,n);return this.genereateTableElement(o)}},{key:"rowLookup",value:function(e){var t=this,i=[];if("function"==typeof e)e.call(this.table).forEach((function(e){(e=t.table.rowManager.findRow(e))&&i.push(e)}));else switch(e){case!0:case"visible":i=this.table.rowManager.getVisibleRows(!0);break;case"all":i=this.table.rowManager.rows;break;case"selected":i=this.table.modules.selectRow.selectedRows;break;case"active":default:i=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],i)}},{key:"generateColumnGroupHeaders",value:function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((function(i){var n=e.processColumnGroup(i);n&&t.push(n)})),t}},{key:"processColumnGroup",value:function(e){var t=this,i=e.columns,n=0,o={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(i.length){if(o.subGroups=[],o.width=0,i.forEach((function(e){var i=t.processColumnGroup(e);i&&(o.width+=i.width,o.subGroups.push(i),i.depth>n&&(n=i.depth))})),o.depth+=n,!o.width)return!1}else{if(!this.columnVisCheck(e))return!1;o.width=1}return o}},{key:"columnVisCheck",value:function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])}},{key:"headersToExportRows",value:function(e){var t=[],i=0,n=[];function o(e,n){var a=i-n;if(void 0===t[n]&&(t[n]=[]),e.height=e.subGroups?1:a-e.depth+1,t[n].push(e),e.height>1)for(var r=1;r1)for(var s=1;si&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((function(e){var t=[];e.forEach((function(e){e?t.push(new ce(e.title,e.column.getComponent(),e.width,e.height,e.depth)):t.push(null)})),n.push(new ue("header",t))})),n}},{key:"bodyToExportRows",value:function(e){var t=this,i=[],n=[];return this.table.columnManager.columnsByIndex.forEach((function(e){t.columnVisCheck(e)&&i.push(e.getComponent())})),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),(e=e.filter((function(e){switch(e.type){case"group":return!1!==t.config.rowGroups;case"calc":return!1!==t.config.columnCalcs;case"row":return!(t.table.options.dataTree&&!1===t.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach((function(e,o){var a=e.getData(t.colVisProp),r=[],s=0;switch(e.type){case"group":s=e.level,r.push(new ce(e.key,e.getComponent(),i.length,1));break;case"calc":case"row":i.forEach((function(e){r.push(new ce(e._column.getFieldValue(a),e,1,1))})),t.table.options.dataTree&&!1!==t.config.dataTree&&(s=e.modules.dataTree.index)}n.push(new ue(e.type,r,e.getComponent(),s))})),n}},{key:"genereateTableElement",value:function(e){var t=this,i=document.createElement("table"),n=document.createElement("thead"),o=document.createElement("tbody"),a=this.lookupTableStyles(),r=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],s={};return s.rowFormatter=null!==r?r:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(s.treeElementField=this.table.modules.dataTree.elementField),s.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],s.groupHeader&&!Array.isArray(s.groupHeader)&&(s.groupHeader=[s.groupHeader]),i.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),n,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach((function(e,i){switch(e.type){case"header":n.appendChild(t.genereateHeaderElement(e,s,a));break;case"group":o.appendChild(t.genereateGroupElement(e,s,a));break;case"calc":o.appendChild(t.genereateCalcElement(e,s,a));break;case"row":var r=t.genereateRowElement(e,s,a);t.mapElementStyles(i%2&&a.evenRow?a.evenRow:a.oddRow,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),o.appendChild(r)}})),n.innerHTML&&i.appendChild(n),i.appendChild(o),this.mapElementStyles(this.table.element,i,["border-top","border-left","border-right","border-bottom"]),i}},{key:"lookupTableStyles",value:function(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e}},{key:"genereateHeaderElement",value:function(e,t,i){var n=this,o=document.createElement("tr");return e.columns.forEach((function(e){if(e){var t=document.createElement("th"),i=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,n.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),n.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?n.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&n.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),o.appendChild(t)}})),o}},{key:"genereateGroupElement",value:function(e,t,i){var n=document.createElement("tr"),o=document.createElement("td"),a=e.columns[0];return n.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?a.value=t.groupHeader[e.indent](a.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1===t.groupHeader?a.value=a.value:a.value=e.component._group.generator(a.value,e.component._group.getRowCount(),e.component._group.getData(),e.component),o.colSpan=a.width,o.innerHTML=a.value,n.classList.add("tabulator-print-table-group"),n.classList.add("tabulator-group-level-"+e.indent),a.component.isVisible()&&n.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(i.firstGroup,o,["padding-top","padding-left","padding-right","padding-bottom"]),n.appendChild(o),n}},{key:"genereateCalcElement",value:function(e,t,i){var n=this.genereateRowElement(e,t,i);return n.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n}},{key:"genereateRowElement",value:function(t,n,o){var a=this,r=document.createElement("tr");return r.classList.add("tabulator-print-table-row"),t.columns.forEach((function(s){if(s){var l=document.createElement("td"),u=s.component._column,c=s.value,h={modules:{},getValue:function(){return c},getField:function(){return u.definition.field},getElement:function(){return l},getColumn:function(){return u.getComponent()},getData:function(){return t.component.getData()},getRow:function(){return t.component},getComponent:function(){return h},column:u};if((u.definition.cssClass?u.definition.cssClass.split(" "):[]).forEach((function(e){l.classList.add(e)})),a.table.modExists("format")&&!1!==a.config.formatCells)c=a.table.modules.format.formatExportValue(h,a.colVisProp);else switch(e(c)){case"object":c=JSON.stringify(c);break;case"undefined":case"null":c="";break;default:c=c}c instanceof Node?l.appendChild(c):l.innerHTML=c,o.firstCell&&(a.mapElementStyles(o.firstCell,l,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),u.definition.align&&(l.style.textAlign=u.definition.align)),a.table.options.dataTree&&!1!==a.config.dataTree&&(n.treeElementField&&n.treeElementField==u.field||!n.treeElementField&&0==i)&&(t.component._row.modules.dataTree.controlEl&&l.insertBefore(t.component._row.modules.dataTree.controlEl.cloneNode(!0),l.firstChild),t.component._row.modules.dataTree.branchEl&&l.insertBefore(t.component._row.modules.dataTree.branchEl.cloneNode(!0),l.firstChild)),r.appendChild(l),h.modules.format&&h.modules.format.renderedCallback&&h.modules.format.renderedCallback(),n.rowFormatter&&!1!==a.config.formatCells&&n.rowFormatter(t.component)}})),r}},{key:"genereateHTMLTable",value:function(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML}},{key:"getHtml",value:function(e,t,i,n){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,n||"htmlOutput");return this.genereateHTMLTable(o)}},{key:"mapElementStyles",value:function(e,t,i){if(this.cloneTableStyle&&e&&t){var n={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var o=window.getComputedStyle(e);i.forEach((function(e){t.style[n[e]]=o.getPropertyValue(e)}))}}}}]),s}(B);he.moduleName="export";var de={"=":function(e,t,i,n){return t==e},"<":function(e,t,i,n){return t":function(e,t,i,n){return t>e},">=":function(e,t,i,n){return t>=e},"!=":function(e,t,i,n){return t!=e},regex:function(e,t,i,n){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,n){var o=e.toLowerCase().split(void 0===n.separator?" ":n.separator),a=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((function(e){a.includes(e)&&r.push(!0)})),n.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,n){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,n){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},me=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).filterList=[],i.headerFilters={},i.headerFilterColumns=[],i.prevHeaderFilterChangeCheck="",i.prevHeaderFilterChangeCheck="{}",i.changed=!1,i.registerTableOption("filterMode","local"),i.registerTableOption("initialFilter",!1),i.registerTableOption("initialHeaderFilter",!1),i.registerTableOption("headerFilterLiveFilterDelay",300),i.registerColumnOption("headerFilter"),i.registerColumnOption("headerFilterPlaceholder"),i.registerColumnOption("headerFilterParams"),i.registerColumnOption("headerFilterEmptyCheck"),i.registerColumnOption("headerFilterFunc"),i.registerColumnOption("headerFilterFuncParams"),i.registerColumnOption("headerFilterLiveFilter"),i.registerTableFunction("searchRows",i.searchRows.bind(l(i))),i.registerTableFunction("searchData",i.searchData.bind(l(i))),i.registerTableFunction("setFilter",i.userSetFilter.bind(l(i))),i.registerTableFunction("refreshFilter",i.userRefreshFilter.bind(l(i))),i.registerTableFunction("addFilter",i.userAddFilter.bind(l(i))),i.registerTableFunction("getFilters",i.getFilters.bind(l(i))),i.registerTableFunction("setHeaderFilterFocus",i.userSetHeaderFilterFocus.bind(l(i))),i.registerTableFunction("getHeaderFilterValue",i.userGetHeaderFilterValue.bind(l(i))),i.registerTableFunction("setHeaderFilterValue",i.userSetHeaderFilterValue.bind(l(i))),i.registerTableFunction("getHeaderFilters",i.getHeaderFilters.bind(l(i))),i.registerTableFunction("removeFilter",i.userRemoveFilter.bind(l(i))),i.registerTableFunction("clearFilter",i.userClearFilter.bind(l(i))),i.registerTableFunction("clearHeaderFilter",i.userClearHeaderFilter.bind(l(i))),i.registerComponentFunction("column","headerFilterFocus",i.setHeaderFilterFocus.bind(l(i))),i.registerComponentFunction("column","reloadHeaderFilter",i.reloadHeaderFilter.bind(l(i))),i.registerComponentFunction("column","getHeaderFilterValue",i.getHeaderFilterValue.bind(l(i))),i.registerComponentFunction("column","setHeaderFilterValue",i.setHeaderFilterValue.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){this.subscribe("column-init",this.initializeColumnHeaderFilter.bind(this)),this.subscribe("column-width-fit-before",this.hideHeaderFilterElements.bind(this)),this.subscribe("column-width-fit-after",this.showHeaderFilterElements.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}},{key:"tableBuilt",value:function(){var e=this;this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((function(t){var i=e.table.columnManager.findColumn(t.field);if(!i)return console.warn("Column Filter Error - No matching column found:",t.field),!1;e.setHeaderFilterValue(i,t.value)}))}},{key:"remoteFilterParams",value:function(e,t,i,n){return n.filter=this.getFilters(!0,!0),n}},{key:"userSetFilter",value:function(e,t,i,n){this.setFilter(e,t,i,n),this.refreshFilter()}},{key:"userRefreshFilter",value:function(){this.refreshFilter()}},{key:"userAddFilter",value:function(e,t,i,n){this.addFilter(e,t,i,n),this.refreshFilter()}},{key:"userSetHeaderFilterFocus",value:function(e){var t=this.table.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.setHeaderFilterFocus(t)}},{key:"userGetHeaderFilterValue",value:function(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}},{key:"userSetHeaderFilterValue",value:function(e,t){var i=this.table.columnManager.findColumn(e);if(!i)return console.warn("Column Filter Error - No matching column found:",e),!1;this.setHeaderFilterValue(i,t)}},{key:"userRemoveFilter",value:function(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}},{key:"userClearFilter",value:function(e){this.clearFilter(e),this.refreshFilter()}},{key:"userClearHeaderFilter",value:function(){this.clearHeaderFilter(),this.refreshFilter()}},{key:"searchRows",value:function(e,t,i){return this.search("rows",e,t,i)}},{key:"searchData",value:function(e,t,i){return this.search("data",e,t,i)}},{key:"initializeColumnHeaderFilter",value:function(e){var t=e.definition;t.headerFilter&&(void 0!==t.headerFilterPlaceholder&&t.field&&this.module("localize").setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),this.initializeColumn(e))}},{key:"initializeColumn",value:function(t,i){var n=this,o=t.getField();t.modules.filter={success:function(i){var a,s="input"==t.modules.filter.tagType&&"text"==t.modules.filter.attrType||"textarea"==t.modules.filter.tagType?"partial":"match",l="",u="";if(void 0===t.modules.filter.prevSuccess||t.modules.filter.prevSuccess!==i){if(t.modules.filter.prevSuccess=i,t.modules.filter.emptyFunc(i))delete n.headerFilters[o];else{switch(t.modules.filter.value=i,e(t.definition.headerFilterFunc)){case"string":r.filters[t.definition.headerFilterFunc]?(l=t.definition.headerFilterFunc,a=function(e){var n=t.definition.headerFilterFuncParams||{},o=t.getFieldValue(e);return n="function"==typeof n?n(i,o,e):n,r.filters[t.definition.headerFilterFunc](i,o,e,n)}):console.warn("Header Filter Error - Matching filter function not found: ",t.definition.headerFilterFunc);break;case"function":l=a=function(e){var n=t.definition.headerFilterFuncParams||{},o=t.getFieldValue(e);return n="function"==typeof n?n(i,o,e):n,t.definition.headerFilterFunc(i,o,e,n)}}if(!a)switch(s){case"partial":a=function(e){var n=t.getFieldValue(e);return null!=n&&String(n).toLowerCase().indexOf(String(i).toLowerCase())>-1},l="like";break;default:a=function(e){return t.getFieldValue(e)==i},l="="}n.headerFilters[o]={value:i,func:a,type:l,params:{}}}u=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==u&&(n.prevHeaderFilterChangeCheck=u,n.trackChanges(),n.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(t)}},{key:"generateHeaderFilterElement",value:function(t,i,n){var o,a,r,s,l,u,c,h=this,d=this,m=t.modules.filter.success,p=t.getField();if(t.modules.filter.headerElement&&t.modules.filter.headerElement.parentNode&&t.contentElement.removeChild(t.modules.filter.headerElement.parentNode),p){switch(t.modules.filter.emptyFunc=t.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e&&0!==e},(o=document.createElement("div")).classList.add("tabulator-header-filter"),e(t.definition.headerFilter)){case"string":d.table.modules.edit.editors[t.definition.headerFilter]?(a=d.table.modules.edit.editors[t.definition.headerFilter],"tick"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",t.definition.editor);break;case"function":a=t.definition.headerFilter;break;case"boolean":t.modules.edit&&t.modules.edit.editor?a=t.modules.edit.editor:t.definition.formatter&&d.table.modules.edit.editors[t.definition.formatter]?(a=d.table.modules.edit.editors[t.definition.formatter],"tick"!==t.definition.formatter&&"tickCross"!==t.definition.formatter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):a=d.table.modules.edit.editors.input}if(a){if(s={getValue:function(){return void 0!==i?i:""},getField:function(){return t.definition.field},getElement:function(){return o},getColumn:function(){return t.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},c="function"==typeof(c=t.definition.headerFilterParams||{})?c.call(d.table):c,!(r=a.call(this.table.modules.edit,s,(function(){}),m,(function(){}),c)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",r);p?d.langBind("headerFilters|columns|"+t.definition.field,(function(e){r.setAttribute("placeholder",void 0!==e&&e?e:d.langText("headerFilters|default"))})):d.langBind("headerFilters|default",(function(e){r.setAttribute("placeholder",e)})),r.addEventListener("click",(function(e){e.stopPropagation(),r.focus()})),r.addEventListener("focus",(function(e){var t=h.table.columnManager.element.scrollLeft;t!==h.table.rowManager.element.scrollLeft&&(h.table.rowManager.scrollHorizontal(t),h.table.columnManager.scrollHorizontal(t))})),l=!1,u=function(e){l&&clearTimeout(l),l=setTimeout((function(){m(r.value)}),d.table.options.headerFilterLiveFilterDelay)},t.modules.filter.headerElement=r,t.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",t.modules.filter.tagType=r.tagName.toLowerCase(),!1!==t.definition.headerFilterLiveFilter&&("autocomplete"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter&&("autocomplete"!==t.definition.editor&&"tickCross"!==t.definition.editor||!0!==t.definition.headerFilter)&&(r.addEventListener("keyup",u),r.addEventListener("search",u),"number"==t.modules.filter.attrType&&r.addEventListener("change",(function(e){m(r.value)})),"text"==t.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=t.modules.filter.tagType&&"select"!=t.modules.filter.tagType&&"textarea"!=t.modules.filter.tagType||r.addEventListener("mousedown",(function(e){e.stopPropagation()}))),o.appendChild(r),t.contentElement.appendChild(o),n||d.headerFilterColumns.push(t)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",t.definition.title)}},{key:"hideHeaderFilterElements",value:function(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}},{key:"showHeaderFilterElements",value:function(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}},{key:"setHeaderFilterFocus",value:function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())}},{key:"getHeaderFilterValue",value:function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())}},{key:"setHeaderFilterValue",value:function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}},{key:"reloadHeaderFilter",value:function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}},{key:"refreshFilter",value:function(){"remote"===this.table.options.filterMode?this.reloadData():this.refreshData()}},{key:"trackChanges",value:function(){this.changed=!0,this.dispatch("filter-changed")}},{key:"hasChanged",value:function(){var e=this.changed;return this.changed=!1,e}},{key:"setFilter",value:function(e,t,i,n){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:n}]),this.addFilter(e)}},{key:"addFilter",value:function(e,t,i,n){var o=this;Array.isArray(e)||(e=[{field:e,type:t,value:i,params:n}]),e.forEach((function(e){(e=o.findFilter(e))&&(o.filterList.push(e),o.changed=!0)}))}},{key:"findFilter",value:function(e){var t;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:r.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return r.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return r.filters[e.type](e.value,t[e.field],t,e.params||{})}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e}},{key:"findSubFilters",value:function(e){var t=this,i=[];return e.forEach((function(e){(e=t.findFilter(e))&&i.push(e)})),!!i.length&&i}},{key:"getFilters",value:function(e,t){var i=[];return e&&(i=this.getHeaderFilters()),t&&i.forEach((function(e){"function"==typeof e.type&&(e.type="function")})),i=i.concat(this.filtersToArray(this.filterList,t))}},{key:"filtersToArray",value:function(e,t){var i=this,n=[];return e.forEach((function(e){var o;Array.isArray(e)?n.push(i.filtersToArray(e,t)):(o={field:e.field,type:e.type,value:e.value},t&&"function"==typeof o.type&&(o.type="function"),n.push(o))})),n}},{key:"getHeaderFilters",value:function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}},{key:"removeFilter",value:function(t,i,n){var o=this;Array.isArray(t)||(t=[{field:t,type:i,value:n}]),t.forEach((function(t){var i=-1;(i="object"==e(t.field)?o.filterList.findIndex((function(e){return t===e})):o.filterList.findIndex((function(e){return t.field===e.field&&t.type===e.type&&t.value===e.value})))>-1?o.filterList.splice(i,1):console.warn("Filter Error - No matching filter type found, ignoring: ",t.type)})),this.trackChanges()}},{key:"clearFilter",value:function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}},{key:"clearHeaderFilter",value:function(){var e=this;this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((function(t){void 0!==t.modules.filter.value&&delete t.modules.filter.value,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)})),this.trackChanges()}},{key:"search",value:function(e,t,i,n){var o=this,a=[],r=[];return Array.isArray(t)||(t=[{field:t,type:i,value:n}]),t.forEach((function(e){(e=o.findFilter(e))&&r.push(e)})),this.table.rowManager.rows.forEach((function(t){var i=!0;r.forEach((function(e){o.filterRecurse(e,t.getData())||(i=!1)})),i&&a.push("data"===e?t.getData("data"):t.getComponent())})),a}},{key:"filter",value:function(e,t){var i=this,n=[],o=[];return this.subscribedExternal("dataFiltering")&&this.dispatchExternal("dataFiltering",this.getFilters()),"remote"!==this.table.options.filterMode&&(this.filterList.length||Object.keys(this.headerFilters).length)?e.forEach((function(e){i.filterRow(e)&&n.push(e)})):n=e.slice(0),this.subscribedExternal("dataFiltered")&&(n.forEach((function(e){o.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(),o)),n}},{key:"filterRow",value:function(e,t){var i=this,n=!0,o=e.getData();for(var a in this.filterList.forEach((function(e){i.filterRecurse(e,o)||(n=!1)})),this.headerFilters)this.headerFilters[a].func(o)||(n=!1);return n}},{key:"filterRecurse",value:function(e,t){var i=this,n=!1;return Array.isArray(e)?e.forEach((function(e){i.filterRecurse(e,t)&&(n=!0)})):n=e.func(t),n}}]),r}(B);me.moduleName="filter",me.filters=de;var pe={plaintext:function(e,t,i){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,i){return e.getValue()},textarea:function(e,t,i){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,i){var n,o,a,r,s=parseFloat(e.getValue()),l=t.decimal||".",u=t.thousand||",",c=t.symbol||"",h=!!t.symbolAfter,d=void 0!==t.precision?t.precision:2;if(isNaN(s))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(n=!1!==d?s.toFixed(d):s,o=(n=String(n).split("."))[0],a=n.length>1?l+n[1]:"",r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+u+"$2");return h?o+a+c:c+o+a},link:function(t,i,n){var o=t.getValue(),a=i.urlPrefix||"",r=i.download,s=o,l=document.createElement("a");if(i.labelField&&(s=t.getData()[i.labelField]),i.label)switch(e(i.label)){case"string":s=i.label;break;case"function":s=i.label(t)}if(s){if(i.urlField&&(o=t.getData()[i.urlField]),i.url)switch(e(i.url)){case"string":o=i.url;break;case"function":o=i.url(t)}return l.setAttribute("href",a+o),i.target&&l.setAttribute("target",i.target),i.download&&(r="function"==typeof r?r(t):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(s)),l}return" "},image:function(t,i,n){var o=document.createElement("img"),a=t.getValue();switch(i.urlPrefix&&(a=i.urlPrefix+t.getValue()),i.urlSuffix&&(a+=i.urlSuffix),o.setAttribute("src",a),e(i.height)){case"number":o.style.height=i.height+"px";break;case"string":o.style.height=i.height}switch(e(i.width)){case"number":o.style.width=i.width+"px";break;case"string":o.style.width=i.width}return o.addEventListener("load",(function(){t.getRow().normalizeHeight()})),o},tickCross:function(e,t,i){var n=e.getValue(),o=e.getElement(),a=t.allowEmpty,r=t.allowTruthy,s=void 0!==t.tickElement?t.tickElement:'',l=void 0!==t.crossElement?t.crossElement:'';return r&&n||!0===n||"true"===n||"True"===n||1===n||"1"===n?(o.setAttribute("aria-checked",!0),s||""):!a||"null"!==n&&""!==n&&null!=n?(o.setAttribute("aria-checked",!1),l||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var n=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",a=t.outputFormat||"dd/MM/yyyy HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",s=e.getValue();if(void 0!==n){var l=(window.DateTime||luxon.DateTime).fromFormat(s,o);return l.isValid?(t.timezone&&(l=l.shiftTimezone(t.timezone)),l.toFormat(a)):!0===r?s:"function"==typeof r?r(s):r}console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var n=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=void 0!==t.suffix&&t.suffix,s=void 0!==t.unit?t.unit:"days",l=void 0!==t.humanize&&t.humanize,u=void 0!==t.date?t.date:n.now(),c=e.getValue();if(void 0!==n){var h=n.fromFormat(c,o);if(!h.isValid)return!0===a?c:"function"==typeof a?a(c):a;if(!l)return parseInt(h.diff(u,s)[s])+(r?" "+r:"")}else console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var n=e.getValue();return void 0===t[n]?(console.warn("Missing display value for "+n),n):t[n]},star:function(e,t,i){var n=e.getValue(),o=e.getElement(),a=t&&t.stars?t.stars:5,r=document.createElement("span"),s=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",s.setAttribute("width","14"),s.setAttribute("height","14"),s.setAttribute("viewBox","0 0 512 512"),s.setAttribute("xml:space","preserve"),s.style.padding="0 1px",n=n&&!isNaN(n)?parseInt(n):0,n=Math.max(0,Math.min(n,a));for(var l=1;l<=a;l++){var u=s.cloneNode(!0);u.innerHTML=l<=n?'':'',r.appendChild(u)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",n),r},traffic:function(t,i,n){var o,a,r=this.sanitizeHTML(t.getValue())||0,s=document.createElement("span"),l=i&&i.max?i.max:100,u=i&&i.min?i.min:0,c=i&&void 0!==i.color?i.color:["red","orange","green"],h="#666666";if(!isNaN(r)&&void 0!==t.getValue()){switch(s.classList.add("tabulator-traffic-light"),a=parseFloat(r)<=l?parseFloat(r):l,a=parseFloat(a)>=u?parseFloat(a):u,o=(l-u)/100,a=Math.round((a-u)/o),e(c)){case"string":h=c;break;case"function":h=c(r);break;case"object":if(Array.isArray(c)){var d=100/c.length,m=Math.floor(a/d);m=Math.min(m,c.length-1),h=c[m=Math.max(m,0)];break}}return s.style.backgroundColor=h,s}},progress:function(t,i,n){var o,a,r,s,l,u=this.sanitizeHTML(t.getValue())||0,c=t.getElement(),h=i&&i.max?i.max:100,d=i&&i.min?i.min:0,m=i&&i.legendAlign?i.legendAlign:"center";switch(a=parseFloat(u)<=h?parseFloat(u):h,a=parseFloat(a)>=d?parseFloat(a):d,o=(h-d)/100,a=Math.round((a-d)/o),e(i.color)){case"string":r=i.color;break;case"function":r=i.color(u);break;case"object":if(Array.isArray(i.color)){var p=100/i.color.length,f=Math.floor(a/p);f=Math.min(f,i.color.length-1),f=Math.max(f,0),r=i.color[f];break}default:r="#2DC214"}switch(e(i.legend)){case"string":s=i.legend;break;case"function":s=i.legend(u);break;case"boolean":s=u;break;default:s=!1}switch(e(i.legendColor)){case"string":l=i.legendColor;break;case"function":l=i.legendColor(u);break;case"object":if(Array.isArray(i.legendColor)){p=100/i.legendColor.length,f=Math.floor(a/p);f=Math.min(f,i.legendColor.length-1),f=Math.max(f,0),l=i.legendColor[f]}break;default:l="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a);var g=document.createElement("div");g.style.display="inline-block",g.style.position="absolute",g.style.width=a+"%",g.style.backgroundColor=r,g.style.height="100%",g.setAttribute("data-max",h),g.setAttribute("data-min",d);var v=document.createElement("div");if(v.style.position="relative",v.style.width="100%",v.style.height="100%",s){var y=document.createElement("div");y.style.position="absolute",y.style.top=0,y.style.left=0,y.style.textAlign=m,y.style.width="100%",y.style.color=l,y.innerHTML=s}return n((function(){if(!(t instanceof b)){var e=document.createElement("div");e.style.position="absolute",e.style.top="4px",e.style.bottom="4px",e.style.left="4px",e.style.right="4px",c.appendChild(e),c=e}c.appendChild(v),v.appendChild(g),s&&v.appendChild(y)})),""},color:function(e,t,i){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,i){return''},buttonCross:function(e,t,i){return''},rownum:function(e,t,i){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
"},responsiveCollapse:function(e,t,i){var n=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function a(e){var t=o.element;o.open=e,t&&(o.open?(n.classList.add("open"),t.style.display=""):(n.classList.remove("open"),t.style.display="none"))}return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="+-",e.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",(function(e){e.stopImmediatePropagation(),a(!o.open)})),a(o.open),n},rowSelection:function(e,t,i){var n=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",(function(e){e.stopPropagation()})),"function"==typeof e.getRow){var a=e.getRow();a instanceof M?(o.addEventListener("change",(function(e){a.toggleSelect()})),o.checked=a.isSelected&&a.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(a,o)):o=""}else o.addEventListener("change",(function(e){n.table.modules.selectRow.selectedRows.length?n.table.deselectRow():n.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},fe=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).registerColumnOption("formatter"),i.registerColumnOption("formatterParams"),i.registerColumnOption("formatterPrint"),i.registerColumnOption("formatterPrintParams"),i.registerColumnOption("formatterClipboard"),i.registerColumnOption("formatterClipboardParams"),i.registerColumnOption("formatterHtmlOutput"),i.registerColumnOption("formatterHtmlOutputParams"),i.registerColumnOption("titleFormatter"),i.registerColumnOption("titleFormatterParams"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-format",this.formatValue.bind(this)),this.subscribe("cell-rendered",this.cellRendered.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-format",this.formatHeader.bind(this))}},{key:"initializeColumn",value:function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))}},{key:"lookupFormatter",value:function(t,i){var n={params:t.definition["formatter"+i+"Params"]||{}},o=t.definition["formatter"+i];switch(e(o)){case"string":r.formatters[o]?n.formatter=r.formatters[o]:(console.warn("Formatter Error - No such formatter found: ",o),n.formatter=r.formatters.plaintext);break;case"function":n.formatter=o;break;default:n.formatter=r.formatters.plaintext}return n}},{key:"cellRendered",value:function(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}},{key:"formatHeader",value:function(e,t,i){var n,o,a,r;return e.definition.titleFormatter?(n=this.getFormatter(e.definition.titleFormatter),a=function(t){e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i}},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,n.call(this,r,o,a)):t}},{key:"formatValue",value:function(e){var t=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}},{key:"formatExportValue",value:function(e,t){var i,n=e.column.modules.format[t];if(n){return i="function"==typeof n.params?n.params(component):n.params,n.formatter.call(this,e.getComponent(),i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}return this.formatValue(e)}},{key:"sanitizeHTML",value:function(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,(function(e){return t[e]}))}return e}},{key:"emptyToSpace",value:function(e){return null==e||""===e?" ":e}},{key:"getFormatter",value:function(t){switch(e(t)){case"string":r.formatters[t]?t=r.formatters[t]:(console.warn("Formatter Error - No such formatter found: ",t),t=r.formatters.plaintext);break;case"function":t=t;break;default:t=r.formatters.plaintext}return t}}]),r}(B);fe.moduleName="format",fe.formatters=pe;var ge=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).leftColumns=[],o.rightColumns=[],o.leftMargin=0,o.rightMargin=0,o.rightPadding=0,o.initializationMode="left",o.active=!1,o.scrollEndTimer=!1,o.registerColumnOption("frozen"),o}return o(n,[{key:"reset",value:function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0}},{key:"initialize",value:function(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-width",this.layout.bind(this)),this.subscribe("row-layout-before",this.layoutRow.bind(this)),this.subscribe("table-layout",this.layout.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("table-redraw",this.layout.bind(this))}},{key:"layoutCell",value:function(e){this.layoutElement(e.element,e.column)}},{key:"initializeColumn",value:function(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")}},{key:"frozenCheck",value:function(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen}},{key:"scrollHorizontal",value:function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout((function(){t.layout()}),100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach((function(e){"row"===e.type&&t.layoutRow(e)})),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)}},{key:"calcMargins",value:function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft}},{key:"layoutCalcRows",value:function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))}},{key:"layoutColumnPosition",value:function(e){var t=this,i=[];this.leftColumns.forEach((function(n,o){if(n.modules.frozen.margin=t._calcSpace(t.leftColumns,o)+t.table.columnManager.scrollLeft+"px",o==t.leftColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,n.parent.isGroup){var a=t.getColGroupParentElement(n);i.includes(a)||(t.layoutElement(a,n),i.push(a)),n.modules.frozen.edge&&a.classList.add("tabulator-frozen-"+n.modules.frozen.position)}else t.layoutElement(n.getElement(),n);e&&n.cells.forEach((function(e){t.layoutElement(e.getElement(!0),n)}))})),this.rightColumns.forEach((function(i,n){i.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,n+1)+"px",n==t.rightColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup?t.layoutElement(t.getColGroupParentElement(i),i):t.layoutElement(i.getElement(),i),e&&i.cells.forEach((function(e){t.layoutElement(e.getElement(!0),i)}))}))}},{key:"getColGroupParentElement",value:function(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}},{key:"layout",value:function(){var e=this;this.active&&(this.calcMargins(),this.table.rowManager.getDisplayRows().forEach((function(t){"row"===t.type&&e.layoutRow(t)})),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)}},{key:"layoutRow",value:function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach((function(i){var n=e.getCell(i);n&&t.layoutElement(n.getElement(!0),i)})),this.rightColumns.forEach((function(i){var n=e.getCell(i);n&&t.layoutElement(n.getElement(!0),i)}))}},{key:"layoutElement",value:function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}},{key:"_calcSpace",value:function(e,t){for(var i=0,n=0;n-1}},{key:"isFrozen",value:function(){return!!this.rows.length}},{key:"getRows",value:function(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}},{key:"freezeRow",value:function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.refreshData(!1,"display"),this.styleRows())}},{key:"unfreezeRow",value:function(e){this.rows.indexOf(e);e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.refreshData(!1,"display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")}},{key:"detachRow",value:function(e){var t=this.rows.indexOf(e);if(t>-1){var i=e.getElement();i.parentNode.removeChild(i),this.rows.splice(t,1)}}},{key:"styleRows",value:function(e){var t=this;this.rows.forEach((function(e,i){t.table.rowManager.styleRow(e,i)}))}}]),n}(B);ve.moduleName="frozenRows";var be=function(){function e(i){return t(this,e),this._group=i,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.table.componentFunctionBinder.handle("row",e._group,t)}})}return o(e,[{key:"getKey",value:function(){return this._group.key}},{key:"getField",value:function(){return this._group.field}},{key:"getElement",value:function(){return this._group.element}},{key:"getRows",value:function(){return this._group.getRows(!0)}},{key:"getSubGroups",value:function(){return this._group.getSubGroups(!0)}},{key:"getParentGroup",value:function(){return!!this._group.parent&&this._group.parent.getComponent()}},{key:"isVisible",value:function(){return this._group.visible}},{key:"show",value:function(){this._group.show()}},{key:"hide",value:function(){this._group.hide()}},{key:"toggle",value:function(){this._group.toggleVisibility()}},{key:"_getSelf",value:function(){return this._group}},{key:"getTable",value:function(){return this._group.groupManager.table}}]),e}(),ye=function(){function e(i,n,o,a,r,s,l){t(this,e),this.groupManager=i,this.parent=n,this.key=a,this.level=o,this.field=r,this.hasSubGroups=o-1?i?this.rows.splice(o+1,0,e):this.rows.splice(o,0,e):i?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}},{key:"scrollHeader",value:function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)}))}},{key:"getRowIndex",value:function(e){}},{key:"conformRowData",value:function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e}},{key:"removeRow",value:function(e){var t=this.rows.indexOf(e),i=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(i.parentNode&&i.parentNode.removeChild(i),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))}},{key:"removeGroup",value:function(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))}},{key:"getHeadersAndRows",value:function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach((function(i){t=t.concat(i.getHeadersAndRows(e))})):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t}},{key:"getData",value:function(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((function(e){i.push(e.getData(t||"data"))})),i}},{key:"getRowCount",value:function(){var e=0;return this.groupList.length?this.groupList.forEach((function(t){e+=t.getRowCount()})):e=this.rows.length,e}},{key:"toggleVisibility",value:function(){this.visible?this.hide():this.show()}},{key:"hide",value:function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((function(e){e.getHeadersAndRows().forEach((function(e){e.detachElement()}))})):this.rows.forEach((function(e){var t=e.getElement();t.parentNode.removeChild(t)})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}},{key:"show",value:function(){if(this.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.getElement();this.groupList.length?this.groupList.forEach((function(t){t.getHeadersAndRows().forEach((function(t){var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((function(t){var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}},{key:"_visSet",value:function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach((function(t){e.push(t.getData())})),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))}},{key:"getRowGroup",value:function(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var n=i.getRowGroup(e);n&&(t=n)})):this.rows.find((function(t){return t===e}))&&(t=this),t}},{key:"getSubGroups",value:function(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"getRows",value:function(e){var t=[];return this.rows.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"generateGroupHeaderContents",value:function(){var e=[];for(this.rows.forEach((function(t){e.push(t.getData())})),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)}},{key:"getPath",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}},{key:"getElement",value:function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;en.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),this.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],this.langBind("groups|item",(function(t,i){e.headerGenerator[0]=function(e,n,o){return(void 0===e?"":e)+"("+n+" "+(1===n?t:i.groups.items)+")"}})),this.groupIDLookups=[],Array.isArray(t)||t)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs)this.table.columnManager.getRealColumns().forEach((function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(t)||(t=[t]),t.forEach((function(t,i){var n,o;n="function"==typeof t?t:(o=e.table.columnManager.getColumnByField(t))?function(e){return o.getFieldValue(e)}:function(e){return e[t]},e.groupIDLookups.push({field:"function"!=typeof t&&t,func:n,values:!!e.allowedValues&&e.allowedValues[i]})})),i&&(Array.isArray(i)||(i=[i]),i.forEach((function(e){})),this.startOpen=i),n&&(this.headerGenerator=Array.isArray(n)?n:[n]),this.table.options.groupUpdateOnCellEdit&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("row-data-changed",this.reassignRowToGroup.bind(this),0)),this.subscribe("row-deleting",this.rowDeleting.bind(this)),this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("scroll-horizontal",this.scrollHeaders.bind(this)),this.subscribe("rows-wipe",this.wipe.bind(this)),this.subscribe("rows-added",this.rowsUpdated.bind(this)),this.subscribe("row-moving",this.rowMoving.bind(this)),this.subscribe("row-adding-index",this.rowAddingIndex.bind(this)),this.subscribe("rows-sample",this.rowSample.bind(this)),this.subscribe("render-virtual-fill",this.virtualRenderFill.bind(this)),this.registerDisplayHandler(this.displayHandler,20),this.initialized=!0}}},{key:"rowSample",value:function(e,t){var i=this.getGroups(!1)[0];return t.push(i.getRows(!1)[0]),t}},{key:"virtualRenderFill",value:function(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();t=t.filter((function(e){return"group"!==e.type})),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}},{key:"rowAddingIndex",value:function(e,t,i){this.assignRowToGroup(e);var n=e.modules.group.rows;return n.length>1&&(!t||t&&-1==n.indexOf(t)?i?n[0]!==e&&(t=n[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):n[n.length-1]!==e&&(t=n[n.length-1],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)),t}},{key:"trackChanges",value:function(){this.dispatch("group-changed")}},{key:"setGroupBy",value:function(e){this.table.options.groupBy=e,this.initialize(),this.refreshData(!1,"display"),this.trackChanges()}},{key:"setGroupValues",value:function(e){this.table.options.groupValues=e,this.initialize(),this.refreshData(!1,"display"),this.trackChanges()}},{key:"setGroupStartOpen",value:function(e){this.table.options.groupStartOpen=e,this.initialize(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}},{key:"setGroupHeader",value:function(e){this.table.options.groupHeader=e,this.initialize(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}},{key:"userGetGroups",value:function(e){return this.getGroups(!0)}},{key:"userGetGroupedData",value:function(){return this.table.options.groupBy?this.getGroupedData():this.getData()}},{key:"rowGetGroup",value:function(e){return!!e.modules.group&&e.modules.group.getComponent()}},{key:"rowMoving",value:function(e,t,i){!i&&t instanceof ye&&(t=this.table.rowManager.prevDisplayRow(e)||t);var n=t instanceof ye?t:t.modules.group,o=e instanceof ye?e:e.modules.group;n===o?this.table.rowManager.moveRowInArray(n.rows,e,t,i):(o&&o.removeRow(e),n.insertRow(e,t,i))}},{key:"rowDeleting",value:function(e){e.modules.group&&e.modules.group.removeRow(e)}},{key:"rowsUpdated",value:function(e){this.updateGroupRows(!0)}},{key:"cellUpdated",value:function(e){this.reassignRowToGroup(e.row)}},{key:"setDisplayIndex",value:function(e){this.displayIndex=e}},{key:"getDisplayIndex",value:function(){return this.displayIndex}},{key:"getRows",value:function(e){return this.groupIDLookups.length?(Object.keys(this.groups).length||(this.dispatchExternal("dataGrouping"),this.generateGroups(e),this.subscribedExternal("dataGrouped")&&this.dispatchExternal("dataGrouped",this.getGroups(!0))),this.updateGroupRows()):e.slice(0)}},{key:"getGroups",value:function(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}},{key:"getChildGroups",value:function(e){var t=this,i=[];return e||(e=this),e.groupList.forEach((function(e){e.groupList.length?i=i.concat(t.getChildGroups(e)):i.push(e)})),i}},{key:"wipe",value:function(){this.groupList.forEach((function(e){e.wipe()}))}},{key:"pullGroupListData",value:function(e){var t=this,i=[];return e.forEach((function(e){var n={level:0,rowCount:0,headerContent:""},o=[];e.hasSubGroups?(o=t.pullGroupListData(e.groupList),n.level=e.level,n.rowCount=o.length-e.groupList.length,n.headerContent=e.generator(e.key,n.rowCount,e.rows,e),i.push(n),i=i.concat(o)):(n.level=e.level,n.headerContent=e.generator(e.key,e.rows.length,e.rows,e),n.rowCount=e.getRows().length,i.push(n),e.getRows().forEach((function(e){i.push(e.getData("data"))})))})),i}},{key:"getGroupedData",value:function(){return this.pullGroupListData(this.groupList)}},{key:"getRowGroup",value:function(e){var t=!1;return this.groupList.forEach((function(i){var n=i.getRowGroup(e);n&&(t=n)})),t}},{key:"countGroups",value:function(){return this.groupList.length}},{key:"generateGroups",value:function(e){var t=this,i=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((function(e){t.createGroup(e,0,i)})),e.forEach((function(e){t.assignRowToExistingGroup(e,i)}))):e.forEach((function(e){t.assignRowToGroup(e,i)}))}},{key:"createGroup",value:function(e,t,i){var n,o=t+"_"+e;i=i||[],n=new ye(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=n,this.groupList.push(n)}},{key:"assignRowToExistingGroup",value:function(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}},{key:"assignRowToGroup",value:function(e,t){var i=this.groupIDLookups[0].func(e.getData()),n=!this.groups["0_"+i];return n&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!n}},{key:"reassignRowToGroup",value:function(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),n=this.getExpectedPath(e);i.length==n.length&&i.every((function(e,t){return e===n[t]}))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}},{key:"getExpectedPath",value:function(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((function(e){t.push(e.func(i))})),t}},{key:"updateGroupRows",value:function(e){var t=[];return this.groupList.forEach((function(e){t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0,this.displayHandler),t}},{key:"scrollHeaders",value:function(e){"virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((function(t){t.scrollHeader(e)}))}},{key:"removeGroup",value:function(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))}}]),n}(B);we.moduleName="groupRows";var Ce=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).history=[],o.index=-1,o.registerTableOption("history",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.history&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("cell-delete",this.clearComponentHistory.bind(this)),this.subscribe("row-delete",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clear.bind(this)),this.subscribe("row-added",this.rowAdded.bind(this)),this.subscribe("row-move",this.rowMoved.bind(this))),this.registerTableFunction("undo",this.undo.bind(this)),this.registerTableFunction("redo",this.redo.bind(this)),this.registerTableFunction("getHistoryUndoSize",this.getHistoryUndoSize.bind(this)),this.registerTableFunction("getHistoryRedoSize",this.getHistoryRedoSize.bind(this)),this.registerTableFunction("clearHistory",this.clear.bind(this))}},{key:"rowMoved",value:function(e,t,i){this.action("rowMove",e,{posFrom:this.table.rowManager.getRowPosition(e),posTo:this.table.rowManager.getRowPosition(t),to:t,after:i})}},{key:"rowAdded",value:function(e,t,i,n){this.action("rowAdd",e,{data:t,pos:i,index:n})}},{key:"rowDeleted",value:function(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup().rows).indexOf(e))&&(t=i[t-1]):(t=e.table.rowManager.getRowIndex(e))&&(t=e.table.rowManager.rows[t-1]),this.history.action("rowDelete",e,{data:e.getData(),pos:!t,index:t})}},{key:"cellUpdated",value:function(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}},{key:"clear",value:function(){this.history=[],this.index=-1}},{key:"action",value:function(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}},{key:"getHistoryUndoSize",value:function(){return this.index+1}},{key:"getHistoryRedoSize",value:function(){return this.history.length-(this.index+1)}},{key:"clearComponentHistory",value:function(e){var t=this.history.findIndex((function(t){return t.component===e}));t>-1&&(this.history.splice(t,1),t<=this.index&&this.index--,this.clearComponentHistory(e))}},{key:"undo",value:function(){if(this.index>-1){var e=this.history[this.index];return n.undoers[e.type].call(this,e),this.index--,this.dispatchExternal("historyUndo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1}},{key:"redo",value:function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return n.redoers[e.type].call(this,e),this.dispatchExternal("historyRedo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1}},{key:"_rebindRow",value:function(e,t){this.history.forEach((function(i){if(i.component instanceof Row)i.component===e&&(i.component=t);else if(i.component instanceof Cell&&i.component.row===e){var n=i.component.column.getField();n&&(i.component=t.getCell(n))}}))}}]),n}(B);Ce.moduleName="history",Ce.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},Ce.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}};var Ee=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).fieldIndex=[],i.hasIndex=!1,i}return o(r,[{key:"initialize",value:function(){this.subscribe("table-building",this.tableElementCheck.bind(this))}},{key:"tableElementCheck",value:function(){"TABLE"===this.table.element.tagName&&this.parseTable()}},{key:"parseTable",value:function(){var t=this.table.element,i=this.table.options,n=(i.columns,t.getElementsByTagName("th")),o=t.getElementsByTagName("tbody")[0],a=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),o=o?o.getElementsByTagName("tr"):[],this._extractOptions(t,i),n.length?this._extractHeaders(n,o):this._generateBlankHeaders(n,o);for(var r=0;r-1&&e.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}},{key:"clearBindings",value:function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}},{key:"checkBinding",value:function(e,t){var i=this,n=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((function(e){-1==i.pressedKeys.indexOf(e)&&(n=!1)})),n&&t.action.call(this,e),!0)}}]),r}(B);Re.moduleName="keybindings",Re.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},Re.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i>=0?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,i=t.scrollTop+t.element.clientHeight,n=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=n?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){this.dispatch("keybinding-nav-prev",e)},navNext:function(e){this.dispatch("keybinding-nav-next",e)},navLeft:function(e){this.dispatch("keybinding-nav-left",e)},navRight:function(e){this.dispatch("keybinding-nav-right",e)},navUp:function(e){this.dispatch("keybinding-nav-up",e)},navDown:function(e){this.dispatch("keybinding-nav-down",e)},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}};var xe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).menuElements=[],o.blurEvent=o.hideMenu.bind(l(o)),o.escEvent=o.escMenu.bind(l(o)),o.nestedMenuBlock=!1,o.positionReversedX=!1,o.registerTableOption("rowContextMenu",!1),o.registerTableOption("rowClickMenu",!1),o.registerTableOption("groupContextMenu",!1),o.registerTableOption("groupClickMenu",!1),o.registerColumnOption("headerContextMenu"),o.registerColumnOption("headerMenu"),o.registerColumnOption("contextMenu"),o.registerColumnOption("clickMenu"),o}return o(n,[{key:"initialize",value:function(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this))}},{key:"layoutCell",value:function(e){(e.column.definition.contextMenu||e.column.definition.clickMenu)&&this.initializeCell(e)}},{key:"initializeColumn",value:function(e){var t=e.definition;(t.headerContextMenu||t.headerClickMenu||t.headerMenu)&&this.initializeColumnHeader(e)}},{key:"initializeColumnHeader",value:function(e){var t,i=this;e.definition.headerContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.definition.headerContextMenu)),this.tapHold(e,e.definition.headerContextMenu)),e.definition.headerMenu&&((t=document.createElement("span")).classList.add("tabulator-header-menu-button"),t.innerHTML="⋮",t.addEventListener("click",(function(t){t.stopPropagation(),t.preventDefault(),i.LoadMenuEvent(e,e.definition.headerMenu,t)})),e.titleElement.insertBefore(t,e.titleElement.firstChild))}},{key:"LoadMenuEvent",value:function(e,t,i){t="function"==typeof t?t.call(this.table,e.getComponent(),i):t,this.loadMenu(i,e,t)}},{key:"tapHold",value:function(e,t){var i=this,n=e.getElement(),o=null,a=!1;n.addEventListener("touchstart",(function(n){clearTimeout(o),a=!1,o=setTimeout((function(){clearTimeout(o),o=null,a=!0,i.LoadMenuEvent(e,t,n)}),1e3)}),{passive:!0}),n.addEventListener("touchend",(function(e){clearTimeout(o),o=null,a&&e.preventDefault()}))}},{key:"initializeCell",value:function(e){e.column.definition.contextMenu&&(e.getElement(!0).addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.column.definition.contextMenu)),this.tapHold(e,e.column.definition.contextMenu)),e.column.definition.clickMenu&&e.getElement(!0).addEventListener("click",this.LoadMenuEvent.bind(this,e,e.column.definition.clickMenu))}},{key:"initializeRow",value:function(e){this.table.options.rowContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.rowContextMenu)),this.tapHold(e,this.table.options.rowContextMenu)),this.table.options.rowClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.rowClickMenu))}},{key:"initializeGroup",value:function(e){this.table.options.groupContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.groupContextMenu)),this.tapHold(e,this.table.options.groupContextMenu)),this.table.options.groupClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.groupClickMenu))}},{key:"loadMenu",value:function(e,t,i,n){var o=this,a=!(e instanceof MouseEvent),r=document.createElement("div");if(r.classList.add("tabulator-menu"),a||e.preventDefault(),i&&i.length){if(!n){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout((function(){o.nestedMenuBlock=!1}),100);this.hideMenu(),this.menuElements=[]}i.forEach((function(e){var i=document.createElement("div"),n=e.label,a=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof n&&(n=n.call(o.table,t.getComponent())),n instanceof Node?i.appendChild(n):i.innerHTML=n,"function"==typeof a&&(a=a.call(o.table,t.getComponent())),a?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(function(e){e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(function(n){n.stopPropagation(),o.hideOldSubMenus(r),o.loadMenu(n,t,e.menu,i)})):e.action&&i.addEventListener("click",(function(i){e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),r.appendChild(i)})),r.addEventListener("click",(function(e){o.hideMenu()})),this.menuElements.push(r),this.positionMenu(r,n,a,e)}}},{key:"hideOldSubMenus",value:function(e){var t=this.menuElements.indexOf(e);if(t>-1)for(var i=this.menuElements.length-1;i>t;i--){var n=this.menuElements[i];n.parentNode&&n.parentNode.removeChild(n),this.menuElements.pop()}}},{key:"positionMenu",value:function(e,t,i,n){var o,a,r,s=this,l=Math.max(document.body.offsetHeight,window.innerHeight);t?(o=(r=C.elOffset(t)).left+t.offsetWidth,a=r.top-1):(o=i?n.touches[0].pageX:n.pageX,a=i?n.touches[0].pageY:n.pageY,this.positionReversedX=!1),e.style.top=a+"px",e.style.left=o+"px",setTimeout((function(){s.table.rowManager.element.addEventListener("scroll",s.blurEvent),document.body.addEventListener("click",s.blurEvent),document.body.addEventListener("contextmenu",s.blurEvent),window.addEventListener("resize",s.blurEvent),document.body.addEventListener("keydown",s.escEvent)}),100),document.body.appendChild(e),a+e.offsetHeight>=l&&(e.style.top="",e.style.bottom=t?l-r.top-t.offsetHeight-1+"px":l-a+"px"),(o+e.offsetWidth>=document.body.offsetWidth||this.positionReversedX)&&(e.style.left="",e.style.right=t?document.documentElement.offsetWidth-r.left+"px":document.documentElement.offsetWidth-o+"px",this.positionReversedX=!0)}},{key:"isOpen",value:function(){return!!this.menuElements.length}},{key:"escMenu",value:function(e){27==e.keyCode&&this.hideMenu()}},{key:"hideMenu",value:function(){this.menuElements.forEach((function(e){e.parentNode&&e.parentNode.removeChild(e)})),document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent)}}]),n}(B);xe.moduleName="menu";var Te=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).placeholderElement=o.createPlaceholderElement(),o.hoverElement=!1,o.checkTimeout=!1,o.checkPeriod=250,o.moving=!1,o.toCol=!1,o.toColAfter=!1,o.startX=0,o.autoScrollMargin=40,o.autoScrollStep=5,o.autoScrollTimeout=!1,o.touchMove=!1,o.moveHover=o.moveHover.bind(l(o)),o.endMove=o.endMove.bind(l(o)),o.registerTableOption("movableColumns",!1),o}return o(n,[{key:"createPlaceholderElement",value:function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}},{key:"initialize",value:function(){this.subscribe("column-init",this.initializeColumn.bind(this))}},{key:"initializeColumn",value:function(e){var t,i=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===i.moving.parent&&((i.touchMove?n.touches[0].pageX:n.pageX)-C.elOffset(t).left+i.table.columnManager.element.scrollLeft>e.getWidth()/2?i.toCol===e&&i.toColAfter||(t.parentNode.insertBefore(i.placeholderElement,t.nextSibling),i.moveColumn(e,!0)):(i.toCol!==e||i.toColAfter)&&(t.parentNode.insertBefore(i.placeholderElement,t),i.moveColumn(e,!1)))}.bind(i),t.addEventListener("mousedown",(function(t){i.touchMove=!1,1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),i.bindTouchEvents(e)),e.modules.moveColumn=n}},{key:"bindTouchEvents",value:function(e){var t,i,n,o,a,r,s=this,l=e.getElement(),u=!1;l.addEventListener("touchstart",(function(l){s.checkTimeout=setTimeout((function(){s.touchMove=!0,t=e.nextColumn(),n=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,a=0,r=0,u=!1,s.startMove(l,e)}),s.checkPeriod)}),{passive:!0}),l.addEventListener("touchmove",(function(l){var c,h;s.moving&&(s.moveHover(l),u||(u=l.touches[0].pageX),(c=l.touches[0].pageX-u)>0?t&&c-a>n&&(h=t)!==e&&(u=l.touches[0].pageX,h.getElement().parentNode.insertBefore(s.placeholderElement,h.getElement().nextSibling),s.moveColumn(h,!0)):i&&-c-r>o&&(h=i)!==e&&(u=l.touches[0].pageX,h.getElement().parentNode.insertBefore(s.placeholderElement,h.getElement()),s.moveColumn(h,!1)),h&&(t=h.nextColumn(),a=n,n=t?t.getWidth()/2:0,i=h.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),l.addEventListener("touchend",(function(e){s.checkTimeout&&clearTimeout(s.checkTimeout),s.moving&&s.endMove(e)}))}},{key:"startMove",value:function(e,t){var i=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-C.elOffset(i).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}},{key:"_bindMouseMove",value:function(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}},{key:"_unbindMouseMove",value:function(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}},{key:"moveColumn",value:function(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var n=e.getElement(!0);n.parentNode&&n.parentNode.insertBefore(i[t].getElement(),n.nextSibling)})):e.getCells().forEach((function(e,t){var n=e.getElement(!0);n.parentNode&&n.parentNode.insertBefore(i[t].getElement(),n)}))}},{key:"endMove",value:function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))}},{key:"moveHover",value:function(e){var t,i=this,n=this.table.columnManager.getElement(),o=n.scrollLeft,a=(this.touchMove?e.touches[0].pageX:e.pageX)-C.elOffset(n).left+o;this.hoverElement.style.left=a-this.startX+"px",a-oe.getHeight()/2?t.toRow===e&&t.toRowAfter||((n=e.getElement()).parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(n=e.getElement()).previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=i}},{key:"initializeRow",value:function(e){var t,i=this,n={};n.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),n.mousemove=function(t){var n=e.getElement();t.pageY-C.elOffset(n).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||(n.parentNode.insertBefore(i.placeholderElement,n.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(n.parentNode.insertBefore(i.placeholderElement,n),i.moveRow(e,!1))}.bind(i),this.hasHandle||((t=e.getElement()).addEventListener("mousedown",(function(t){1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=n}},{key:"initializeColumn",value:function(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}},{key:"initializeCell",value:function(e){if(e.column.definition.rowHandle&&!1!==this.table.options.movableRows){var t=this,i=e.getElement(!0);i.addEventListener("mousedown",(function(i){1===i.which&&(t.checkTimeout=setTimeout((function(){t.startMove(i,e.row)}),t.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)})),this.bindTouchEvents(e.row,i)}}},{key:"bindTouchEvents",value:function(e,t){var i,n,o,a,r,s,l=this,u=!1;t.addEventListener("touchstart",(function(t){l.checkTimeout=setTimeout((function(){l.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,n=e.prevRow(),a=n?n.getHeight()/2:0,r=0,s=0,u=!1,l.startMove(t,e)}),l.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(function(t){var c,h;l.moving&&(t.preventDefault(),l.moveHover(t),u||(u=t.touches[0].pageY),(c=t.touches[0].pageY-u)>0?i&&c-r>o&&(h=i)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveRow(h,!0)):n&&-c-s>a&&(h=n)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveRow(h,!1)),h&&(i=h.nextRow(),r=o,o=i?i.getHeight()/2:0,n=h.prevRow(),s=a,a=n?n.getHeight()/2:0))})),t.addEventListener("touchend",(function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&(l.endMove(e),l.touchMove=!1)}))}},{key:"_bindMouseMove",value:function(){this.table.rowManager.getDisplayRows().forEach((function(e){("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}},{key:"_unbindMouseMove",value:function(){this.table.rowManager.getDisplayRows().forEach((function(e){("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}},{key:"startMove",value:function(e,t){var i=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i)),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)}},{key:"setStartPosition",value:function(e,t){var i,n,o=this.touchMove?e.touches[0].pageX:e.pageX,a=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(n=i.getBoundingClientRect(),this.startX=n.left-o+window.pageXOffset,this.startY=n.top-a+window.pageYOffset):this.startY=a-i.getBoundingClientRect().top}},{key:"endMove",value:function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))}},{key:"moveRow",value:function(e,t){this.toRow=e,this.toRowAfter=t}},{key:"moveHover",value:function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}},{key:"moveHoverTable",value:function(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=n-this.startY+"px"}},{key:"moveHoverConnections",value:function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"}},{key:"elementRowDrop",value:function(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}},{key:"connectToTables",value:function(e){var t,i=this;this.connectionSelectorsTables&&(t=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStart",t),this.commsSend(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach((function(e){"string"==typeof e?i.connectionElements=i.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):i.connectionElements.push(e)})),this.connectionElements.forEach((function(e){var t=function(t){i.elementRowDrop(t,e,i.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}},{key:"disconnectFromTables",value:function(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}},{key:"connect",value:function(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)})),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStart",t,e),!0)}},{key:"disconnect",value:function(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)})),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStop",e)):console.warn("Move Row Error - trying to disconnect from non connected table")}},{key:"dropComplete",value:function(t,i,n){var o=!1;if(n){switch(e(this.table.options.movableRowsSender)){case"string":o=this.senders[this.table.options.movableRowsSender];break;case"function":o=this.table.options.movableRowsSender}o?o.call(this,this.moving.getComponent(),i?i.getComponent():void 0,t):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),i?i.getComponent():void 0,t)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),i?i.getComponent():void 0,t);this.endMove()}},{key:"tableRowDrop",value:function(t,i){var n=!1,o=!1;switch(t.stopImmediatePropagation(),e(this.table.options.movableRowsReceiver)){case"string":n=this.receivers[this.table.options.movableRowsReceiver];break;case"function":n=this.table.options.movableRowsReceiver}n?o=n.call(this,this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),o?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),i?i.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:i,success:o})}},{key:"commsReceived",value:function(e,t,i){switch(t){case"connect":return this.connect(e,i.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,i.row,i.success)}}}]),r}(B);Me.prototype.receivers={insert:function(e,t,i){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,i){return this.table.addRow(e.getData()),!0},update:function(e,t,i){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,i){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},Me.prototype.senders={delete:function(e,t,i){e.delete()}},Me.moduleName="moveRow";var Le=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).allowedTypes=["","data","edit","clipboard"],i.enabled=!0,i.registerColumnOption("mutator"),i.registerColumnOption("mutatorParams"),i.registerColumnOption("mutatorData"),i.registerColumnOption("mutatorDataParams"),i.registerColumnOption("mutatorEdit"),i.registerColumnOption("mutatorEditParams"),i.registerColumnOption("mutatorClipboard"),i.registerColumnOption("mutatorClipboardParams"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-value-changing",this.transformCell.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-init-before",this.rowDataChanged.bind(this)),this.subscribe("row-data-changing",this.rowDataChanged.bind(this))}},{key:"rowDataChanged",value:function(e,t,i){return this.transformRow(t,"data",i)}},{key:"initializeColumn",value:function(e){var t=this,i=!1,n={};this.allowedTypes.forEach((function(o){var a,r="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));e.definition[r]&&(a=t.lookupMutator(e.definition[r]))&&(i=!0,n[r]={mutator:a,params:e.definition[r+"Params"]||{}})})),i&&(e.modules.mutate=n)}},{key:"lookupMutator",value:function(t){var i=!1;switch(e(t)){case"string":r.mutators[t]?i=r.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":i=t}return i}},{key:"transformRow",value:function(e,t,i){var n,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((function(a){var r,s,l;a.modules.mutate&&(r=a.modules.mutate[o]||a.modules.mutate.mutator||!1)&&(n=a.getFieldValue(void 0!==i?i:e),"data"!=t&&void 0===n||(l=a.getComponent(),s="function"==typeof r.params?r.params(n,e,t,l):r.params,a.setFieldValue(e,r.mutator(n,e,t,s,l))))})),e}},{key:"transformCell",value:function(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,n={};if(i)return n=Object.assign(n,e.row.getData()),e.column.setFieldValue(n,t),i.mutator(t,n,"edit",i.params,e.getComponent())}return t}},{key:"enable",value:function(){this.enabled=!0}},{key:"disable",value:function(){this.enabled=!1}}]),r}(B);Le.moduleName="mutator",Le.mutators={};var De=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).mode="local",o.progressiveLoad=!1,o.size=0,o.page=1,o.count=5,o.max=1,o.displayIndex=0,o.initialLoad=!0,o.dataChanging=!1,o.pageSizes=[],o.dataReceivedNames={},o.dataSentNames={},o.registerTableOption("pagination",!1),o.registerTableOption("paginationMode","local"),o.registerTableOption("paginationSize",!1),o.registerTableOption("paginationInitialPage",1),o.registerTableOption("paginationButtonCount",5),o.registerTableOption("paginationSizeSelector",!1),o.registerTableOption("paginationElement",!1),o.registerTableOption("paginationAddRow","page"),o.registerTableOption("progressiveLoad",!1),o.registerTableOption("progressiveLoadDelay",0),o.registerTableOption("progressiveLoadScrollMargin",0),o.registerTableFunction("setMaxPage",o.setMaxPage.bind(l(o))),o.registerTableFunction("setPage",o.setPage.bind(l(o))),o.registerTableFunction("setPageToRow",o.userSetPageToRow.bind(l(o))),o.registerTableFunction("setPageSize",o.userSetPageSize.bind(l(o))),o.registerTableFunction("getPageSize",o.getPageSize.bind(l(o))),o.registerTableFunction("previousPage",o.previousPage.bind(l(o))),o.registerTableFunction("nextPage",o.nextPage.bind(l(o))),o.registerTableFunction("getPage",o.getPage.bind(l(o))),o.registerTableFunction("getPageMax",o.getPageMax.bind(l(o))),o.registerComponentFunction("row","pageTo",o.setPageToRow.bind(l(o))),o}return o(n,[{key:"initialize",value:function(){this.table.options.pagination?(this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("row-adding-position",this.rowAddingPosition.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),"remote"===this.table.options.paginationMode&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this))),this.table.options.progressiveLoad&&console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"),this.registerDisplayHandler(this.restOnRenderBefore.bind(this),40),this.registerDisplayHandler(this.getRows.bind(this),50),this.createElements(),this.initializePaginator()):this.table.options.progressiveLoad&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.initializeProgressive(this.table.options.progressiveLoad),"scroll"===this.table.options.progressiveLoad&&this.subscribe("scroll-vertical",this.scrollVertical.bind(this)))}},{key:"rowAddingPosition",value:function(e,t){var i,n=this.table.rowManager,o=n.getDisplayRows();return t?o.length?i=o[0]:n.activeRows.length&&(i=n.activeRows[n.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.lengththis.max&&(this.page=this.max)}},{key:"reset",value:function(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1)}},{key:"setMaxPage",value:function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}},{key:"setPage",value:function(e){switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return(e=parseInt(e))>0&&e<=this.max||"local"!==this.mode?(this.page=e,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Requested page is out of range of 1 - "+this.max+":",e),Promise.reject())}},{key:"setPageToRow",value:function(e){var t=this.table.rowManager.getDisplayRows(this.displayIndex-1).indexOf(e);if(t>-1){var i=!0===this.size?1:Math.ceil((t+1)/this.size);return this.setPage(i)}return console.warn("Pagination Error - Requested row is not visible"),Promise.reject()}},{key:"setPageSize",value:function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}},{key:"_setPageButtons",value:function(){for(var e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&o<=this.max&&this.pagesElement.appendChild(this._generatePageButton(o));this.footerRedraw()}},{key:"_generatePageButton",value:function(e){var t=this,i=document.createElement("button");return i.classList.add("tabulator-page"),e==this.page&&i.classList.add("active"),i.setAttribute("type","button"),i.setAttribute("role","button"),this.langBind("pagination|page_title",(function(t){i.setAttribute("aria-label",t+" "+e),i.setAttribute("title",t+" "+e)})),i.setAttribute("data-page",e),i.textContent=e,i.addEventListener("click",(function(i){t.setPage(e)})),i}},{key:"previousPage",value:function(){return this.page>1?(this.page--,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Previous page would be less than page 1:",0),Promise.reject())}},{key:"nextPage",value:function(){return this.page-1&&(o=o.substr(r),(i=o.indexOf(";"))>-1&&(o=o.substr(0,i)),n=o.replace(a+"=","")),!!n&&JSON.parse(n)}},Fe={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var n=new Date;n.setDate(n.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+n.toUTCString()}},Pe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).mode="",o.id="",o.defWatcherBlock=!1,o.config={},o.readFunc=!1,o.writeFunc=!1,o.registerTableOption("persistence",!1),o.registerTableOption("persistenceID",""),o.registerTableOption("persistenceMode",!0),o.registerTableOption("persistenceReaderFunc",!1),o.registerTableOption("persistenceWriterFunc",!1),o}return o(n,[{key:"localStorageTest",value:function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}},{key:"initialize",value:function(){if(this.table.options.persistence){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:n.readers[this.table.options.persistenceReaderFunc]?this.readFunc=n.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):n.readers[this.mode]?this.readFunc=n.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:n.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=n.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):n.writers[this.mode]?this.writeFunc=n.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader)),this.config.columns&&(this.table.options.columns=this.load("columns",this.table.options.columns),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-show",this.save.bind(this,"columns")),this.subscribe("column-hide",this.save.bind(this,"columns")),this.subscribe("column-moved",this.save.bind(this,"columns")),this.subscribe("table-built",this.tableBuilt.bind(this),0)),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("filter-changed",this.eventSave.bind(this,"filter")),this.subscribe("sort-changed",this.eventSave.bind(this,"sort")),this.subscribe("group-changed",this.eventSave.bind(this,"group")),this.subscribe("page-changed",this.eventSave.bind(this,"page")),this.subscribe("column-resized",this.eventSave.bind(this,"columns")),this.subscribe("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}},{key:"eventSave",value:function(e){this.config[e]&&this.save(e)}},{key:"tableBuilt",value:function(){var e,t;this.table.options;this.config.sort&&!1==!(e=this.load("sort"))&&(this.table.initialSort=e),this.config.filter&&!1==!(t=this.load("filter"))&&(this.table.initialFilter=t)}},{key:"tableRedraw",value:function(e){e&&this.config.columns&&this.save("columns")}},{key:"getColumnLayout",value:function(){return this.parseColumns(this.table.columnManager.getColumns())}},{key:"setColumnLayout",value:function(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e)),!0}},{key:"initializeColumn",value:function(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((function(e){var i=Object.getOwnPropertyDescriptor(t,e),n=t[e];i&&Object.defineProperty(t,e,{set:function(e){n=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),n}})})),this.defWatcherBlock=!1)}},{key:"load",value:function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}},{key:"retreiveData",value:function(e){return!!this.readFunc&&this.readFunc(this.id,e)}},{key:"mergeDefinition",value:function(e,t){var i=this,n=[];return(t=t||[]).forEach((function(t,o){var a,r=i._findColumn(e,t);r&&(!0===i.config.columns||null==i.config.columns?(a=Object.keys(r)).push("width"):a=i.config.columns,a.forEach((function(e){"columns"!==e&&void 0!==t[e]&&(r[e]=t[e])})),r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),n.push(r))})),e.forEach((function(e,o){i._findColumn(t,e)||(n.length>o?n.splice(o,0,e):n.push(e))})),n}},{key:"_findColumn",value:function(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find((function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}}))}},{key:"save",value:function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)}},{key:"validateSorters",value:function(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}},{key:"getGroupConfig",value:function(){var e={};return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e}},{key:"getPageConfig",value:function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e}},{key:"parseColumns",value:function(e){var t=this,i=[],n=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((function(e){var o,a={},r=e.getDefinition();e.isGroup?(a.title=r.title,a.columns=t.parseColumns(e.getColumns())):(a.field=e.getField(),!0===t.config.columns||null==t.config.columns?(o=Object.keys(r)).push("width"):o=t.config.columns,o.forEach((function(t){switch(t){case"width":a.width=e.getWidth();break;case"visible":a.visible=e.visible;break;default:"function"!=typeof r[t]&&-1===n.indexOf(t)&&(a[t]=r[t])}}))),i.push(a)})),i}}]),n}(B);Pe.moduleName="persistence",Pe.readers=Se,Pe.writers=Fe;var He=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).element=!1,o.manualBlock=!1,o.registerTableOption("printAsHtml",!1),o.registerTableOption("printFormatter",!1),o.registerTableOption("printHeader",!1),o.registerTableOption("printFooter",!1),o.registerTableOption("printStyled",!0),o.registerTableOption("printRowRange","visible"),o.registerTableOption("printConfig",{}),o.registerColumnOption("print"),o.registerColumnOption("titlePrint"),o}return o(n,[{key:"initialize",value:function(){this.table.options.printAsHtml&&(window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}},{key:"replaceTable",value:function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))}},{key:"cleanup",value:function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}},{key:"printFullscreen",value:function(e,t,i){var n,o,a=window.scrollX,r=window.scrollY,s=document.createElement("div"),l=document.createElement("div"),u=this.table.modules.export.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e||this.table.options.printRowRange,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(s.classList.add("tabulator-print-header"),"string"==typeof(n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?s.innerHTML=n:s.appendChild(n),this.element.appendChild(s)),this.element.appendChild(u),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(o="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=o:l.appendChild(o),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,u),window.print(),this.cleanup(),window.scrollTo(a,r),this.manualBlock=!1}}]),n}(B);He.moduleName="print";var ze=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).data=!1,o.blocked=!1,o.origFuncs={},o.currentVersion=0,o.registerTableOption("reactiveData",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this)),this.subscribe("cell-value-save-after",this.unblock.bind(this)),this.subscribe("row-data-save-before",this.block.bind(this)),this.subscribe("row-data-save-after",this.unblock.bind(this)),this.subscribe("row-data-init-after",this.watchRow.bind(this)),this.subscribe("data-processing",this.watchData.bind(this)),this.subscribe("table-destroy",this.unwatchData.bind(this)))}},{key:"watchData",value:function(e){var t,i=arguments,n=this;this.currentVersion++,t=this.currentVersion,this.unwatchData(),this.data=e,this.origFuncs.push=e.push,Object.defineProperty(this.data,"push",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(i);return n.blocked||t!==n.currentVersion||o.forEach((function(e){n.table.rowManager.addRowActual(e,!1)})),n.origFuncs.push.apply(e,i)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var o=Array.from(i);return n.blocked||t!==n.currentVersion||o.forEach((function(e){n.table.rowManager.addRowActual(e,!0)})),n.origFuncs.unshift.apply(e,i)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return n.blocked||t!==n.currentVersion||n.data.length&&(i=n.table.rowManager.getRowFromDataObject(n.data[0]))&&i.deleteActual(),n.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return n.blocked||t!==n.currentVersion||n.data.length&&(i=n.table.rowManager.getRowFromDataObject(n.data[n.data.length-1]))&&i.deleteActual(),n.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var o,a=Array.from(i),r=a[0]<0?e.length+a[0]:a[0],s=a[1],l=!!a[2]&&a.slice(2);if(!n.blocked&&t===n.currentVersion){if(l&&((o=!!e[r]&&n.table.rowManager.getRowFromDataObject(e[r]))?l.forEach((function(e){n.table.rowManager.addRowActual(e,!0,o,!0)})):(l=l.slice().reverse()).forEach((function(e){n.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==s){var u=e.slice(r,void 0===a[1]?a[1]:r+s);u.forEach((function(e,t){var i=n.table.rowManager.getRowFromDataObject(e);i&&i.deleteActual(t!==u.length-1)}))}(l||0!==s)&&n.table.rowManager.reRenderInPosition()}return n.origFuncs.splice.apply(e,i)}})}},{key:"unwatchData",value:function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})}},{key:"watchRow",value:function(e){var t=e.getData();for(var i in this.blocked=!0,t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1}},{key:"watchTreeChildren",value:function(e){var t=arguments,i=e.getData()[this.table.options.dataTreeChildField],n={};function o(){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}i&&(n.push=i.push,Object.defineProperty(i,"push",{enumerable:!1,configurable:!0,value:function(){var e=n.push.apply(i,t);return o(),e}}),n.unshift=i.unshift,Object.defineProperty(i,"unshift",{enumerable:!1,configurable:!0,value:function(){var e=n.unshift.apply(i,t);return o(),e}}),n.shift=i.shift,Object.defineProperty(i,"shift",{enumerable:!1,configurable:!0,value:function(){var e=n.shift.call(i);return o(),e}}),n.pop=i.pop,Object.defineProperty(i,"pop",{enumerable:!1,configurable:!0,value:function(){var e=n.pop.call(i);return o(),e}}),n.splice=i.splice,Object.defineProperty(i,"splice",{enumerable:!1,configurable:!0,value:function(){var e=n.splice.apply(i,t);return o(),e}}))}},{key:"watchKey",value:function(e,t,i){var n=this,o=Object.getOwnPropertyDescriptor(t,i),a=t[i],r=this.currentVersion;Object.defineProperty(t,i,{set:function(t){if(a=t,!n.blocked&&r===n.currentVersion){var s={};s[i]=t,e.updateData(s)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),a}})}},{key:"unwatchRow",value:function(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}},{key:"block",value:function(){this.blocked=!0}},{key:"unblock",value:function(){this.blocked=!1}}]),n}(B);ze.moduleName="reactiveData";var Ae=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).startColumn=!1,o.startX=!1,o.startWidth=!1,o.handle=null,o.prevHandle=null,o.registerColumnOption("resizable",!0),o}return o(n,[{key:"initialize",value:function(){this.subscribe("cell-layout",this.layoutCellHandles.bind(this)),this.subscribe("column-init",this.layoutColumnHeader.bind(this))}},{key:"layoutCellHandles",value:function(e){"row"===e.row.type&&this.initializeColumn("cell",e.column,e.element)}},{key:"layoutColumnHeader",value:function(e){this.initializeColumn("header",e,e.element)}},{key:"initializeColumn",value:function(e,t,i){var n=this,o=!1,a=t.definition.resizable;if("header"===e&&(o="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:o}),!0===a||a==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var s=document.createElement("div");s.className="tabulator-col-resize-handle prev",r.addEventListener("click",(function(e){e.stopPropagation()}));var l=function(e){var i=t.getLastColumn();i&&n._checkResizability(i)&&(n.startColumn=t,n._mouseDown(e,i,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",(function(e){var i=t.getLastColumn();i&&n._checkResizability(i)&&(e.stopPropagation(),i.reinitializeWidth(!0))})),s.addEventListener("click",(function(e){e.stopPropagation()}));var u=function(e){var i,o,a;(i=t.getFirstColumn())&&(a=(o=n.table.columnManager.findColumnIndex(i))>0&&n.table.columnManager.getColumnByIndex(o-1))&&n._checkResizability(a)&&(n.startColumn=t,n._mouseDown(e,a,s))};s.addEventListener("mousedown",u),s.addEventListener("touchstart",u,{passive:!0}),s.addEventListener("dblclick",(function(e){var i,o,a;(i=t.getFirstColumn())&&(a=(o=n.table.columnManager.findColumnIndex(i))>0&&n.table.columnManager.getColumnByIndex(o-1))&&n._checkResizability(a)&&(e.stopPropagation(),a.reinitializeWidth(!0))})),i.appendChild(r),i.appendChild(s)}}},{key:"_checkResizability",value:function(e){return e.definition.resizable}},{key:"_mouseDown",value:function(e,t,i){var n=this;function o(e){n.table.rtl?t.setWidth(n.startWidth-((void 0===e.screenX?e.touches[0].screenX:e.screenX)-n.startX)):t.setWidth(n.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-n.startX)),n.table.columnManager.renderer.rerenderColumns(!0),!n.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function a(e){n.startColumn.modules.edit&&(n.startColumn.modules.edit.blocked=!1),n.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",a),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",a),n.table.element.classList.remove("tabulator-block-select"),n.dispatch("column-resized",t),n.table.externalEvents.dispatch("columnResized",t.getComponent())}n.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),n.startColumn.modules.edit&&(n.startColumn.modules.edit.blocked=!0),n.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,n.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",a),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",a)}}]),n}(B);Ae.moduleName="resizeColumns";var Oe=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).startColumn=!1,o.startY=!1,o.startHeight=!1,o.handle=null,o.prevHandle=null,o.registerTableOption("resizableRows",!1),o}return o(n,[{key:"initialize",value:function(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}},{key:"initializeRow",value:function(e){var t=this,i=e.getElement(),n=document.createElement("div");n.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",n.addEventListener("click",(function(e){e.stopPropagation()}));var a=function(i){t.startRow=e,t._mouseDown(i,e,n)};n.addEventListener("mousedown",a),n.addEventListener("touchstart",a,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var n=t.table.rowManager.prevDisplayRow(e);n&&(t.startRow=n,t._mouseDown(i,n,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(n),i.appendChild(o)}},{key:"_mouseDown",value:function(e,t,i){var n=this;function o(e){t.setHeight(n.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-n.startY))}function a(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",a),n.table.element.classList.remove("tabulator-block-select"),this.dispatchExternal("rowResized",t.getComponent())}n.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),n.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,n.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",a),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",a)}}]),n}(B);Oe.moduleName="resizeRows";var _e=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).binding=!1,o.observer=!1,o.containerObserver=!1,o.tableHeight=0,o.tableWidth=0,o.containerHeight=0,o.containerWidth=0,o.autoResize=!1,o.registerTableOption("autoResize",!0),o}return o(n,[{key:"initialize",value:function(){var e=this;if(this.table.options.autoResize){var t,i=this.table;this.tableHeight=i.element.clientHeight,this.tableWidth=i.element.clientWidth,i.element.parentNode&&(this.containerHeight=i.element.parentNode.clientHeight,this.containerWidth=i.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver((function(t){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var n=Math.floor(t[0].contentRect.height),o=Math.floor(t[0].contentRect.width);e.tableHeight==n&&e.tableWidth==o||(e.tableHeight=n,e.tableWidth=o,i.element.parentNode&&(e.containerHeight=i.element.parentNode.clientHeight,e.containerWidth=i.element.parentNode.clientWidth),e.table.columnManager.renderer.rerenderColumns(!0),i.redraw())}})),this.observer.observe(i.element),t=window.getComputedStyle(i.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((function(t){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var n=Math.floor(t[0].contentRect.height),o=Math.floor(t[0].contentRect.width);e.containerHeight==n&&e.containerWidth==o||(e.containerHeight=n,e.containerWidth=o,e.tableHeight=i.element.clientHeight,e.tableWidth=i.element.clientWidth),i.columnManager.renderer.rerenderColumns(!0),i.redraw()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell)&&(i.columnManager.renderer.rerenderColumns(!0),i.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}},{key:"tableResized",value:function(){this.table.rowManager.redraw()}},{key:"clearBindings",value:function(){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}]),n}(B);_e.moduleName="resizeTable";var Ne=function(e){a(n,e);var i=c(n);function n(e){var o;return t(this,n),(o=i.call(this,e)).columns=[],o.hiddenColumns=[],o.mode="",o.index=0,o.collapseFormatter=[],o.collapseStartOpen=!0,o.collapseHandleColumn=!1,o.registerTableOption("responsiveLayout",!1),o.registerTableOption("responsiveLayoutCollapseStartOpen",!0),o.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),o.registerTableOption("responsiveLayoutCollapseFormatter",!1),o.registerColumnOption("responsive"),o}return o(n,[{key:"initialize",value:function(){this.table.options.responsiveLayout&&(this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-show",this.updateColumnVisibility.bind(this)),this.subscribe("column-hide",this.updateColumnVisibility.bind(this)),this.subscribe("columns-loaded",this.initializeResponsivity.bind(this)),this.subscribe("column-moved",this.initializeResponsivity.bind(this)),this.subscribe("column-add",this.initializeResponsivity.bind(this)),this.subscribe("column-delete",this.initializeResponsivity.bind(this)),this.subscribe("table-redrawing",this.tableRedraw.bind(this)),"collapse"===this.table.options.responsiveLayout&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}},{key:"tableRedraw",value:function(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}},{key:"initializeResponsivity",value:function(){var e=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach((function(t,i){t.modules.responsive&&t.modules.responsive.order&&t.modules.responsive.visible&&(t.modules.responsive.index=i,e.push(t),t.visible||"collapse"!==self.mode||self.hiddenColumns.push(t))})),e=(e=e.reverse()).sort((function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index})),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent();var t,i=p(this.table.columnManager.columnsByIndex);try{for(i.s();!(t=i.n()).done;){var n=t.value;if("responsiveCollapse"==n.definition.formatter){this.collapseHandleColumn=n;break}}}catch(e){i.e(e)}finally{i.f()}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}},{key:"initializeColumn",value:function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}},{key:"initializeRow",value:function(e){var t;"calc"!==e.type&&((t=document.createElement("div")).classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))}},{key:"layoutRow",value:function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}},{key:"updateColumnVisibility",value:function(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initialize())}},{key:"hideColumn",value:function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())}},{key:"showColumn",value:function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())}},{key:"update",value:function(){for(var e=this,t=!0;t;){var i="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),n=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-i;if(n<0){var o=e.columns[e.index];o?(e.hideColumn(o),e.index++):t=!1}else{var a=e.columns[e.index-1];a&&n>0&&n>=a.getWidth()?(e.showColumn(a),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}}},{key:"generateCollapsedContent",value:function(){var e=this;this.table.rowManager.getDisplayRows().forEach((function(t){e.generateCollapsedRowContent(t)}))}},{key:"generateCollapsedRowContent",value:function(e){var t,i;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(i=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(i)}}},{key:"generateCollapsedRowData",value:function(e){var t,i=this,n=e.getData(),o=[];return this.hiddenColumns.forEach((function(a){var r=a.getFieldValue(n);a.definition.title&&a.field&&(a.modules.format&&i.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return r},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return a.getComponent()}},o.push({field:a.field,title:a.definition.title,value:a.modules.format.formatter.call(i.table.modules.format,t,a.modules.format.params)})):o.push({field:a.field,title:a.definition.title,value:r}))})),o}},{key:"formatCollapsedData",value:function(e){var t=document.createElement("table");return e.forEach((function(e){var i,n=document.createElement("tr"),o=document.createElement("td"),a=document.createElement("td"),r=document.createElement("strong");o.appendChild(r),this.langBind("columns|"+e.field,(function(t){r.innerText=t||e.title})),e.value instanceof Node?((i=document.createElement("div")).appendChild(e.value),a.appendChild(i)):a.innerHTML=e.value,n.appendChild(o),n.appendChild(a),t.appendChild(n)}),this),Object.keys(e).length?t:""}}]),n}(B);Ne.moduleName="responsiveLayout";var Be=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).selecting=!1,i.lastClickedRow=!1,i.selectPrev=[],i.selectedRows=[],i.headerCheckboxElement=null,i.registerTableOption("selectable","highlight"),i.registerTableOption("selectableRangeMode","drag"),i.registerTableOption("selectableRollingSelection",!0),i.registerTableOption("selectablePersistence",!0),i.registerTableOption("selectableCheck",(function(e,t){return!0})),i.registerTableFunction("selectRow",i.selectRows.bind(l(i))),i.registerTableFunction("deselectRow",i.deselectRows.bind(l(i))),i.registerTableFunction("toggleSelectRow",i.toggleRow.bind(l(i))),i.registerTableFunction("getSelectedRows",i.getSelectedRows.bind(l(i))),i.registerTableFunction("getSelectedData",i.getSelectedData.bind(l(i))),i.registerComponentFunction("row","select",i.selectRows.bind(l(i))),i.registerComponentFunction("row","deselect",i.deselectRows.bind(l(i))),i.registerComponentFunction("row","toggleSelect",i.toggleRow.bind(l(i))),i.registerComponentFunction("row","isSelected",i.isRowSelected.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){!1!==this.table.options.selectable&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-deleting",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clearSelectionData.bind(this)),this.subscribe("rows-retrieve",this.clearSelectionData.bind(this)),this.table.options.selectable&&this.table.options.selectablePersistence&&this.subscribe("data-refeshing",this.deselectRows.bind(this)))}},{key:"rowRetrieve",value:function(e,t){return"selected"===e?this.selectedRows:t}},{key:"rowDeleted",value:function(e){this._deselectRow(e,!0)}},{key:"clearSelectionData",value:function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],!0!==e&&this._rowSelectionChanged()}},{key:"initializeRow",value:function(e){var t=this,i=e.getElement(),n=function e(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",(function(i){if(i.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var n=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),o=t.table.rowManager.getDisplayRowIndex(e),a=n<=o?n:o,r=n>=o?n:o,s=t.table.rowManager.getDisplayRows().slice(0).splice(a,r-a+1);i.ctrlKey||i.metaKey?(s.forEach((function(i){i!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)||t.selectedRows.lengtht.table.options.selectable&&(s=s.slice(0,t.table.options.selectable)),t.selectRows(s)),t.table._clearSelection()}else i.ctrlKey||i.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)})):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",n),document.body.addEventListener("keyup",n),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}},{key:"toggleRow",value:function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}},{key:"selectRows",value:function(t){var i,n=this;switch(e(t)){case"undefined":this.table.rowManager.rows.forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;case"string":(i=this.table.rowManager.findRow(t))?this._selectRow(i,!0,!0):this.table.rowManager.getRows(t).forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;default:Array.isArray(t)?(t.forEach((function(e){n._selectRow(e,!0,!0)})),this._rowSelectionChanged()):this._selectRow(t,!1,!0)}}},{key:"_selectRow",value:function(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var n=this.table.rowManager.findRow(e);n?-1==this.selectedRows.indexOf(n)&&(n.getElement().classList.add("tabulator-selected"),n.modules.select||(n.modules.select={}),n.modules.select.selected=!0,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!0),this.selectedRows.push(n),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!0),t||this.dispatchExternal("rowSelected",n.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}},{key:"isRowSelected",value:function(e){return-1!==this.selectedRows.indexOf(e)}},{key:"deselectRows",value:function(e,t){var i,n=this;if(void 0===e){i=n.selectedRows.length;for(var o=0;o-1&&(o.getElement().classList.remove("tabulator-selected"),o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.modules.select.checkboxEl&&(o.modules.select.checkboxEl.checked=!1),n.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(o,!1),t||this.dispatchExternal("rowDeselected",o.getComponent()),n._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}},{key:"getSelectedData",value:function(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}},{key:"getSelectedRows",value:function(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}},{key:"_rowSelectionChanged",value:function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows())}},{key:"registerRowSelectCheckbox",value:function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}},{key:"registerHeaderSelectCheckbox",value:function(e){this.headerCheckboxElement=e}},{key:"childRowSelection",value:function(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t){var n,o=p(i);try{for(o.s();!(n=o.n()).done;){var a=n.value;this._selectRow(a,!0)}}catch(e){o.e(e)}finally{o.f()}}else{var r,s=p(i);try{for(s.s();!(r=s.n()).done;){var l=r.value;this._deselectRow(l,!0)}}catch(e){s.e(e)}finally{s.f()}}}}]),r}(B);function Ve(e,t,i,n,o,a,r){var s=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",u=r.alignEmptyValues,c=0;if(void 0!==s){if(e=s.fromFormat(e,l),t=s.fromFormat(t,l),e.isValid){if(t.isValid)return e-t;c=1}else c=t.isValid?-1:0;return("top"===u&&"desc"===a||"bottom"===u&&"asc"===a)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}Be.moduleName="selectRow";var Ie={number:function(e,t,i,n,o,a,r){var s=r.alignEmptyValues,l=r.decimalSeparator,u=r.thousandSeparator,c=0;if(e=String(e),t=String(t),u&&(e=e.split(u).join(""),t=t.split(u).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))c=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;c=1}return("top"===s&&"desc"===a||"bottom"===s&&"asc"===a)&&(c*=-1),c},string:function(t,i,n,o,a,r,s){var l,u=s.alignEmptyValues,c=0;if(t){if(i){switch(e(s.locale)){case"boolean":s.locale&&(l=this.langLocale());break;case"string":l=s.locale}return String(t).toLowerCase().localeCompare(String(i).toLowerCase(),l)}c=1}else c=i?-1:0;return("top"===u&&"desc"===r||"bottom"===u&&"asc"===r)&&(c*=-1),c},date:function(e,t,i,n,o,a,r){return r.format||(r.format="dd/MM/yyyy"),Ve.call(this,e,t,i,n,o,a,r)},time:function(e,t,i,n,o,a,r){return r.format||(r.format="HH:mm"),Ve.call(this,e,t,i,n,o,a,r)},datetime:Ve,boolean:function(e,t,i,n,o,a,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,i,n,o,a,r){var s=r.type||"length",l=r.alignEmptyValues,u=0;function c(e){switch(s){case"length":return e.length;case"sum":return e.reduce((function(e,t){return e+t}));case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce((function(e,t){return e+t}))/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?c(e):0)-(t?c(t):0);l=1}else l=Array.isArray(t)?-1:0;return("top"===l&&"desc"===a||"bottom"===l&&"asc"===a)&&(u*=-1),u},exists:function(e,t,i,n,o,a,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,n,o,a,r){var s,l,u,c,h,d=0,m=/(\d+)|(\D+)/g,p=/\d/,f=r.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((s=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!p.test(s)||!p.test(l))return s>l?1:-1;for(s=s.match(m),l=l.match(m),h=s.length>l.length?l.length:s.length;dc?1:-1;return s.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===f&&"desc"===a||"bottom"===f&&"asc"===a)&&(g*=-1),g}},We=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).sortList=[],i.changed=!1,i.registerTableOption("sortMode","local"),i.registerTableOption("initialSort",!1),i.registerTableOption("columnHeaderSortMulti",!0),i.registerTableOption("sortOrderReverse",!1),i.registerTableOption("headerSortElement","
"),i.registerColumnOption("sorter"),i.registerColumnOption("sorterParams"),i.registerColumnOption("headerSort",!0),i.registerColumnOption("headerSortStartingDir"),i.registerColumnOption("headerSortTristate"),i}return o(r,[{key:"initialize",value:function(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.registerDataHandler(this.sort.bind(this),20),this.registerTableFunction("setSort",this.userSetSort.bind(this)),this.registerTableFunction("getSorters",this.getSort.bind(this)),this.registerTableFunction("clearSort",this.clearSort.bind(this)),"remote"===this.table.options.sortMode&&this.subscribe("data-params",this.remoteSortParams.bind(this))}},{key:"tableBuilt",value:function(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}},{key:"remoteSortParams",value:function(e,t,i,n){var o=this.getSort();return o.forEach((function(e){delete e.column})),n.sort=o,n}},{key:"userSetSort",value:function(e,t){this.setSort(e,t),this.refreshSort()}},{key:"clearSort",value:function(){this.clear(),this.refreshSort()}},{key:"initializeColumn",value:function(t){var i,n,o=this,a=!1;switch(e(t.definition.sorter)){case"string":r.sorters[t.definition.sorter]?a=r.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":a=t.definition.sorter}t.modules.sort={sorter:a,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:t.definition.headerSortTristate},!1!==t.definition.headerSort&&((i=t.getElement()).classList.add("tabulator-sortable"),(n=document.createElement("div")).classList.add("tabulator-col-sorter"),"object"==e(this.table.options.headerSortElement)?n.appendChild(this.table.options.headerSortElement):n.innerHTML=this.table.options.headerSortElement,t.titleHolderElement.appendChild(n),t.modules.sort.element=n,i.addEventListener("click",(function(e){var i="",n=[],a=!1;if(t.modules.sort){if(t.modules.sort.tristate)i="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=t.modules.sort.startingDir}o.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?((a=(n=o.getSort()).findIndex((function(e){return e.field===t.getField()})))>-1?(n[a].dir=i,a!=n.length-1&&(a=n.splice(a,1)[0],"none"!=i&&n.push(a))):"none"!=i&&n.push({column:t,dir:i}),o.setSort(n)):"none"==i?o.clear():o.setSort(t,i),o.refreshSort()}})))}},{key:"refreshSort",value:function(){"remote"===this.table.options.sortMode?this.reloadData():this.refreshData()}},{key:"hasChanged",value:function(){var e=this.changed;return this.changed=!1,e}},{key:"getSort",value:function(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}},{key:"setSort",value:function(e,t){var i=this,n=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,n.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=n,this.dispatch("sort-changed")}},{key:"clear",value:function(){this.setSort([])}},{key:"findSorter",value:function(t){var i,n=this.table.rowManager.activeRows[0],o="string";if(n&&(n=n.getData(),t.getField()))switch(e(i=t.getFieldValue(n))){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(i)||""===i?i.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return r.sorters[o]}},{key:"sort",value:function(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,n=[],o=[];return this.subscribedExternal("dataSorting")&&this.dispatchExternal("dataSorting",t.getSort()),t.clearColumnHeaders(),"remote"!==this.table.options.sortMode?(i.forEach((function(e,i){var o=e.column.modules.sort;e.column&&o&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,n.push(e)),t.setColumnHeader(e.column,e.dir)})),n.length&&t._sortItems(e,n)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((function(e){o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}},{key:"clearColumnHeaders",value:function(){this.table.columnManager.getRealColumns().forEach((function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))}))}},{key:"setColumnHeader",value:function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)}},{key:"_sortItems",value:function(e,t){var i=this,n=t.length-1;e.sort((function(e,o){for(var a,r=n;r>=0;r--){var s=t[r];if(0!==(a=i._sortRow(e,o,s.column,s.dir,s.params)))break}return a}))}},{key:"_sortRow",value:function(e,t,i,n,o){var a,r,s="asc"==n?e:t,l="asc"==n?t:e;return e=void 0!==(e=i.getFieldValue(s.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",a=s.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,a,r,i.getComponent(),n,o)}}]),r}(B);We.moduleName="sort",We.sorters=Ie;var je={integer:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,i){return""===t||null==t||!isNaN(t)},string:function(e,t,i){return""===t||null==t||isNaN(t)},max:function(e,t,i){return""===t||null==t||parseFloat(t)<=i},min:function(e,t,i){return""===t||null==t||parseFloat(t)>=i},starts:function(e,t,i){return""===t||null==t||String(t).toLowerCase().startsWith(String(i).toLowerCase())},ends:function(e,t,i){return""===t||null==t||String(t).toLowerCase().endsWith(String(i).toLowerCase())},minLength:function(e,t,i){return""===t||null==t||String(t).length>=i},maxLength:function(e,t,i){return""===t||null==t||String(t).length<=i},in:function(e,t,i){return""===t||null==t||("string"==typeof i&&(i=i.split("|")),""===t||i.indexOf(t)>-1)},regex:function(e,t,i){return""===t||null==t||new RegExp(i).test(t)},unique:function(e,t,i){if(""===t||null==t)return!0;var n=!0,o=e.getData(),a=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==a.getFieldValue(i)&&(n=!1)})),n},required:function(e,t,i){return""!==t&&null!=t}},Ge=function(i){a(r,i);var n=c(r);function r(e){var i;return t(this,r),(i=n.call(this,e)).invalidCells=[],i.registerTableOption("validationMode","blocking"),i.registerColumnOption("validator"),i.registerTableFunction("getInvalidCells",i.getInvalidCells.bind(l(i))),i.registerTableFunction("clearCellValidation",i.userClearCellValidation.bind(l(i))),i.registerTableFunction("validate",i.userValidate.bind(l(i))),i.registerComponentFunction("cell","isValid",i.cellIsValid.bind(l(i))),i.registerComponentFunction("cell","clearValidation",i.clearValidation.bind(l(i))),i.registerComponentFunction("cell","validate",i.cellValidate.bind(l(i))),i.registerComponentFunction("column","validate",i.columnValidate.bind(l(i))),i.registerComponentFunction("row","validate",i.rowValidate.bind(l(i))),i}return o(r,[{key:"initialize",value:function(){this.subscribe("cell-delete",this.clearValidation.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this))}},{key:"cellIsValid",value:function(e){return!e.modules.validate||!e.modules.validate.invalid}},{key:"cellValidate",value:function(e){return this.validate(e.column.modules.validate,e,e.getValue())}},{key:"columnValidate",value:function(e){var t=[];return e.cells.forEach((function(e){this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}},{key:"rowValidate",value:function(e){var t=[];return e.cells.forEach((function(e){this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}},{key:"userClearCellValidation",value:function(e){var t=this;e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((function(e){t.clearValidation(e._getSelf())}))}},{key:"userValidate",value:function(e){var t=[];return this.table.rowManager.rows.forEach((function(e){var i=e.validate();!0!==i&&(t=t.concat(i))})),!t.length||t}},{key:"initializeColumnCheck",value:function(e){void 0!==e.definition.validator&&this.initializeColumn(e)}},{key:"initializeColumn",value:function(e){var t,i=this,n=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((function(e){(t=i._extractValidator(e))&&n.push(t)})):(t=this._extractValidator(e.definition.validator))&&n.push(t),e.modules.validate=!!n.length&&n)}},{key:"_extractValidator",value:function(t){var i,n,o;switch(e(t)){case"string":return(o=t.indexOf(":"))>-1?(i=t.substring(0,o),n=t.substring(o+1)):i=t,this._buildValidator(i,n);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}}},{key:"_buildValidator",value:function(e,t){var i="function"==typeof e?e:r.validators[e];return i?{type:"function"==typeof e?"function":e,func:i,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)}},{key:"validate",value:function(e,t,i){var n=this,o=[],a=this.invalidCells.indexOf(t);return e&&e.forEach((function(e){e.func.call(n,t.getComponent(),i,e.params)||o.push({type:e.type,parameters:e.params})})),o=!o.length||o,t.modules.validate||(t.modules.validate={}),!0===o?(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),a>-1&&this.invalidCells.splice(a,1)):(t.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==a&&this.invalidCells.push(t)),o}},{key:"getInvalidCells",value:function(){var e=[];return this.invalidCells.forEach((function(t){e.push(t.getComponent())})),e}},{key:"clearValidation",value:function(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.getElement().classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))}}]),r}(B);Ge.moduleName="validate",Ge.validators=je;var Ue=Object.freeze({__proto__:null,AccessorModule:K,AjaxModule:Q,ClipboardModule:Z,ColumnCalcsModule:ie,DataTreeModule:ne,DownloadModule:ae,EditModule:le,ExportModule:he,FilterModule:me,FormatModule:fe,FrozenColumnsModule:ge,FrozenRowsModule:ve,GroupRowsModule:we,HistoryModule:Ce,HtmlTableImportModule:Ee,InteractionModule:ke,KeybindingsModule:Re,MenuModule:xe,MoveColumnsModule:Te,MoveRowsModule:Me,MutatorModule:Le,PageModule:De,PersistenceModule:Pe,PrintModule:He,ReactiveDataModule:ze,ResizeColumnsModule:Ae,ResizeRowsModule:Oe,ResizeTableModule:_e,ResponsiveLayoutModule:Ne,SelectRowModule:Be,SortModule:We,ValidateModule:Ge}),Xe=function(e){a(n,e);var i=c(n);function n(){return t(this,n),i.apply(this,arguments)}return n}(q);return new X(Xe,Ue),Xe})); //# sourceMappingURL=tabulator.min.js.map diff --git a/dist/js/tabulator.min.js.map b/dist/js/tabulator.min.js.map index 9eb9f4c9a..44c0611b2 100644 --- a/dist/js/tabulator.min.js.map +++ b/dist/js/tabulator.min.js.map @@ -1 +1 @@ -{"version":3,"file":"tabulator.min.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/Column.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFuctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/TableRegistry.js","../../src/js/core/Module.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/Tabulator.js","../../src/js/core/defaults/options.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/History.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value != value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = typeof def.headerTooltip === \"undefined\" ? def.tooltip : def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.offsetHeight;\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData();\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tthis.setWidthActual(maxWidth + 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj){\r\n\t\tvar clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tif(obj[i] != null && typeof(obj[i]) === \"object\"){\r\n\t\t\t\tif (obj[i] instanceof Date) {\r\n\t\t\t\t\tclone[i] = new Date(obj[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn clone;\r\n\t}\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = {};\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determin weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\r\n\t\tthis.fitDataColAvg = 0;\r\n\r\n\t\tthis.window = 200; //pixel margin to make column visible before it is shown on screen\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tthis.columns = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.compatabilityCheck();\r\n\t}\r\n\r\n\tcompatabilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\r\n\t\treturn ok;\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.window));\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t};\r\n\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.clear();\r\n\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.window;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\tvar colPos = 0;\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\r\n\t\t\t\tconfig.width = width;\r\n\r\n\t\t\t\tif (this.options(\"layout\") === \"fitData\") {\r\n\t\t\t\t\tconfig.fitDataCheck = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t \t\t//column is visible\r\n\r\n\t \t\tif(this.leftCol == -1){\r\n\t \t\t\tthis.leftCol = this.columns.length;\r\n\t \t\t\tthis.vDomPadLeft = colPos;\r\n\t \t\t}\r\n\r\n\t \t\tthis.rightCol = this.columns.length;\r\n\t \t}else{\r\n\t \t\t// column is hidden\r\n\t \t\tif(this.leftCol !== -1){\r\n\t \t\t\tthis.vDomPadRight += width;\r\n\t \t\t}\r\n\t \t}\r\n\r\n\t \tthis.columns.push(column);\r\n\r\n\t \tcolumn.modules.vdomHoz = config;\r\n\r\n\t \tcolPos += width;\r\n\t }\r\n\t });\r\n\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.renitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\r\n\t\tif(this.options(\"layout\") === \"fitData\"){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows()[0];\r\n\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\tif(row){\r\n\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\r\n\t\t\t\t\t\trow.generateCells();\r\n\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\r\n\t\t\t\t\t\t\tif(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\t\t\t\tthis.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\r\n\t\t\t\t\t\tfor(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t\tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn !match;\r\n\t}\r\n\r\n\trenitializeRows(){\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(diff > (this.elementVertical.clientWidth * .8)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\r\n\taddColRight(){\r\n\t\tvar column = this.columns[this.rightCol + 1],\r\n\t\trows, newWidth, widthDiff;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tthis.rightCol++;\r\n\r\n\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.addColRight();\r\n\t\t}\r\n\t}\r\n\r\n\taddColLeft(){\r\n\t\tvar column = this.columns[this.leftCol - 1],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tif(!this.leftCol){\r\n\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol--;\r\n\r\n\t\t\tthis.addColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColRight(column){\r\n\t\tvar column = this.columns[this.rightCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tcolumn.modules.vdomHoz.visible = false;\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.rightCol --;\r\n\r\n\t\t\tthis.removeColRight();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColLeft(){\r\n\t\tvar column = this.columns[this.leftCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\tif(cell.parentNode){\r\n\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol ++;\r\n\r\n\t\t\tthis.removeColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.rightCol + 2, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t};\r\n\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\");\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\r\n\t\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\r\n\t\t\tvar nextEl = nextToColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\t_verticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibileColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis._verticalAlignHeaders();\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(force){\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tthis._verticalAlignHeaders();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.render();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold caluclation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\r\n\t\tthis.firstRender = true;\r\n\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\t\t\t}\r\n\r\n\t\t\t//handle verical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\r\n\t\t\t\tthis._setDataActual(data);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\r\n\t\tthis._wipeElements();\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\r\n\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\r\n\t\t\tlength = data.length - 1;\r\n\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRenderInPosition();\r\n\r\n\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\r\n\t\treturn pos;\r\n\t}\r\n\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\r\n\t\t}else{\r\n\r\n\t\t\tif(top){\r\n\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\r\n\t\tthis.moveRowActual(from, to, after);\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\r\n\t\tif(from !== to){\r\n\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\r\n\t\t\tif (fromIndex > -1) {\r\n\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\r\n\t\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\r\n\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn nextRow;\r\n\t}\r\n\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn prevRow;\r\n\t}\r\n\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\r\n\t\trow = this.findRow(row);\r\n\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\r\n\t\treturn rows.length;\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\r\n\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tthis.dispatch(\"data-refeshing\");\r\n\r\n\t\t\tif(!handler){\r\n\t\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t\t}\r\n\r\n\t\t\t//cascade through data refresh stages\r\n\t\t\tswitch(stage){\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\t//handle case where alldata needs refreshing\r\n\r\n\t\t\t\tcase \"dataPipeline\":\r\n\r\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\r\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\r\n\t\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\t\tcase \"display\":\r\n\t\t\t\tindex = 0;\r\n\t\t\t\tthis.resetDisplayRows();\r\n\r\n\t\t\t\tcase \"displayPipeline\":\r\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\r\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcase \"end\":\r\n\t\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t\t}\r\n\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.renderTable();\r\n\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"data-refeshed\");\r\n\t\t}\r\n\t}\r\n\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\r\n\t\tvar output = true;\r\n\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\r\n\tgetVisibleRows(viewable){\r\n\t\treturn this.renderer.visibleRows(!viewable);\r\n\t}\r\n\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRederInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\r\n\trenderTable(){\r\n\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis._clearTable();\r\n\t\t\tthis.renderer.renderRows();\r\n\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-layout\");\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.table.options.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\tthis._clearPlaceholder();\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\r\n\t_showPlaceholder(){\r\n\t\tif(this.table.options.placeholder){\r\n\r\n\t\t\tthis.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\r\n\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\tthis.table.options.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearPlaceholder(){\r\n\t\tif(this.table.options.placeholder && this.table.options.placeholder.parentNode){\r\n\t\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\r\n\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\r\n\t\t\tthis.renderer.resize();\r\n\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRederInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.redrawBlockRederInPosition = false;\r\n\t}\r\n\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\r\n\t\tthis.adjustTableSize();\r\n\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\tif(!this.displayRowsCount){\r\n\t\t\t\tif(this.table.options.placeholder){\r\n\t\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tinitialize(){\r\n\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.el = this.table.element;\r\n\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\r\n\t\tthis.previousTargets = {};\r\n\r\n\t\tthis.listeners = [\r\n\t\t\"click\",\r\n\t\t\"dblclick\",\r\n\t\t\"contextmenu\",\r\n\t\t\"mouseenter\",\r\n\t\t\"mouseleave\",\r\n\t\t\"mouseover\",\r\n\t\t\"mouseout\",\r\n\t\t\"mousemove\",\r\n\t\t\"touchstart\",\r\n\t\t\"touchend\",\r\n\t\t];\r\n\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t}\r\n\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.previousTargets = targetMatches;\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFuctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\"){\r\n\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", data, params, config, silent)){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tvar params = this.chain(\"data-params\", [data, config, silent], params || {}, {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], Promise.resolve([]));\r\n\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, 3000);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(optionsList, debug){\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name].prototype[property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\r\n\t\t\t\tthis.modules[name] = new mod(this);\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore[name] = this.modules[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.modulesRegular[name] = this.modules[name];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFuctionBinder from './tools/ComponentFuctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFuctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = {}; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = {}; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initialzeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediatly after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inderdevice communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitialzeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDepricatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\trtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//convert depricated functionality to new functions\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//concreate table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis.rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._loadInitialData();\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(this.options.data && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tfor (let key in this.modulesCore){\r\n\t\t\tlet mod = this.modulesCore[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\t//configure placeholder element\r\n\t\tif(typeof options.placeholder == \"string\"){\r\n\r\n\t\t\tvar el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\r\n\t\t\tvar span = document.createElement(\"span\");\r\n\t\t\tspan.innerHTML = options.placeholder;\r\n\r\n\t\t\tel.appendChild(span);\r\n\r\n\t\t\toptions.placeholder = el;\r\n\t\t}\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && this.options.data){\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tfor (let key in this.modulesRegular){\r\n\t\t\tlet mod = this.modulesRegular[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inderdevice communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(ua.substr(0,4));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//local data from local file\r\n\tsetDataFromLocalFile(extensions){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.type = \"file\";\r\n\t\t\tinput.accept = extensions || \".json,application/json\";\r\n\r\n\t\t\tinput.addEventListener(\"change\", (e) => {\r\n\t\t\t\tvar file = input.files[0],\r\n\t\t\t\treader = new FileReader(),\r\n\t\t\t\tdata;\r\n\r\n\t\t\t\treader.readAsText(file);\r\n\r\n\t\t\t\treader.onload = (e) => {\r\n\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tdata = JSON.parse(reader.result);\r\n\t\t\t\t\t} catch(e) {\r\n\t\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\r\n\t\t\t\t\t\treject(e);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.setData(data)\r\n\t\t\t\t\t.then((data) => {\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\tresolve(err);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\treader.onerror = (e) => {\r\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\r\n\t\t\t\t\treject();\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tinput.click();\r\n\t\t});\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\tresolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnMaxWidth:false, //minimum global width for a column\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //seperatpr for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach(function(type){\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {}","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\tvar output = this.generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = false; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\r\n\t\tthis.loaderPromise = false;\r\n\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\r\n\t\tif(this.table.options.ajaxParams){\r\n\t\t\tthis.setParams(this.table.options.ajaxParams);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxConfig){\r\n\t\t\tthis.setConfig(this.table.options.ajaxConfig);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\r\n\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\r\n\trequestData(data, params, config, silent, previousData){\r\n\t\tif(this.requestDataCheck(data)){\r\n\t\t\tif(data){\r\n\t\t\t\tthis.setUrl(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(params){\r\n\t\t\t\tthis.setParams(params, true);\r\n\t\t\t}\r\n\r\n\t\t\tif(config){\r\n\t\t\t\tthis.setConfig(config);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.sendRequest();\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\r\n\t//set ajax params\r\n\tsetParams(params, update){\r\n\t\tif(update){\r\n\t\t\tthis.params = this.params || {};\r\n\r\n\t\t\tfor(let key in params){\r\n\t\t\t\tthis.params[key] = params[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.params = params;\r\n\t\t}\r\n\t}\r\n\r\n\tgetParams(){\r\n\t\treturn this.params || {};\r\n\t}\r\n\r\n\t//load config object\r\n\tsetConfig(config){\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tfor(let key in config){\r\n\t\t\t\tthis.config[key] = config[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create config object from default\r\n\t_loadDefaultConfig(force){\r\n\t\tif(!this.config || force){\r\n\r\n\t\t\tthis.config = {};\r\n\r\n\t\t\t//load base config from defaults\r\n\t\t\tfor(let key in Ajax.defaultConfig){\r\n\t\t\t\tthis.config[key] = Ajax.defaultConfig[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\r\n\t//send ajax request\r\n\tsendRequest(silent){\r\n\t\tvar url = this.url,\r\n\t\tesc, query;\r\n\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, this.url, this.params) !== false){\r\n\t\t\treturn this.loaderPromise(url, this.config, this.params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, this.url, this.params, data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\tmethod: \"GET\",\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refeshed\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(this);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\tfirstCol = this.table.columnManager.getFirstVisibileColumn(),\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\t\t\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-relayout\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tcheckForRestyle(cell){\r\n\t\tif(!cell.row.cells.indexOf(cell)){\r\n\t\t\tcell.row.reinitialize();\r\n\t\t}\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}else{\r\n\t\t\t\trowData.push(\"\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refeshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tnav.next();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.validate){\r\n\t\t\t\t\tcell.validate();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tcolumns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tif(left !== this.table.rowManager.element.scrollLeft){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tthis.changed = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = (window.DateTime || luxon.DateTime).fromFormat(value, inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = DT.fromFormat(value, inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-before\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\r\n\t\tif(!column.isGroup){\r\n\r\n\t\t\tif(this.frozenCheck(column)){\r\n\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.active = true;\r\n\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\r\n\t\treturn frozen;\r\n\t}\r\n\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\t//layout all rows after scroll is complete\r\n\t\t\tthis.scrollEndTimer = setTimeout(() => {\r\n\t\t\t\tthis.layout();\r\n\t\t\t}, 100);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate margins for rows\r\n\tcalcMargins(){\r\n\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\r\n\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\r\n\t\tvar leftParents = [];\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this._calcSpace(this.leftColumns, i) + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - this._calcSpace(this.rightColumns, i + 1)) + \"px\";\r\n\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\r\n\t//layout columns appropropriatly\r\n\tlayout(){\r\n\t\tvar rightMargin = 0;\r\n\r\n\t\tif(this.active){\r\n\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutElement(element, column){\r\n\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.arrowElement = false;\r\n\t\t\tthis.elementContents = false;\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\taddBindings(){\r\n\t\tvar dblTap,\ttapHold, tap, toggleElement;\r\n\r\n\t\tif ((this.groupManager.table.options.groupContextMenu || this.groupManager.table.options.groupClickMenu) && this.groupManager.table.modExists(\"menu\")){\r\n\t\t\tthis.groupManager.table.modules.menu.initializeGroup.call(this.groupManager.table.modules.menu, this);\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTap){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tthis.groupManager.table.options.groupTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupDblTap){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tthis.groupManager.table.options.groupDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTapHold){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tthis.groupManager.table.options.groupTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\t_addRowToGroup(row){\r\n\r\n\t\tvar level = this.level + 1;\r\n\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\r\n\t\trow.updateData(data);\r\n\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trow.modules.group = this;\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\r\n\tscrollHeader(left){\r\n\t\tthis.arrowElement.style.marginLeft = left;\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\tchild.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tgetRowIndex(row){}\r\n\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\r\n\t\toutput.push(this);\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\r\n\t\t\tvar prev = this.getElement();\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\r\n\t\tif(typeof this.visible == \"function\"){\r\n\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\r\n\t////////////// Standard Row Functions //////////////\r\n\r\n\tgetElement(){\r\n\t\tthis.addBindingsd = false;\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t// this.addBindings();\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.groupIDLookups.length){\r\n\r\n\t\t\tif(!Object.keys(this.groups).length){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList =[];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","import Module from '../../core/Module.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.history.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"table-building\", this.tableElementCheck.bind(this));\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.element.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.element,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for tablator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\t//create new element\r\n\t\tvar newElement = document.createElement(\"div\");\r\n\r\n\t\t//transfer attributes to new element\r\n\t\tvar attributes = element.attributes;\r\n\r\n\t\t// loop through attributes and apply them on div\r\n\r\n\t\tfor(var i in attributes){\r\n\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// replace table with div element\r\n\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\r\n\t\tthis.table.element = newElement;\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for tablator inline options\r\n\t\t\tattributes = header.attributes;\r\n\r\n\t\t\t// //check for tablator inline options\r\n\t\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", []); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\r\n\t\t\tfor(let key in Keybindings.bindings){\r\n\t\t\t\tmergedBindings[key] = Keybindings.bindings[key];\r\n\t\t\t}\r\n\r\n\t\t\tif(Object.keys(bindings).length){\r\n\r\n\t\t\t\tfor(let key in bindings){\r\n\t\t\t\t\tmergedBindings[key] = bindings[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tthis.mapBinding(key, binding);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:\"ctrl + 90\",\r\n\tredo:\"ctrl + 89\",\r\n\tcopyToClipboard:\"ctrl + 67\",\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tif(cell.column.definition.contextMenu || cell.column.definition.clickMenu){\r\n\t\t\tthis.initializeCell(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerContextMenu || def.headerClickMenu || def.headerMenu){\r\n\t\t\tthis.initializeColumnHeader(column);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnHeader(column){\r\n\t\tvar headerMenuEl;\r\n\r\n\t\tif(column.definition.headerContextMenu){\r\n\t\t\tcolumn.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));\r\n\t\t\tthis.tapHold(column, column.definition.headerContextMenu);\r\n\t\t}\r\n\r\n\t\t// if(column.definition.headerClickMenu){\r\n\t\t// \tcolumn.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));\r\n\t\t// }\r\n\r\n\t\tif(column.definition.headerMenu){\r\n\r\n\t\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\r\n\t\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.LoadMenuEvent(column, column.definition.headerMenu, e);\r\n\t\t\t});\r\n\r\n\t\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t\t}\r\n\t}\r\n\r\n\tLoadMenuEvent(component, menu, e){\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\r\n\t\t// if(component instanceof Cell){\r\n\t\t// \te.stopImmediatePropagation();\r\n\t\t// }\r\n\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\r\n\ttapHold(component, menu){\r\n\t\tvar element = component.getElement(),\r\n\t\ttapHold = null,\r\n\t\tloaded = false;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\tloaded = false;\r\n\r\n\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t\tloaded = true;\r\n\r\n\t\t\t\tthis.LoadMenuEvent(component, menu, e);\r\n\t\t\t}, 1000);\r\n\r\n\t\t}, {passive: true});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tif(loaded){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.contextMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));\r\n\t\t\tthis.tapHold(cell, cell.column.definition.contextMenu);\r\n\t\t}\r\n\r\n\t\tif(cell.column.definition.clickMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"click\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\trow.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));\r\n\t\t\tthis.tapHold(row, this.table.options.rowContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\trow.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroup (group){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));\r\n\t\t\tthis.tapHold(group, this.table.options.groupContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tloadMenu(e, component, menu, parentEl){\r\n\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t}\r\n\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar docHeight = Math.max(document.body.offsetHeight, window.innerHeight),\r\n\t\tx, y, parentOffset;\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\r\n\t\tdocument.body.appendChild(element);\r\n\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) >= docHeight){\r\n\t\t\telement.style.top = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.bottom = (docHeight - parentOffset.top - parentEl.offsetHeight - 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.bottom = (docHeight - y) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= document.body.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t}\r\n\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\r\n\thideMenu(){\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\r\n\t\tif(!column.modules.frozen){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement();\r\n\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = \"0\";\r\n\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Page extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\r\n\t\tthis.pageSizes = [];\r\n\r\n\t\tthis.dataReceivedNames = {}; //TODO - remove once pagimation update is complete\r\n\t\tthis.dataSentNames = {}; //TODO - remove once pagimation update is complete\r\n\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initail page to show on load\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {index, top}\r\n\t}\r\n\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Promise.reject();\r\n\t}\r\n\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup pageination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel;\r\n\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set the maxmum page\r\n\tsetMaxPage(max){\r\n\r\n\t\tmax = parseInt(max);\r\n\r\n\t\tthis.max = max || 1;\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\r\n\t\tpage = parseInt(page);\r\n\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\r\n\t\treturn button;\r\n\t}\r\n\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger()\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar output, start, end;\r\n\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\r\n\t\t\tthis.setMaxRows(data.length);\r\n\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tif(data[i]){\r\n\t\t\t\t\toutput.push(data[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\ttrigger(){\r\n\t\tvar left;\r\n\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.last_page + \"' property\");\r\n\t\t}\r\n\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.table.rowManager.getData().concat(data.data);\r\n\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.data + \"' property\");\r\n\t\t}\r\n\r\n\t\treturn data.data;\r\n\t}\r\n\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.element;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.substr(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.substr(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar pushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[this.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? this.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = this.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tthis.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\r\n\t\tif(mode === true || mode == type){\r\n\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\r\n\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn();\r\n\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tthis.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate resposive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//detemine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column, i){\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && self.mode === \"collapse\"){\r\n\t\t\t\t\t\tself.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort(function(a, b){\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initialize();\r\n\t\t}\r\n\r\n\t\t//this.update();\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerText = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.clearSelectionData.bind(this));\r\n\r\n\t\t\tif(this.table.options.selectable && this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refeshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\r\n\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\r\n\t\trow.modules.select = {selected:false};\r\n\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\r\n\r\n\t\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\r\n\t\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\r\n\r\n\t\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\r\n\t\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\r\n\t\t\t\t\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\t\ttoggledRows.forEach(function(toggledRow){\r\n\t\t\t\t\t\t\t\t\tif(toggledRow !== self.lastClickedRow){\r\n\r\n\t\t\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true && !self.isRowSelected(row)){\r\n\t\t\t\t\t\t\t\t\t\t\tif(self.selectedRows.length < self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\r\n\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true){\r\n\t\t\t\t\t\t\t\t\tif(toggledRows.length > self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tself.selectRows(toggledRows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\t\t\t\t\t\t\tself.selectRows(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"string\":\r\n\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\r\n\t\tif(typeof rows == \"undefined\"){\r\n\r\n\t\t\trowCount = self.selectedRows.length;\r\n\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\r\n\t\t\tself._rowSelectionChanged(silent);\r\n\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetSelectedRows(){\r\n\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = DT.fromFormat(a, format);\r\n\t\tb = DT.fromFormat(b, format);\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach(function(item){\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach(function(item){\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;"],"names":["CoreFeature","table","data","silent","this","dataLoader","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","value","options","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","cells","forEach","cell","push","getComponent","visible","isGroup","columns","show","hide","output","length","parent","Column","columnManager","scrollToColumn","to","after","toColumn","findColumn","moveColumn","console","warn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","width","result","reinitializeWidth","setWidth","renderer","rerenderColumns","CellComponent","_cell","getValue","getOldValue","initialValue","row","getData","mutate","setValue","setValueActual","checkHeight","Cell","element","oldValue","height","minWidth","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","field","style","textAlign","hozAlign","vertAlign","display","alignItems","top","bottom","middle","justifyContent","left","right","center","definition","cssClass","split","classList","add","tooltipGenerationMode","addEventListener","e","_this2","_generateTooltip","val","_this3","innerHTML","Node","firstChild","removeChild","appendChild","tooltip","containerOnly","layoutElement","setValueProcessData","cellRendered","dispatchExternal","subscribedExternal","rowManager","changed","setFieldValue","_generateContents","widthStyled","offsetWidth","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getCellIndex","def","_this","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleFormatterRendered","mapDefinitions","setField","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","el","defaults","columnDefaults","optionsList","generate","defaultOptionList","Object","keys","indexOf","title","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","headerTooltip","langBind","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","setTooltip","_this4","dblTap","tapHold","tap","headerClick","_this5","headerDblClick","headerContext","headerTap","passive","headerDblTap","clearTimeout","setTimeout","headerTapHold","_this6","setMinWidth","parseInt","setMaxWidth","headerHozAlign","_buildColumnHeaderTitle","editableTitle","stopPropagation","focus","_this7","text","_formatColumnHeaderTitle","contents","_this8","dataObj","structure","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","minHeight","paddingTop","verticalAlign","clearVerticalAlign","formatter","rowNumColumn","getFirstColumn","getLastColumn","getTopColumn","updateBranches","colDefs","responsiveToggle","_verticalAlignHeaders","matchChildWidths","childWidth","child","index","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","Promise","resolve","reject","_this9","cellCount","deregisterColumn","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","force","fitToData","clearWidth","error","assign","addColumn","then","_this10","defaultOptions","Helpers","box","getBoundingClientRect","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","obj","clone","Array","isArray","_typeof","Date","deepClone","OptionsList","msgType","registeredDefaults","option","userOptions","debugInvalidOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","callback","update","blockRedraw","dir","includingBuffer","getDisplayRows","rowEl","remove","clearRows","clearColumns","renderRows","renderColumns","rerenderRows","position","ifVisible","rowIndex","offset","scrollToRowIfVisible","elVisible","elOffset","scrollToRowPosition","scrollToRowNearestTop","scrollToRow","scrollHeight","scrollTop","offsetTop","BaiscHorizontal","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","initialized","compatabilityCheck","ok","find","col","frozen","dataChange","scroll","old","cols","clear","colPos","columnsByIndex","config","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","renitializeRows","initializeRow","reinitializeRow","change","collsWidth","colEnd","generateCells","layoutRefresh","match","getVisibleRows","diff","addColRight","removeColLeft","addColLeft","removeColRight","start","end","getCell","fitDataColActualWidthCheck","prepend","newWidth","widthDiff","colPositionAdjust","ColumnManager","blockHozScrollEvent","headersElement","columnsByField","initializeRenderer","createHeadersElement","createHeaderElement","insertBefore","scrollHorizontal","renderClass","renderers","RendererVirtualDomHorizontal","RendererBasicHorizontal","renderHorizontal","initialize","headerVisible","hozAdjust","scrollWidth","marginLeft","scrollColumns","sorter","definitions","autoColumnsDefinitions","call","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","parentIndex","nextEl","nextSibling","unshift","columnRendered","getHeight","columnHeaderVertAlign","adjustTableSize","subject","_getSelf","HTMLElement","root","matches","findIndex","active","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","getComponents","updateRows","toIndex","fromIndex","concat","adjust","scrollToColumnPosition","scrollToColumnIfVisible","offsetLeft","generateCell","totalWidth","fixedWidth","colWidth","layoutMode","resetScroll","footerManager","RowComponent","_row","transform","getCells","getRowPosition","moveToRow","updateData","normalizeHeight","nextRow","prevRow","Row","manualHeight","outerHeight","created","setData","create","deleteCells","renderRowCells","rowFormatter","rerenderRowCells","children","maxHeight","resizableRows","setHeight","clearHeight","updatedData","newRowData","tempData","attrname","JSON","parse","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","getRowIndex","detatchModules","deleteRow","group","BaiscVertical","visibility","onlyGroupHeaders","styleRow","render","rowTop","abs","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","renderVerticalBuffer","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","containerHeight","ceil","rowHeight","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","firstRender","renderMode","fixedHeight","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRederInPosition","dataPipeline","displayPipeline","leftDir","topDir","scrollRows","renderInPosition","columnsChanged","pagination","_setDataActual","reRenderInPosition","autoColumns","generateColumnsFromRowData","_wipeElements","wipe","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowNumbers","_showPlaceholder","pos","addRowActual","findAddRowPos","reverse","item","addRow","_clearPlaceholder","addRowPos","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","list","getRows","handler","priority","sort","a","b","skipStage","stage","cascadeOrder","resetDisplayRows","setDisplayRows","renderTable","layoutColumnsOnNewData","viewable","visibleRows","RendererVirtualDomVertical","RendererBasicVertical","renderVertical","_clearTable","renderEmptyScroll","placeholder","initialHeight","otherHeight","external","resize","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","links","initializeElement","footerElement","querySelector","activate","deactivate","link","footerRedraw","InteractionManager","abortClasses","previousTargets","listeners","componentMap","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","values","comp","subscriptionChanged","added","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","filter","includes","targetMatches","previousTarget","ComponentFuctionBinder","bindings","funcName","hanlder","DataLoader","loaderElement","createLoaderElement","msgElement","createMsgElement","loadingElement","errorElement","requestOrder","loading","template","dataLoaderLoading","trim","firstElementChild","dataLoaderError","params","replace","requestNo","showLoader","mapParams","dataSendParams","response","objectInvert","dataReceiveParams","rowData","hideLoader","showError","map","langText","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifiySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","subscriber","confirmed","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Module","_handler","register","func","registerDataPipelineHandler","registerDisplayPipelineHandler","responsiveLayout","modExists","fitData","reinitializeColumnWidths","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","colsWidth","gap","lastCol","responsive","fitColumns","flexColWidth","overflowWidth","flexWidth","flexGrowUnits","flexColumns","fixedShrinkColumns","flexShrinkUnits","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","Layout","mode","registerTableOption","registerColumnOption","modes","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","registerTableFunction","getLang","headerFilters","_setLangProp","desiredLocale","navigator","language","toLowerCase","prefix","traverseLang","trans","prop","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","Comms","receive","selectors","connections","con","action","connection","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFuctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","prototype","registerModule","mod","registerModuleBinding","findTable","moduleCore","modulesCore","modulesRegular","core","mods","interactionMonitor","browserSlow","browserMobile","rtl","initialzeCoreSystems","_create","_clearObjectPointers","_mapDepricatedFunctionality","debugEventsExternal","debugEventsInternal","InteractionMonitor","getComputedStyle","textDirection","direction","getSelection","empty","removeAllRanges","selection","rtlCheck","_buildElement","_loadInitialData","reactiveData","_detectBrowser","span","deregister","ua","userAgent","vendor","opera","test","substr","restoreRedraw","extensions","input","accept","file","files","reader","FileReader","readAsText","onload","err","onerror","click","blockActiveLoad","clearData","getDataCount","responses","addRows","newRows","getRowFromPosition","foundRows","fromRow","getDefinitionTree","fromColumn","plugin","required","columnMaxWidth","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","Accessor","allowedTypes","initializeColumn","transformRow","accessor","charAt","toUpperCase","lookupAccessor","accessors","rowComponent","traverse","colCompnent","generateParamsList","serializeParams","encoded","encodeURIComponent","join","headers","body","url","stringify","form","FormData","append","Ajax","urlGenerator","loaderPromise","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxParams","setParams","ajaxConfig","setConfig","ajaxURL","setUrl","getUrl","requestDataCheck","requestData","previousData","sendRequest","_loadDefaultConfig","method","defaultConfig","ajaxRequesting","ajaxResponse","contentType","ajaxContentType","Accept","location","origin","credentials","fetch","json","status","statusText","defaultContentTypeFormatters","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboard","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","generateExportList","clipboardCopyConfig","clipboardCopyStyled","genereateHTMLTable","generatePlainContent","clipboardData","originalEvent","reset","paste","setPasteParser","clipboardPasteParser","setPasteAction","clipboardPasteAction","copy","getKey","range","internal","sel","textRange","createRange","selectNodeContents","toString","addRange","createTextRange","moveToElementText","select","execCommand","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","mutator","valid","tagName","edit","currentCell","updateOrAddData","insert","addData","headerFindSuccess","columnMap","CalcComponent","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","tableRedraw","getResults","userRecalc","recalc","groupBy","recalcRowGroup","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","getChildGroups","generateRowData","dataTree","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","getFormatter","paramKey","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","groups","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","registerComponentFunction","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","dummyEl","firstCol","getFirstVisibileColumn","dataTreeChildField","dataTreeChildIndent","dataTreeElementColumn","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","dataTreeStartExpanded","layoutRow","rowDelete","rowDataChanged","columnMoving","registerDisplayHandler","getTreeChildren","redrawNeeded","refreshData","childArray","controlEl","generateControlElement","cloneNode","marginRight","getPropertyValue","oldControl","replaceChild","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","sub","childData","childRow","childIndex","findChildIndex","recurse","csv","setFileContents","delimiter","fileContents","depth","bom","pdf","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","parseRow","styles","content","colSpan","rowSpan","orientation","unit","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","xlsx","sheetName","workbook","XLSX","utils","book_new","tableFeatures","generateSheet","merges","worksheet","s","c","r","j","sheet_add_aoa","encode_range","SheetNames","Sheets","sheetOnly","sheets","sheet","commsSend","intercept","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","bookType","bookSST","Download","blob","download","downloadToTab","filename","interceptCallback","downloadFunc","downloaders","mime","triggerDownload","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","Blob","downloadReady","URL","createObjectURL","msSaveOrOpenBlob","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","keyCode","maskAutoFill","defaultDownloaders","onRendered","success","cancel","editorParams","cellValue","search","padding","boxSizing","elementAttributes","getAttribute","onChange","preventScroll","textarea","vertNav","verticalNavigation","whiteSpace","getRow","heightNow","selectionStart","stopImmediatePropagation","number","step","blurFunc","self","cellEl","initialDisplayValue","defaultValue","listEl","multiselect","dataItems","currentItem","displayItems","currentItems","blurable","blockListShow","searchWord","searchWordTimeout","getUniqueColumnValues","getColumnByField","getColumn","parseItems","inputValues","curentValues","dataList","displayList","processComplexListItem","label","itemParams","setItem","sortValuesList","listItemFormatter","toggleItem","chooseItem","fillList","setCurrentItem","scrollIntoView","behavior","block","inline","fillInput","unsetItem","hideList","chooseItems","cancelItem","cursor","readOnly","len","unsetItems","character","fromCharCode","startsWith","scrollTovalue","showList","autocomplete","uniqueColumnValues","genUniqueColumnValues","filterList","term","intialLoad","items","searchFunc","addNotice","searchingPlaceholder","fillListIfNotEmpty","showListOnEmpty","notice","searchEl","clearList","itemList","current","emptyPlaceholder","freetext","allowEmpty","showInputValue","star","maxStars","getElementsByTagName","size","stars","starsHolder","createElementNS","starChange","buildStar","starHolder","nextStar","blur","changeValue","overflow","textOverflow","progress","mouseDrag","mouseDragWidth","percent","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","marginTop","checked","indeterminate","Edit","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellisEdited","clearEdited","editCell","cellCancelEdit","bindEditor","columnDeleteCheck","rowDeleteCheck","cancelEdit","keybindingNavigateNext","newRow","nav","next","edited","nextCell","findNextEditableCell","getIndex","findPrevEditableCell","allowEdit","check","prevCell","editor","editable","validate","clearEditor","variableHeight","cellEditCancelled","contains","button","forceEdit","focusCellNoEvent","getRenderMode","leftEdge","rightEdge","leftMargin","rightMargin","cellEditor","rendered","focusScrollAdjust","cellClick","cellEditing","validationMode","checkForRestyle","editIndex","invalid","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","genereateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","genereateHeaderElement","genereateGroupElement","genereateCalcElement","genereateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","classNames","generator","isVisible","cellWrapper","formatCells","formatExportValue","align","renderedCallback","htmlOutputConfig","props","lookup","fromStyle","filterVal","rowVal","filterParams","RegExp","keywords","separator","keyword","matchAll","endsWith","Filter","headerFilterColumns","prevHeaderFilterChangeCheck","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","filterMode","remoteFilterParams","registerDataHandler","initialFilter","setFilter","initialHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","setHeaderFilterColumnPlaceholder","filterFunc","filterType","tagType","attrType","filterChangeCheck","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","reloadData","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","_this11","subFilter","_this12","defaultFilters","plaintext","formatterParams","emptyToSpace","sanitizeHTML","money","integer","decimal","rgx","floatVal","decimalSym","thousandSym","thousand","symbolAfter","urlPrefix","labelField","urlField","image","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","datetime","DT","DateTime","luxon","inputFormat","outputFormat","invalidPlaceholder","newDatetime","fromFormat","isValid","timezone","shiftTimezone","toFormat","datetimediff","suffix","humanize","date","now","traffic","percentValue","colors","color","legend","legendColor","legendAlign","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","responsiveCollapse","toggleList","isOpen","rowSelection","checkbox","toggleSelect","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","rightPadding","initializationMode","scrollEndTimer","layoutCell","edge","frozenCheck","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","allCells","leftParents","parentEl","getColGroupParentElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","toggleVisibility","groupManager","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","groupList","elementContents","arrowElement","createElements","addBindings","createValueGroups","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","groupContextMenu","groupClickMenu","menu","initializeGroup","groupTap","groupDblTap","groupTapHold","groupToggleElement","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","updateGroupRows","scrollHeader","groupValues","removeGroup","noCalc","_visSet","getHeadersAndRows","hasTopCalcs","detachElement","generateTopRow","hasBottomCalcs","generateBottomRow","groupClosedShowCalcs","count","getDisplayIndex","checkClassicModeGroupHeaderWidth","prev","compoment","getPath","addBindingsd","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","groupStartOpen","langValue","removeCalcs","getRealColumns","lookupFunc","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","removeRow","insertRow","generateGroups","groupComponents","groupListData","pullGroupListData","rowCount","headerContent","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","every","groupPath","groupId","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","posFrom","posTo","getGroup","newValue","undoers","redoers","oldRow","cellEdit","rowAdd","_rebindRow","rowMove","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","newElement","attributes","optionsArr","attrib","_attribValue","exists","_findCol","textContent","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tapDbl","initializeExternalEvents","cellContentsSelectionFixer","selectNode","subscriptionChangeExternal","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","notouch","watchers","componentObj","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","actions","mapBinding","symbolsList","ctrl","meta","code","checkBinding","ctrlKey","shiftKey","metaKey","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","scrollMax","navLeft","navRight","Menu","menuElements","blurEvent","hideMenu","escEvent","escMenu","nestedMenuBlock","positionReversedX","contextMenu","clickMenu","initializeCell","headerContextMenu","headerClickMenu","headerMenu","initializeColumnHeader","headerMenuEl","LoadMenuEvent","loadMenu","rowContextMenu","rowClickMenu","touch","MouseEvent","menuEl","itemEl","disabled","hideOldSubMenus","positionMenu","pop","x","y","parentOffset","docHeight","innerHeight","touches","pageX","pageY","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","mousemove","which","startMove","bindTouchEvents","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","moveToCol","_bindMouseMove","movingCells","_unbindMouseMove","scrollPos","columnHolder","xPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","mouseup","tableRowDrop","previousSibling","rowHandle","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","startYMove","setStartPosition","connectToTables","pointerEvents","getTableElement","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","connectionTables","commsConnections","dropEvent","elementRowDrop","tabulatorElementDropEvent","sender","movableRowsSender","senders","movableRowsReceiver","receivers","connect","disconnect","dropComplete","fromTable","toTable","Mutator","enabled","transformCell","lookupMutator","mutators","mutatorEdit","Page","progressiveLoad","page","initialLoad","dataChanging","pageSizes","dataReceivedNames","dataSentNames","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","rowAddingPosition","initialLoadComplete","calculatePageSizes","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePaginator","initializeProgressive","scrollVertical","dispRows","testElRow","testElCell","paginationSize","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","hidden","pageSelectLabel","paginationElement","paginationInitialPage","paginationButtonCount","generatePageSizeSelectList","trigger","leftSize","rightSize","_generatePageButton","setMaxRows","_setPageButtons","last_page","progressiveLoadDelay","footer","local","id","localStorage","getItem","cookie","cookiePos","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","testKey","removeItem","persistence","retreivedData","persistenceMode","persistenceID","localStorageTest","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retreiveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","getColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","Print","manualBlock","printAsHtml","replaceTable","cleanup","printFullscreen","genereateTable","printConfig","printStyled","printRowRange","footerContent","scrollX","scrollY","footerEl","tableEl","printHeader","printFooter","printFormatter","scrollTo","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","getRowFromDataObject","startRow","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","ResizeColumns","startColumn","startWidth","prevHandle","layoutCellHandles","layoutColumnHeader","resizable","handleDown","nearestColumn","_checkResizability","_mouseDown","prevHandleDown","colIndex","mouseMove","checkCellHeights","mouseUp","ResizeRows","startHeight","screenY","ResizeTable","observer","containerObserver","tableHeight","containerWidth","autoResize","tableStyle","ResizeObserver","entry","nodeHeight","contentRect","nodeWidth","observe","tableResized","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","generateCollapsedRowContent","colCount","working","getFlexBaseWidth","hideColumn","showColumn","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","node_content","titleData","valueData","titleHighlight","innerText","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","selectablePersistence","_deselectRow","_rowSelectionChanged","endSelect","selected","selectableCheck","selectableRangeMode","_clearSelection","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","getCurrentCell","_selectRow","rowMatch","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","aRow","bRow","alignEmptyValues","emptyAlign","decimalSeparator","thousandSeparator","string","langLocale","localeCompare","time","array","calc","d","alphanum","as","bs","a1","b1","L","rx","rd","isFinite","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortElement","columnHeaderSortMulti","newSortList","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","findSorter","setColumnHeader","_sortItems","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","el1","el2","defaultSorters","parameters","numeric","starts","ends","minLength","maxLength","regex","unique","cellData","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","cellValidate","columnValidate","rowValidate","validator","_extractValidator","substring","_buildValidator","validators","invalidIndex","defaultValidators","TabulatorFull"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tabulator.min.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/Column.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFuctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/TableRegistry.js","../../src/js/core/Module.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/Tabulator.js","../../src/js/core/defaults/options.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/History.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value != value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = typeof def.headerTooltip === \"undefined\" ? def.tooltip : def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.offsetHeight;\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData();\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tthis.setWidthActual(maxWidth + 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj){\r\n\t\tvar clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tif(obj[i] != null && typeof(obj[i]) === \"object\"){\r\n\t\t\t\tif (obj[i] instanceof Date) {\r\n\t\t\t\t\tclone[i] = new Date(obj[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn clone;\r\n\t}\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = {};\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determin weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\r\n\t\tthis.fitDataColAvg = 0;\r\n\r\n\t\tthis.window = 200; //pixel margin to make column visible before it is shown on screen\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tthis.columns = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.compatabilityCheck();\r\n\t}\r\n\r\n\tcompatabilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\r\n\t\treturn ok;\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.window));\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t};\r\n\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.clear();\r\n\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.window;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\tvar colPos = 0;\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\r\n\t\t\t\tconfig.width = width;\r\n\r\n\t\t\t\tif (this.options(\"layout\") === \"fitData\") {\r\n\t\t\t\t\tconfig.fitDataCheck = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t \t\t//column is visible\r\n\r\n\t \t\tif(this.leftCol == -1){\r\n\t \t\t\tthis.leftCol = this.columns.length;\r\n\t \t\t\tthis.vDomPadLeft = colPos;\r\n\t \t\t}\r\n\r\n\t \t\tthis.rightCol = this.columns.length;\r\n\t \t}else{\r\n\t \t\t// column is hidden\r\n\t \t\tif(this.leftCol !== -1){\r\n\t \t\t\tthis.vDomPadRight += width;\r\n\t \t\t}\r\n\t \t}\r\n\r\n\t \tthis.columns.push(column);\r\n\r\n\t \tcolumn.modules.vdomHoz = config;\r\n\r\n\t \tcolPos += width;\r\n\t }\r\n\t });\r\n\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.renitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\r\n\t\tif(this.options(\"layout\") === \"fitData\"){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows()[0];\r\n\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\tif(row){\r\n\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\r\n\t\t\t\t\t\trow.generateCells();\r\n\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\r\n\t\t\t\t\t\t\tif(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\t\t\t\tthis.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\r\n\t\t\t\t\t\tfor(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t\tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn !match;\r\n\t}\r\n\r\n\trenitializeRows(){\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(diff > (this.elementVertical.clientWidth * .8)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\r\n\taddColRight(){\r\n\t\tvar column = this.columns[this.rightCol + 1],\r\n\t\trows, newWidth, widthDiff;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tthis.rightCol++;\r\n\r\n\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.addColRight();\r\n\t\t}\r\n\t}\r\n\r\n\taddColLeft(){\r\n\t\tvar column = this.columns[this.leftCol - 1],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tif(!this.leftCol){\r\n\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol--;\r\n\r\n\t\t\tthis.addColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColRight(column){\r\n\t\tvar column = this.columns[this.rightCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tcolumn.modules.vdomHoz.visible = false;\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.rightCol --;\r\n\r\n\t\t\tthis.removeColRight();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColLeft(){\r\n\t\tvar column = this.columns[this.leftCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\tif(cell.parentNode){\r\n\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol ++;\r\n\r\n\t\t\tthis.removeColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.rightCol + 2, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t};\r\n\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\");\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\r\n\t\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\r\n\t\t\tvar nextEl = nextToColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\t_verticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibileColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis._verticalAlignHeaders();\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(force){\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tthis._verticalAlignHeaders();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.render();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold caluclation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\r\n\t\tthis.firstRender = true;\r\n\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\t\t\t}\r\n\r\n\t\t\t//handle verical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\r\n\t\t\t\tthis._setDataActual(data);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\r\n\t\tthis._wipeElements();\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\r\n\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\r\n\t\t\tlength = data.length - 1;\r\n\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRenderInPosition();\r\n\r\n\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\r\n\t\treturn pos;\r\n\t}\r\n\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\r\n\t\t}else{\r\n\r\n\t\t\tif(top){\r\n\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\r\n\t\tthis.moveRowActual(from, to, after);\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\r\n\t\tif(from !== to){\r\n\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\r\n\t\t\tif (fromIndex > -1) {\r\n\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\r\n\t\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\r\n\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn nextRow;\r\n\t}\r\n\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn prevRow;\r\n\t}\r\n\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\r\n\t\trow = this.findRow(row);\r\n\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\r\n\t\treturn rows.length;\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\r\n\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tthis.dispatch(\"data-refeshing\");\r\n\r\n\t\t\tif(!handler){\r\n\t\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t\t}\r\n\r\n\t\t\t//cascade through data refresh stages\r\n\t\t\tswitch(stage){\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\t//handle case where alldata needs refreshing\r\n\r\n\t\t\t\tcase \"dataPipeline\":\r\n\r\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\r\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\r\n\t\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\t\tcase \"display\":\r\n\t\t\t\tindex = 0;\r\n\t\t\t\tthis.resetDisplayRows();\r\n\r\n\t\t\t\tcase \"displayPipeline\":\r\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\r\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcase \"end\":\r\n\t\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t\t}\r\n\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.renderTable();\r\n\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"data-refeshed\");\r\n\t\t}\r\n\t}\r\n\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\r\n\t\tvar output = true;\r\n\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\r\n\tgetVisibleRows(viewable){\r\n\t\treturn this.renderer.visibleRows(!viewable);\r\n\t}\r\n\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRederInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\r\n\trenderTable(){\r\n\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis._clearTable();\r\n\t\t\tthis.renderer.renderRows();\r\n\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-layout\");\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.table.options.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\tthis._clearPlaceholder();\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\r\n\t_showPlaceholder(){\r\n\t\tif(this.table.options.placeholder){\r\n\r\n\t\t\tthis.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\r\n\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\tthis.table.options.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearPlaceholder(){\r\n\t\tif(this.table.options.placeholder && this.table.options.placeholder.parentNode){\r\n\t\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\r\n\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\r\n\t\t\tthis.renderer.resize();\r\n\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRederInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.redrawBlockRederInPosition = false;\r\n\t}\r\n\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\r\n\t\tthis.adjustTableSize();\r\n\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\tif(!this.displayRowsCount){\r\n\t\t\t\tif(this.table.options.placeholder){\r\n\t\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tinitialize(){\r\n\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.el = this.table.element;\r\n\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\r\n\t\tthis.previousTargets = {};\r\n\r\n\t\tthis.listeners = [\r\n\t\t\"click\",\r\n\t\t\"dblclick\",\r\n\t\t\"contextmenu\",\r\n\t\t\"mouseenter\",\r\n\t\t\"mouseleave\",\r\n\t\t\"mouseover\",\r\n\t\t\"mouseout\",\r\n\t\t\"mousemove\",\r\n\t\t\"touchstart\",\r\n\t\t\"touchend\",\r\n\t\t];\r\n\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t}\r\n\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.previousTargets = targetMatches;\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFuctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", data, params, config, silent)){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tvar params = this.chain(\"data-params\", [data, config, silent], params || {}, {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], Promise.resolve([]));\r\n\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, 3000);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(optionsList, debug){\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name].prototype[property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\r\n\t\t\t\tthis.modules[name] = new mod(this);\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore[name] = this.modules[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.modulesRegular[name] = this.modules[name];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFuctionBinder from './tools/ComponentFuctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFuctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = {}; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = {}; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initialzeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediatly after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inderdevice communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitialzeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDepricatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\trtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//convert depricated functionality to new functions\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//concreate table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis.rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(this.options.data && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tfor (let key in this.modulesCore){\r\n\t\t\tlet mod = this.modulesCore[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\t//configure placeholder element\r\n\t\tif(typeof options.placeholder == \"string\"){\r\n\r\n\t\t\tvar el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\r\n\t\t\tvar span = document.createElement(\"span\");\r\n\t\t\tspan.innerHTML = options.placeholder;\r\n\r\n\t\t\tel.appendChild(span);\r\n\r\n\t\t\toptions.placeholder = el;\r\n\t\t}\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && this.options.data){\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tfor (let key in this.modulesRegular){\r\n\t\t\tlet mod = this.modulesRegular[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inderdevice communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(ua.substr(0,4));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//local data from local file\r\n\tsetDataFromLocalFile(extensions){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.type = \"file\";\r\n\t\t\tinput.accept = extensions || \".json,application/json\";\r\n\r\n\t\t\tinput.addEventListener(\"change\", (e) => {\r\n\t\t\t\tvar file = input.files[0],\r\n\t\t\t\treader = new FileReader(),\r\n\t\t\t\tdata;\r\n\r\n\t\t\t\treader.readAsText(file);\r\n\r\n\t\t\t\treader.onload = (e) => {\r\n\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tdata = JSON.parse(reader.result);\r\n\t\t\t\t\t} catch(e) {\r\n\t\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\r\n\t\t\t\t\t\treject(e);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.setData(data)\r\n\t\t\t\t\t.then((data) => {\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\tresolve(err);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\treader.onerror = (e) => {\r\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\r\n\t\t\t\t\treject();\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tinput.click();\r\n\t\t});\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\tresolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnMaxWidth:false, //minimum global width for a column\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //seperatpr for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach(function(type){\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {}","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\tvar output = this.generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = false; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\r\n\t\tthis.loaderPromise = false;\r\n\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\r\n\t\tif(this.table.options.ajaxParams){\r\n\t\t\tthis.setParams(this.table.options.ajaxParams);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxConfig){\r\n\t\t\tthis.setConfig(this.table.options.ajaxConfig);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\r\n\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\r\n\trequestData(data, params, config, silent, previousData){\r\n\t\tif(this.requestDataCheck(data)){\r\n\t\t\tif(data){\r\n\t\t\t\tthis.setUrl(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(params){\r\n\t\t\t\tthis.setParams(params, true);\r\n\t\t\t}\r\n\r\n\t\t\tif(config){\r\n\t\t\t\tthis.setConfig(config);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.sendRequest();\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\r\n\t//set ajax params\r\n\tsetParams(params, update){\r\n\t\tif(update){\r\n\t\t\tthis.params = this.params || {};\r\n\r\n\t\t\tfor(let key in params){\r\n\t\t\t\tthis.params[key] = params[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.params = params;\r\n\t\t}\r\n\t}\r\n\r\n\tgetParams(){\r\n\t\treturn this.params || {};\r\n\t}\r\n\r\n\t//load config object\r\n\tsetConfig(config){\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tfor(let key in config){\r\n\t\t\t\tthis.config[key] = config[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create config object from default\r\n\t_loadDefaultConfig(force){\r\n\t\tif(!this.config || force){\r\n\r\n\t\t\tthis.config = {};\r\n\r\n\t\t\t//load base config from defaults\r\n\t\t\tfor(let key in Ajax.defaultConfig){\r\n\t\t\t\tthis.config[key] = Ajax.defaultConfig[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\r\n\t//send ajax request\r\n\tsendRequest(silent){\r\n\t\tvar url = this.url,\r\n\t\tesc, query;\r\n\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, this.url, this.params) !== false){\r\n\t\t\treturn this.loaderPromise(url, this.config, this.params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, this.url, this.params, data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\tmethod: \"GET\",\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refeshed\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(this);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\tfirstCol = this.table.columnManager.getFirstVisibileColumn(),\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\t\t\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-relayout\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tcheckForRestyle(cell){\r\n\t\tif(!cell.row.cells.indexOf(cell)){\r\n\t\t\tcell.row.reinitialize();\r\n\t\t}\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}else{\r\n\t\t\t\trowData.push(\"\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refeshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tnav.next();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.validate){\r\n\t\t\t\t\tcell.validate();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tcolumns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tif(left !== this.table.rowManager.element.scrollLeft){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tthis.changed = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = (window.DateTime || luxon.DateTime).fromFormat(value, inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = DT.fromFormat(value, inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-before\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\r\n\t\tif(!column.isGroup){\r\n\r\n\t\t\tif(this.frozenCheck(column)){\r\n\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.active = true;\r\n\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\r\n\t\treturn frozen;\r\n\t}\r\n\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\t//layout all rows after scroll is complete\r\n\t\t\tthis.scrollEndTimer = setTimeout(() => {\r\n\t\t\t\tthis.layout();\r\n\t\t\t}, 100);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate margins for rows\r\n\tcalcMargins(){\r\n\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\r\n\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\r\n\t\tvar leftParents = [];\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this._calcSpace(this.leftColumns, i) + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - this._calcSpace(this.rightColumns, i + 1)) + \"px\";\r\n\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\r\n\t//layout columns appropropriatly\r\n\tlayout(){\r\n\t\tvar rightMargin = 0;\r\n\r\n\t\tif(this.active){\r\n\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutElement(element, column){\r\n\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.arrowElement = false;\r\n\t\t\tthis.elementContents = false;\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\taddBindings(){\r\n\t\tvar dblTap,\ttapHold, tap, toggleElement;\r\n\r\n\t\tif ((this.groupManager.table.options.groupContextMenu || this.groupManager.table.options.groupClickMenu) && this.groupManager.table.modExists(\"menu\")){\r\n\t\t\tthis.groupManager.table.modules.menu.initializeGroup.call(this.groupManager.table.modules.menu, this);\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTap){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tthis.groupManager.table.options.groupTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupDblTap){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tthis.groupManager.table.options.groupDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTapHold){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tthis.groupManager.table.options.groupTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\t_addRowToGroup(row){\r\n\r\n\t\tvar level = this.level + 1;\r\n\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\r\n\t\trow.updateData(data);\r\n\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trow.modules.group = this;\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\r\n\tscrollHeader(left){\r\n\t\tthis.arrowElement.style.marginLeft = left;\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\tchild.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tgetRowIndex(row){}\r\n\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\r\n\t\toutput.push(this);\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\r\n\t\t\tvar prev = this.getElement();\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\r\n\t\tif(typeof this.visible == \"function\"){\r\n\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\r\n\t////////////// Standard Row Functions //////////////\r\n\r\n\tgetElement(){\r\n\t\tthis.addBindingsd = false;\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t// this.addBindings();\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.groupIDLookups.length){\r\n\r\n\t\t\tif(!Object.keys(this.groups).length){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList =[];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","import Module from '../../core/Module.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.history.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"table-building\", this.tableElementCheck.bind(this));\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.element.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.element,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for tablator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\t//create new element\r\n\t\tvar newElement = document.createElement(\"div\");\r\n\r\n\t\t//transfer attributes to new element\r\n\t\tvar attributes = element.attributes;\r\n\r\n\t\t// loop through attributes and apply them on div\r\n\r\n\t\tfor(var i in attributes){\r\n\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// replace table with div element\r\n\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\r\n\t\tthis.table.element = newElement;\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for tablator inline options\r\n\t\t\tattributes = header.attributes;\r\n\r\n\t\t\t// //check for tablator inline options\r\n\t\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", []); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\r\n\t\t\tfor(let key in Keybindings.bindings){\r\n\t\t\t\tmergedBindings[key] = Keybindings.bindings[key];\r\n\t\t\t}\r\n\r\n\t\t\tif(Object.keys(bindings).length){\r\n\r\n\t\t\t\tfor(let key in bindings){\r\n\t\t\t\t\tmergedBindings[key] = bindings[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tthis.mapBinding(key, binding);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:\"ctrl + 90\",\r\n\tredo:\"ctrl + 89\",\r\n\tcopyToClipboard:\"ctrl + 67\",\r\n};","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tif(cell.column.definition.contextMenu || cell.column.definition.clickMenu){\r\n\t\t\tthis.initializeCell(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerContextMenu || def.headerClickMenu || def.headerMenu){\r\n\t\t\tthis.initializeColumnHeader(column);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnHeader(column){\r\n\t\tvar headerMenuEl;\r\n\r\n\t\tif(column.definition.headerContextMenu){\r\n\t\t\tcolumn.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));\r\n\t\t\tthis.tapHold(column, column.definition.headerContextMenu);\r\n\t\t}\r\n\r\n\t\t// if(column.definition.headerClickMenu){\r\n\t\t// \tcolumn.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));\r\n\t\t// }\r\n\r\n\t\tif(column.definition.headerMenu){\r\n\r\n\t\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\r\n\t\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.LoadMenuEvent(column, column.definition.headerMenu, e);\r\n\t\t\t});\r\n\r\n\t\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t\t}\r\n\t}\r\n\r\n\tLoadMenuEvent(component, menu, e){\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\r\n\t\t// if(component instanceof Cell){\r\n\t\t// \te.stopImmediatePropagation();\r\n\t\t// }\r\n\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\r\n\ttapHold(component, menu){\r\n\t\tvar element = component.getElement(),\r\n\t\ttapHold = null,\r\n\t\tloaded = false;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\tloaded = false;\r\n\r\n\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t\tloaded = true;\r\n\r\n\t\t\t\tthis.LoadMenuEvent(component, menu, e);\r\n\t\t\t}, 1000);\r\n\r\n\t\t}, {passive: true});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tif(loaded){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.contextMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));\r\n\t\t\tthis.tapHold(cell, cell.column.definition.contextMenu);\r\n\t\t}\r\n\r\n\t\tif(cell.column.definition.clickMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"click\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\trow.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));\r\n\t\t\tthis.tapHold(row, this.table.options.rowContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\trow.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroup (group){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));\r\n\t\t\tthis.tapHold(group, this.table.options.groupContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tloadMenu(e, component, menu, parentEl){\r\n\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t}\r\n\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar docHeight = Math.max(document.body.offsetHeight, window.innerHeight),\r\n\t\tx, y, parentOffset;\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\r\n\t\tdocument.body.appendChild(element);\r\n\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) >= docHeight){\r\n\t\t\telement.style.top = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.bottom = (docHeight - parentOffset.top - parentEl.offsetHeight - 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.bottom = (docHeight - y) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= document.body.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t}\r\n\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\r\n\thideMenu(){\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\r\n\t\tif(!column.modules.frozen){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement();\r\n\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = \"0\";\r\n\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Page extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\r\n\t\tthis.pageSizes = [];\r\n\r\n\t\tthis.dataReceivedNames = {}; //TODO - remove once pagimation update is complete\r\n\t\tthis.dataSentNames = {}; //TODO - remove once pagimation update is complete\r\n\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initail page to show on load\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {index, top}\r\n\t}\r\n\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Promise.reject();\r\n\t}\r\n\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup pageination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel;\r\n\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set the maxmum page\r\n\tsetMaxPage(max){\r\n\r\n\t\tmax = parseInt(max);\r\n\r\n\t\tthis.max = max || 1;\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\r\n\t\tpage = parseInt(page);\r\n\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\r\n\t\treturn button;\r\n\t}\r\n\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger()\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar output, start, end;\r\n\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\r\n\t\t\tthis.setMaxRows(data.length);\r\n\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tif(data[i]){\r\n\t\t\t\t\toutput.push(data[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\ttrigger(){\r\n\t\tvar left;\r\n\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.last_page + \"' property\");\r\n\t\t}\r\n\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.table.rowManager.getData().concat(data.data);\r\n\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.data + \"' property\");\r\n\t\t}\r\n\r\n\t\treturn data.data;\r\n\t}\r\n\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.element;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.substr(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.substr(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar pushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[this.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? this.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = this.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tthis.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\r\n\t\tif(mode === true || mode == type){\r\n\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\r\n\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn();\r\n\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tthis.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate resposive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//detemine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column, i){\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && self.mode === \"collapse\"){\r\n\t\t\t\t\t\tself.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort(function(a, b){\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initialize();\r\n\t\t}\r\n\r\n\t\t//this.update();\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerText = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.clearSelectionData.bind(this));\r\n\r\n\t\t\tif(this.table.options.selectable && this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refeshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\r\n\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\r\n\t\trow.modules.select = {selected:false};\r\n\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\r\n\r\n\t\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\r\n\t\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\r\n\r\n\t\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\r\n\t\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\r\n\t\t\t\t\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\t\ttoggledRows.forEach(function(toggledRow){\r\n\t\t\t\t\t\t\t\t\tif(toggledRow !== self.lastClickedRow){\r\n\r\n\t\t\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true && !self.isRowSelected(row)){\r\n\t\t\t\t\t\t\t\t\t\t\tif(self.selectedRows.length < self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\r\n\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true){\r\n\t\t\t\t\t\t\t\t\tif(toggledRows.length > self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tself.selectRows(toggledRows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\t\t\t\t\t\t\tself.selectRows(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"string\":\r\n\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\r\n\t\tif(typeof rows == \"undefined\"){\r\n\r\n\t\t\trowCount = self.selectedRows.length;\r\n\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\r\n\t\t\tself._rowSelectionChanged(silent);\r\n\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetSelectedRows(){\r\n\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = DT.fromFormat(a, format);\r\n\t\tb = DT.fromFormat(b, format);\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach(function(item){\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach(function(item){\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","//tabulator with all modules installed\r\nimport {default as Tabulator} from './Tabulator.js';\r\nimport * as modules from '../core/modules/optional.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nclass TabulatorFull extends Tabulator {};\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(TabulatorFull, modules);\r\n\r\nexport default TabulatorFull;"],"names":["CoreFeature","table","data","silent","this","dataLoader","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","value","options","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","cells","forEach","cell","push","getComponent","visible","isGroup","columns","show","hide","output","length","parent","Column","columnManager","scrollToColumn","to","after","toColumn","findColumn","moveColumn","console","warn","nextCol","nextColumn","prevCol","prevColumn","updates","updateDefinition","getWidth","width","result","reinitializeWidth","setWidth","renderer","rerenderColumns","CellComponent","_cell","getValue","getOldValue","initialValue","row","getData","mutate","setValue","setValueActual","checkHeight","Cell","element","oldValue","height","minWidth","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","field","style","textAlign","hozAlign","vertAlign","display","alignItems","top","bottom","middle","justifyContent","left","right","center","definition","cssClass","split","classList","add","tooltipGenerationMode","addEventListener","e","_this2","_generateTooltip","val","_this3","innerHTML","Node","firstChild","removeChild","appendChild","tooltip","containerOnly","layoutElement","setValueProcessData","cellRendered","dispatchExternal","subscribedExternal","rowManager","changed","setFieldValue","_generateContents","widthStyled","offsetWidth","minWidthStyled","maxWidth","maxWidthStyled","reinitializeHeight","heightStyled","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getCellIndex","def","_this","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleFormatterRendered","mapDefinitions","setField","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","bindModuleColumns","el","defaults","columnDefaults","optionsList","generate","defaultOptionList","Object","keys","indexOf","title","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","headerTooltip","langBind","headerVertical","_bindEvents","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","setTooltip","_this4","dblTap","tapHold","tap","headerClick","_this5","headerDblClick","headerContext","headerTap","passive","headerDblTap","clearTimeout","setTimeout","headerTapHold","_this6","setMinWidth","parseInt","setMaxWidth","headerHozAlign","_buildColumnHeaderTitle","editableTitle","stopPropagation","focus","_this7","text","_formatColumnHeaderTitle","contents","_this8","dataObj","structure","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","minHeight","paddingTop","verticalAlign","clearVerticalAlign","formatter","rowNumColumn","getFirstColumn","getLastColumn","getTopColumn","updateBranches","colDefs","responsiveToggle","_verticalAlignHeaders","matchChildWidths","childWidth","child","index","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","Promise","resolve","reject","_this9","cellCount","deregisterColumn","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","force","fitToData","clearWidth","error","assign","addColumn","then","_this10","defaultOptions","Helpers","box","getBoundingClientRect","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","obj","clone","Array","isArray","_typeof","Date","deepClone","OptionsList","msgType","registeredDefaults","option","userOptions","debugInvalidOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","callback","update","blockRedraw","dir","includingBuffer","getDisplayRows","rowEl","remove","clearRows","clearColumns","renderRows","renderColumns","rerenderRows","position","ifVisible","rowIndex","offset","scrollToRowIfVisible","elVisible","elOffset","scrollToRowPosition","scrollToRowNearestTop","scrollToRow","scrollHeight","scrollTop","offsetTop","BaiscHorizontal","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","initialized","compatabilityCheck","ok","find","col","frozen","dataChange","scroll","old","cols","clear","colPos","columnsByIndex","config","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","renitializeRows","initializeRow","reinitializeRow","change","collsWidth","colEnd","generateCells","layoutRefresh","match","getVisibleRows","diff","addColRight","removeColLeft","addColLeft","removeColRight","start","end","getCell","fitDataColActualWidthCheck","prepend","newWidth","widthDiff","colPositionAdjust","ColumnManager","blockHozScrollEvent","headersElement","columnsByField","initializeRenderer","createHeadersElement","createHeaderElement","insertBefore","scrollHorizontal","renderClass","renderers","RendererVirtualDomHorizontal","RendererBasicHorizontal","renderHorizontal","initialize","headerVisible","hozAdjust","scrollWidth","marginLeft","scrollColumns","sorter","definitions","autoColumnsDefinitions","call","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","parentIndex","nextEl","nextSibling","unshift","columnRendered","getHeight","columnHeaderVertAlign","adjustTableSize","subject","_getSelf","HTMLElement","root","matches","findIndex","active","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","getComponents","updateRows","toIndex","fromIndex","concat","adjust","scrollToColumnPosition","scrollToColumnIfVisible","offsetLeft","generateCell","totalWidth","fixedWidth","colWidth","layoutMode","resetScroll","footerManager","RowComponent","_row","transform","getCells","getRowPosition","moveToRow","updateData","normalizeHeight","nextRow","prevRow","Row","manualHeight","outerHeight","created","setData","create","deleteCells","renderRowCells","rowFormatter","rerenderRowCells","children","maxHeight","resizableRows","setHeight","clearHeight","updatedData","newRowData","tempData","attrname","JSON","parse","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","getRowIndex","detatchModules","deleteRow","group","BaiscVertical","visibility","onlyGroupHeaders","styleRow","render","rowTop","abs","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","renderVerticalBuffer","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","containerHeight","ceil","rowHeight","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","firstRender","renderMode","fixedHeight","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRederInPosition","dataPipeline","displayPipeline","leftDir","topDir","scrollRows","renderInPosition","columnsChanged","pagination","_setDataActual","reRenderInPosition","autoColumns","generateColumnsFromRowData","_wipeElements","wipe","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowNumbers","_showPlaceholder","pos","addRowActual","findAddRowPos","reverse","item","addRow","_clearPlaceholder","addRowPos","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","list","getRows","handler","priority","sort","a","b","skipStage","stage","cascadeOrder","resetDisplayRows","setDisplayRows","renderTable","layoutColumnsOnNewData","viewable","visibleRows","RendererVirtualDomVertical","RendererBasicVertical","renderVertical","_clearTable","renderEmptyScroll","placeholder","initialHeight","otherHeight","external","resize","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","links","initializeElement","footerElement","querySelector","activate","deactivate","link","footerRedraw","InteractionManager","abortClasses","previousTargets","listeners","componentMap","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","values","comp","subscriptionChanged","added","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","filter","includes","targetMatches","previousTarget","ComponentFuctionBinder","bindings","funcName","hanlder","startsWith","DataLoader","loaderElement","createLoaderElement","msgElement","createMsgElement","loadingElement","errorElement","requestOrder","loading","template","dataLoaderLoading","trim","firstElementChild","dataLoaderError","params","replace","requestNo","showLoader","mapParams","dataSendParams","response","objectInvert","dataReceiveParams","rowData","hideLoader","showError","map","langText","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifiySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","subscriber","confirmed","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Module","_handler","register","func","registerDataPipelineHandler","registerDisplayPipelineHandler","responsiveLayout","modExists","fitData","reinitializeColumnWidths","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","colsWidth","gap","lastCol","responsive","fitColumns","flexColWidth","overflowWidth","flexWidth","flexGrowUnits","flexColumns","fixedShrinkColumns","flexShrinkUnits","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","Layout","mode","registerTableOption","registerColumnOption","modes","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","registerTableFunction","getLang","headerFilters","_setLangProp","desiredLocale","navigator","language","toLowerCase","prefix","traverseLang","trans","prop","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","Comms","receive","selectors","connections","con","action","connection","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFuctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","prototype","registerModule","mod","registerModuleBinding","findTable","moduleCore","modulesCore","modulesRegular","core","mods","interactionMonitor","browserSlow","browserMobile","rtl","initialzeCoreSystems","_create","_clearObjectPointers","_mapDepricatedFunctionality","debugEventsExternal","debugEventsInternal","InteractionMonitor","getComputedStyle","textDirection","direction","getSelection","empty","removeAllRanges","selection","rtlCheck","_buildElement","_loadInitialData","reactiveData","_detectBrowser","span","deregister","ua","userAgent","vendor","opera","test","substr","restoreRedraw","extensions","input","accept","file","files","reader","FileReader","readAsText","onload","err","onerror","click","blockActiveLoad","clearData","getDataCount","responses","addRows","newRows","getRowFromPosition","foundRows","fromRow","getDefinitionTree","fromColumn","plugin","required","columnMaxWidth","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","Accessor","allowedTypes","initializeColumn","transformRow","accessor","charAt","toUpperCase","lookupAccessor","accessors","rowComponent","traverse","colCompnent","generateParamsList","serializeParams","encoded","encodeURIComponent","join","headers","body","url","stringify","form","FormData","append","Ajax","urlGenerator","loaderPromise","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxParams","setParams","ajaxConfig","setConfig","ajaxURL","setUrl","getUrl","requestDataCheck","requestData","previousData","sendRequest","_loadDefaultConfig","method","defaultConfig","ajaxRequesting","ajaxResponse","contentType","ajaxContentType","Accept","location","origin","credentials","fetch","json","status","statusText","defaultContentTypeFormatters","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboard","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","generateExportList","clipboardCopyConfig","clipboardCopyStyled","genereateHTMLTable","generatePlainContent","clipboardData","originalEvent","reset","paste","setPasteParser","clipboardPasteParser","setPasteAction","clipboardPasteAction","copy","getKey","range","internal","sel","textRange","createRange","selectNodeContents","toString","addRange","createTextRange","moveToElementText","select","execCommand","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","mutator","valid","tagName","edit","currentCell","updateOrAddData","insert","addData","headerFindSuccess","columnMap","CalcComponent","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","tableRedraw","getResults","userRecalc","recalc","groupBy","recalcRowGroup","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","getChildGroups","generateRowData","dataTree","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","getFormatter","paramKey","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","groups","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","registerComponentFunction","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","dummyEl","firstCol","getFirstVisibileColumn","dataTreeChildField","dataTreeChildIndent","dataTreeElementColumn","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","dataTreeStartExpanded","layoutRow","rowDelete","rowDataChanged","columnMoving","registerDisplayHandler","getTreeChildren","redrawNeeded","refreshData","childArray","controlEl","generateControlElement","cloneNode","marginRight","getPropertyValue","oldControl","replaceChild","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","sub","childData","childRow","childIndex","findChildIndex","recurse","csv","setFileContents","delimiter","fileContents","depth","bom","pdf","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","parseRow","styles","content","colSpan","rowSpan","orientation","unit","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","xlsx","sheetName","workbook","XLSX","utils","book_new","tableFeatures","generateSheet","merges","worksheet","s","c","r","j","sheet_add_aoa","encode_range","SheetNames","Sheets","sheetOnly","sheets","sheet","commsSend","intercept","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","bookType","bookSST","Download","blob","download","downloadToTab","filename","interceptCallback","downloadFunc","downloaders","mime","triggerDownload","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","Blob","downloadReady","URL","createObjectURL","msSaveOrOpenBlob","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","keyCode","maskAutoFill","defaultDownloaders","onRendered","success","cancel","editorParams","cellValue","search","padding","boxSizing","elementAttributes","getAttribute","onChange","preventScroll","textarea","vertNav","verticalNavigation","whiteSpace","getRow","heightNow","selectionStart","stopImmediatePropagation","number","step","blurFunc","self","cellEl","initialDisplayValue","defaultValue","listEl","multiselect","dataItems","currentItem","displayItems","currentItems","blurable","blockListShow","searchWord","searchWordTimeout","getUniqueColumnValues","getColumnByField","getColumn","parseItems","inputValues","curentValues","dataList","displayList","processComplexListItem","label","itemParams","setItem","sortValuesList","listItemFormatter","toggleItem","chooseItem","fillList","setCurrentItem","scrollIntoView","behavior","block","inline","fillInput","unsetItem","hideList","chooseItems","cancelItem","cursor","readOnly","len","unsetItems","character","fromCharCode","scrollTovalue","showList","autocomplete","uniqueColumnValues","genUniqueColumnValues","filterList","term","intialLoad","items","searchFunc","addNotice","searchingPlaceholder","fillListIfNotEmpty","showListOnEmpty","notice","searchEl","clearList","itemList","current","emptyPlaceholder","freetext","allowEmpty","showInputValue","star","maxStars","getElementsByTagName","size","stars","starsHolder","createElementNS","starChange","buildStar","starHolder","nextStar","blur","changeValue","overflow","textOverflow","progress","mouseDrag","mouseDragWidth","percent","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","marginTop","checked","indeterminate","Edit","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellisEdited","clearEdited","editCell","cellCancelEdit","bindEditor","columnDeleteCheck","rowDeleteCheck","cancelEdit","keybindingNavigateNext","newRow","nav","next","edited","nextCell","findNextEditableCell","getIndex","findPrevEditableCell","allowEdit","check","prevCell","editor","editable","validate","clearEditor","variableHeight","cellEditCancelled","contains","button","forceEdit","focusCellNoEvent","getRenderMode","leftEdge","rightEdge","leftMargin","rightMargin","cellEditor","rendered","focusScrollAdjust","cellClick","cellEditing","validationMode","checkForRestyle","editIndex","invalid","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","genereateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","genereateHeaderElement","genereateGroupElement","genereateCalcElement","genereateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","classNames","generator","isVisible","cellWrapper","formatCells","formatExportValue","align","renderedCallback","htmlOutputConfig","props","lookup","fromStyle","filterVal","rowVal","filterParams","RegExp","keywords","separator","keyword","matchAll","endsWith","Filter","headerFilterColumns","prevHeaderFilterChangeCheck","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","filterMode","remoteFilterParams","registerDataHandler","initialFilter","setFilter","initialHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","setHeaderFilterColumnPlaceholder","filterFunc","filterType","tagType","attrType","filterChangeCheck","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","reloadData","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","_this11","subFilter","_this12","defaultFilters","plaintext","formatterParams","emptyToSpace","sanitizeHTML","money","integer","decimal","rgx","floatVal","decimalSym","thousandSym","thousand","symbolAfter","urlPrefix","labelField","urlField","image","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","datetime","DT","DateTime","luxon","inputFormat","outputFormat","invalidPlaceholder","newDatetime","fromFormat","isValid","timezone","shiftTimezone","toFormat","datetimediff","suffix","humanize","date","now","traffic","percentValue","colors","color","legend","legendColor","legendAlign","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","responsiveCollapse","toggleList","isOpen","rowSelection","checkbox","toggleSelect","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","rightPadding","initializationMode","scrollEndTimer","layoutCell","edge","frozenCheck","calcMargins","layoutColumnPosition","layoutCalcRows","_calcSpace","allCells","leftParents","parentEl","getColGroupParentElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","toggleVisibility","groupManager","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","groupList","elementContents","arrowElement","createElements","addBindings","createValueGroups","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","groupContextMenu","groupClickMenu","menu","initializeGroup","groupTap","groupDblTap","groupTapHold","groupToggleElement","groupID","groupKey","headerGenerator","conformRowData","generateGroupHeaderContents","updateGroupRows","scrollHeader","groupValues","removeGroup","noCalc","_visSet","getHeadersAndRows","hasTopCalcs","detachElement","generateTopRow","hasBottomCalcs","generateBottomRow","groupClosedShowCalcs","count","getDisplayIndex","checkClassicModeGroupHeaderWidth","prev","compoment","getPath","addBindingsd","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","groupStartOpen","langValue","removeCalcs","getRealColumns","lookupFunc","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","removeRow","insertRow","generateGroups","groupComponents","groupListData","pullGroupListData","rowCount","headerContent","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","every","groupPath","groupId","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","posFrom","posTo","getGroup","newValue","undoers","redoers","oldRow","cellEdit","rowAdd","_rebindRow","rowMove","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","newElement","attributes","optionsArr","attrib","_attribValue","exists","_findCol","textContent","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tapDbl","initializeExternalEvents","cellContentsSelectionFixer","selectNode","subscriptionChangeExternal","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","notouch","watchers","componentObj","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","actions","mapBinding","symbolsList","ctrl","meta","code","checkBinding","ctrlKey","shiftKey","metaKey","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","keyBlock","newPos","scrollMax","navLeft","navRight","Menu","menuElements","blurEvent","hideMenu","escEvent","escMenu","nestedMenuBlock","positionReversedX","contextMenu","clickMenu","initializeCell","headerContextMenu","headerClickMenu","headerMenu","initializeColumnHeader","headerMenuEl","LoadMenuEvent","loadMenu","rowContextMenu","rowClickMenu","touch","MouseEvent","menuEl","itemEl","disabled","hideOldSubMenus","positionMenu","pop","x","y","parentOffset","docHeight","innerHeight","touches","pageX","pageY","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","mousemove","which","startMove","bindTouchEvents","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","moveToCol","_bindMouseMove","movingCells","_unbindMouseMove","scrollPos","columnHolder","xPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","mouseup","tableRowDrop","previousSibling","rowHandle","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","startYMove","setStartPosition","connectToTables","pointerEvents","getTableElement","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","connectionTables","commsConnections","dropEvent","elementRowDrop","tabulatorElementDropEvent","sender","movableRowsSender","senders","movableRowsReceiver","receivers","connect","disconnect","dropComplete","fromTable","toTable","Mutator","enabled","transformCell","lookupMutator","mutators","mutatorEdit","Page","progressiveLoad","page","initialLoad","dataChanging","pageSizes","dataReceivedNames","dataSentNames","setMaxPage","setPage","userSetPageToRow","userSetPageSize","getPageSize","previousPage","nextPage","getPage","getPageMax","setPageToRow","rowAddingPosition","initialLoadComplete","calculatePageSizes","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePaginator","initializeProgressive","scrollVertical","dispRows","testElRow","testElCell","paginationSize","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","hidden","pageSelectLabel","paginationElement","paginationInitialPage","paginationButtonCount","generatePageSizeSelectList","trigger","leftSize","rightSize","_generatePageButton","setMaxRows","_setPageButtons","last_page","progressiveLoadDelay","footer","local","id","localStorage","getItem","cookie","cookiePos","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","testKey","removeItem","persistence","retreivedData","persistenceMode","persistenceID","localStorageTest","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retreiveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","getColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","oldCols","newCols","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","Print","manualBlock","printAsHtml","replaceTable","cleanup","printFullscreen","genereateTable","printConfig","printStyled","printRowRange","footerContent","scrollX","scrollY","footerEl","tableEl","printHeader","printFooter","printFormatter","scrollTo","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","getRowFromDataObject","startRow","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","ResizeColumns","startColumn","startWidth","prevHandle","layoutCellHandles","layoutColumnHeader","resizable","handleDown","nearestColumn","_checkResizability","_mouseDown","prevHandleDown","colIndex","mouseMove","checkCellHeights","mouseUp","ResizeRows","startHeight","screenY","ResizeTable","observer","containerObserver","tableHeight","containerWidth","autoResize","tableStyle","ResizeObserver","entry","nodeHeight","contentRect","nodeWidth","observe","tableResized","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","generateCollapsedRowContent","colCount","working","getFlexBaseWidth","hideColumn","showColumn","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","node_content","titleData","valueData","titleHighlight","innerText","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectable","clearSelectionData","selectablePersistence","_deselectRow","_rowSelectionChanged","endSelect","selected","selectableCheck","selectableRangeMode","_clearSelection","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","getCurrentCell","_selectRow","rowMatch","rowInfo","selectableRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","aRow","bRow","alignEmptyValues","emptyAlign","decimalSeparator","thousandSeparator","string","langLocale","localeCompare","time","array","calc","d","alphanum","as","bs","a1","b1","L","rx","rd","isFinite","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortElement","columnHeaderSortMulti","newSortList","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","findSorter","setColumnHeader","_sortItems","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","el1","el2","defaultSorters","parameters","numeric","starts","ends","minLength","maxLength","regex","unique","cellData","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","cellValidate","columnValidate","rowValidate","validator","_extractValidator","substring","_buildValidator","validators","invalidIndex","defaultValidators","TabulatorFull"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/tabulator_esm.js b/dist/js/tabulator_esm.js index 0dd06e001..ba771b38f 100644 --- a/dist/js/tabulator_esm.js +++ b/dist/js/tabulator_esm.js @@ -1,4 +1,4 @@ -/* Tabulator v5.0.0 (c) Oliver Folkerd 2021 */ +/* Tabulator v5.0.1 (c) Oliver Folkerd 2021 */ class CoreFeature{ constructor(table){ diff --git a/dist/js/tabulator_esm.min.js b/dist/js/tabulator_esm.min.js index e49a84ef6..98c904385 100644 --- a/dist/js/tabulator_esm.min.js +++ b/dist/js/tabulator_esm.min.js @@ -1,3 +1,3 @@ -/* Tabulator v5.0.0 (c) Oliver Folkerd 2021 */ -class e{constructor(e){this.table=e}reloadData(e,t){return this.table.dataLoader.load(e,void 0,void 0,void 0,t)}langText(){return this.table.modules.localize.getText(...arguments)}langBind(){return this.table.modules.localize.bind(...arguments)}langLocale(){return this.table.modules.localize.getLocale(...arguments)}commsConnections(){return this.table.modules.comms.getConnections(...arguments)}commsSend(){return this.table.modules.comms.send(...arguments)}layoutMode(){return this.table.modules.layout.getMode()}layoutRefresh(){return this.table.modules.layout.layout()}subscribe(){return this.table.eventBus.subscribe(...arguments)}unsubscribe(){return this.table.eventBus.unsubscribe(...arguments)}subscribed(e){return this.table.eventBus.subscribed(e)}subscriptionChange(){return this.table.eventBus.subscriptionChange(...arguments)}dispatch(){return this.table.eventBus.dispatch(...arguments)}chain(){return this.table.eventBus.chain(...arguments)}confirm(){return this.table.eventBus.confirm(...arguments)}dispatchExternal(){return this.table.externalEvents.dispatch(...arguments)}subscribedExternal(e){return this.table.externalEvents.subscribed(e)}subscriptionChangeExternal(){return this.table.externalEvents.subscriptionChange(...arguments)}options(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}setOption(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}module(e){return this.table.module(e)}}class t extends e{constructor(e,t){super(e),this._handler=null}initialize(){}registerTableOption(e,t){this.table.optionsList.register(e,t)}registerColumnOption(e,t){this.table.columnManager.optionsList.register(e,t)}registerTableFunction(e,t){void 0===this.table[e]?this.table[e]=t:console.warn("Unable to bind table function, name already in use",e)}registerComponentFunction(e,t,i){return this.table.componentFunctionBinder.bind(e,t,i)}registerDataHandler(e,t){this.table.rowManager.registerDataPipelineHandler(e,t),this._handler=e}registerDisplayHandler(e,t){this.table.rowManager.registerDisplayPipelineHandler(e,t),this._handler=e}refreshData(e,t){t||(t=this._handler),t&&this.table.rowManager.refreshActiveData(t,!1,e)}}class s{static elVisible(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}static elOffset(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}static deepClone(e){var t=Object.assign(Array.isArray(e)?[]:{},e);for(var i in e)null!=e[i]&&"object"==typeof e[i]&&(e[i]instanceof Date?t[i]=new Date(e[i]):t[i]=this.deepClone(e[i]));return t}}class o extends t{constructor(e){super(e),this.allowedTypes=["","data","download","clipboard","print","htmlOutput"],this.registerColumnOption("accessor"),this.registerColumnOption("accessorParams"),this.registerColumnOption("accessorData"),this.registerColumnOption("accessorDataParams"),this.registerColumnOption("accessorDownload"),this.registerColumnOption("accessorDownloadParams"),this.registerColumnOption("accessorClipboard"),this.registerColumnOption("accessorClipboardParams"),this.registerColumnOption("accessorPrint"),this.registerColumnOption("accessorPrintParams"),this.registerColumnOption("accessorHtmlOutput"),this.registerColumnOption("accessorHtmlOutputParams")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((function(s){var o,n="accessor"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupAccessor(e.definition[n]))&&(t=!0,i[n]={accessor:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.accessor=i)}lookupAccessor(e){var t=!1;switch(typeof e){case"string":o.accessors[e]?t=o.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t){var i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),o=e.getComponent(),n=s.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var s,r,a,l;e.modules.accessor&&(r=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(s=e.getFieldValue(n))&&(l=e.getComponent(),a="function"==typeof r.params?r.params(s,n,t,l,o):r.params,e.setFieldValue(n,r.accessor(s,n,t,a,l,o)))})),n}}o.moduleName="accessor",o.accessors={};function n(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(n(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(n(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}function r(e){var t=n(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}var a={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var s=this.generateParamsList(i),o=new FormData;return s.forEach((function(e){o.append(e.key,e.value)})),o}}};class l extends t{constructor(e){super(e),this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderPromise=!1,this.registerTableOption("ajaxURL",!1),this.registerTableOption("ajaxURLGenerator",!1),this.registerTableOption("ajaxParams",{}),this.registerTableOption("ajaxConfig","get"),this.registerTableOption("ajaxContentType","form"),this.registerTableOption("ajaxRequestFunc",!1),this.registerTableOption("ajaxRequesting",(function(){})),this.registerTableOption("ajaxResponse",!1),this.contentTypeFormatters=l.contentTypeFormatters}initialize(){this.loaderPromise=this.table.options.ajaxRequestFunc||l.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||l.defaultURLGenerator,this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.registerTableFunction("getAjaxUrl",this.getUrl.bind(this)),this.subscribe("data-loading",this.requestDataCheck.bind(this)),this.subscribe("data-load",this.requestData.bind(this))}requestDataCheck(e,t,i,s){return!((e||!this.url)&&"string"!=typeof e)}requestData(e,t,i,s,o){return this.requestDataCheck(e)?(e&&this.setUrl(e),t&&this.setParams(t,!0),i&&this.setConfig(i),this.sendRequest()):o}setParams(e,t){if(t){this.params=this.params||{};for(let t in e)this.params[t]=e[t]}else this.params=e}getParams(){return this.params||{}}setConfig(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(let t in e)this.config[t]=e[t]}_loadDefaultConfig(e){if(!this.config||e){this.config={};for(let e in l.defaultConfig)this.config[e]=l.defaultConfig[e]}}setUrl(e){this.url=e}getUrl(){return this.url}sendRequest(e){var t=this.url;return this._loadDefaultConfig(),!1!==this.table.options.ajaxRequesting.call(this.table,this.url,this.params)?this.loaderPromise(t,this.config,this.params).then((e=>(this.table.options.ajaxResponse&&(e=this.table.options.ajaxResponse.call(this.table,this.url,this.params,e)),e))):Promise.reject()}}l.moduleName="ajax",l.defaultConfig={method:"GET"},l.defaultURLGenerator=function(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+r(i))),e},l.defaultLoaderPromise=function(e,t,i){var s;return new Promise(((o,n)=>{if(e=this.urlGenerator.call(this.table,e,t,i),"GET"!=t.method.toUpperCase())if(s="object"==typeof this.table.options.ajaxContentType?this.table.options.ajaxContentType:this.contentTypeFormatters[this.table.options.ajaxContentType]){for(var r in s.headers)t.headers||(t.headers={}),void 0===t.headers[r]&&(t.headers[r]=s.headers[r]);t.body=s.body.call(this,e,t,i)}else console.warn("Ajax Error - Invalid ajaxContentType value:",this.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers.Origin&&(t.headers.Origin=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then((e=>{e.ok?e.json().then((e=>{o(e)})).catch((e=>{n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))})).catch((e=>{console.error("Ajax Load Error - Connection Error: ",e),n(e)}))):(console.warn("Ajax Load Error - No URL Set"),o([]))}))},l.contentTypeFormatters=a;class h extends t{constructor(e){super(e),this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0,this.registerTableOption("clipboard",!1),this.registerTableOption("clipboardCopyStyled",!0),this.registerTableOption("clipboardCopyConfig",!1),this.registerTableOption("clipboardCopyFormatter",!1),this.registerTableOption("clipboardCopyRowRange","active"),this.registerTableOption("clipboardPasteParser","table"),this.registerTableOption("clipboardPasteAction","insert"),this.registerColumnOption("clipboard"),this.registerColumnOption("titleClipboard")}initialize(){this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(e=>{var t,i;if(!this.blocked){if(e.preventDefault(),this.customSelection)t=this.customSelection,this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t));else{var s=this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig,this.table.options.clipboardCopyStyled,this.rowRange,"clipboard");t=(i=this.table.modules.export.genereateHTMLTable(s))?this.generatePlainContent(s):"",this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t),i=this.table.options.clipboardCopyFormatter("html",i))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",t):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",t),i&&e.clipboardData.setData("text/html",i)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",t),i&&e.originalEvent.clipboardData.setData("text/html",i)),this.dispatchExternal("clipboardCopied",t,i),this.reset()}})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(e=>{this.paste(e)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}reset(){this.blocked=!0,this.customSelection=!1}generatePlainContent(e){var t=[];return e.forEach((e=>{var i=[];e.columns.forEach((t=>{var s="";if(t)if("group"===e.type&&(t.value=t.component.getKey()),null===t.value)s="";else switch(typeof t.value){case"object":s=JSON.stringify(t.value);break;case"undefined":s="";break;default:s=t.value}i.push(s)})),t.push(i.join("\t"))})),t.join("\n")}copy(e,t){var i,s;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?((e=document.createRange()).selectNodeContents(this.table.element),(i=window.getSelection()).toString()&&t&&(this.customSelection=i.toString()),i.removeAllRanges(),i.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((s=document.body.createTextRange()).moveToElementText(this.table.element),s.select()),document.execCommand("copy"),i&&i.removeAllRanges())}setPasteAction(e){switch(typeof e){case"string":this.pasteAction=h.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}}setPasteParser(e){switch(typeof e){case"string":this.pasteParser=h.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}}paste(e){var t,i,s;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),s=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,s)):this.dispatchExternal("clipboardPasteError",t))}mutateData(e){var t=[];return Array.isArray(e)?e.forEach((e=>{t.push(this.table.modules.mutator.transformRow(e,"clipboard"))})):t=e,t}checkPaseOrigin(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t}getPasteData(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t}}h.moduleName="clipboard",h.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},h.pasteParsers={table:function(e){var t=[],i=!0,s=this.table.columnManager.columns,o=[],n=[];return(e=e.split("\n")).forEach((function(e){t.push(e.split("\t"))})),!(!t.length||1===t.length&&t[0].length<2)&&(t[0].forEach((function(e){var t=s.find((function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()}));t?o.push(t):i=!1})),i||(i=!0,o=[],t[0].forEach((function(e){var t=s.find((function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()}));t?o.push(t):i=!1})),i||(o=this.table.columnManager.columnsByIndex)),i&&t.shift(),t.forEach((function(e){var t={};e.forEach((function(e,i){o[i]&&(t[o[i].field]=e)})),n.push(t)})),n)}};class d{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getTable(){return this._row.table}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}_getSelf(){return this._row}}class c{constructor(e){return this._cell=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}getValue(){return this._cell.getValue()}getOldValue(){return this._cell.getOldValue()}getInitialValue(){return this._cell.initialValue}getElement(){return this._cell.getElement()}getRow(){return this._cell.row.getComponent()}getData(){return this._cell.row.getData()}getField(){return this._cell.column.getField()}getColumn(){return this._cell.column.getComponent()}setValue(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}restoreOldValue(){this._cell.setValueActual(this._cell.getOldValue())}restoreInitialValue(){this._cell.setValueActual(this._cell.initialValue)}checkHeight(){this._cell.checkHeight()}getTable(){return this._cell.table}_getSelf(){return this._cell}}class u extends e{constructor(e,t){super(e.table),this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.initialValue,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.loaded=!1,this.build()}build(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}generateElement(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element}_configureCell(){var e=this.element,t=this.column.getField();(e.style.textAlign=this.column.hozAlign,this.column.vertAlign&&(e.style.display="inline-flex",e.style.alignItems={top:"flex-start",bottom:"flex-end",middle:"center"}[this.column.vertAlign]||"",this.column.hozAlign&&(e.style.justifyContent={left:"flex-start",right:"flex-end",center:"center"}[this.column.hozAlign]||"")),t&&e.setAttribute("tabulator-field",t),this.column.definition.cssClass)&&this.column.definition.cssClass.split(" ").forEach((t=>{e.classList.add(t)}));"hover"===this.table.options.tooltipGenerationMode&&e.addEventListener("mouseenter",(e=>{this._generateTooltip()})),this.dispatch("cell-init",this),this.column.visible||this.hide()}_generateContents(){var e;switch(typeof(e=this.chain("cell-format",this,null,(()=>this.element.innerHTML=this.value)))){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}}cellRendered(){this.dispatch("cell-rendered",this)}_generateTooltip(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")}getElement(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}getValue(){return this.value}getOldValue(){return this.oldValue}setValue(e,t){this.setValueProcessData(e,t)&&(this.dispatch("cell-value-updated",this),this.cellRendered(),this.dispatchExternal("cellEdited",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()))}setValueProcessData(e,t){var i=!1;return this.value!=e&&(i=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),i&&this.dispatch("cell-value-changed",this),i}setValueActual(e){this.oldValue=this.value,this.value=e,this.dispatch("cell-value-save-before",this),this.column.setFieldValue(this.row.data,e),this.dispatch("cell-value-save-after",this),this.loaded&&this.layoutElement()}layoutElement(){this._generateContents(),this._generateTooltip(),this.dispatch("cell-layout",this)}setWidth(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}clearWidth(){this.width="",this.element.style.width=""}getWidth(){return this.width||this.element.offsetWidth}setMinWidth(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}setMaxWidth(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}checkHeight(){this.row.reinitializeHeight()}clearHeight(){this.element.style.height="",this.height=null}setHeight(){this.height=this.row.height,this.element.style.height=this.row.heightStyled}getHeight(){return this.height||this.element.offsetHeight}show(){this.element.style.display=this.column.vertAlign?"inline-flex":""}hide(){this.element.style.display="none"}delete(){this.dispatch("cell-delete",this),!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}}getIndex(){return this.row.getCellIndex(this)}getComponent(){return this.component||(this.component=new c(this)),this.component}}class m{constructor(e){return this._column=e,this.type="ColumnComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._column.table.componentFunctionBinder.handle("column",e._column,t)}})}getElement(){return this._column.getElement()}getDefinition(){return this._column.getDefinition()}getField(){return this._column.getField()}getCells(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}isVisible(){return this._column.visible}show(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}hide(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}toggle(){this._column.visible?this.hide():this.show()}delete(){return this._column.delete()}getSubColumns(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}getParentColumn(){return this._column.parent instanceof Column&&this._column.parent.getComponent()}_getSelf(){return this._column}scrollTo(){return this._column.table.columnManager.scrollToColumn(this._column)}getTable(){return this._column.table}move(e,t){var i=this._column.table.columnManager.findColumn(e);i?this._column.table.columnManager.moveColumn(this._column,i,t):console.warn("Move Error - No matching column found:",i)}getNextColumn(){var e=this._column.nextColumn();return!!e&&e.getComponent()}getPrevColumn(){var e=this._column.prevColumn();return!!e&&e.getComponent()}updateDefinition(e){return this._column.updateDefinition(e)}getWidth(){return this._column.getWidth()}setWidth(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.renderer.rerenderColumns(!0),t}}var p={title:void 0,field:void 0,columns:void 0,visible:void 0,hozAlign:void 0,vertAlign:void 0,width:void 0,minWidth:40,maxWidth:void 0,tooltip:void 0,cssClass:void 0,variableHeight:void 0,headerTooltip:void 0,headerVertical:void 0,headerHozAlign:void 0,editableTitle:void 0};class g extends e{constructor(e,t){super(t.table),this.definition=e,this.parent=t,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleHolderElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.mapDefinitions(),this.setField(this.definition.field),this.modules={},this.width=null,this.widthStyled="",this.maxWidth=null,this.maxWidthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this.definition.columns?(this.isGroup=!0,this.definition.columns.forEach(((e,t)=>{var i=new g(e,this);this.attachColumn(i)})),this.checkColumnVisibility()):t.registerColumnField(this),this._initialize(),this.bindModuleColumns()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e}createGroupElement(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}mapDefinitions(){var e=this.table.options.columnDefaults;if(e)for(let t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(g.defaultOptionList,this.definition)}checkDefinition(){Object.keys(this.definition).forEach((e=>{-1===g.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(this.field||this.definition.title)+"' column:",e)}))}setField(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData}registerColumnPosition(e){this.parent.registerColumnPosition(e)}registerColumnField(e){this.parent.registerColumnField(e)}reRegisterPosition(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}_mapDepricatedFunctionality(){}setTooltip(){var e=this.definition,t=void 0===e.headerTooltip?e.tooltip:e.headerTooltip;t?!0===t?e.field?this.langBind("columns|"+e.field,(t=>{this.element.setAttribute("title",t||e.title)})):this.element.setAttribute("title",e.title):("function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")}_initialize(){for(var e=this.definition;this.element.firstChild;)this.element.removeChild(this.element.firstChild);e.headerVertical&&(this.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&this.element.classList.add("tabulator-col-vertical-flip")),this.contentElement=this._bindEvents(),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.setTooltip(),this.dispatch("column-init",this),this.element.addEventListener("mouseenter",(e=>{this.setTooltip()}))}_bindEvents(){var e,t,i,s=this.definition;"function"==typeof s.headerClick&&this.element.addEventListener("click",(e=>{s.headerClick(e,this.getComponent())})),"function"==typeof s.headerDblClick&&this.element.addEventListener("dblclick",(e=>{s.headerDblClick(e,this.getComponent())})),"function"==typeof s.headerContext&&this.element.addEventListener("contextmenu",(e=>{s.headerContext(e,this.getComponent())})),"function"==typeof s.headerTap&&(i=!1,this.element.addEventListener("touchstart",(e=>{i=!0}),{passive:!0}),this.element.addEventListener("touchend",(e=>{i&&s.headerTap(e,this.getComponent()),i=!1}))),"function"==typeof s.headerDblTap&&(e=null,this.element.addEventListener("touchend",(t=>{e?(clearTimeout(e),e=null,s.headerDblTap(t,this.getComponent())):e=setTimeout((()=>{clearTimeout(e),e=null}),300)}))),"function"==typeof s.headerTapHold&&(t=null,this.element.addEventListener("touchstart",(e=>{clearTimeout(t),t=setTimeout((function(){clearTimeout(t),t=null,i=!1,s.headerTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(e=>{clearTimeout(t),t=null})))}_buildColumnHeader(){var e=this.definition;this.table;(this.dispatch("column-layout",this),void 0!==e.visible&&(e.visible?this.show(!0):this.hide(!0)),e.cssClass)&&e.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));e.field&&this.element.setAttribute("tabulator-field",e.field),this.setMinWidth(parseInt(e.minWidth)),e.maxWidth&&this.setMaxWidth(parseInt(e.maxWidth)),this.reinitializeWidth(),this.tooltip=this.definition.tooltip,this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}_buildColumnHeaderContent(){this.definition,this.table;var e=document.createElement("div");return e.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),e.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),e}_buildColumnHeaderTitle(){var e=this.definition,t=document.createElement("div");if(t.classList.add("tabulator-col-title"),e.editableTitle){var i=document.createElement("input");i.classList.add("tabulator-title-editor"),i.addEventListener("click",(e=>{e.stopPropagation(),i.focus()})),i.addEventListener("change",(()=>{e.title=i.value,this.dispatchExternal("columnTitleChanged",this.getComponent())})),t.appendChild(i),e.field?this.langBind("columns|"+e.field,(t=>{i.value=t||e.title||" "})):i.value=e.title||" "}else e.field?this.langBind("columns|"+e.field,(i=>{this._formatColumnHeaderTitle(t,i||e.title||" ")})):this._formatColumnHeaderTitle(t,e.title||" ");return t}_formatColumnHeaderTitle(e,t){var i=this.chain("column-format",[this,t,e],null,(()=>t));switch(typeof i){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=i}}_buildGroupHeader(){(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass)&&this.definition.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}_getFlatData(e){return e[this.field]}_getNestedData(e){var t,i=e,s=this.fieldStructure,o=s.length;for(let e=0;e-1&&this.columns.splice(t,1),this.columns.length||this.delete()}setWidth(e){this.widthFixed=!0,this.setWidthActual(e)}setWidthActual(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.maxWidth&&(e=Math.min(this.maxWidth,e)),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach((function(e){e.setWidth()})),this.parent.isGroup&&this.parent.matchChildWidths(),this.dispatch("column-width",this)}checkCellHeights(){var e=[];this.cells.forEach((function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)})),e.forEach((function(e){e.calcHeight()})),e.forEach((function(e){e.setCellHeight()}))}getWidth(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}getHeight(){return this.element.offsetHeight}setMinWidth(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}setMaxWidth(e){this.maxWidth=e,this.maxWidthStyled=e?e+"px":"",this.element.style.maxWidth=this.maxWidthStyled,this.cells.forEach((function(e){e.setMaxWidth()}))}delete(){return new Promise(((e,t)=>{this.isGroup&&this.columns.forEach((function(e){e.delete()})),this.dispatch("column-delete",this);var i=this.cells.length;for(let e=0;e-1&&this._nextVisibleColumn(e+1)}_nextVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}prevColumn(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}_prevVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}reinitializeWidth(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.dispatch("column-width-fit-before",this),this.fitToData(),this.dispatch("column-width-fit-after",this)}fitToData(){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((e=>{e.clearWidth()})));var e=this.element.offsetWidth;this.width&&this.widthFixed||(this.cells.forEach((t=>{var i=t.getWidth();i>e&&(e=i)})),e&&this.setWidthActual(e+1))}}updateDefinition(e){var t;return this.isGroup||this.parent.isGroup?(console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"),Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(t=Object.assign({},this.getDefinition()),t=Object.assign(t,e),this.table.columnManager.addColumn(t,!1,this).then((e=>(t.field==this.field&&(this.field=!1),this.delete().then((()=>e.getComponent()))))))}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}getComponent(){return this.component||(this.component=new m(this)),this.component}}g.defaultOptionList=p;class b{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}getIndex(){return this._row.getData("data")[this._row.table.options.index]}getPosition(e){return this._row.table.rowManager.getRowPosition(this._row,e)}delete(){return this._row.delete()}scrollTo(){return this._row.table.rowManager.scrollToRow(this._row)}move(e,t){this._row.moveToRow(e,t)}update(e){return this._row.updateData(e)}normalizeHeight(){this._row.normalizeHeight(!0)}_getSelf(){return this._row}reformat(){return this._row.reinitialize()}getTable(){return this._row.table}getNextRow(){var e=this._row.nextRow();return e?e.getComponent():e}getPrevRow(){var e=this._row.prevRow();return e?e.getComponent():e}}class f extends e{constructor(e,t,i="row"){super(t.table),this.parent=t,this.data={},this.type=i,this.element=!1,this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.component=null,this.created=!1,this.setData(e)}create(){this.created||(this.created=!0,this.generateElement())}createElement(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}getElement(){return this.create(),this.element}detachElement(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}generateElement(){this.createElement(),this.dispatch("row-init",this)}generateCells(){this.cells=this.table.columnManager.generateCells(this)}initialize(e){if(this.create(),!this.initialized||e){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.dispatch("row-layout-before",this),this.generateCells(),this.table.columnManager.renderer.renderRowCells(this),e&&this.normalizeHeight(),this.dispatch("row-layout",this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.initialized=!0,this.dispatch("row-layout-after",this)}else this.table.columnManager.renderer.rerenderRowCells(this)}reinitializeHeight(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}reinitialize(e){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),this.element&&null!==this.element.offsetParent&&this.initialize(!0),this.dispatch("row-relayout",this)}calcHeight(e){var t=0,i=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach((function(e){var i=e.getHeight();i>t&&(t=i)})),this.height=e?Math.max(t,i):this.manualHeight?this.height:Math.max(t,i),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight}setCellHeight(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}clearCellHeight(){this.cells.forEach((function(e){e.clearHeight()}))}normalizeHeight(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}setHeight(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}getHeight(){return this.outerHeight}getWidth(){return this.element.offsetWidth}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}setData(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}updateData(e){var t,i=this.element&&s.elVisible(this.element),o={};return new Promise(((s,n)=>{for(var r in"string"==typeof e&&(e=JSON.parse(e)),this.dispatch("row-data-save-before",this),this.subscribed("row-data-changing")&&(o=Object.assign(o,this.data),o=Object.assign(o,e)),t=this.chain("row-data-changing",[this,o,e],null,e))this.data[r]=t[r];for(var r in this.dispatch("row-data-save-after",this),e){this.table.columnManager.getColumnsByFieldRoot(r).forEach((e=>{let s=this.getCell(e.getField());if(s){let o=e.getFieldValue(t);s.getValue()!=o&&(s.setValueProcessData(o),i&&s.cellRendered())}}))}i?(this.normalizeHeight(!0),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent())):(this.initialized=!1,this.height=0,this.heightStyled=""),this.dispatch("row-data-changed",this,i,e),this.dispatchExternal("rowUpdated",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),s()}))}getData(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}getCell(e){return e=this.table.columnManager.findColumn(e),this.initialized||this.generateCells(),this.cells.find((function(t){return t.column===e}))}getCellIndex(e){return this.cells.findIndex((function(t){return t===e}))}findCell(e){return this.cells.find((t=>t.element===e))}getCells(){return this.initialized||this.generateCells(),this.cells}nextRow(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}prevRow(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}moveToRow(e,t){var i=this.table.rowManager.findRow(e);i?(this.table.rowManager.moveRowActual(this,i,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)}delete(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}deleteActual(e){this.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}detatchModules(){this.dispatch("row-deleting",this)}deleteCells(){var e=this.cells.length;for(let t=0;ts||null===s)&&(s=e)})),null!==s?!1!==o?s.toFixed(o):s:""},min:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e)){this.recalcGroup(e)})))}recalcGroup(e){var t,i;e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),i=this.generateRowData("bottom",t),e.calcs.bottom.updateData(i),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),i=this.generateRowData("top",t),e.calcs.top.updateData(i),e.calcs.top.reinitialize()))}generateTopRow(e){return this.generateRow("top",this.rowsToData(e))}generateBottomRow(e){return this.generateRow("bottom",this.rowsToData(e))}rowsToData(e){var t=[];return e.forEach((e=>{if(t.push(e.getData()),this.table.options.dataTree&&this.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree.open){var i=this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(e));t=t.concat(i)}})),t}generateRow(e,t){var i,s=this.generateRowData(e,t);return this.table.modExists("mutator")&&this.table.modules.mutator.disable(),i=new f(s,this,"calc"),this.table.modExists("mutator")&&this.table.modules.mutator.enable(),i.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),i.component=!1,i.getComponent=()=>(i.component||(i.component=new d(this)),i.component),i.generateCells=()=>{var t=[];this.table.columnManager.columnsByIndex.forEach((s=>{this.genColumn.setField(s.getField()),this.genColumn.hozAlign=s.hozAlign,s.definition[e+"CalcFormatter"]&&this.table.modExists("format")?this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter(s.definition[e+"CalcFormatter"]),params:s.definition[e+"CalcFormatterParams"]||{}}:this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter("plaintext"),params:{}},this.genColumn.definition.cssClass=s.definition.cssClass;var o=new u(this.genColumn,i);o.getElement(),o.column=s,o.setWidth(),s.cells.push(o),t.push(o),s.visible||o.hide()})),i.cells=t},i}generateRowData(e,t){var i,s,o={},n="top"==e?this.topCalcs:this.botCalcs,r="top"==e?"topCalc":"botCalc";return n.forEach((function(e){var n=[];e.modules.columnCalcs&&e.modules.columnCalcs[r]&&(t.forEach((function(t){n.push(e.getFieldValue(t))})),s=r+"Params",i="function"==typeof e.modules.columnCalcs[s]?e.modules.columnCalcs[s](n,t):e.modules.columnCalcs[s],e.setFieldValue(o,e.modules.columnCalcs[r](n,t,i)))})),o}hasTopCalcs(){return!!this.topCalcs.length}hasBottomCalcs(){return!!this.botCalcs.length}redraw(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)}getResults(){var e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.getGroups(!0).forEach((t=>{e[t.getKey()]=this.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e}getGroupResults(e){var t=e._getSelf(),i=e.getSubGroups(),s={};return i.forEach((e=>{s[e.getKey()]=this.getGroupResults(e)})),{top:t.calcs.top?t.calcs.top.getData():{},bottom:t.calcs.bottom?t.calcs.bottom.getData():{},groups:s}}}w.moduleName="columnCalcs",w.calculations=v;class C extends t{constructor(e){super(e),this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0,this.registerTableOption("dataTree",!1),this.registerTableOption("dataTreeFilter",!0),this.registerTableOption("dataTreeSort",!0),this.registerTableOption("dataTreeElementColumn",!1),this.registerTableOption("dataTreeBranchElement",!0),this.registerTableOption("dataTreeChildIndent",9),this.registerTableOption("dataTreeChildField","_children"),this.registerTableOption("dataTreeCollapseElement",!1),this.registerTableOption("dataTreeExpandElement",!1),this.registerTableOption("dataTreeStartExpanded",!1),this.registerTableOption("dataTreeChildColumnCalcs",!1),this.registerTableOption("dataTreeSelectPropagate",!1),this.registerComponentFunction("row","treeCollapse",this.collapseRow.bind(this)),this.registerComponentFunction("row","treeExpand",this.expandRow.bind(this)),this.registerComponentFunction("row","treeToggle",this.toggleRow.bind(this)),this.registerComponentFunction("row","getTreeParent",this.getTreeParent.bind(this)),this.registerComponentFunction("row","getTreeChildren",this.getRowChildren.bind(this)),this.registerComponentFunction("row","addTreeChild",this.addTreeChildRow.bind(this))}initialize(){if(this.table.options.dataTree){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),i=this.table.options;switch(this.field=i.dataTreeChildField,this.indent=i.dataTreeChildIndent,this.elementField=i.dataTreeElementColumn||!!t&&t.field,i.dataTreeBranchElement&&(!0===i.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof i.dataTreeBranchElement?((e=document.createElement("div")).innerHTML=i.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=i.dataTreeBranchElement),i.dataTreeCollapseElement?"string"==typeof i.dataTreeCollapseElement?((e=document.createElement("div")).innerHTML=i.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=i.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="
"),i.dataTreeExpandElement?"string"==typeof i.dataTreeExpandElement?((e=document.createElement("div")).innerHTML=i.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=i.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
"),typeof i.dataTreeStartExpanded){case"boolean":this.startOpen=function(e,t){return i.dataTreeStartExpanded};break;case"function":this.startOpen=i.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return i.dataTreeStartExpanded[t]}}this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("row-relayout",this.layoutRow.bind(this)),this.subscribe("row-deleted",this.rowDelete.bind(this),0),this.subscribe("row-data-changed",this.rowDataChanged.bind(this),10),this.subscribe("column-moving-rows",this.columnMoving.bind(this)),this.registerDisplayHandler(this.getRows.bind(this),30)}}getRowChildren(e){return this.getTreeChildren(e,!0)}columnMoving(){var e=[];return this.table.rowManager.rows.forEach((t=>{e=e.concat(this.getTreeChildren(t,!1,!0))})),e}rowDataChanged(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}initializeRow(e){var t=e.getData()[this.field],i=Array.isArray(t),s=i||!i&&"object"==typeof t&&null!==t;!s&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!s&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!s&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:s}}reinitializeRowChildren(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}layoutRow(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,t),e.getElement().classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(i.branchEl,t.firstChild),this.table.rtl?i.branchEl.style.marginRight=(i.branchEl.offsetWidth+i.branchEl.style.marginLeft)*(i.index-1)+i.index*this.indent+"px":i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):this.table.rtl?t.style.paddingRight=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-right"))+i.index*this.indent+"px":t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")}generateControlElement(e,t){var i=e.modules.dataTree,s=(t=t||e.getCells()[0].getElement(),i.controlEl);!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.collapseRow(e)}))):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.expandRow(e)}))),i.controlEl.addEventListener("mousedown",(e=>{e.stopPropagation()})),s&&s.parentNode===t?s.parentNode.replaceChild(i.controlEl,s):t.insertBefore(i.controlEl,t.firstChild))}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}getRows(e){var t=[];return e.forEach(((e,i)=>{var s;t.push(e),e instanceof f&&(e.create(),(s=e.modules.dataTree.children).index||!1===s.children||this.getChildren(e).forEach((e=>{e.create(),t.push(e)})))})),t}getChildren(e,t){var i=e.modules.dataTree,s=[],o=[];return!1!==i.children&&(i.open||t)&&(Array.isArray(i.children)||(i.children=this.generateChildren(e)),s=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(i.children):i.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(s),s.forEach((e=>{o.push(e),this.getChildren(e).forEach((e=>{o.push(e)}))}))),o}generateChildren(e){var t=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach((i=>{var s=new f(i||{},this.table.rowManager);s.create(),s.modules.dataTree.index=e.modules.dataTree.index+1,s.modules.dataTree.parent=e,s.modules.dataTree.children&&(s.modules.dataTree.open=this.startOpen(s.getComponent(),s.modules.dataTree.index)),t.push(s)})),t}expandRow(e,t){var i=e.modules.dataTree;!1!==i.children&&(i.open=!0,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowExpanded",e.getComponent(),e.modules.dataTree.index))}collapseRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowCollapsed",e.getComponent(),e.modules.dataTree.index))}toggleRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}getTreeParent(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}getFilteredTreeChildren(e){var t=e.modules.dataTree,i=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),(this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(t.children):t.children).forEach((e=>{e instanceof f&&i.push(e)}))),i}rowDelete(e){var t,i=e.modules.dataTree.parent;i&&(!1!==(t=this.findChildIndex(e,i))&&i.data[this.field].splice(t,1),i.data[this.field].length||delete i.data[this.field],this.initializeRow(i),this.layoutRow(i)),this.refreshData(!0)}addTreeChildRow(e,t,i,s){var o=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==s&&!1!==(o=this.findChildIndex(s,e))&&e.data[this.field].splice(i?o:o+1,0,t),!1===o&&(i?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.refreshData(!0)}findChildIndex(e,t){var i=!1;return"object"==typeof e?e instanceof f?i=e.data:e instanceof RowComponent?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(i=t.modules.dataTree.children.find((t=>t instanceof f&&t.element===e)))&&(i=i.data):i=null!=e&&t.data[this.field].find((t=>t.data[this.table.options.index]==e)),i&&(Array.isArray(t.data[this.field])&&(i=t.data[this.field].indexOf(i)),-1==i&&(i=!1)),i}getTreeChildren(e,t,i){var s=e.modules.dataTree,o=[];return s.children&&(Array.isArray(s.children)||(s.children=this.generateChildren(e)),s.children.forEach((e=>{e instanceof f&&(o.push(t?e.getComponent():e),i&&(o=o.concat(this.getTreeChildren(e,t,i))))}))),o}checkForRestyle(e){e.row.cells.indexOf(e)||e.row.reinitialize()}getChildField(){return this.field}redrawNeeded(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}C.moduleName="dataTree";var E={csv:function(e,t,i){var s=t&&t.delimiter?t.delimiter:",",o=[],n=[];e.forEach((e=>{var t=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(((e,t)=>{e&&1===e.depth&&(n[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":e.columns.forEach((e=>{if(e){switch(typeof e.value){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}t.push('"'+String(e.value).split('"').join('""')+'"')}})),o.push(t.join(s))}})),n.length&&o.unshift(n.join(s)),o=o.join("\n"),t.bom&&(o="\ufeff"+o),i(o,"text/csv")},json:function(e,t,i){var s=[];e.forEach((e=>{var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getField()]=e.value)})),s.push(t)}})),i(s=JSON.stringify(s,null,"\t"),"application/json")},pdf:function(e,t,i){var s=[],o=[],n={},r=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},a=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},l=t.jsPDF||{},h=t&&t.title?t.title:"";function d(e,t){var i=[];return e.columns.forEach((e=>{var s;if(e){switch(typeof e.value){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}s={content:e.value,colSpan:e.width,rowSpan:e.height},t&&(s.styles=t),i.push(s)}else i.push("")})),i}l.orientation||(l.orientation=t.orientation||"landscape"),l.unit||(l.unit="pt"),e.forEach((e=>{switch(e.type){case"header":s.push(d(e));break;case"group":o.push(d(e,r));break;case"calc":o.push(d(e,a));break;case"row":o.push(d(e))}}));var c=new jspdf.jsPDF(l);t&&t.autoTable&&(n="function"==typeof t.autoTable?t.autoTable(c)||{}:t.autoTable),h&&(n.didDrawPage=function(e){c.text(h,40,30)}),n.head=s,n.body=o,c.autoTable(n),t&&t.documentProcessing&&t.documentProcessing(c),i(c.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,s){var o=i.sheetName||"Sheet1",n=XLSX.utils.book_new(),r=new e(this);function a(){var e=[],i=[],s={},o={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce(((e,t)=>e+(t&&t.width?t.width:1)),0):0,r:t.length}};return t.forEach(((t,s)=>{var o=[];t.columns.forEach((function(e,t){e?(o.push(e.value instanceof Date||"object"!=typeof e.value?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&i.push({s:{r:s,c:t},e:{r:s+e.height-1,c:t+e.width-1}})):o.push("")})),e.push(o)})),XLSX.utils.sheet_add_aoa(s,e),s["!ref"]=XLSX.utils.encode_range(o),i.length&&(s["!merges"]=i),s}if(n.SheetNames=[],n.Sheets={},i.sheetOnly)s(a());else{if(i.sheets)for(var l in i.sheets)!0===i.sheets[l]?(n.SheetNames.push(l),n.Sheets[l]=a()):(n.SheetNames.push(l),r.commsSend(i.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){n.Sheets[l]=e}}));else n.SheetNames.push(o),n.Sheets[o]=a();i.documentProcessing&&(n=i.documentProcessing(n)),s(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),s=0;s!=e.length;++s)i[s]=255&e.charCodeAt(s);return t}(XLSX.write(n,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.genereateHTMLTable(e),"text/html")}};class y extends t{constructor(e){super(e),this.registerTableOption("downloadReady",(function(e,t){return t})),this.registerTableOption("downloadConfig",{}),this.registerTableOption("downloadRowRange","active"),this.registerColumnOption("download"),this.registerColumnOption("titleDownload")}initialize(){this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}downloadToTab(e,t,i,s){this.download(e,t,i,s,!0)}download(e,t,i,s,o){var n=!1;if("function"==typeof e?n=e:y.downloaders[e]?n=y.downloaders[e]:console.warn("Download Error - No such download type found: ",e),n){var r=this.generateExportList(s);n.call(this.table,r,i||{},function(i,s){o?!0===o?this.triggerDownload(i,s,e,t,!0):o(i):this.triggerDownload(i,s,e,t)}.bind(this))}}generateExportList(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),i=this.table.options.groupHeaderDownload;return i&&!Array.isArray(i)&&(i=[i]),t.forEach((e=>{var t;"group"===e.type&&(t=e.columns[0],i&&i[e.indent]&&(t.value=i[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))})),t}triggerDownload(e,t,i,s,o){var n=document.createElement("a"),r=new Blob([e],{type:t});s=s||"Tabulator."+("function"==typeof i?"txt":i);(r=this.table.options.downloadReady(e,r))&&(o?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,s):(n.setAttribute("href",window.URL.createObjectURL(r)),n.setAttribute("download",s),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)),this.dispatchExternal("downloadComplete"))}commsReceived(e,t,i){switch(t){case"intercept":this.download(i.type,"",i.options,i.active,i.intercept)}}}function R(e,t){var i=t.mask,s=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",n=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var a=i[t];void 0!==a&&a!==n&&a!==s&&a!==o&&(e.value=e.value+""+a,r(t+1))}e.addEventListener("keydown",(t=>{var r=e.value.length,a=t.key;if(t.keyCode>46){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case s:if(a.toUpperCase()==a.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(a))return t.preventDefault(),t.stopPropagation(),!1;break;case n:break;default:if(a!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(i=>{i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}y.moduleName="download",y.downloaders=E;var x={input:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type",o.search?"search":"text"),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(e){null==n&&""!==r.value||r.value!==n?i(r.value)&&(n=r.value):s()}return r.value=void 0!==n?n:"",t((function(){r.focus({preventScroll:!0}),r.style.height="100%"})),r.addEventListener("change",a),r.addEventListener("blur",a),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s();break;case 35:case 36:e.stopPropagation()}})),o.mask&&R(r,o),r},textarea:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"hybrid",a=String(null!=n?n:""),l=((a.match(/(?:\r\n|\r|\n)/g)||[]).length,document.createElement("textarea")),h=0;if(l.style.display="block",l.style.padding="2px",l.style.height="100%",l.style.width="100%",l.style.boxSizing="border-box",l.style.whiteSpace="pre-wrap",l.style.resize="none",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),l.setAttribute(e,l.getAttribute(e)+o.elementAttributes["+"+e])):l.setAttribute(e,o.elementAttributes[e]);function d(t){null==n&&""!==l.value||l.value!==n?(i(l.value)&&(n=l.value),setTimeout((function(){e.getRow().normalizeHeight()}),300)):s()}return l.value=a,t((function(){l.focus({preventScroll:!0}),l.style.height="100%",l.scrollHeight,l.style.height=l.scrollHeight+"px",e.getRow().normalizeHeight()})),l.addEventListener("change",d),l.addEventListener("blur",d),l.addEventListener("keyup",(function(){l.style.height="";var t=l.scrollHeight;l.style.height=t+"px",t!=h&&(h=t,e.getRow().normalizeHeight())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 27:s();break;case 38:("editor"==r||"hybrid"==r&&l.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==r||"hybrid"==r&&l.selectionStart!==l.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&R(l,o),l},number:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"editor",a=document.createElement("input");if(a.setAttribute("type","number"),void 0!==o.max&&a.setAttribute("max",o.max),void 0!==o.min&&a.setAttribute("min",o.min),void 0!==o.step&&a.setAttribute("step",o.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),a.setAttribute(e,a.getAttribute(e)+o.elementAttributes["+"+e])):a.setAttribute(e,o.elementAttributes[e]);a.value=n;var l=function(e){h()};function h(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!==n?i(e)&&(n=e):s()}return t((function(){a.removeEventListener("blur",l),a.focus({preventScroll:!0}),a.style.height="100%",a.addEventListener("blur",l)})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:s();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&R(a,o),a},range:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type","range"),void 0!==o.max&&r.setAttribute("max",o.max),void 0!==o.min&&r.setAttribute("min",o.min),void 0!==o.step&&r.setAttribute("step",o.step),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(){var e=r.value;isNaN(e)||""===e||(e=Number(e)),e!=n?i(e)&&(n=e):s()}return r.value=n,t((function(){r.focus({preventScroll:!0}),r.style.height="100%"})),r.addEventListener("blur",(function(e){a()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s()}})),r},select:function(e,t,i,o,n){var r=this,a=e.getElement(),l=e.getValue(),h=n.verticalNavigation||"editor",d=void 0!==l||null===l?Array.isArray(l)?l:[l]:void 0!==n.defaultValue?n.defaultValue:[],c=document.createElement("input"),u=document.createElement("div"),m=n.multiselect,p=[],g={},b=[],f=[],v=!0,w=!1,C="",E=null;function y(t){var i,s={},o=r.table.getData();return(i=t?r.table.columnManager.getColumnByField(t):e.getColumn()._getSelf())?o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(s[t]=!0)})):console.warn("unable to find matching column to create select lookup list:",t),Object.keys(s)}function R(t,i){var s=[],o=[];function r(e){e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return i.indexOf(e.value)>-1&&T(e),s.push(e),o.push(e),e}if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach((function(e){var t;"object"==typeof e?e.options?(t={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1},o.push(t),e.options.forEach((function(e){r(e)}))):r(e):(t={label:e,value:e,element:!1},i.indexOf(t.value)>-1&&T(t),s.push(t),o.push(t))}));else for(var a in t){var l={label:t[a],value:a,element:!1};i.indexOf(l.value)>-1&&T(l),s.push(l),o.push(l)}n.sortValuesList&&(s.sort(((e,t)=>e.labelt.label?1:0)),o.sort(((e,t)=>e.labelt.label?1:0)),"asc"!==n.sortValuesList&&(s.reverse(),o.reverse())),p=s,b=o,function(){for(;u.firstChild;)u.removeChild(u.firstChild);b.forEach((function(t){var i=t.element;if(!i){if(i=document.createElement("div"),t.label=n.listItemFormatter?n.listItemFormatter(t.value,t.label,e,i,t.itemParams):t.label,t.group?(i.classList.add("tabulator-edit-select-list-group"),i.tabIndex=0,i.innerHTML=""===t.label?" ":t.label):(i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=""===t.label?" ":t.label,i.addEventListener("click",(function(){w=!0,setTimeout((()=>{w=!1}),10),m?(L(t),c.focus()):k(t)})),f.indexOf(t)>-1&&i.classList.add("active")),t.elementAttributes&&"object"==typeof t.elementAttributes)for(let e in t.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),i.setAttribute(e,c.getAttribute(e)+t.elementAttributes["+"+e])):i.setAttribute(e,t.elementAttributes[e]);i.addEventListener("mousedown",(function(){v=!1,setTimeout((function(){v=!0}),10)})),t.element=i}u.appendChild(i)}))}()}function x(e,t){!m&&g&&g.element&&g.element.classList.remove("active"),g&&g.element&&g.element.classList.remove("focused"),g=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active")),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function T(e){-1==f.indexOf(e)&&(f.push(e),x(e,!0)),S()}function M(e){var t=f[e];e>-1&&(f.splice(e,1),t.element&&t.element.classList.remove("active"))}function L(e){e||(e=g);var t=f.indexOf(e);t>-1?M(t):(!0!==m&&f.length>=m&&M(0),T(e)),S()}function k(e){H(),e||(e=g),e&&(c.value=e.label,i(e.value)),d=[e.value]}function D(e){e||H();var t=[];f.forEach((e=>{t.push(e.value)})),d=t,i(t)}function S(){var e=[];f.forEach((t=>{e.push(t.label)})),c.value=e.join(", "),!1===r.currentCell&&D(!0)}function F(){H(),o()}function H(){u.parentNode&&u.parentNode.removeChild(u),r.table.rowManager.element.removeEventListener("scroll",F)}if((Array.isArray(n)||!Array.isArray(n)&&"object"==typeof n&&!n.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),n={values:n}),c.setAttribute("type","text"),c.style.padding="4px",c.style.width="100%",c.style.boxSizing="border-box",c.style.cursor="default",c.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==typeof n.elementAttributes)for(let e in n.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+n.elementAttributes["+"+e])):c.setAttribute(e,n.elementAttributes[e]);return c.value=void 0!==l||null===l?l:"",c.addEventListener("search",(function(e){c.value||(!function(){var e=f.length;for(let t=0;t0&&x(p[t-1],!m));break;case 40:t=p.indexOf(g),("editor"==h||"hybrid"==h&&t=38&&e.keyCode<=90&&function(e){clearTimeout(E);var t=String.fromCharCode(event.keyCode).toLowerCase();C+=t.toLowerCase();var i=p.find((e=>void 0!==e.label&&e.label.toLowerCase().startsWith(C)));i&&x(i,!m),E=setTimeout((()=>{C=""}),800)}(e.keyCode)}})),c.addEventListener("blur",(function(e){v&&(m?D():F())})),c.addEventListener("focus",(function(e){w||function(){if(f=[],!u.parentNode){!0===n.values?R(y(),d):"string"==typeof n.values?R(y(n.values),d):R(n.values||[],d);var e=s.elOffset(a);u.style.minWidth=a.offsetWidth+"px",u.style.top=e.top+a.offsetHeight+"px",u.style.left=e.left+"px",u.addEventListener("mousedown",(function(e){v=!1,setTimeout((function(){v=!0}),10)})),document.body.appendChild(u)}}()})),(u=document.createElement("div")).classList.add("tabulator-edit-select-list"),t((function(){c.style.height="100%",c.focus({preventScroll:!0})})),setTimeout((()=>{this.table.rowManager.element.addEventListener("scroll",F)}),10),c},autocomplete:function(e,t,i,o,n){var r=this,a=e.getElement(),l=e.getValue(),h=n.verticalNavigation||"editor",d=void 0!==l||null===l?l:void 0!==n.defaultValue?n.defaultValue:"",c=document.createElement("input"),u=document.createElement("div"),m=[],p=!1,g=!0,b=!1;if(c.setAttribute("type","search"),c.style.padding="4px",c.style.width="100%",c.style.boxSizing="border-box",n.elementAttributes&&"object"==typeof n.elementAttributes)for(let e in n.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+n.elementAttributes["+"+e])):c.setAttribute(e,n.elementAttributes[e]);function f(){!0===n.values?b=v():"string"==typeof n.values&&(b=v(n.values))}function v(t){var i,s={},o=r.table.getData();return(i=t?r.table.columnManager.getColumnByField(t):e.getColumn()._getSelf())?(o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(s[t]=!0)})),s=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(s).sort():Object.keys(s).sort().reverse():Object.keys(s)):console.warn("unable to find matching column to create autocomplete lookup list:",t),s}function w(e,t){var i,s,o=[];i=b||(n.values||[]),n.searchFunc?(o=n.searchFunc(e,i))instanceof Promise?(C(void 0!==n.searchingPlaceholder?n.searchingPlaceholder:"Searching..."),o.then((e=>{x(E(e),t)})).catch((e=>{console.err("error in autocomplete search promise:",e)}))):x(E(o),t):(s=E(i),""===e?n.showListOnEmpty&&(o=s):s.forEach((function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&o.push(t)})),x(o,t))}function C(e){var t=document.createElement("div");y(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,u.appendChild(t))}function E(e){var t=[];if(Array.isArray(e))e.forEach((function(e){var i={};"object"==typeof e?(i.title=n.listItemFormatter?n.listItemFormatter(e.value,e.label):e.label,i.value=e.value):(i.title=n.listItemFormatter?n.listItemFormatter(e,e):e,i.value=e),t.push(i)}));else for(var i in e){var s={title:n.listItemFormatter?n.listItemFormatter(i,e[i]):e[i],value:i};t.push(s)}return t}function y(){for(;u.firstChild;)u.removeChild(u.firstChild)}function x(e,t){e.length?function(e,t){var i=!1;y(),(m=e).forEach((function(e){var s=e.element;s||((s=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),s.tabIndex=0,s.innerHTML=e.title,s.addEventListener("click",(function(t){M(e),T()})),s.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),e.element=s,t&&e.value==l&&(c.value=e.title,e.element.classList.add("active"),i=!0),e===p&&(e.element.classList.add("active"),i=!0)),u.appendChild(s)})),i||M(!1)}(e,t):n.emptyPlaceholder&&C(n.emptyPlaceholder)}function T(){L(),p?l!==p.value?(l=p.value,c.value=p.title,i(p.value)):o():n.freetext||n.allowEmpty&&""===c.value?(l=c.value,i(c.value)):o()}function M(e,t){p&&p.element&&p.element.classList.remove("active"),p=e,e&&e.element&&e.element.classList.add("active"),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function L(){u.parentNode&&u.parentNode.removeChild(u),r.table.rowManager.element.removeEventListener("scroll",k)}function k(){L(),o()}return u.classList.add("tabulator-edit-select-list"),u.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),c.addEventListener("keydown",(function(e){var t;switch(e.keyCode){case 38:t=m.indexOf(p),("editor"==h||"hybrid"==h&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),M(t>0&&m[t-1]));break;case 40:t=m.indexOf(p),("editor"==h||"hybrid"==h&&t{this.table.rowManager.element.addEventListener("scroll",k)}),10),f(),c.value=d,w(d,!0),c},star:function(e,t,i,s,o){var n=this,r=e.getElement(),a=e.getValue(),l=r.getElementsByTagName("svg").length||5,h=r.getElementsByTagName("svg")[0]?r.getElementsByTagName("svg")[0].getAttribute("width"):14,d=[],c=document.createElement("div"),u=document.createElementNS("http://www.w3.org/2000/svg","svg");function m(e){d.forEach((function(t,i){i'):("ie"==n.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function p(e){var t=document.createElement("span"),s=u.cloneNode(!0);d.push(s),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),m(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e),r.blur()})),t.appendChild(s),c.appendChild(t)}function g(e){a=e,m(e)}if(r.style.whiteSpace="nowrap",r.style.overflow="hidden",r.style.textOverflow="ellipsis",c.style.verticalAlign="middle",c.style.display="inline-block",c.style.padding="4px",u.setAttribute("width",h),u.setAttribute("height",h),u.setAttribute("viewBox","0 0 512 512"),u.setAttribute("xml:space","preserve"),u.style.padding="0 1px",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+o.elementAttributes["+"+e])):c.setAttribute(e,o.elementAttributes[e]);for(var b=1;b<=l;b++)p(b);return m(a=Math.min(parseInt(a),l)),c.addEventListener("mousemove",(function(e){m(0)})),c.addEventListener("click",(function(e){i(0)})),r.addEventListener("blur",(function(e){s()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(a+1);break;case 37:g(a-1);break;case 13:i(a);break;case 27:s()}})),c},progress:function(e,t,i,s,o){var n,r,a=e.getElement(),l=void 0===o.max?a.getElementsByTagName("div")[0].getAttribute("max")||100:o.max,h=void 0===o.min?a.getElementsByTagName("div")[0].getAttribute("min")||0:o.min,d=(l-h)/100,c=e.getValue()||0,u=document.createElement("div"),m=document.createElement("div");function p(){var e=window.getComputedStyle(a,null),t=d*Math.round(m.offsetWidth/((a.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+h;i(t),a.setAttribute("aria-valuenow",t),a.setAttribute("aria-label",c)}if(u.style.position="absolute",u.style.right="0",u.style.top="0",u.style.bottom="0",u.style.width="5px",u.classList.add("tabulator-progress-handle"),m.style.display="inline-block",m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),m.setAttribute(e,m.getAttribute(e)+o.elementAttributes["+"+e])):m.setAttribute(e,o.elementAttributes[e]);return a.style.padding="4px 4px",c=Math.min(parseFloat(c),l),c=Math.max(parseFloat(c),h),c=Math.round((c-h)/d),m.style.width=c+"%",a.setAttribute("aria-valuemin",h),a.setAttribute("aria-valuemax",l),m.appendChild(u),u.addEventListener("mousedown",(function(e){n=e.screenX,r=m.offsetWidth})),u.addEventListener("mouseover",(function(){u.style.cursor="ew-resize"})),a.addEventListener("mousemove",(function(e){n&&(m.style.width=r+e.screenX-n+"px")})),a.addEventListener("mouseup",(function(e){n&&(e.stopPropagation(),e.stopImmediatePropagation(),n=!1,r=!1,p())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),m.style.width=m.clientWidth+a.clientWidth/100+"px";break;case 37:e.preventDefault(),m.style.width=m.clientWidth-a.clientWidth/100+"px";break;case 9:case 13:p();break;case 27:s()}})),a.addEventListener("blur",(function(){s()})),m},tickCross:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input"),a=o.tristate,l=void 0===o.indeterminateValue?null:o.indeterminateValue,h=!1;if(r.setAttribute("type","checkbox"),r.style.marginTop="5px",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function d(e){return a?e?h?l:r.checked:r.checked&&!h?(r.checked=!1,r.indeterminate=!0,h=!0,l):(h=!1,r.checked):r.checked}return r.value=n,!a||void 0!==n&&n!==l&&""!==n||(h=!0,r.indeterminate=!0),"firefox"!=this.table.browser&&t((function(){r.focus({preventScroll:!0})})),r.checked=!0===n||"true"===n||"True"===n||1===n,t((function(){r.focus()})),r.addEventListener("change",(function(e){i(d())})),r.addEventListener("blur",(function(e){i(d(!0))})),r.addEventListener("keydown",(function(e){13==e.keyCode&&i(d()),27==e.keyCode&&s()})),r}};class T extends t{constructor(e){super(e),this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[],this.editors=T.editors,this.registerColumnOption("editable"),this.registerColumnOption("editor"),this.registerColumnOption("editorParams"),this.registerColumnOption("cellEditing"),this.registerColumnOption("cellEdited"),this.registerColumnOption("cellEditCancelled"),this.registerTableFunction("getEditedCells",this.getEditedCells.bind(this)),this.registerTableFunction("clearCellEdited",this.clearCellEdited.bind(this)),this.registerTableFunction("navigatePrev",this.navigatePrev.bind(this)),this.registerTableFunction("navigateNext",this.navigateNext.bind(this)),this.registerTableFunction("navigateLeft",this.navigateLeft.bind(this)),this.registerTableFunction("navigateRight",this.navigateRight.bind(this)),this.registerTableFunction("navigateUp",this.navigateUp.bind(this)),this.registerTableFunction("navigateDown",this.navigateDown.bind(this)),this.registerComponentFunction("cell","isEdited",this.cellisEdited.bind(this)),this.registerComponentFunction("cell","clearEdited",this.clearEdited.bind(this)),this.registerComponentFunction("cell","edit",this.editCell.bind(this)),this.registerComponentFunction("cell","cancelEdit",this.cellCancelEdit.bind(this)),this.registerComponentFunction("cell","navigatePrev",this.navigatePrev.bind(this)),this.registerComponentFunction("cell","navigateNext",this.navigateNext.bind(this)),this.registerComponentFunction("cell","navigateLeft",this.navigateLeft.bind(this)),this.registerComponentFunction("cell","navigateRight",this.navigateRight.bind(this)),this.registerComponentFunction("cell","navigateUp",this.navigateUp.bind(this)),this.registerComponentFunction("cell","navigateDown",this.navigateDown.bind(this))}initialize(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("data-refeshing",this.cancelEdit.bind(this)),this.subscribe("keybinding-nav-prev",this.navigatePrev.bind(this)),this.subscribe("keybinding-nav-next",this.keybindingNavigateNext.bind(this)),this.subscribe("keybinding-nav-left",this.navigateLeft.bind(this)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this))}keybindingNavigateNext(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(e)||i&&(t.getElement().firstChild.blur(),(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((()=>{setTimeout((()=>{nav.next()}))}))))}cellisEdited(e){return!!e.modules.edit&&e.modules.edit.edited}cellCancelEdit(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}clearCellEdited(e){e||(e=this.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.modules.edit.clearEdited(e._getSelf())}))}navigatePrev(e){var t,i,s=this.currentCell;if(s){if(e&&e.preventDefault(),t=this.navigateLeft())return!0;if((i=this.table.rowManager.prevDisplayRow(s.row,!0))&&(t=this.findNextEditableCell(i,i.cells.length)))return t.edit(),!0}return!1}navigateNext(e){var t,i,s=this.currentCell;if(s){if(e&&e.preventDefault(),t=this.navigateRight())return!0;if((i=this.table.rowManager.nextDisplayRow(s.row,!0))&&(t=this.findNextEditableCell(i,-1)))return t.edit(),!0}return!1}navigateLeft(e){var t,i,s=this.currentCell;return!!(s&&(e&&e.preventDefault(),t=s.getIndex(),i=this.findPrevEditableCell(s.row,t)))&&(i.edit(),!0)}navigateRight(e){var t,i,s=this.currentCell;return!!(s&&(e&&e.preventDefault(),t=s.getIndex(),i=this.findNextEditableCell(s.row,t)))&&(i.edit(),!0)}navigateUp(e){var t,i,s=this.currentCell;return!!(s&&(e&&e.preventDefault(),t=s.getIndex(),i=this.table.rowManager.prevDisplayRow(s.row,!0)))&&(i.cells[t].edit(),!0)}navigateDown(e){var t,i,s=this.currentCell;return!!(s&&(e&&e.preventDefault(),t=s.getIndex(),i=this.table.rowManager.nextDisplayRow(s.row,!0)))&&(i.cells[t].edit(),!0)}findNextEditableCell(e,t){var i=!1;if(t0)for(var s=t-1;s>=0;s--){let t=e.cells[s],o=!0;if(t.column.modules.edit&&Helpers.elVisible(t.getElement())&&("function"==typeof t.column.modules.edit.check&&(o=t.column.modules.edit.check(t.getComponent())),o)){i=t;break}}return i}initializeColumnCheck(e){void 0!==e.definition.editor&&this.initializeColumn(e)}columnDeleteCheck(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}rowDeleteCheck(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}initializeColumn(e){var t={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(typeof e.definition.editor){case"string":this.editors[e.definition.editor]?t.editor=this.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":t.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?this.editors[e.definition.formatter]?t.editor=this.editors[e.definition.formatter]:t.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}t.editor&&(e.modules.edit=t)}getCurrentCell(){return!!this.currentCell&&this.currentCell.getComponent()}clearEditor(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),e?i.validate&&i.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-row-editing")}}cancelEdit(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.definition.cellEditCancelled&&e.column.definition.cellEditCancelled.call(this.table,t),this.dispatchExternal("cellEditCancelled",t)}}bindEditor(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}focusCellNoEvent(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}editCell(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}focusScrollAdjust(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,s=e.row.getElement();s.offsetTop;s.offsetTopi&&(this.table.rowManager.element.scrollTop+=s.offsetTop+s.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,n=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();r.offsetLeft;this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin),n-=parseInt(this.table.modules.frozenColumns.rightMargin)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),n-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLeftn&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-n)}}edit(e,t,i){var s,o,n,r=this,a=!0,l=function(){},h=e.getElement();if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(t&&t.stopPropagation(),typeof e.column.modules.edit.check){case"function":a=e.column.modules.edit.check(e.getComponent());break;case"boolean":a=e.column.modules.edit.check}if(a||i){if(r.cancelEdit(),r.currentCell=e,this.focusScrollAdjust(e),o=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.definition.cellClick&&e.column.definition.cellClick.call(this.table,t,o)),e.column.definition.cellEditing&&e.column.definition.cellEditing.call(this.table,o),this.dispatchExternal("cellEditing",o),n="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(o):e.column.modules.edit.params,!1===(s=e.column.modules.edit.editor.call(r,o,(function(e){l=e}),(function(t){if(r.currentCell===e){var i=!0;return e.column.modules.validate&&r.table.modExists("validate")&&"manual"!=r.table.options.validationMode&&(i=r.table.modules.validate.validate(e.column.modules.validate,e,t)),!0===i||"highlight"===r.table.options.validationMode?(r.clearEditor(),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==r.editedCells.indexOf(e)&&r.editedCells.push(e),e.setValue(t,!0),r.table.options.dataTree&&r.table.modExists("dataTree")&&r.table.modules.dataTree.checkForRestyle(e),!0===i||(h.classList.add("tabulator-validation-fail"),r.table.externalEvents.dispatch("validationFailed",e.getComponent(),t,i),!1)):(r.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),r.focusCellNoEvent(e,!0),l(),r.table.externalEvents.dispatch("validationFailed",e.getComponent(),t,i),!1)}}),(function(){r.currentCell===e&&(r.cancelEdit(),r.table.options.dataTree&&r.table.modExists("dataTree")&&r.table.modules.dataTree.checkForRestyle(e))}),n)))return h.blur(),!1;if(!(s instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",s),h.blur(),!1;for(h.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(s),l();for(var d=h.children,c=0;c{e.push(t.getComponent())})),e}clearEdited(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.edit.edited=!1,e.modules.validate&&(e.modules.validate.invalid=!1)),(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1)}}T.moduleName="edit",T.editors=x;class M{constructor(e,t,i,s){this.type=e,this.columns=t,this.component=i||!1,this.indent=s||0}}class L{constructor(e,t,i,s,o){this.value=e,this.component=t||!1,this.width=i,this.height=s,this.depth=o}}class k extends t{constructor(e){super(e),this.config={},this.cloneTableStyle=!0,this.colVisProp="",this.registerTableOption("htmlOutputConfig",!1),this.registerColumnOption("htmlOutput"),this.registerColumnOption("titleHtmlOutput")}initialize(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}generateExportList(e,t,i,s){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=s;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],n=this.bodyToExportRows(this.rowLookup(i));return o.concat(n)}genereateTable(e,t,i,s){var o=this.generateExportList(e,t,i,s);return this.genereateTableElement(o)}rowLookup(e){var t=[];if("function"==typeof e)e.call(this.table).forEach((e=>{(e=this.table.rowManager.findRow(e))&&t.push(e)}));else switch(e){case!0:case"visible":t=this.table.rowManager.getVisibleRows(!0);break;case"all":t=this.table.rowManager.rows;break;case"selected":t=this.table.modules.selectRow.selectedRows;break;case"active":default:t=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],t)}generateColumnGroupHeaders(){var e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((t=>{var i=this.processColumnGroup(t);i&&e.push(i)})),e}processColumnGroup(e){var t=e.columns,i=0,s={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(t.length){if(s.subGroups=[],s.width=0,t.forEach((e=>{var t=this.processColumnGroup(e);t&&(s.width+=t.width,s.subGroups.push(t),t.depth>i&&(i=t.depth))})),s.depth+=i,!s.width)return!1}else{if(!this.columnVisCheck(e))return!1;s.width=1}return s}columnVisCheck(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])}headersToExportRows(e){var t=[],i=0,s=[];function o(e,s){var n=i-s;if(void 0===t[s]&&(t[s]=[]),e.height=e.subGroups?1:n-e.depth+1,t[s].push(e),e.height>1)for(let i=1;i1)for(let i=1;ii&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((e=>{var t=[];e.forEach((e=>{e?t.push(new L(e.title,e.column.getComponent(),e.width,e.height,e.depth)):t.push(null)})),s.push(new M("header",t))})),s}bodyToExportRows(e){var t=[],i=[];return this.table.columnManager.columnsByIndex.forEach((e=>{this.columnVisCheck(e)&&t.push(e.getComponent())})),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),(e=e.filter((e=>{switch(e.type){case"group":return!1!==this.config.rowGroups;case"calc":return!1!==this.config.columnCalcs;case"row":return!(this.table.options.dataTree&&!1===this.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach(((e,s)=>{var o=e.getData(this.colVisProp),n=[],r=0;switch(e.type){case"group":r=e.level,n.push(new L(e.key,e.getComponent(),t.length,1));break;case"calc":case"row":t.forEach((e=>{n.push(new L(e._column.getFieldValue(o),e,1,1))})),this.table.options.dataTree&&!1!==this.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new M(e.type,n,e.getComponent(),r))})),i}genereateTableElement(e){var t=document.createElement("table"),i=document.createElement("thead"),s=document.createElement("tbody"),o=this.lookupTableStyles(),n=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r={};return r.rowFormatter=null!==n?n:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(r.treeElementField=this.table.modules.dataTree.elementField),r.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r.groupHeader&&!Array.isArray(r.groupHeader)&&(r.groupHeader=[r.groupHeader]),t.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),i,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(((e,t)=>{switch(e.type){case"header":i.appendChild(this.genereateHeaderElement(e,r,o));break;case"group":s.appendChild(this.genereateGroupElement(e,r,o));break;case"calc":s.appendChild(this.genereateCalcElement(e,r,o));break;case"row":let n=this.genereateRowElement(e,r,o);this.mapElementStyles(t%2&&o.evenRow?o.evenRow:o.oddRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s.appendChild(n)}})),i.innerHTML&&t.appendChild(i),t.appendChild(s),this.mapElementStyles(this.table.element,t,["border-top","border-left","border-right","border-bottom"]),t}lookupTableStyles(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e}genereateHeaderElement(e,t,i){var s=document.createElement("tr");return e.columns.forEach((e=>{if(e){var t=document.createElement("th"),i=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,this.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),this.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),this.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?this.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&this.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),s.appendChild(t)}})),s}genereateGroupElement(e,t,i){var s=document.createElement("tr"),o=document.createElement("td"),n=e.columns[0];return s.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?n.value=t.groupHeader[e.indent](n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1===t.groupHeader?n.value=n.value:n.value=e.component._group.generator(n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component),o.colSpan=n.width,o.innerHTML=n.value,s.classList.add("tabulator-print-table-group"),s.classList.add("tabulator-group-level-"+e.indent),n.component.isVisible()&&s.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(i.firstGroup,o,["padding-top","padding-left","padding-right","padding-bottom"]),s.appendChild(o),s}genereateCalcElement(e,t,i){var s=this.genereateRowElement(e,t,i);return s.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s}genereateRowElement(e,t,s){var o=document.createElement("tr");return o.classList.add("tabulator-print-table-row"),e.columns.forEach((n=>{if(n){var r=document.createElement("td"),a=n.component._column,l=n.value,h={modules:{},getValue:function(){return l},getField:function(){return a.definition.field},getElement:function(){return r},getColumn:function(){return a.getComponent()},getData:function(){return e.component.getData()},getRow:function(){return e.component},getComponent:function(){return h},column:a};if((a.definition.cssClass?a.definition.cssClass.split(" "):[]).forEach((function(e){r.classList.add(e)})),this.table.modExists("format")&&!1!==this.config.formatCells)l=this.table.modules.format.formatExportValue(h,this.colVisProp);else switch(typeof l){case"object":l=JSON.stringify(l);break;case"undefined":case"null":l="";break;default:l=l}l instanceof Node?r.appendChild(l):r.innerHTML=l,s.firstCell&&(this.mapElementStyles(s.firstCell,r,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),a.definition.align&&(r.style.textAlign=a.definition.align)),this.table.options.dataTree&&!1!==this.config.dataTree&&(t.treeElementField&&t.treeElementField==a.field||!t.treeElementField&&0==i)&&(e.component._row.modules.dataTree.controlEl&&r.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),r.firstChild),e.component._row.modules.dataTree.branchEl&&r.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),r.firstChild)),o.appendChild(r),h.modules.format&&h.modules.format.renderedCallback&&h.modules.format.renderedCallback(),t.rowFormatter&&!1!==this.config.formatCells&&t.rowFormatter(e.component)}})),o}genereateHTMLTable(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML}getHtml(e,t,i,s){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,s||"htmlOutput");return this.genereateHTMLTable(o)}mapElementStyles(e,t,i){if(this.cloneTableStyle&&e&&t){var s={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var o=window.getComputedStyle(e);i.forEach((function(e){t.style[s[e]]=o.getPropertyValue(e)}))}}}}k.moduleName="export";var D={"=":function(e,t,i,s){return t==e},"<":function(e,t,i,s){return t":function(e,t,i,s){return t>e},">=":function(e,t,i,s){return t>=e},"!=":function(e,t,i,s){return t!=e},regex:function(e,t,i,s){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,s){var o=e.toLowerCase().split(void 0===s.separator?" ":s.separator),n=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((e=>{n.includes(e)&&r.push(!0)})),s.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,s){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}};class S extends t{constructor(e){super(e),this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1,this.registerTableOption("filterMode","local"),this.registerTableOption("initialFilter",!1),this.registerTableOption("initialHeaderFilter",!1),this.registerTableOption("headerFilterLiveFilterDelay",300),this.registerColumnOption("headerFilter"),this.registerColumnOption("headerFilterPlaceholder"),this.registerColumnOption("headerFilterParams"),this.registerColumnOption("headerFilterEmptyCheck"),this.registerColumnOption("headerFilterFunc"),this.registerColumnOption("headerFilterFuncParams"),this.registerColumnOption("headerFilterLiveFilter"),this.registerTableFunction("searchRows",this.searchRows.bind(this)),this.registerTableFunction("searchData",this.searchData.bind(this)),this.registerTableFunction("setFilter",this.userSetFilter.bind(this)),this.registerTableFunction("refreshFilter",this.userRefreshFilter.bind(this)),this.registerTableFunction("addFilter",this.userAddFilter.bind(this)),this.registerTableFunction("getFilters",this.getFilters.bind(this)),this.registerTableFunction("setHeaderFilterFocus",this.userSetHeaderFilterFocus.bind(this)),this.registerTableFunction("getHeaderFilterValue",this.userGetHeaderFilterValue.bind(this)),this.registerTableFunction("setHeaderFilterValue",this.userSetHeaderFilterValue.bind(this)),this.registerTableFunction("getHeaderFilters",this.getHeaderFilters.bind(this)),this.registerTableFunction("removeFilter",this.userRemoveFilter.bind(this)),this.registerTableFunction("clearFilter",this.userClearFilter.bind(this)),this.registerTableFunction("clearHeaderFilter",this.userClearHeaderFilter.bind(this)),this.registerComponentFunction("column","headerFilterFocus",this.setHeaderFilterFocus.bind(this)),this.registerComponentFunction("column","reloadHeaderFilter",this.reloadHeaderFilter.bind(this)),this.registerComponentFunction("column","getHeaderFilterValue",this.getHeaderFilterValue.bind(this)),this.registerComponentFunction("column","setHeaderFilterValue",this.setHeaderFilterValue.bind(this))}initialize(){this.subscribe("column-init",this.initializeColumnHeaderFilter.bind(this)),this.subscribe("column-width-fit-before",this.hideHeaderFilterElements.bind(this)),this.subscribe("column-width-fit-after",this.showHeaderFilterElements.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}tableBuilt(){this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((e=>{var t=this.table.columnManager.findColumn(e.field);if(!t)return console.warn("Column Filter Error - No matching column found:",e.field),!1;this.setHeaderFilterValue(t,e.value)}))}remoteFilterParams(e,t,i,s){return s.filter=this.getFilters(!0,!0),s}userSetFilter(e,t,i,s){this.setFilter(e,t,i,s),this.refreshFilter()}userRefreshFilter(){this.refreshFilter()}userAddFilter(e,t,i,s){this.addFilter(e,t,i,s),this.refreshFilter()}userSetHeaderFilterFocus(e){var t=this.table.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.setHeaderFilterFocus(t)}userGetHeaderFilterValue(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}userSetHeaderFilterValue(e,t){var i=this.table.columnManager.findColumn(e);if(!i)return console.warn("Column Filter Error - No matching column found:",e),!1;this.setHeaderFilterValue(i,t)}userRemoveFilter(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}userClearFilter(e){this.clearFilter(e),this.refreshFilter()}userClearHeaderFilter(){this.clearHeaderFilter(),this.refreshFilter()}searchRows(e,t,i){return this.search("rows",e,t,i)}searchData(e,t,i){return this.search("data",e,t,i)}initializeColumnHeaderFilter(e){var t=e.definition;t.headerFilter&&(void 0!==t.headerFilterPlaceholder&&t.field&&this.module("localize").setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),this.initializeColumn(e))}initializeColumn(e,t){var i=this,s=e.getField();e.modules.filter={success:function(t){var o,n="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",r="",a="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[s];else{switch(e.modules.filter.value=t,typeof e.definition.headerFilterFunc){case"string":S.filters[e.definition.headerFilterFunc]?(r=e.definition.headerFilterFunc,o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,S.filters[e.definition.headerFilterFunc](t,o,i,s)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,e.definition.headerFilterFunc(t,o,i,s)}}if(!o)switch(n){case"partial":o=function(i){var s=e.getFieldValue(i);return null!=s&&String(s).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";break;default:o=function(i){return e.getFieldValue(i)==t},r="="}i.headerFilters[s]={value:t,func:o,type:r,params:{}}}a=JSON.stringify(i.headerFilters),i.prevHeaderFilterChangeCheck!==a&&(i.prevHeaderFilterChangeCheck=a,i.trackChanges(),i.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)}generateHeaderFilterElement(e,t,i){var s,o,n,r,a,l,h,d=this,c=e.modules.filter.success,u=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),u){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e&&0!==e},(s=document.createElement("div")).classList.add("tabulator-header-filter"),typeof e.definition.headerFilter){case"string":d.table.modules.edit.editors[e.definition.headerFilter]?(o=d.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":o=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?o=e.modules.edit.editor:e.definition.formatter&&d.table.modules.edit.editors[e.definition.formatter]?(o=d.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):o=d.table.modules.edit.editors.input}if(o){if(r={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return s},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},h="function"==typeof(h=e.definition.headerFilterParams||{})?h.call(d.table):h,!(n=o.call(this.table.modules.edit,r,(function(){}),c,(function(){}),h)))return void console.warn("Filter Error - Cannot add filter to "+u+" column, editor returned a value of false");if(!(n instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+u+" column, editor should return an instance of Node, the editor returned:",n);u?d.langBind("headerFilters|columns|"+e.definition.field,(function(e){n.setAttribute("placeholder",void 0!==e&&e?e:d.langText("headerFilters|default"))})):d.langBind("headerFilters|default",(function(e){n.setAttribute("placeholder",e)})),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("focus",(e=>{var t=this.table.columnManager.element.scrollLeft;t!==this.table.rowManager.element.scrollLeft&&(this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))})),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout((function(){c(n.value)}),d.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=n,e.modules.filter.attrType=n.hasAttribute("type")?n.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=n.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(n.addEventListener("keyup",l),n.addEventListener("search",l),"number"==e.modules.filter.attrType&&n.addEventListener("change",(function(e){c(n.value)})),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&n.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||n.addEventListener("mousedown",(function(e){e.stopPropagation()}))),s.appendChild(n),e.contentElement.appendChild(s),i||d.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)}hideHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}showHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}setHeaderFilterFocus(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())}getHeaderFilterValue(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())}setHeaderFilterValue(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}reloadHeaderFilter(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}refreshFilter(){"remote"===this.table.options.filterMode?this.reloadData():this.refreshData()}trackChanges(){this.changed=!0,this.dispatch("filter-changed")}hasChanged(){var e=this.changed;return this.changed=!1,e}setFilter(e,t,i,s){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),this.addFilter(e)}addFilter(e,t,i,s){Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),e.forEach((e=>{(e=this.findFilter(e))&&(this.filterList.push(e),this.changed=!0)}))}findFilter(e){var t;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:S.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return S.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return S.filters[e.type](e.value,t[e.field],t,e.params||{})}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e}findSubFilters(e){var t=[];return e.forEach((e=>{(e=this.findFilter(e))&&t.push(e)})),!!t.length&&t}getFilters(e,t){var i=[];return e&&(i=this.getHeaderFilters()),t&&i.forEach((function(e){"function"==typeof e.type&&(e.type="function")})),i=i.concat(this.filtersToArray(this.filterList,t))}filtersToArray(e,t){var i=[];return e.forEach((e=>{var s;Array.isArray(e)?i.push(this.filtersToArray(e,t)):(s={field:e.field,type:e.type,value:e.value},t&&"function"==typeof s.type&&(s.type="function"),i.push(s))})),i}getHeaderFilters(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}removeFilter(e,t,i){Array.isArray(e)||(e=[{field:e,type:t,value:i}]),e.forEach((e=>{var t=-1;(t="object"==typeof e.field?this.filterList.findIndex((t=>e===t)):this.filterList.findIndex((t=>e.field===t.field&&e.type===t.type&&e.value===t.value)))>-1?this.filterList.splice(t,1):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)})),this.trackChanges()}clearFilter(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}clearHeaderFilter(){this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((e=>{void 0!==e.modules.filter.value&&delete e.modules.filter.value,e.modules.filter.prevSuccess=void 0,this.reloadHeaderFilter(e)})),this.trackChanges()}search(e,t,i,s){var o=[],n=[];return Array.isArray(t)||(t=[{field:t,type:i,value:s}]),t.forEach((e=>{(e=this.findFilter(e))&&n.push(e)})),this.table.rowManager.rows.forEach((t=>{var i=!0;n.forEach((e=>{this.filterRecurse(e,t.getData())||(i=!1)})),i&&o.push("data"===e?t.getData("data"):t.getComponent())})),o}filter(e,t){var i=[],s=[];return this.subscribedExternal("dataFiltering")&&this.dispatchExternal("dataFiltering",this.getFilters()),"remote"!==this.table.options.filterMode&&(this.filterList.length||Object.keys(this.headerFilters).length)?e.forEach((e=>{this.filterRow(e)&&i.push(e)})):i=e.slice(0),this.subscribedExternal("dataFiltered")&&(i.forEach((e=>{s.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(),s)),i}filterRow(e,t){var i=!0,s=e.getData();for(var o in this.filterList.forEach((e=>{this.filterRecurse(e,s)||(i=!1)})),this.headerFilters)this.headerFilters[o].func(s)||(i=!1);return i}filterRecurse(e,t){var i=!1;return Array.isArray(e)?e.forEach((e=>{this.filterRecurse(e,t)&&(i=!0)})):i=e.func(t),i}}S.moduleName="filter",S.filters=D;var F={plaintext:function(e,t,i){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,i){return e.getValue()},textarea:function(e,t,i){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,i){var s,o,n,r,a=parseFloat(e.getValue()),l=t.decimal||".",h=t.thousand||",",d=t.symbol||"",c=!!t.symbolAfter,u=void 0!==t.precision?t.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(s=!1!==u?a.toFixed(u):a,o=(s=String(s).split("."))[0],n=s.length>1?l+s[1]:"",r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+h+"$2");return c?o+n+d:d+o+n},link:function(e,t,i){var s=e.getValue(),o=t.urlPrefix||"",n=t.download,r=s,a=document.createElement("a");if(t.labelField&&(r=e.getData()[t.labelField]),t.label)switch(typeof t.label){case"string":r=t.label;break;case"function":r=t.label(e)}if(r){if(t.urlField&&(s=e.getData()[t.urlField]),t.url)switch(typeof t.url){case"string":s=t.url;break;case"function":s=t.url(e)}return a.setAttribute("href",o+s),t.target&&a.setAttribute("target",t.target),t.download&&(n="function"==typeof n?n(e):!0===n?"":n,a.setAttribute("download",n)),a.innerHTML=this.emptyToSpace(this.sanitizeHTML(r)),a}return" "},image:function(e,t,i){var s=document.createElement("img"),o=e.getValue();switch(t.urlPrefix&&(o=t.urlPrefix+e.getValue()),t.urlSuffix&&(o+=t.urlSuffix),s.setAttribute("src",o),typeof t.height){case"number":s.style.height=t.height+"px";break;case"string":s.style.height=t.height}switch(typeof t.width){case"number":s.style.width=t.width+"px";break;case"string":s.style.width=t.width}return s.addEventListener("load",(function(){e.getRow().normalizeHeight()})),s},tickCross:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t.allowEmpty,r=t.allowTruthy,a=void 0!==t.tickElement?t.tickElement:'',l=void 0!==t.crossElement?t.crossElement:'';return r&&s||!0===s||"true"===s||"True"===s||1===s||"1"===s?(o.setAttribute("aria-checked",!0),a||""):!n||"null"!==s&&""!==s&&null!=s?(o.setAttribute("aria-checked",!1),l||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var s=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",n=t.outputFormat||"dd/MM/yyyy HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=e.getValue();if(void 0!==s){var l=(window.DateTime||luxon.DateTime).fromFormat(a,o);return l.isValid?(t.timezone&&(l=l.shiftTimezone(t.timezone)),l.toFormat(n)):!0===r?a:"function"==typeof r?r(a):r}console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var s=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=void 0!==t.suffix&&t.suffix,a=void 0!==t.unit?t.unit:"days",l=void 0!==t.humanize&&t.humanize,h=void 0!==t.date?t.date:s.now(),d=e.getValue();if(void 0!==s){var c=s.fromFormat(d,o);if(!c.isValid)return!0===n?d:"function"==typeof n?n(d):n;if(!l)return parseInt(c.diff(h,a)[a])+(r?" "+r:"")}else console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var s=e.getValue();return void 0===t[s]?(console.warn("Missing display value for "+s),s):t[s]},star:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",s=s&&!isNaN(s)?parseInt(s):0,s=Math.max(0,Math.min(s,n));for(var l=1;l<=n;l++){var h=a.cloneNode(!0);h.innerHTML=l<=s?'':'',r.appendChild(h)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",s),r},traffic:function(e,t,i){var s,o,n=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,h=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),o=parseFloat(n)<=a?parseFloat(n):a,o=parseFloat(o)>=l?parseFloat(o):l,s=(a-l)/100,o=Math.round((o-l)/s),typeof h){case"string":d=h;break;case"function":d=h(n);break;case"object":if(Array.isArray(h)){var c=100/h.length,u=Math.floor(o/c);u=Math.min(u,h.length-1),d=h[u=Math.max(u,0)];break}}return r.style.backgroundColor=d,r}},progress:function(e,t,i){var s,o,n,r,a,l=this.sanitizeHTML(e.getValue())||0,h=e.getElement(),d=t&&t.max?t.max:100,u=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(o=parseFloat(l)<=d?parseFloat(l):d,o=parseFloat(o)>=u?parseFloat(o):u,s=(d-u)/100,o=Math.round((o-u)/s),typeof t.color){case"string":n=t.color;break;case"function":n=t.color(l);break;case"object":if(Array.isArray(t.color)){var p=100/t.color.length,g=Math.floor(o/p);g=Math.min(g,t.color.length-1),g=Math.max(g,0),n=t.color[g];break}default:n="#2DC214"}switch(typeof t.legend){case"string":r=t.legend;break;case"function":r=t.legend(l);break;case"boolean":r=l;break;default:r=!1}switch(typeof t.legendColor){case"string":a=t.legendColor;break;case"function":a=t.legendColor(l);break;case"object":if(Array.isArray(t.legendColor)){p=100/t.legendColor.length,g=Math.floor(o/p);g=Math.min(g,t.legendColor.length-1),g=Math.max(g,0),a=t.legendColor[g]}break;default:a="#000"}h.style.minWidth="30px",h.style.position="relative",h.setAttribute("aria-label",o);var b=document.createElement("div");b.style.display="inline-block",b.style.position="absolute",b.style.width=o+"%",b.style.backgroundColor=n,b.style.height="100%",b.setAttribute("data-max",d),b.setAttribute("data-min",u);var f=document.createElement("div");if(f.style.position="relative",f.style.width="100%",f.style.height="100%",r){var v=document.createElement("div");v.style.position="absolute",v.style.top=0,v.style.left=0,v.style.textAlign=m,v.style.width="100%",v.style.color=a,v.innerHTML=r}return i((function(){if(!(e instanceof c)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",h.appendChild(t),h=t}h.appendChild(f),f.appendChild(b),r&&f.appendChild(v)})),""},color:function(e,t,i){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,i){return''},buttonCross:function(e,t,i){return''},rownum:function(e,t,i){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
"},responsiveCollapse:function(e,t,i){var s=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function n(e){var t=o.element;o.open=e,t&&(o.open?(s.classList.add("open"),t.style.display=""):(s.classList.remove("open"),t.style.display="none"))}return s.classList.add("tabulator-responsive-collapse-toggle"),s.innerHTML="+-",e.getElement().classList.add("tabulator-row-handle"),s.addEventListener("click",(function(e){e.stopImmediatePropagation(),n(!o.open)})),n(o.open),s},rowSelection:function(e,t,i){var s=document.createElement("input");if(s.type="checkbox",this.table.modExists("selectRow",!0))if(s.addEventListener("click",(e=>{e.stopPropagation()})),"function"==typeof e.getRow){var o=e.getRow();o instanceof b?(s.addEventListener("change",(e=>{o.toggleSelect()})),s.checked=o.isSelected&&o.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(o,s)):s=""}else s.addEventListener("change",(e=>{this.table.modules.selectRow.selectedRows.length?this.table.deselectRow():this.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(s);return s}};class H extends t{constructor(e){super(e),this.registerColumnOption("formatter"),this.registerColumnOption("formatterParams"),this.registerColumnOption("formatterPrint"),this.registerColumnOption("formatterPrintParams"),this.registerColumnOption("formatterClipboard"),this.registerColumnOption("formatterClipboardParams"),this.registerColumnOption("formatterHtmlOutput"),this.registerColumnOption("formatterHtmlOutputParams"),this.registerColumnOption("titleFormatter"),this.registerColumnOption("titleFormatterParams")}initialize(){this.subscribe("cell-format",this.formatValue.bind(this)),this.subscribe("cell-rendered",this.cellRendered.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-format",this.formatHeader.bind(this))}initializeColumn(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))}lookupFormatter(e,t){var i={params:e.definition["formatter"+t+"Params"]||{}},s=e.definition["formatter"+t];switch(typeof s){case"string":H.formatters[s]?i.formatter=H.formatters[s]:(console.warn("Formatter Error - No such formatter found: ",s),i.formatter=H.formatters.plaintext);break;case"function":i.formatter=s;break;default:i.formatter=H.formatters.plaintext}return i}cellRendered(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}formatHeader(e,t,i){var s,o,n,r;return e.definition.titleFormatter?(s=this.getFormatter(e.definition.titleFormatter),n=t=>{e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i}},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,s.call(this,r,o,n)):t}formatValue(e){var t=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}formatExportValue(e,t){var i,s=e.column.modules.format[t];if(s){return i="function"==typeof s.params?s.params(component):s.params,s.formatter.call(this,e.getComponent(),i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}return this.formatValue(e)}sanitizeHTML(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,(function(e){return t[e]}))}return e}emptyToSpace(e){return null==e||""===e?" ":e}getFormatter(e){switch(typeof e){case"string":H.formatters[e]?e=H.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=H.formatters.plaintext);break;case"function":e=e;break;default:e=H.formatters.plaintext}return e}}H.moduleName="format",H.formatters=F;class P extends t{constructor(e){super(e),this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1,this.registerColumnOption("frozen")}reset(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0}initialize(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-width",this.layout.bind(this)),this.subscribe("row-layout-before",this.layoutRow.bind(this)),this.subscribe("table-layout",this.layout.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("table-redraw",this.layout.bind(this))}layoutCell(e){this.layoutElement(e.element,e.column)}initializeColumn(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")}frozenCheck(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen}scrollHorizontal(){var e;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout((()=>{this.layout()}),100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach((e=>{"row"===e.type&&this.layoutRow(e)})),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)}calcMargins(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft}layoutCalcRows(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))}layoutColumnPosition(e){var t=[];this.leftColumns.forEach(((i,s)=>{if(i.modules.frozen.margin=this._calcSpace(this.leftColumns,s)+this.table.columnManager.scrollLeft+"px",s==this.leftColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup){var o=this.getColGroupParentElement(i);t.includes(o)||(this.layoutElement(o,i),t.push(o)),i.modules.frozen.edge&&o.classList.add("tabulator-frozen-"+i.modules.frozen.position)}else this.layoutElement(i.getElement(),i);e&&i.cells.forEach((e=>{this.layoutElement(e.getElement(!0),i)}))})),this.rightColumns.forEach(((t,i)=>{t.modules.frozen.margin=this.rightPadding-this._calcSpace(this.rightColumns,i+1)+"px",i==this.rightColumns.length-1?t.modules.frozen.edge=!0:t.modules.frozen.edge=!1,t.parent.isGroup?this.layoutElement(this.getColGroupParentElement(t),t):this.layoutElement(t.getElement(),t),e&&t.cells.forEach((e=>{this.layoutElement(e.getElement(!0),t)}))}))}getColGroupParentElement(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}layout(){this.active&&(this.calcMargins(),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&this.layoutRow(e)})),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)}layoutRow(e){e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)})),this.rightColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)}))}layoutElement(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}_calcSpace(e,t){var i=0;for(let s=0;s-1}isFrozen(){return!!this.rows.length}getRows(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}freezeRow(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.refreshData(!1,"display"),this.styleRows())}unfreezeRow(e){this.rows.indexOf(e);e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.refreshData(!1,"display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")}detachRow(e){var t=this.rows.indexOf(e);if(t>-1){var i=e.getElement();i.parentNode.removeChild(i),this.rows.splice(t,1)}}styleRows(e){this.rows.forEach(((e,t)=>{this.table.rowManager.styleRow(e,t)}))}}z.moduleName="frozenRows";class A{constructor(e){return this._group=e,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.table.componentFunctionBinder.handle("row",e._group,t)}})}getKey(){return this._group.key}getField(){return this._group.field}getElement(){return this._group.element}getRows(){return this._group.getRows(!0)}getSubGroups(){return this._group.getSubGroups(!0)}getParentGroup(){return!!this._group.parent&&this._group.parent.getComponent()}isVisible(){return this._group.visible}show(){this._group.show()}hide(){this._group.hide()}toggle(){this._group.toggleVisibility()}_getSelf(){return this._group}getTable(){return this._group.groupManager.table}}class O{constructor(e,t,i,s,o,n,r){this.groupManager=e,this.parent=t,this.key=s,this.level=i,this.field=o,this.hasSubGroups=i{this._createGroup(t,e)}))}addBindings(){var e,t,i;(this.groupManager.table.options.groupContextMenu||this.groupManager.table.options.groupClickMenu)&&this.groupManager.table.modExists("menu")&&this.groupManager.table.modules.menu.initializeGroup.call(this.groupManager.table.modules.menu,this),this.groupManager.table.options.groupTap&&(i=!1,this.element.addEventListener("touchstart",(e=>{i=!0}),{passive:!0}),this.element.addEventListener("touchend",(e=>{i&&this.groupManager.table.options.groupTap(e,this.getComponent()),i=!1}))),this.groupManager.table.options.groupDblTap&&(e=null,this.element.addEventListener("touchend",(t=>{e?(clearTimeout(e),e=null,this.groupManager.table.options.groupDblTap(t,this.getComponent())):e=setTimeout((()=>{clearTimeout(e),e=null}),300)}))),this.groupManager.table.options.groupTapHold&&(t=null,this.element.addEventListener("touchstart",(e=>{clearTimeout(t),t=setTimeout((()=>{clearTimeout(t),t=null,i=!1,this.groupManager.table.options.groupTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(e=>{clearTimeout(t),t=null}))),this.groupManager.table.options.groupToggleElement&&("arrow"==this.groupManager.table.options.groupToggleElement?this.arrowElement:this.element).addEventListener("click",(e=>{e.stopPropagation(),e.stopImmediatePropagation(),this.toggleVisibility()}))}_createGroup(e,t){var i=t+"_"+e,s=new O(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[i]);this.groups[i]=s,this.groupList.push(s)}_addRowToGroup(e){var t=this.level+1;if(this.hasSubGroups){var i=this.groupManager.groupIDLookups[t].func(e.getData()),s=t+"_"+i;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[s]&&this.groups[s].addRow(e):(this.groups[s]||this._createGroup(i,t),this.groups[s].addRow(e))}}_addRow(e){this.rows.push(e),e.modules.group=this}insertRow(e,t,i){var s=this.conformRowData({});e.updateData(s);var o=this.rows.indexOf(t);o>-1?i?this.rows.splice(o+1,0,e):this.rows.splice(o,0,e):i?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}scrollHeader(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)}))}getRowIndex(e){}conformRowData(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e}removeRow(e){var t=this.rows.indexOf(e),i=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(i.parentNode&&i.parentNode.removeChild(i),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))}getHeadersAndRows(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach((function(i){t=t.concat(i.getHeadersAndRows(e))})):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t}getData(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((e=>{i.push(e.getData(t||"data"))})),i}getRowCount(){var e=0;return this.groupList.length?this.groupList.forEach((t=>{e+=t.getRowCount()})):e=this.rows.length,e}toggleVisibility(){this.visible?this.hide():this.show()}hide(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((e=>{e.getHeadersAndRows().forEach((e=>{e.detachElement()}))})):this.rows.forEach((e=>{var t=e.getElement();t.parentNode.removeChild(t)})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}show(){if(this.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.getElement();this.groupList.length?this.groupList.forEach((t=>{t.getHeadersAndRows().forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}_visSet(){var e=[];"function"==typeof this.visible&&(this.rows.forEach((function(t){e.push(t.getData())})),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))}getRowGroup(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var s=i.getRowGroup(e);s&&(t=s)})):this.rows.find((function(t){return t===e}))&&(t=this),t}getSubGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getRows(e){var t=[];return this.rows.forEach((function(i){t.push(e?i.getComponent():i)})),t}generateGroupHeaderContents(){var e=[];for(this.rows.forEach((function(t){e.push(t.getData())})),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)}getPath(e=[]){return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}getElement(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;ei.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),this.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],this.langBind("groups|item",((e,t)=>{this.headerGenerator[0]=(i,s,o)=>(void 0===i?"":i)+"("+s+" "+(1===s?e:t.groups.items)+")"})),this.groupIDLookups=[],Array.isArray(e)||e)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs)this.table.columnManager.getRealColumns().forEach((e=>{e.definition.topCalc&&this.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&this.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(e)||(e=[e]),e.forEach(((e,t)=>{var i,s;i="function"==typeof e?e:(s=this.table.columnManager.getColumnByField(e))?function(e){return s.getFieldValue(e)}:function(t){return t[e]},this.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!this.allowedValues&&this.allowedValues[t]})})),t&&(Array.isArray(t)||(t=[t]),t.forEach((e=>{})),this.startOpen=t),i&&(this.headerGenerator=Array.isArray(i)?i:[i]),this.table.options.groupUpdateOnCellEdit&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("row-data-changed",this.reassignRowToGroup.bind(this),0)),this.subscribe("row-deleting",this.rowDeleting.bind(this)),this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("scroll-horizontal",this.scrollHeaders.bind(this)),this.subscribe("rows-wipe",this.wipe.bind(this)),this.subscribe("rows-added",this.rowsUpdated.bind(this)),this.subscribe("row-moving",this.rowMoving.bind(this)),this.subscribe("row-adding-index",this.rowAddingIndex.bind(this)),this.subscribe("rows-sample",this.rowSample.bind(this)),this.subscribe("render-virtual-fill",this.virtualRenderFill.bind(this)),this.registerDisplayHandler(this.displayHandler,20),this.initialized=!0}}rowSample(e,t){var i=this.getGroups(!1)[0];return t.push(i.getRows(!1)[0]),t}virtualRenderFill(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();t=t.filter((e=>"group"!==e.type)),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}rowAddingIndex(e,t,i){this.assignRowToGroup(e);var s=e.modules.group.rows;return s.length>1&&(!t||t&&-1==s.indexOf(t)?i?s[0]!==e&&(t=s[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):s[s.length-1]!==e&&(t=s[s.length-1],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)),t}trackChanges(){this.dispatch("group-changed")}setGroupBy(e){this.table.options.groupBy=e,this.initialize(),this.refreshData(!1,"display"),this.trackChanges()}setGroupValues(e){this.table.options.groupValues=e,this.initialize(),this.refreshData(!1,"display"),this.trackChanges()}setGroupStartOpen(e){this.table.options.groupStartOpen=e,this.initialize(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}setGroupHeader(e){this.table.options.groupHeader=e,this.initialize(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}userGetGroups(e){return this.getGroups(!0)}userGetGroupedData(){return this.table.options.groupBy?this.getGroupedData():this.getData()}rowGetGroup(e){return!!e.modules.group&&e.modules.group.getComponent()}rowMoving(e,t,i){!i&&t instanceof O&&(t=this.table.rowManager.prevDisplayRow(e)||t);var s=t instanceof O?t:t.modules.group,o=e instanceof O?e:e.modules.group;s===o?this.table.rowManager.moveRowInArray(s.rows,e,t,i):(o&&o.removeRow(e),s.insertRow(e,t,i))}rowDeleting(e){e.modules.group&&e.modules.group.removeRow(e)}rowsUpdated(e){this.updateGroupRows(!0)}cellUpdated(e){this.reassignRowToGroup(e.row)}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}getRows(e){return this.groupIDLookups.length?(Object.keys(this.groups).length||(this.dispatchExternal("dataGrouping"),this.generateGroups(e),this.subscribedExternal("dataGrouped")&&this.dispatchExternal("dataGrouped",this.getGroups(!0))),this.updateGroupRows()):e.slice(0)}getGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getChildGroups(e){var t=[];return e||(e=this),e.groupList.forEach((e=>{e.groupList.length?t=t.concat(this.getChildGroups(e)):t.push(e)})),t}wipe(){this.groupList.forEach((function(e){e.wipe()}))}pullGroupListData(e){var t=[];return e.forEach((e=>{var i={level:0,rowCount:0,headerContent:""},s=[];e.hasSubGroups?(s=this.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=s.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),t.push(i),t=t.concat(s)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,t.push(i),e.getRows().forEach((e=>{t.push(e.getData("data"))})))})),t}getGroupedData(){return this.pullGroupListData(this.groupList)}getRowGroup(e){var t=!1;return this.groupList.forEach((i=>{var s=i.getRowGroup(e);s&&(t=s)})),t}countGroups(){return this.groupList.length}generateGroups(e){var t=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((e=>{this.createGroup(e,0,t)})),e.forEach((e=>{this.assignRowToExistingGroup(e,t)}))):e.forEach((e=>{this.assignRowToGroup(e,t)}))}createGroup(e,t,i){var s,o=t+"_"+e;i=i||[],s=new O(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=s,this.groupList.push(s)}assignRowToExistingGroup(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}assignRowToGroup(e,t){var i=this.groupIDLookups[0].func(e.getData()),s=!this.groups["0_"+i];return s&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!s}reassignRowToGroup(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),s=this.getExpectedPath(e);i.length==s.length&&i.every(((e,t)=>e===s[t]))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}getExpectedPath(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((e=>{t.push(e.func(i))})),t}updateGroupRows(e){var t=[];return this.groupList.forEach((e=>{t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0,this.displayHandler),t}scrollHeaders(e){"virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((t=>{t.scrollHeader(e)}))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))}}_.moduleName="groupRows";class N extends t{constructor(e){super(e),this.history=[],this.index=-1,this.registerTableOption("history",!1)}initialize(){this.table.options.history&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("cell-delete",this.clearComponentHistory.bind(this)),this.subscribe("row-delete",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clear.bind(this)),this.subscribe("row-added",this.rowAdded.bind(this)),this.subscribe("row-move",this.rowMoved.bind(this))),this.registerTableFunction("undo",this.undo.bind(this)),this.registerTableFunction("redo",this.redo.bind(this)),this.registerTableFunction("getHistoryUndoSize",this.getHistoryUndoSize.bind(this)),this.registerTableFunction("getHistoryRedoSize",this.getHistoryRedoSize.bind(this)),this.registerTableFunction("clearHistory",this.clear.bind(this))}rowMoved(e,t,i){this.action("rowMove",e,{posFrom:this.table.rowManager.getRowPosition(e),posTo:this.table.rowManager.getRowPosition(t),to:t,after:i})}rowAdded(e,t,i,s){this.action("rowAdd",e,{data:t,pos:i,index:s})}rowDeleted(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup().rows).indexOf(e))&&(t=i[t-1]):(t=e.table.rowManager.getRowIndex(e))&&(t=e.table.rowManager.rows[t-1]),this.history.action("rowDelete",e,{data:e.getData(),pos:!t,index:t})}cellUpdated(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}clear(){this.history=[],this.index=-1}action(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}getHistoryUndoSize(){return this.index+1}getHistoryRedoSize(){return this.history.length-(this.index+1)}clearComponentHistory(e){var t=this.history.findIndex((function(t){return t.component===e}));t>-1&&(this.history.splice(t,1),t<=this.index&&this.index--,this.clearComponentHistory(e))}undo(){if(this.index>-1){let e=this.history[this.index];return N.undoers[e.type].call(this,e),this.index--,this.dispatchExternal("historyUndo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1}redo(){if(this.history.length-1>this.index){this.index++;let e=this.history[this.index];return N.redoers[e.type].call(this,e),this.dispatchExternal("historyRedo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1}_rebindRow(e,t){this.history.forEach((function(i){if(i.component instanceof Row)i.component===e&&(i.component=t);else if(i.component instanceof Cell&&i.component.row===e){var s=i.component.column.getField();s&&(i.component=t.getCell(s))}}))}}N.moduleName="history",N.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},N.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}};class B extends t{constructor(e){super(e),this.fieldIndex=[],this.hasIndex=!1}initialize(){this.subscribe("table-building",this.tableElementCheck.bind(this))}tableElementCheck(){"TABLE"===this.table.element.tagName&&this.parseTable()}parseTable(){var e=this.table.element,t=this.table.options,i=(t.columns,e.getElementsByTagName("th")),s=e.getElementsByTagName("tbody")[0],o=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),s=s?s.getElementsByTagName("tr"):[],this._extractOptions(e,t),i.length?this._extractHeaders(i,s):this._generateBlankHeaders(i,s);for(var n=0;n{n[e.toLowerCase()]=e})),s){var a,l=s[r];l&&"object"==typeof l&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==n[a]&&(t[n[a]]=this._attribValue(l.value)))}}_attribValue(e){return"true"===e||"false"!==e&&e}_findCol(e){return this.table.options.columns.find((t=>t.title===e))||!1}_extractHeaders(e,t){for(var i=0;i{clearTimeout(o.tapHold),o.tapHold=null,o.tap=null,clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"TapHold",i,s)}),1e3);break;case"end":o.tap&&(o.tap=null,this.dispatchEvent(e+"Tap",i,s)),o.tapDbl?(clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"DblTap",i,s)):o.tapDbl=setTimeout((()=>{clearTimeout(o.tapDbl),o.tapDbl=null}),300),clearTimeout(o.tapHold),o.tapHold=null}}dispatchEvent(e,t,i){var s,o=i.getComponent();this.columnSubscribers[e]&&(i instanceof u?s=i.column.definition[e]:i instanceof g&&(s=i.definition[e]),s&&s(t,o)),this.dispatchExternal(e,t,o)}}V.moduleName="interaction";class I extends t{constructor(e){super(e),this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1,this.registerTableOption("keybindings",[]),this.registerTableOption("tabEndNewRow",!1)}initialize(){var e=this.table.options.keybindings,t={};if(this.watchKeys={},this.pressedKeys=[],!1!==e){for(let e in I.bindings)t[e]=I.bindings[e];if(Object.keys(e).length)for(let i in e)t[i]=e[i];this.mapBindings(t),this.bindEvents()}this.subscribe("table-destroy",this.clearBindings.bind(this))}mapBindings(e){for(let t in e)I.actions[t]?e[t]&&("object"!=typeof e[t]&&(e[t]=[e[t]]),e[t].forEach((e=>{this.mapBinding(t,e)}))):console.warn("Key Binding Error - no such action:",t)}mapBinding(e,t){var i={action:I.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach((e=>{switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=parseInt(e),i.keys.push(e),this.watchKeys[e]||(this.watchKeys[e]=[]),this.watchKeys[e].push(i)}}))}bindEvents(){var e=this;this.keyupBinding=function(t){var i=t.keyCode,s=e.watchKeys[i];s&&(e.pressedKeys.push(i),s.forEach((function(i){e.checkBinding(t,i)})))},this.keydownBinding=function(t){var i=t.keyCode;if(e.watchKeys[i]){var s=e.pressedKeys.indexOf(i);s>-1&&e.pressedKeys.splice(s,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}clearBindings(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}checkBinding(e,t){var i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((e=>{-1==this.pressedKeys.indexOf(e)&&(i=!1)})),i&&t.action.call(this,e),!0)}}I.moduleName="keybindings",I.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},I.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i>=0?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,i=t.scrollTop+t.element.clientHeight,s=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=s?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){this.dispatch("keybinding-nav-prev",e)},navNext:function(e){this.dispatch("keybinding-nav-next",e)},navLeft:function(e){this.dispatch("keybinding-nav-left",e)},navRight:function(e){this.dispatch("keybinding-nav-right",e)},navUp:function(e){this.dispatch("keybinding-nav-up",e)},navDown:function(e){this.dispatch("keybinding-nav-down",e)},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}};class W extends t{constructor(e){super(e),this.menuElements=[],this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1,this.positionReversedX=!1,this.registerTableOption("rowContextMenu",!1),this.registerTableOption("rowClickMenu",!1),this.registerTableOption("groupContextMenu",!1),this.registerTableOption("groupClickMenu",!1),this.registerColumnOption("headerContextMenu"),this.registerColumnOption("headerMenu"),this.registerColumnOption("contextMenu"),this.registerColumnOption("clickMenu")}initialize(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this))}layoutCell(e){(e.column.definition.contextMenu||e.column.definition.clickMenu)&&this.initializeCell(e)}initializeColumn(e){var t=e.definition;(t.headerContextMenu||t.headerClickMenu||t.headerMenu)&&this.initializeColumnHeader(e)}initializeColumnHeader(e){var t;e.definition.headerContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.definition.headerContextMenu)),this.tapHold(e,e.definition.headerContextMenu)),e.definition.headerMenu&&((t=document.createElement("span")).classList.add("tabulator-header-menu-button"),t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.LoadMenuEvent(e,e.definition.headerMenu,t)})),e.titleElement.insertBefore(t,e.titleElement.firstChild))}LoadMenuEvent(e,t,i){t="function"==typeof t?t.call(this.table,e.getComponent(),i):t,this.loadMenu(i,e,t)}tapHold(e,t){var i=e.getElement(),s=null,o=!1;i.addEventListener("touchstart",(i=>{clearTimeout(s),o=!1,s=setTimeout((()=>{clearTimeout(s),s=null,o=!0,this.LoadMenuEvent(e,t,i)}),1e3)}),{passive:!0}),i.addEventListener("touchend",(e=>{clearTimeout(s),s=null,o&&e.preventDefault()}))}initializeCell(e){e.column.definition.contextMenu&&(e.getElement(!0).addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.column.definition.contextMenu)),this.tapHold(e,e.column.definition.contextMenu)),e.column.definition.clickMenu&&e.getElement(!0).addEventListener("click",this.LoadMenuEvent.bind(this,e,e.column.definition.clickMenu))}initializeRow(e){this.table.options.rowContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.rowContextMenu)),this.tapHold(e,this.table.options.rowContextMenu)),this.table.options.rowClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.rowClickMenu))}initializeGroup(e){this.table.options.groupContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.groupContextMenu)),this.tapHold(e,this.table.options.groupContextMenu)),this.table.options.groupClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.groupClickMenu))}loadMenu(e,t,i,s){var o=!(e instanceof MouseEvent),n=document.createElement("div");if(n.classList.add("tabulator-menu"),o||e.preventDefault(),i&&i.length){if(!s){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout((()=>{this.nestedMenuBlock=!1}),100);this.hideMenu(),this.menuElements=[]}i.forEach((e=>{var i=document.createElement("div"),s=e.label,o=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof s&&(s=s.call(this.table,t.getComponent())),s instanceof Node?i.appendChild(s):i.innerHTML=s,"function"==typeof o&&(o=o.call(this.table,t.getComponent())),o?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(e=>{e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(s=>{s.stopPropagation(),this.hideOldSubMenus(n),this.loadMenu(s,t,e.menu,i)})):e.action&&i.addEventListener("click",(i=>{e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),n.appendChild(i)})),n.addEventListener("click",(e=>{this.hideMenu()})),this.menuElements.push(n),this.positionMenu(n,s,o,e)}}hideOldSubMenus(e){var t=this.menuElements.indexOf(e);if(t>-1)for(let e=this.menuElements.length-1;e>t;e--){var i=this.menuElements[e];i.parentNode&&i.parentNode.removeChild(i),this.menuElements.pop()}}positionMenu(e,t,i,o){var n,r,a,l=Math.max(document.body.offsetHeight,window.innerHeight);t?(n=(a=s.elOffset(t)).left+t.offsetWidth,r=a.top-1):(n=i?o.touches[0].pageX:o.pageX,r=i?o.touches[0].pageY:o.pageY,this.positionReversedX=!1),e.style.top=r+"px",e.style.left=n+"px",setTimeout((()=>{this.table.rowManager.element.addEventListener("scroll",this.blurEvent),document.body.addEventListener("click",this.blurEvent),document.body.addEventListener("contextmenu",this.blurEvent),window.addEventListener("resize",this.blurEvent),document.body.addEventListener("keydown",this.escEvent)}),100),document.body.appendChild(e),r+e.offsetHeight>=l&&(e.style.top="",e.style.bottom=t?l-a.top-t.offsetHeight-1+"px":l-r+"px"),(n+e.offsetWidth>=document.body.offsetWidth||this.positionReversedX)&&(e.style.left="",e.style.right=t?document.documentElement.offsetWidth-a.left+"px":document.documentElement.offsetWidth-n+"px",this.positionReversedX=!0)}isOpen(){return!!this.menuElements.length}escMenu(e){27==e.keyCode&&this.hideMenu()}hideMenu(){this.menuElements.forEach((e=>{e.parentNode&&e.parentNode.removeChild(e)})),document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent)}}W.moduleName="menu";class j extends t{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.registerTableOption("movableColumns",!1)}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}initialize(){this.subscribe("column-init",this.initializeColumn.bind(this))}initializeColumn(e){var t,i=this,o={};e.modules.frozen||(t=e.getElement(),o.mousemove=function(o){e.parent===i.moving.parent&&((i.touchMove?o.touches[0].pageX:o.pageX)-s.elOffset(t).left+i.table.columnManager.element.scrollLeft>e.getWidth()/2?i.toCol===e&&i.toColAfter||(t.parentNode.insertBefore(i.placeholderElement,t.nextSibling),i.moveColumn(e,!0)):(i.toCol!==e||i.toColAfter)&&(t.parentNode.insertBefore(i.placeholderElement,t),i.moveColumn(e,!1)))}.bind(i),t.addEventListener("mousedown",(function(t){i.touchMove=!1,1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),i.bindTouchEvents(e)),e.modules.moveColumn=o}bindTouchEvents(e){var t,i,s,o,n,r,a=e.getElement(),l=!1;a.addEventListener("touchstart",(a=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,t=e.nextColumn(),s=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,n=0,r=0,l=!1,this.startMove(a,e)}),this.checkPeriod)}),{passive:!0}),a.addEventListener("touchmove",(a=>{var h,d;this.moving&&(this.moveHover(a),l||(l=a.touches[0].pageX),(h=a.touches[0].pageX-l)>0?t&&h-n>s&&(d=t)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveColumn(d,!0)):i&&-h-r>o&&(d=i)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveColumn(d,!1)),d&&(t=d.nextColumn(),n=s,s=t?t.getWidth()/2:0,i=d.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),a.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&this.endMove(e)}))}startMove(e,t){var i=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-s.elOffset(i).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}_bindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}_unbindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}moveColumn(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&s.parentNode.insertBefore(i[t].getElement(),s.nextSibling)})):e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&s.parentNode.insertBefore(i[t].getElement(),s)}))}endMove(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))}moveHover(e){var t,i=this.table.columnManager.getElement(),o=i.scrollLeft,n=(this.touchMove?e.touches[0].pageX:e.pageX)-s.elOffset(i).left+o;this.hoverElement.style.left=n-this.startX+"px",n-o{t=Math.max(0,o-5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1))),o+i.clientWidth-n{t=Math.min(i.clientWidth,o+5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1)))}}j.moduleName="moveColumn";class G extends t{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1,this.registerTableOption("movableRows",!1),this.registerTableOption("movableRowsConnectedTables",!1),this.registerTableOption("movableRowsConnectedElements",!1),this.registerTableOption("movableRowsSender",!1),this.registerTableOption("movableRowsReceiver","insert"),this.registerColumnOption("rowHandle")}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e}initialize(){this.table.options.movableRows&&(this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements,this.subscribe("cell-init",this.initializeCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)))}initializeGroupHeader(e){var t=this,i={};i.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),i.mousemove=function(i){var o;i.pageY-s.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2?t.toRow===e&&t.toRowAfter||((o=e.getElement()).parentNode.insertBefore(t.placeholderElement,o.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(o=e.getElement()).previousSibling&&(o.parentNode.insertBefore(t.placeholderElement,o),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=i}initializeRow(e){var t,i=this,o={};o.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),o.mousemove=function(t){var o=e.getElement();t.pageY-s.elOffset(o).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||(o.parentNode.insertBefore(i.placeholderElement,o.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(o.parentNode.insertBefore(i.placeholderElement,o),i.moveRow(e,!1))}.bind(i),this.hasHandle||((t=e.getElement()).addEventListener("mousedown",(function(t){1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=o}initializeColumn(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}initializeCell(e){if(e.column.definition.rowHandle&&!1!==this.table.options.movableRows){var t=this,i=e.getElement(!0);i.addEventListener("mousedown",(function(i){1===i.which&&(t.checkTimeout=setTimeout((function(){t.startMove(i,e.row)}),t.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)})),this.bindTouchEvents(e.row,i)}}bindTouchEvents(e,t){var i,s,o,n,r,a,l=!1;t.addEventListener("touchstart",(t=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,s=e.prevRow(),n=s?s.getHeight()/2:0,r=0,a=0,l=!1,this.startMove(t,e)}),this.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(t=>{var h,d;this.moving&&(t.preventDefault(),this.moveHover(t),l||(l=t.touches[0].pageY),(h=t.touches[0].pageY-l)>0?i&&h-r>o&&(d=i)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveRow(d,!0)):s&&-h-a>n&&(d=s)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveRow(d,!1)),d&&(i=d.nextRow(),r=o,o=i?i.getHeight()/2:0,s=d.prevRow(),a=n,n=s?s.getHeight()/2:0))})),t.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&(this.endMove(e),this.touchMove=!1)}))}_bindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}_unbindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}startMove(e,t){var i=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i)),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)}setStartPosition(e,t){var i,s,o=this.touchMove?e.touches[0].pageX:e.pageX,n=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(s=i.getBoundingClientRect(),this.startX=s.left-o+window.pageXOffset,this.startY=s.top-n+window.pageYOffset):this.startY=n-i.getBoundingClientRect().top}endMove(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))}moveRow(e,t){this.toRow=e,this.toRowAfter=t}moveHover(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}moveHoverTable(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,s=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=s-this.startY+"px"}moveHoverConnections(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"}elementRowDrop(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}connectToTables(e){var t;this.connectionSelectorsTables&&(t=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStart",t),this.commsSend(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach((e=>{"string"==typeof e?this.connectionElements=this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):this.connectionElements.push(e)})),this.connectionElements.forEach((e=>{var t=t=>{this.elementRowDrop(t,e,this.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}disconnectFromTables(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((e=>{e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}connect(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)})),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStart",t,e),!0)}disconnect(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)})),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStop",e)):console.warn("Move Row Error - trying to disconnect from non connected table")}dropComplete(e,t,i){var s=!1;if(i){switch(typeof this.table.options.movableRowsSender){case"string":s=this.senders[this.table.options.movableRowsSender];break;case"function":s=this.table.options.movableRowsSender}s?s.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()}tableRowDrop(e,t){var i=!1,s=!1;switch(e.stopImmediatePropagation(),typeof this.table.options.movableRowsReceiver){case"string":i=this.receivers[this.table.options.movableRowsReceiver];break;case"function":i=this.table.options.movableRowsReceiver}i?s=i.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),s?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:t,success:s})}commsReceived(e,t,i){switch(t){case"connect":return this.connect(e,i.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,i.row,i.success)}}}G.prototype.receivers={insert:function(e,t,i){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,i){return this.table.addRow(e.getData()),!0},update:function(e,t,i){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,i){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},G.prototype.senders={delete:function(e,t,i){e.delete()}},G.moduleName="moveRow";class U extends t{constructor(e){super(e),this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0,this.registerColumnOption("mutator"),this.registerColumnOption("mutatorParams"),this.registerColumnOption("mutatorData"),this.registerColumnOption("mutatorDataParams"),this.registerColumnOption("mutatorEdit"),this.registerColumnOption("mutatorEditParams"),this.registerColumnOption("mutatorClipboard"),this.registerColumnOption("mutatorClipboardParams")}initialize(){this.subscribe("cell-value-changing",this.transformCell.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-init-before",this.rowDataChanged.bind(this)),this.subscribe("row-data-changing",this.rowDataChanged.bind(this))}rowDataChanged(e,t,i){return this.transformRow(t,"data",i)}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="mutator"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupMutator(e.definition[n]))&&(t=!0,i[n]={mutator:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.mutate=i)}lookupMutator(e){var t=!1;switch(typeof e){case"string":U.mutators[e]?t=U.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t,i){var s,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((n=>{var r,a,l;n.modules.mutate&&(r=n.modules.mutate[o]||n.modules.mutate.mutator||!1)&&(s=n.getFieldValue(void 0!==i?i:e),"data"!=t&&void 0===s||(l=n.getComponent(),a="function"==typeof r.params?r.params(s,e,t,l):r.params,n.setFieldValue(e,r.mutator(s,e,t,a,l))))})),e}transformCell(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,s={};if(i)return s=Object.assign(s,e.row.getData()),e.column.setFieldValue(s,t),i.mutator(t,s,"edit",i.params,e.getComponent())}return t}enable(){this.enabled=!0}disable(){this.enabled=!1}}U.moduleName="mutator",U.mutators={};class X extends t{constructor(e){super(e),this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.dataChanging=!1,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.registerTableOption("pagination",!1),this.registerTableOption("paginationMode","local"),this.registerTableOption("paginationSize",!1),this.registerTableOption("paginationInitialPage",1),this.registerTableOption("paginationButtonCount",5),this.registerTableOption("paginationSizeSelector",!1),this.registerTableOption("paginationElement",!1),this.registerTableOption("paginationAddRow","page"),this.registerTableOption("progressiveLoad",!1),this.registerTableOption("progressiveLoadDelay",0),this.registerTableOption("progressiveLoadScrollMargin",0),this.registerTableFunction("setMaxPage",this.setMaxPage.bind(this)),this.registerTableFunction("setPage",this.setPage.bind(this)),this.registerTableFunction("setPageToRow",this.userSetPageToRow.bind(this)),this.registerTableFunction("setPageSize",this.userSetPageSize.bind(this)),this.registerTableFunction("getPageSize",this.getPageSize.bind(this)),this.registerTableFunction("previousPage",this.previousPage.bind(this)),this.registerTableFunction("nextPage",this.nextPage.bind(this)),this.registerTableFunction("getPage",this.getPage.bind(this)),this.registerTableFunction("getPageMax",this.getPageMax.bind(this)),this.registerComponentFunction("row","pageTo",this.setPageToRow.bind(this))}initialize(){this.table.options.pagination?(this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("row-adding-position",this.rowAddingPosition.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),"remote"===this.table.options.paginationMode&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this))),this.table.options.progressiveLoad&&console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"),this.registerDisplayHandler(this.restOnRenderBefore.bind(this),40),this.registerDisplayHandler(this.getRows.bind(this),50),this.createElements(),this.initializePaginator()):this.table.options.progressiveLoad&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.initializeProgressive(this.table.options.progressiveLoad),"scroll"===this.table.options.progressiveLoad&&this.subscribe("scroll-vertical",this.scrollVertical.bind(this)))}rowAddingPosition(e,t){var i,s=this.table.rowManager,o=s.getDisplayRows();return t?o.length?i=o[0]:s.activeRows.length&&(i=s.activeRows[s.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.length{var t=document.createElement("option");t.value=e,!0===e?this.langBind("pagination|all",(function(e){t.innerHTML=e})):t.innerHTML=e,this.pageSizeSelect.appendChild(t)})),this.pageSizeSelect.value=this.size}}initializePaginator(e){var t;e||(this.langBind("pagination|first",(e=>{this.firstBut.innerHTML=e})),this.langBind("pagination|first_title",(e=>{this.firstBut.setAttribute("aria-label",e),this.firstBut.setAttribute("title",e)})),this.langBind("pagination|prev",(e=>{this.prevBut.innerHTML=e})),this.langBind("pagination|prev_title",(e=>{this.prevBut.setAttribute("aria-label",e),this.prevBut.setAttribute("title",e)})),this.langBind("pagination|next",(e=>{this.nextBut.innerHTML=e})),this.langBind("pagination|next_title",(e=>{this.nextBut.setAttribute("aria-label",e),this.nextBut.setAttribute("title",e)})),this.langBind("pagination|last",(e=>{this.lastBut.innerHTML=e})),this.langBind("pagination|last_title",(e=>{this.lastBut.setAttribute("aria-label",e),this.lastBut.setAttribute("title",e)})),this.firstBut.addEventListener("click",(()=>{this.setPage(1)})),this.prevBut.addEventListener("click",(()=>{this.previousPage()})),this.nextBut.addEventListener("click",(()=>{this.nextPage()})),this.lastBut.addEventListener("click",(()=>{this.setPage(this.max)})),this.table.options.paginationElement&&(this.element=this.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),this.langBind("pagination|page_size",(e=>{this.pageSizeSelect.setAttribute("aria-label",e),this.pageSizeSelect.setAttribute("title",e),t.innerHTML=e})),this.element.appendChild(t),this.element.appendChild(this.pageSizeSelect),this.pageSizeSelect.addEventListener("change",(e=>{this.setPageSize("true"==this.pageSizeSelect.value||this.pageSizeSelect.value),this.setPage(1)}))),this.element.appendChild(this.firstBut),this.element.appendChild(this.prevBut),this.element.appendChild(this.pagesElement),this.element.appendChild(this.nextBut),this.element.appendChild(this.lastBut),this.table.options.paginationElement||e||this.table.footerManager.append(this.element,this),this.page=this.table.options.paginationInitialPage,this.count=this.table.options.paginationButtonCount,this.generatePageSizeSelectList()),this.mode=this.table.options.paginationMode}initializeProgressive(e){this.initializePaginator(!0),this.mode="progressive_"+e,this.progressiveLoad=!0}trackChanges(){this.dispatch("page-changed")}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}setMaxRows(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)}reset(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1)}setMaxPage(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}setPage(e){switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return(e=parseInt(e))>0&&e<=this.max||"local"!==this.mode?(this.page=e,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Requested page is out of range of 1 - "+this.max+":",e),Promise.reject())}setPageToRow(e){var t=this.table.rowManager.getDisplayRows(this.displayIndex-1).indexOf(e);if(t>-1){var i=!0===this.size?1:Math.ceil((t+1)/this.size);return this.setPage(i)}return console.warn("Pagination Error - Requested row is not visible"),Promise.reject()}setPageSize(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}_setPageButtons(){let e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&e<=this.max&&this.pagesElement.appendChild(this._generatePageButton(e));this.footerRedraw()}_generatePageButton(e){var t=document.createElement("button");return t.classList.add("tabulator-page"),e==this.page&&t.classList.add("active"),t.setAttribute("type","button"),t.setAttribute("role","button"),this.langBind("pagination|page_title",(i=>{t.setAttribute("aria-label",i+" "+e),t.setAttribute("title",i+" "+e)})),t.setAttribute("data-page",e),t.textContent=e,t.addEventListener("click",(t=>{this.setPage(e)})),t}previousPage(){return this.page>1?(this.page--,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Previous page would be less than page 1:",0),Promise.reject())}nextPage(){return this.page{this.dataChanging=!1}));case"progressive_load":case"progressive_scroll":return this.reloadData(null,!0);default:return console.warn("Pagination Error - no such pagination mode:",this.mode),Promise.reject()}}_parseRemoteData(e){var t;if(void 0===e.last_page&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e.data){if(this.max=parseInt(e.last_page)||1,this.progressiveLoad){switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e.data,!1,1==this.page):this.table.rowManager.addRows(e.data),this.page{this.nextPage()}),this.table.options.progressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e.data),this.table.rowManager.setData(e,1!==this.page,1==this.page),t=this.table.options.progressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,this.table.rowManager.element.scrollHeight<=this.table.rowManager.element.clientHeight+t&&setTimeout((()=>{this.nextPage()}))}return!1}this.dispatchExternal("pageLoaded",this.getPage())}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property");return e.data}footerRedraw(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))}}X.moduleName="page";var q={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s,o=document.cookie,n=e+"-"+t,r=o.indexOf(n+"=");return r>-1&&((i=(o=o.substr(r)).indexOf(";"))>-1&&(o=o.substr(0,i)),s=o.replace(n+"=","")),!!s&&JSON.parse(s)}},K={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var s=new Date;s.setDate(s.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+s.toUTCString()}};class Y extends t{constructor(e){super(e),this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1,this.registerTableOption("persistence",!1),this.registerTableOption("persistenceID",""),this.registerTableOption("persistenceMode",!0),this.registerTableOption("persistenceReaderFunc",!1),this.registerTableOption("persistenceWriterFunc",!1)}localStorageTest(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}initialize(){if(this.table.options.persistence){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:Y.readers[this.table.options.persistenceReaderFunc]?this.readFunc=Y.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):Y.readers[this.mode]?this.readFunc=Y.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:Y.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=Y.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):Y.writers[this.mode]?this.writeFunc=Y.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader)),this.config.columns&&(this.table.options.columns=this.load("columns",this.table.options.columns),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-show",this.save.bind(this,"columns")),this.subscribe("column-hide",this.save.bind(this,"columns")),this.subscribe("column-moved",this.save.bind(this,"columns")),this.subscribe("table-built",this.tableBuilt.bind(this),0)),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("filter-changed",this.eventSave.bind(this,"filter")),this.subscribe("sort-changed",this.eventSave.bind(this,"sort")),this.subscribe("group-changed",this.eventSave.bind(this,"group")),this.subscribe("page-changed",this.eventSave.bind(this,"page")),this.subscribe("column-resized",this.eventSave.bind(this,"columns")),this.subscribe("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}eventSave(e){this.config[e]&&this.save(e)}tableBuilt(){var e,t;this.table.options;this.config.sort&&!1==!(e=this.load("sort"))&&(this.table.initialSort=e),this.config.filter&&!1==!(t=this.load("filter"))&&(this.table.initialFilter=t)}tableRedraw(e){e&&this.config.columns&&this.save("columns")}getColumnLayout(){return this.parseColumns(this.table.columnManager.getColumns())}setColumnLayout(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e)),!0}initializeColumn(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((e=>{var i=Object.getOwnPropertyDescriptor(t,e),s=t[e];i&&Object.defineProperty(t,e,{set:function(e){s=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),s}})})),this.defWatcherBlock=!1)}load(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}retreiveData(e){return!!this.readFunc&&this.readFunc(this.id,e)}mergeDefinition(e,t){var i=[];return(t=t||[]).forEach(((t,s)=>{var o,n=this._findColumn(e,t);n&&(!0===this.config.columns||null==this.config.columns?(o=Object.keys(n)).push("width"):o=this.config.columns,o.forEach((e=>{"columns"!==e&&void 0!==t[e]&&(n[e]=t[e])})),n.columns&&(n.columns=this.mergeDefinition(n.columns,t.columns)),i.push(n))})),e.forEach(((e,s)=>{this._findColumn(t,e)||(i.length>s?i.splice(s,0,e):i.push(e))})),i}_findColumn(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find((function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}}))}save(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)}validateSorters(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}getGroupConfig(){var e={};return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e}getPageConfig(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e}parseColumns(e){var t=[],i=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((e=>{var s,o={},n=e.getDefinition();e.isGroup?(o.title=n.title,o.columns=this.parseColumns(e.getColumns())):(o.field=e.getField(),!0===this.config.columns||null==this.config.columns?(s=Object.keys(n)).push("width"):s=this.config.columns,s.forEach((t=>{switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:"function"!=typeof n[t]&&-1===i.indexOf(t)&&(o[t]=n[t])}}))),t.push(o)})),t}}Y.moduleName="persistence",Y.readers=q,Y.writers=K;class J extends t{constructor(e){super(e),this.element=!1,this.manualBlock=!1,this.registerTableOption("printAsHtml",!1),this.registerTableOption("printFormatter",!1),this.registerTableOption("printHeader",!1),this.registerTableOption("printFooter",!1),this.registerTableOption("printStyled",!0),this.registerTableOption("printRowRange","visible"),this.registerTableOption("printConfig",{}),this.registerColumnOption("print"),this.registerColumnOption("titlePrint")}initialize(){this.table.options.printAsHtml&&(window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}replaceTable(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))}cleanup(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}printFullscreen(e,t,i){var s,o,n=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),h=this.table.modules.export.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e||this.table.options.printRowRange,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),"string"==typeof(s="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?a.innerHTML=s:a.appendChild(s),this.element.appendChild(a)),this.element.appendChild(h),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(o="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=o:l.appendChild(o),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,h),window.print(),this.cleanup(),window.scrollTo(n,r),this.manualBlock=!1}}J.moduleName="print";class $ extends t{constructor(e){super(e),this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0,this.registerTableOption("reactiveData",!1)}initialize(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this)),this.subscribe("cell-value-save-after",this.unblock.bind(this)),this.subscribe("row-data-save-before",this.block.bind(this)),this.subscribe("row-data-save-after",this.unblock.bind(this)),this.subscribe("row-data-init-after",this.watchRow.bind(this)),this.subscribe("data-processing",this.watchData.bind(this)),this.subscribe("table-destroy",this.unwatchData.bind(this)))}watchData(e){var t;this.currentVersion++,t=this.currentVersion,this.unwatchData(),this.data=e,this.origFuncs.push=e.push,Object.defineProperty(this.data,"push",{enumerable:!1,configurable:!0,value:()=>{var i=Array.from(arguments);return this.blocked||t!==this.currentVersion||i.forEach((e=>{this.table.rowManager.addRowActual(e,!1)})),this.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:()=>{var i=Array.from(arguments);return this.blocked||t!==this.currentVersion||i.forEach((e=>{this.table.rowManager.addRowActual(e,!0)})),this.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:()=>{var i;return this.blocked||t!==this.currentVersion||this.data.length&&(i=this.table.rowManager.getRowFromDataObject(this.data[0]))&&i.deleteActual(),this.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:()=>{var i;return this.blocked||t!==this.currentVersion||this.data.length&&(i=this.table.rowManager.getRowFromDataObject(this.data[this.data.length-1]))&&i.deleteActual(),this.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:()=>{var i,s=Array.from(arguments),o=s[0]<0?e.length+s[0]:s[0],n=s[1],r=!!s[2]&&s.slice(2);if(!this.blocked&&t===this.currentVersion){if(r&&((i=!!e[o]&&this.table.rowManager.getRowFromDataObject(e[o]))?r.forEach((e=>{this.table.rowManager.addRowActual(e,!0,i,!0)})):(r=r.slice().reverse()).forEach((e=>{this.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==n){var a=e.slice(o,void 0===s[1]?s[1]:o+n);a.forEach(((e,t)=>{var i=this.table.rowManager.getRowFromDataObject(e);i&&i.deleteActual(t!==a.length-1)}))}(r||0!==n)&&this.table.rowManager.reRenderInPosition()}return this.origFuncs.splice.apply(e,arguments)}})}unwatchData(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})}watchRow(e){var t=e.getData();for(var i in this.blocked=!0,t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1}watchTreeChildren(e){var t=e.getData()[this.table.options.dataTreeChildField],i={};function s(){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}t&&(i.push=t.push,Object.defineProperty(t,"push",{enumerable:!1,configurable:!0,value:()=>{var e=i.push.apply(t,arguments);return s(),e}}),i.unshift=t.unshift,Object.defineProperty(t,"unshift",{enumerable:!1,configurable:!0,value:()=>{var e=i.unshift.apply(t,arguments);return s(),e}}),i.shift=t.shift,Object.defineProperty(t,"shift",{enumerable:!1,configurable:!0,value:()=>{var e=i.shift.call(t);return s(),e}}),i.pop=t.pop,Object.defineProperty(t,"pop",{enumerable:!1,configurable:!0,value:()=>{var e=i.pop.call(t);return s(),e}}),i.splice=t.splice,Object.defineProperty(t,"splice",{enumerable:!1,configurable:!0,value:()=>{var e=i.splice.apply(t,arguments);return s(),e}}))}watchKey(e,t,i){var s=Object.getOwnPropertyDescriptor(t,i),o=t[i],n=this.currentVersion;Object.defineProperty(t,i,{set:t=>{if(o=t,!this.blocked&&n===this.currentVersion){var r={};r[i]=t,e.updateData(r)}s.set&&s.set(t)},get:()=>(s.get&&s.get(),o)})}unwatchRow(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}block(){this.blocked=!0}unblock(){this.blocked=!1}}$.moduleName="reactiveData";class Q extends t{constructor(e){super(e),this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null,this.registerColumnOption("resizable",!0)}initialize(){this.subscribe("cell-layout",this.layoutCellHandles.bind(this)),this.subscribe("column-init",this.layoutColumnHeader.bind(this))}layoutCellHandles(e){"row"===e.row.type&&this.initializeColumn("cell",e.column,e.element)}layoutColumnHeader(e){this.initializeColumn("header",e,e.element)}initializeColumn(e,t,i){var s=this,o=!1,n=t.definition.resizable;if("header"===e&&(o="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:o}),!0===n||n==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var a=document.createElement("div");a.className="tabulator-col-resize-handle prev",r.addEventListener("click",(function(e){e.stopPropagation()}));var l=function(e){var i=t.getLastColumn();i&&s._checkResizability(i)&&(s.startColumn=t,s._mouseDown(e,i,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",(function(e){var i=t.getLastColumn();i&&s._checkResizability(i)&&(e.stopPropagation(),i.reinitializeWidth(!0))})),a.addEventListener("click",(function(e){e.stopPropagation()}));var h=function(e){var i,o,n;(i=t.getFirstColumn())&&(n=(o=s.table.columnManager.findColumnIndex(i))>0&&s.table.columnManager.getColumnByIndex(o-1))&&s._checkResizability(n)&&(s.startColumn=t,s._mouseDown(e,n,a))};a.addEventListener("mousedown",h),a.addEventListener("touchstart",h,{passive:!0}),a.addEventListener("dblclick",(function(e){var i,o,n;(i=t.getFirstColumn())&&(n=(o=s.table.columnManager.findColumnIndex(i))>0&&s.table.columnManager.getColumnByIndex(o-1))&&s._checkResizability(n)&&(e.stopPropagation(),n.reinitializeWidth(!0))})),i.appendChild(r),i.appendChild(a)}}_checkResizability(e){return e.definition.resizable}_mouseDown(e,t,i){var s=this;function o(e){s.table.rtl?t.setWidth(s.startWidth-((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)):t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),s.table.columnManager.renderer.rerenderColumns(!0),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.dispatch("column-resized",t),s.table.externalEvents.dispatch("columnResized",t.getComponent())}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}Q.moduleName="resizeColumns";class Z extends t{constructor(e){super(e),this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null,this.registerTableOption("resizableRows",!1)}initialize(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}initializeRow(e){var t=this,i=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",s.addEventListener("click",(function(e){e.stopPropagation()}));var n=function(i){t.startRow=e,t._mouseDown(i,e,s)};s.addEventListener("mousedown",n),s.addEventListener("touchstart",n,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(i,s,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(s),i.appendChild(o)}_mouseDown(e,t,i){var s=this;function o(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),this.dispatchExternal("rowResized",t.getComponent())}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}Z.moduleName="resizeRows";class ee extends t{constructor(e){super(e),this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1,this.registerTableOption("autoResize",!0)}initialize(){if(this.table.options.autoResize){var e,t=this.table;this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.tableHeight==i&&this.tableWidth==s||(this.tableHeight=i,this.tableWidth=s,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),this.table.columnManager.renderer.rerenderColumns(!0),t.redraw())}})),this.observer.observe(t.element),e=window.getComputedStyle(t.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(e.getPropertyValue("max-height")||e.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.containerHeight==i&&this.containerWidth==s||(this.containerHeight=i,this.containerWidth=s,this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth),t.columnManager.renderer.rerenderColumns(!0),t.redraw()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell)&&(t.columnManager.renderer.rerenderColumns(!0),t.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}tableResized(){this.table.rowManager.redraw()}clearBindings(){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}ee.moduleName="resizeTable";class te extends t{constructor(e){super(e),this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1,this.registerTableOption("responsiveLayout",!1),this.registerTableOption("responsiveLayoutCollapseStartOpen",!0),this.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),this.registerTableOption("responsiveLayoutCollapseFormatter",!1),this.registerColumnOption("responsive")}initialize(){this.table.options.responsiveLayout&&(this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-show",this.updateColumnVisibility.bind(this)),this.subscribe("column-hide",this.updateColumnVisibility.bind(this)),this.subscribe("columns-loaded",this.initializeResponsivity.bind(this)),this.subscribe("column-moved",this.initializeResponsivity.bind(this)),this.subscribe("column-add",this.initializeResponsivity.bind(this)),this.subscribe("column-delete",this.initializeResponsivity.bind(this)),this.subscribe("table-redrawing",this.tableRedraw.bind(this)),"collapse"===this.table.options.responsiveLayout&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}tableRedraw(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}initializeResponsivity(){var e=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach((function(t,i){t.modules.responsive&&t.modules.responsive.order&&t.modules.responsive.visible&&(t.modules.responsive.index=i,e.push(t),t.visible||"collapse"!==self.mode||self.hiddenColumns.push(t))})),e=(e=e.reverse()).sort((function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index})),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent();for(let e of this.table.columnManager.columnsByIndex)if("responsiveCollapse"==e.definition.formatter){this.collapseHandleColumn=e;break}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}initializeColumn(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}initializeRow(e){var t;"calc"!==e.type&&((t=document.createElement("div")).classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))}layoutRow(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}updateColumnVisibility(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initialize())}hideColumn(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())}showColumn(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())}update(){for(var e=this,t=!0;t;){let i="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),s=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-i;if(s<0){let i=e.columns[e.index];i?(e.hideColumn(i),e.index++):t=!1}else{let i=e.columns[e.index-1];i&&s>0&&s>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}}generateCollapsedContent(){var e=this;this.table.rowManager.getDisplayRows().forEach((function(t){e.generateCollapsedRowContent(t)}))}generateCollapsedRowContent(e){var t,i;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(i=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(i)}}generateCollapsedRowData(e){var t,i=this,s=e.getData(),o=[];return this.hiddenColumns.forEach((function(n){var r=n.getFieldValue(s);n.definition.title&&n.field&&(n.modules.format&&i.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return r},getData:function(){return s},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return n.getComponent()}},o.push({field:n.field,title:n.definition.title,value:n.modules.format.formatter.call(i.table.modules.format,t,n.modules.format.params)})):o.push({field:n.field,title:n.definition.title,value:r}))})),o}formatCollapsedData(e){var t=document.createElement("table");return e.forEach((function(e){var i,s=document.createElement("tr"),o=document.createElement("td"),n=document.createElement("td"),r=document.createElement("strong");o.appendChild(r),this.langBind("columns|"+e.field,(function(t){r.innerText=t||e.title})),e.value instanceof Node?((i=document.createElement("div")).appendChild(e.value),n.appendChild(i)):n.innerHTML=e.value,s.appendChild(o),s.appendChild(n),t.appendChild(s)}),this),Object.keys(e).length?t:""}}te.moduleName="responsiveLayout";class ie extends t{constructor(e){super(e),this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null,this.registerTableOption("selectable","highlight"),this.registerTableOption("selectableRangeMode","drag"),this.registerTableOption("selectableRollingSelection",!0),this.registerTableOption("selectablePersistence",!0),this.registerTableOption("selectableCheck",(function(e,t){return!0})),this.registerTableFunction("selectRow",this.selectRows.bind(this)),this.registerTableFunction("deselectRow",this.deselectRows.bind(this)),this.registerTableFunction("toggleSelectRow",this.toggleRow.bind(this)),this.registerTableFunction("getSelectedRows",this.getSelectedRows.bind(this)),this.registerTableFunction("getSelectedData",this.getSelectedData.bind(this)),this.registerComponentFunction("row","select",this.selectRows.bind(this)),this.registerComponentFunction("row","deselect",this.deselectRows.bind(this)),this.registerComponentFunction("row","toggleSelect",this.toggleRow.bind(this)),this.registerComponentFunction("row","isSelected",this.isRowSelected.bind(this))}initialize(){!1!==this.table.options.selectable&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-deleting",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clearSelectionData.bind(this)),this.subscribe("rows-retrieve",this.clearSelectionData.bind(this)),this.table.options.selectable&&this.table.options.selectablePersistence&&this.subscribe("data-refeshing",this.deselectRows.bind(this)))}rowRetrieve(e,t){return"selected"===e?this.selectedRows:t}rowDeleted(e){this._deselectRow(e,!0)}clearSelectionData(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],!0!==e&&this._rowSelectionChanged()}initializeRow(e){var t=this,i=e.getElement(),s=function(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",s)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",(function(i){if(i.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var s=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),o=t.table.rowManager.getDisplayRowIndex(e),n=s<=o?s:o,r=s>=o?s:o,a=t.table.rowManager.getDisplayRows().slice(0).splice(n,r-n+1);i.ctrlKey||i.metaKey?(a.forEach((function(i){i!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)||t.selectedRows.lengtht.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a)),t.table._clearSelection()}else i.ctrlKey||i.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)})):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",s),document.body.addEventListener("keyup",s),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}toggleRow(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}selectRows(e){var t;switch(typeof e){case"undefined":this.table.rowManager.rows.forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;case"string":(t=this.table.rowManager.findRow(e))?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}}_selectRow(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var s=this.table.rowManager.findRow(e);s?-1==this.selectedRows.indexOf(s)&&(s.getElement().classList.add("tabulator-selected"),s.modules.select||(s.modules.select={}),s.modules.select.selected=!0,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!0),this.selectedRows.push(s),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!0),t||this.dispatchExternal("rowSelected",s.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}isRowSelected(e){return-1!==this.selectedRows.indexOf(e)}deselectRows(e,t){var i,s=this;if(void 0===e){i=s.selectedRows.length;for(let e=0;e-1&&(o.getElement().classList.remove("tabulator-selected"),o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.modules.select.checkboxEl&&(o.modules.select.checkboxEl.checked=!1),s.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(o,!1),t||this.dispatchExternal("rowDeselected",o.getComponent()),s._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}getSelectedData(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}getSelectedRows(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}_rowSelectionChanged(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows())}registerRowSelectCheckbox(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}registerHeaderSelectCheckbox(e){this.headerCheckboxElement=e}childRowSelection(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t)for(let e of i)this._selectRow(e,!0);else for(let e of i)this._deselectRow(e,!0)}}function se(e,t,i,s,o,n,r){var a=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",h=r.alignEmptyValues,d=0;if(void 0!==a){if(e=a.fromFormat(e,l),t=a.fromFormat(t,l),e.isValid){if(t.isValid)return e-t;d=1}else d=t.isValid?-1:0;return("top"===h&&"desc"===n||"bottom"===h&&"asc"===n)&&(d*=-1),d}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}ie.moduleName="selectRow";var oe={number:function(e,t,i,s,o,n,r){var a=r.alignEmptyValues,l=r.decimalSeparator,h=r.thousandSeparator,d=0;if(e=String(e),t=String(t),h&&(e=e.split(h).join(""),t=t.split(h).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))d=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;d=1}return("top"===a&&"desc"===n||"bottom"===a&&"asc"===n)&&(d*=-1),d},string:function(e,t,i,s,o,n,r){var a,l=r.alignEmptyValues,h=0;if(e){if(t){switch(typeof r.locale){case"boolean":r.locale&&(a=this.langLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}h=1}else h=t?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},date:function(e,t,i,s,o,n,r){return r.format||(r.format="dd/MM/yyyy"),se.call(this,e,t,i,s,o,n,r)},time:function(e,t,i,s,o,n,r){return r.format||(r.format="HH:mm"),se.call(this,e,t,i,s,o,n,r)},datetime:se,boolean:function(e,t,i,s,o,n,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,i,s,o,n,r){var a=r.type||"length",l=r.alignEmptyValues,h=0;function d(e){switch(a){case"length":return e.length;case"sum":return e.reduce((function(e,t){return e+t}));case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce((function(e,t){return e+t}))/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?d(e):0)-(t?d(t):0);l=1}else l=Array.isArray(t)?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},exists:function(e,t,i,s,o,n,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,s,o,n,r){var a,l,h,d,c,u=0,m=/(\d+)|(\D+)/g,p=/\d/,g=r.alignEmptyValues,b=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((a=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(m),l=l.match(m),c=a.length>l.length?l.length:a.length;ud?1:-1;return a.length>l.length}b=1}else b=t||0===t?-1:0;return("top"===g&&"desc"===n||"bottom"===g&&"asc"===n)&&(b*=-1),b}};class ne extends t{constructor(e){super(e),this.sortList=[],this.changed=!1,this.registerTableOption("sortMode","local"),this.registerTableOption("initialSort",!1),this.registerTableOption("columnHeaderSortMulti",!0),this.registerTableOption("sortOrderReverse",!1),this.registerTableOption("headerSortElement","
"),this.registerColumnOption("sorter"),this.registerColumnOption("sorterParams"),this.registerColumnOption("headerSort",!0),this.registerColumnOption("headerSortStartingDir"),this.registerColumnOption("headerSortTristate")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.registerDataHandler(this.sort.bind(this),20),this.registerTableFunction("setSort",this.userSetSort.bind(this)),this.registerTableFunction("getSorters",this.getSort.bind(this)),this.registerTableFunction("clearSort",this.clearSort.bind(this)),"remote"===this.table.options.sortMode&&this.subscribe("data-params",this.remoteSortParams.bind(this))}tableBuilt(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}remoteSortParams(e,t,i,s){var o=this.getSort();return o.forEach((e=>{delete e.column})),s.sort=o,s}userSetSort(e,t){this.setSort(e,t),this.refreshSort()}clearSort(){this.clear(),this.refreshSort()}initializeColumn(e){var t,i,s=!1;switch(typeof e.definition.sorter){case"string":ne.sorters[e.definition.sorter]?s=ne.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort&&((t=e.getElement()).classList.add("tabulator-sortable"),(i=document.createElement("div")).classList.add("tabulator-col-sorter"),"object"==typeof this.table.options.headerSortElement?i.appendChild(this.table.options.headerSortElement):i.innerHTML=this.table.options.headerSortElement,e.titleHolderElement.appendChild(i),e.modules.sort.element=i,t.addEventListener("click",(t=>{var i="",s=[],o=!1;if(e.modules.sort){if(e.modules.sort.tristate)i="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=e.modules.sort.startingDir}this.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?((o=(s=this.getSort()).findIndex((t=>t.field===e.getField())))>-1?(s[o].dir=i,o!=s.length-1&&(o=s.splice(o,1)[0],"none"!=i&&s.push(o))):"none"!=i&&s.push({column:e,dir:i}),this.setSort(s)):"none"==i?this.clear():this.setSort(e,i),this.refreshSort()}})))}refreshSort(){"remote"===this.table.options.sortMode?this.reloadData():this.refreshData()}hasChanged(){var e=this.changed;return this.changed=!1,e}getSort(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}setSort(e,t){var i=this,s=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,s.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=s,this.dispatch("sort-changed")}clear(){this.setSort([])}findSorter(e){var t,i=this.table.rowManager.activeRows[0],s="string";if(i&&(i=i.getData(),e.getField()))switch(typeof(t=e.getFieldValue(i))){case"undefined":s="string";break;case"boolean":s="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(s="alphanum"):s="number"}return ne.sorters[s]}sort(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,s=[],o=[];return this.subscribedExternal("dataSorting")&&this.dispatchExternal("dataSorting",t.getSort()),t.clearColumnHeaders(),"remote"!==this.table.options.sortMode?(i.forEach((function(e,i){var o=e.column.modules.sort;e.column&&o&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,s.push(e)),t.setColumnHeader(e.column,e.dir)})),s.length&&t._sortItems(e,s)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((e=>{o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}clearColumnHeaders(){this.table.columnManager.getRealColumns().forEach((function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))}))}setColumnHeader(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)}_sortItems(e,t){var i=t.length-1;e.sort(((e,s)=>{for(var o,n=i;n>=0;n--){let i=t[n];if(0!==(o=this._sortRow(e,s,i.column,i.dir,i.params)))break}return o}))}_sortRow(e,t,i,s,o){var n,r,a="asc"==s?e:t,l="asc"==s?t:e;return e=void 0!==(e=i.getFieldValue(a.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",n=a.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,n,r,i.getComponent(),s,o)}}ne.moduleName="sort",ne.sorters=oe;var re={integer:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,i){return""===t||null==t||!isNaN(t)},string:function(e,t,i){return""===t||null==t||isNaN(t)},max:function(e,t,i){return""===t||null==t||parseFloat(t)<=i},min:function(e,t,i){return""===t||null==t||parseFloat(t)>=i},starts:function(e,t,i){return""===t||null==t||String(t).toLowerCase().startsWith(String(i).toLowerCase())},ends:function(e,t,i){return""===t||null==t||String(t).toLowerCase().endsWith(String(i).toLowerCase())},minLength:function(e,t,i){return""===t||null==t||String(t).length>=i},maxLength:function(e,t,i){return""===t||null==t||String(t).length<=i},in:function(e,t,i){return""===t||null==t||("string"==typeof i&&(i=i.split("|")),""===t||i.indexOf(t)>-1)},regex:function(e,t,i){return""===t||null==t||new RegExp(i).test(t)},unique:function(e,t,i){if(""===t||null==t)return!0;var s=!0,o=e.getData(),n=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==n.getFieldValue(i)&&(s=!1)})),s},required:function(e,t,i){return""!==t&&null!=t}};class ae extends t{constructor(e){super(e),this.invalidCells=[],this.registerTableOption("validationMode","blocking"),this.registerColumnOption("validator"),this.registerTableFunction("getInvalidCells",this.getInvalidCells.bind(this)),this.registerTableFunction("clearCellValidation",this.userClearCellValidation.bind(this)),this.registerTableFunction("validate",this.userValidate.bind(this)),this.registerComponentFunction("cell","isValid",this.cellIsValid.bind(this)),this.registerComponentFunction("cell","clearValidation",this.clearValidation.bind(this)),this.registerComponentFunction("cell","validate",this.cellValidate.bind(this)),this.registerComponentFunction("column","validate",this.columnValidate.bind(this)),this.registerComponentFunction("row","validate",this.rowValidate.bind(this))}initialize(){this.subscribe("cell-delete",this.clearValidation.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this))}cellIsValid(e){return!e.modules.validate||!e.modules.validate.invalid}cellValidate(e){return this.validate(e.column.modules.validate,e,e.getValue())}columnValidate(e){var t=[];return e.cells.forEach((function(e){this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}rowValidate(e){var t=[];return e.cells.forEach((function(e){this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}userClearCellValidation(e){e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.clearValidation(e._getSelf())}))}userValidate(e){var t=[];return this.table.rowManager.rows.forEach((function(e){var i=e.validate();!0!==i&&(t=t.concat(i))})),!t.length||t}initializeColumnCheck(e){void 0!==e.definition.validator&&this.initializeColumn(e)}initializeColumn(e){var t,i=this,s=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((function(e){(t=i._extractValidator(e))&&s.push(t)})):(t=this._extractValidator(e.definition.validator))&&s.push(t),e.modules.validate=!!s.length&&s)}_extractValidator(e){var t,i,s;switch(typeof e){case"string":return(s=e.indexOf(":"))>-1?(t=e.substring(0,s),i=e.substring(s+1)):t=e,this._buildValidator(t,i);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}}_buildValidator(e,t){var i="function"==typeof e?e:ae.validators[e];return i?{type:"function"==typeof e?"function":e,func:i,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)}validate(e,t,i){var s=this,o=[],n=this.invalidCells.indexOf(t);return e&&e.forEach((function(e){e.func.call(s,t.getComponent(),i,e.params)||o.push({type:e.type,parameters:e.params})})),o=!o.length||o,t.modules.validate||(t.modules.validate={}),!0===o?(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),n>-1&&this.invalidCells.splice(n,1)):(t.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==n&&this.invalidCells.push(t)),o}getInvalidCells(){var e=[];return this.invalidCells.forEach((t=>{e.push(t.getComponent())})),e}clearValidation(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.getElement().classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))}}ae.moduleName="validate",ae.validators=re;var le=Object.freeze({__proto__:null,AccessorModule:o,AjaxModule:l,ClipboardModule:h,ColumnCalcsModule:w,DataTreeModule:C,DownloadModule:y,EditModule:T,ExportModule:k,FilterModule:S,FormatModule:H,FrozenColumnsModule:P,FrozenRowsModule:z,GroupRowsModule:_,HistoryModule:N,HtmlTableImportModule:B,InteractionModule:V,KeybindingsModule:I,MenuModule:W,MoveColumnsModule:j,MoveRowsModule:G,MutatorModule:U,PageModule:X,PersistenceModule:Y,PrintModule:J,ReactiveDataModule:$,ResizeColumnsModule:Q,ResizeRowsModule:Z,ResizeTableModule:ee,ResponsiveLayoutModule:te,SelectRowModule:ie,SortModule:ne,ValidateModule:ae});class he{constructor(e,t){this.table=e,this.msgType=t,this.registeredDefaults={}}register(e,t){this.registeredDefaults[e]=t}generate(e,t={}){var i=Object.assign({},this.registeredDefaults);if(Object.assign(i,e),!1!==t.debugInvalidOptions||this.table.options.debugInvalidOptions)for(var s in t)i.hasOwnProperty(s)||console.warn("Invalid "+this.msgType+" option:",s);for(var s in i)s in t?i[s]=t[s]:Array.isArray(i[s])?i[s]=Object.assign([],i[s]):"object"==typeof i[s]&&null!==i[s]?i[s]=Object.assign({},i[s]):void 0===i[s]&&delete i[s];return i}}class de extends e{constructor(e){super(e),this.elementVertical=e.rowManager.element,this.elementHorizontal=e.columnManager.element,this.tableElement=e.rowManager.tableElement,this.verticalFillMode="fit"}initialize(){}clearRows(){}clearColumns(){}reinitializeColumnWidths(e){}renderRows(){}renderColumns(){}rerenderRows(e){e&&e()}rerenderColumns(e,t){}renderRowCells(e){}rerenderRowCells(e,t){}scrollColumns(e,t){}scrollRows(e,t){}resize(){}scrollToRow(e){}scrollToRowNearestTop(e){}visibleRows(e){return[]}rows(){return this.table.rowManager.getDisplayRows()}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}clear(){this.clearRows(),this.clearColumns()}render(){this.renderRows(),this.renderColumns()}rerender(e){this.rerenderRows(),this.rerenderColumns()}scrollToRowPosition(e,t,i){var o=this.rows().indexOf(e),n=e.getElement(),r=0;return new Promise(((a,l)=>{if(o>-1){if(void 0===i&&(i=this.table.options.scrollToRowIfVisible),!i&&s.elVisible(n)&&(r=s.elOffset(n).top-s.elOffset(this.elementVertical).top)>0&&r{e.element.appendChild(t.getElement()),t.cellRendered()}))}reinitializeColumnWidths(e){e.forEach((function(e){e.reinitializeWidth()}))}}class ue extends de{constructor(e){super(e),this.leftCol=0,this.rightCol=0,this.scrollLeft=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0,this.fitDataColAvg=0,this.window=200,this.initialized=!1,this.columns=[]}initialize(){this.compatabilityCheck()}compatabilityCheck(){var e=this.options("columns"),t=!0;return"fitDataTable"==this.options("layout")&&(console.warn("Horizontal Vitrual DOM is not compatible with fitDataTable layout mode"),t=!1),this.options("responsiveLayout")&&(console.warn("Horizontal Vitrual DOM is not compatible with responsive columns"),t=!1),this.options("rtl")&&(console.warn("Horizontal Vitrual DOM is not currently compatible with RTL text direction"),t=!1),e&&e.find((e=>e.frozen))&&(console.warn("Horizontal Vitrual DOM is not compatible with frozen columns"),t=!1),t}renderColumns(e,t){this.dataChange()}scrollColumns(e,t){this.scrollLeft!=e&&(this.scrollLeft=e,this.scroll(e-(this.vDomScrollPosLeft+this.window)))}rerenderColumns(e,t){var i={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol};if(!e||this.initialized){this.clear(),this.scrollLeft=this.elementVertical.scrollLeft,this.vDomScrollPosLeft=this.scrollLeft-this.window,this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.window;var s=0;this.table.columnManager.columnsByIndex.forEach((e=>{var t={};if(e.visible){var i=e.getWidth();t.leftPos=s,t.rightPos=s+i,t.width=i,"fitData"===this.options("layout")&&(t.fitDataCheck=!0),s+i>this.vDomScrollPosLeft&&s{e.element.appendChild(t.getElement()),t.cellRendered()}))}rerenderRowCells(e,t){this.reinitializeRow(e,t)}reinitializeColumnWidths(e){for(let e=this.leftCol;e<=this.rightCol;e++)this.columns[e].reinitializeWidth()}deinitialize(){this.initialized=!1}clear(){this.columns=[],this.leftCol=-1,this.rightCol=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0}dataChange(){var e,t,i=!1,s=0,o=0;if("fitData"===this.options("layout")){if(this.table.columnManager.columnsByIndex.forEach((e=>{!e.definition.width&&e.visible&&(i=!0)})),i&&i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.window,t=this.chain("rows-sample",[1],[],(()=>this.table.rowManager.getDisplayRows()[0]))[0])){e=t.getElement(),t.generateCells(),this.tableElement.appendChild(e);for(o=0;othis.vDomScrollPosRight)break}for(e.parentNode.removeChild(e),this.fitDataColAvg=Math.floor(s/(o+1));o{e!==this.columns[i]&&(t=!1)})),!t)}renitializeRows(){this.table.rowManager.getVisibleRows().forEach((e=>{this.reinitializeRow(e,!0)}))}scroll(e){this.vDomScrollPosLeft+=e,this.vDomScrollPosRight+=e,e>.8*this.elementVertical.clientWidth?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}colPositionAdjust(e,t,i){for(let s=e;s{if("group"!==t.type){var i=t.getCell(e);t.getElement().appendChild(i.getElement()),i.cellRendered()}})),this.fitDataColActualWidthCheck(e),this.rightCol++,this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=e.getWidth(),this.tableElement.style.paddingRight=this.vDomPadRight+"px",this.addColRight())}addColLeft(){var e=this.columns[this.leftCol-1];e&&e.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft&&(this.table.rowManager.getVisibleRows().forEach((t=>{if("group"!==t.type){var i=t.getCell(e);t.getElement().prepend(i.getElement()),i.cellRendered()}})),this.fitDataColActualWidthCheck(e),this.leftCol?this.vDomPadLeft-=e.getWidth():this.vDomPadLeft=0,this.tableElement.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol--,this.addColLeft())}removeColRight(e){var t;(e=this.columns[this.rightCol])&&e.modules.vdomHoz.leftPos>this.vDomScrollPosRight&&(t=this.table.rowManager.getVisibleRows(),e.modules.vdomHoz.visible=!1,t.forEach((t=>{if("group"!==t.type){var i=t.getCell(e);t.getElement().removeChild(i.getElement())}})),this.vDomPadRight+=e.getWidth(),this.tableElement.style.paddingRight=this.vDomPadRight+"px",this.rightCol--,this.removeColRight())}removeColLeft(){var e=this.columns[this.leftCol];e&&e.modules.vdomHoz.rightPos{if("group"!==t.type){var i=t.getCell(e);i.parentNode&&t.getElement().removeChild(i.getElement())}})),this.vDomPadLeft+=e.getWidth(),this.tableElement.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol++,this.removeColLeft())}fitDataColActualWidthCheck(e){var t,i;e.modules.vdomHoz.fitDataCheck&&(e.reinitializeWidth(),(i=(t=e.getWidth())-e.modules.vdomHoz.width)&&(e.modules.vdomHoz.rightPos+=i,e.modules.vdomHoz.width=t,this.colPositionAdjust(this.rightCol+2,this.columns.length,i)),e.modules.vdomHoz.fitDataCheck=!1)}initializeRow(e){if("group"!==e.type){e.modules.vdomHoz={leftCol:this.leftCol,rightCol:this.rightCol};for(let t=this.leftCol;t<=this.rightCol;t++){let i=this.columns[t];if(i&&i.visible){let t=e.getCell(i);e.getElement().appendChild(t.getElement()),t.cellRendered()}}}}reinitializeRow(e,t){if("group"!==e.type&&(t||!e.modules.vdomHoz||e.modules.vdomHoz.leftCol!==this.leftCol||e.modules.vdomHoz.rightCol!==this.rightCol)){for(var i=e.getElement();i.firstChild;)i.removeChild(i.firstChild);this.initializeRow(e)}}}class me extends e{constructor(e){super(e),this.blockHozScrollEvent=!1,this.headersElement=null,this.element=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.optionsList=new he(this.table,"column definition"),this.renderer=null}initialize(){this.initializeRenderer(),this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.element.insertBefore(this.headersElement,this.element.firstChild),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this))}initializeRenderer(){var e,t={virtual:ue,basic:ce};(e="string"==typeof this.table.options.renderHorizontal?t[this.table.options.renderHorizontal]:this.table.options.renderHorizontal)?(this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize()):console.error("Unable to find matching renderer:",table.options.renderHorizontal)}createHeadersElement(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e}createHeaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-header"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e}getElement(){return this.element}getHeadersElement(){return this.headersElement}scrollHorizontal(e){var t=0,i=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>i?(t=e-i,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.renderer.scrollColumns(e)}generateColumnsFromRowData(e){var t,i,s=[],o=this.table.options.autoColumnsDefinitions;if(e&&e.length){for(var n in t=e[0]){let e={field:n,title:n},o=t[n];switch(typeof o){case"undefined":i="string";break;case"boolean":i="boolean";break;case"object":i=Array.isArray(o)?"array":"string";break;default:i=isNaN(o)||""===o?o.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}e.sorter=i,s.push(e)}if(o)switch(typeof o){case"function":this.table.options.columns=o.call(this.table,s);break;case"object":Array.isArray(o)?s.forEach((e=>{var t=o.find((t=>t.field===e.field));t&&Object.assign(e,t)})):s.forEach((e=>{o[e.field]&&Object.assign(e,o[e.field])})),this.table.options.columns=s}else this.table.options.columns=s;this.setColumns(this.table.options.columns)}}setColumns(e,t){for(;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach(((e,t)=>{this._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.renderer.rerenderColumns(!1,!0),this.redraw(!0)}_addColumn(e,t,i){var s=new g(e,this),o=s.getElement(),n=i?this.findColumnIndex(i):i;if(i&&n>-1){var r=this.columns.indexOf(i.getTopColumn()),a=i.getElement();t?(this.columns.splice(r,0,s),a.parentNode.insertBefore(o,a)):(this.columns.splice(r+1,0,s),a.parentNode.insertBefore(o,a.nextSibling))}else t?(this.columns.unshift(s),this.headersElement.insertBefore(s.getElement(),this.headersElement.firstChild)):(this.columns.push(s),this.headersElement.appendChild(s.getElement())),s.columnRendered();return s}registerColumnField(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}registerColumnPosition(e){this.columnsByIndex.push(e)}_reIndexColumns(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}_verticalAlignHeaders(){var e=0;this.columns.forEach((t=>{var i;t.clearVerticalAlign(),(i=t.getHeight())>e&&(e=i)})),this.columns.forEach((t=>{t.verticalAlign(this.table.options.columnHeaderVertAlign,e)})),this.table.rowManager.adjustTableSize()}findColumn(e){if("object"!=typeof e)return this.columnsByField[e]||!1;if(e instanceof g)return e;if(e instanceof m)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.columns.find((t=>t.element===e))||!1}return!1}getColumnByField(e){return this.columnsByField[e]}getColumnsByFieldRoot(e){var t=[];return Object.keys(this.columnsByField).forEach((i=>{i.split(".")[0]===e&&t.push(this.columnsByField[i])})),t}getColumnByIndex(e){return this.columnsByIndex[e]}getFirstVisibileColumn(e){return(e=this.columnsByIndex.findIndex((e=>e.visible)))>-1&&this.columnsByIndex[e]}getColumns(){return this.columns}findColumnIndex(e){return this.columnsByIndex.findIndex((t=>e===t))}getRealColumns(){return this.columnsByIndex}traverse(e){this.columnsByIndex.forEach(((t,i)=>{e(t,i)}))}getDefinitions(e){var t=[];return this.columnsByIndex.forEach((i=>{(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}getDefinitionTree(){var e=[];return this.columns.forEach((t=>{e.push(t.getDefinition(!0))})),e}getComponents(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((e=>{t.push(e.getComponent())})),t}getWidth(){var e=0;return this.columnsByIndex.forEach((t=>{t.visible&&(e+=t.getWidth())})),e}moveColumn(e,t,i){this.moveColumnActual(e,t,i),t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()}moveColumnActual(e,t,i){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,i):this._moveColumnInArray(this.columns,e,t,i),this._moveColumnInArray(this.columnsByIndex,e,t,i,!0),this.renderer.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}_moveColumnInArray(e,t,i,s,o){var n,r=e.indexOf(t);r>-1&&(e.splice(r,1),(n=e.indexOf(i))>-1?s&&(n+=1):n=r,e.splice(n,0,t),o&&(this.chain("column-moving-rows",[t,i,s],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(n,0,t)}})))}scrollToColumn(e,t,i){var s=0,o=0,n=0,r=e.getElement();return new Promise(((a,l)=>{if(void 0===t&&(t=this.table.options.scrollToColumnPosition),void 0===i&&(i=this.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":n=-this.element.clientWidth/2;break;case"right":n=r.clientWidth-this.headersElement.clientWidth}if(!i&&(o=r.offsetLeft)>0&&o+r.offsetWidth{t.push(i.generateCell(e))})),t}getFlexBaseWidth(){var e=this.table.element.clientWidth,t=0;return this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var s,o,n;i.visible&&(s=i.definition.width||0,o=parseInt(i.minWidth),n="string"==typeof s?s.indexOf("%")>-1?e/100*parseInt(s):parseInt(s):s,t+=n>o?n:o)})),t}addColumn(e,t,i){return new Promise(((s,o)=>{var n=this._addColumn(e,t,i);this._reIndexColumns(),this.dispatch("column-add",e,t,i),this.redraw(!0),"fitColumns"!=this.layoutMode()&&n.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize(),this.renderer.rerenderColumns(),s(n)}))}deregisterColumn(e){var t,i=e.getField();i&&delete this.columnsByField[i],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this._verticalAlignHeaders(),this.redraw()}redraw(e){e&&(s.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}class pe extends de{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.scrollTop=0,e.scrollLeft=0,e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility=""}renderRows(){var e=this.tableElement,t=!0;this.rows().forEach(((i,s)=>{this.styleRow(i,s),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(t=!1)})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}rerenderRows(e){this.render(),e&&e()}scrollToRowNearestTop(e){var t=s.elOffset(e.getElement()).top;return!(Math.abs(this.elementVertical.scrollTop-t)>Math.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-t))}scrollToRow(e){var t=e.getElement();this.elementVertical.scrollTop=s.elOffset(t).top-s.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}visibleRows(e){return this.rows()}}class ge extends de{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.elementVertical.scrollTop=0,this.elementVertical.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0}renderRows(){this._virtualRenderFill()}rerenderRows(e){for(var t=this.elementVertical.scrollTop,i=!1,s=!1,o=this.table.rowManager.scrollLeft,n=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(n[r]){var a=t-n[r].getElement().offsetTop;if(!(!1===s||Math.abs(a)o||s>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*n.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(n,-i),s<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(n,-s):this.vDomScrollPosBottom=this.scrollTop)):(s>=0&&this._addBottomRow(n,s),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(n,i):this.vDomScrollPosTop=this.scrollTop))}resize(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}scrollToRowNearestTop(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}scrollToRow(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}visibleRows(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,s=!1,o=0,n=0,r=this.rows();if(e)o=this.vDomTop,n=this.vDomBottom;else for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(s){if(!(i-r[a].getElement().offsetTop>=0))break;n=a}else if(t-r[a].getElement().offsetTop>=0)o=a;else{if(s=!0,!(i-r[a].getElement().offsetTop>=0))break;n=a}return r.slice(o,n+1)}_virtualRenderFill(e,t,i){var o=this.tableElement,n=this.elementVertical,r=0,a=0,l=0,h=0,d=0,c=this.rows(),u=c.length,m=this.elementVertical.clientHeight;if(i=i||0,e=e||0){for(;o.firstChild;)o.removeChild(o.firstChild);(l=(u-e+1)*this.vDomRowHeight)this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*p),this.vDomBottom++,d++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+i:this.scrollTop-h,this.vDomBottomPad=this.vDomBottom==u-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-a-h,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((a+h)/d),this.vDomBottomPad=this.vDomRowHeight*(u-this.vDomBottom-1),this.vDomScrollHeight=h+a+this.vDomBottomPad-m),o.style.paddingTop=this.vDomTopPad+"px",o.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+h+i-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-m:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-m),this.elementVertical.scrollWidth>this.elementVertical.offsetWidth&&t&&(this.scrollTop+=this.elementVertical.offsetHeight-m),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,n.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}_addTopRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomTop-1,r=0;this.vDomTop;){let a,l,h=e[n];if(!(h&&r=a))break;this.styleRow(h,n),i.insertBefore(h.getElement(),i.firstChild),h.initialized&&h.heightInitialized||s.push(h),h.initialize(),l||(a=h.getElement().offsetHeight,a>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*a)),t-=a,o+=a,this.vDomTop--,n--,r++}for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomTopPad-=o,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n<1&&(this.vDomTopPad=0),i.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=o)}_removeTopRow(e,t){for(var i=[],s=0,o=0;;){let n,r=e[this.vDomTop];if(!(r&&o=n))break;this.vDomTop++,t-=n,s+=n,i.push(r),o++}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomTopPad+=s,this.tableElement.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?s:s+this.vDomWindowBuffer)}_addBottomRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomBottom+1,r=0;;){let a,l,h=e[n];if(!(h&&r=a))break;this.styleRow(h,n),i.appendChild(h.getElement()),h.initialized&&h.heightInitialized||s.push(h),h.initialize(),l||(a=h.getElement().offsetHeight,a>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*a)),t-=a,o+=a,this.vDomBottom++,n++,r++}for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomBottomPad-=o,(this.vDomBottomPad<0||n==e.length-1)&&(this.vDomBottomPad=0),i.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=o)}_removeBottomRow(e,t){for(var i=[],s=0,o=0;;){let n,r=e[this.vDomBottom];if(!(r&&o=n))break;this.vDomBottom--,t-=n,s+=n,i.push(r),o++}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomBottomPad+=s,this.vDomBottomPad<0&&(this.vDomBottomPad=0),this.tableElement.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=s)}_quickNormalizeRowHeight(e){for(let t of e)t.calcHeight();for(let t of e)t.setCellHeight()}}class be extends e{constructor(e){super(e),this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRowsPipeline=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1,this.dataPipeline=[],this.displayPipeline=[],this.renderer=null}createHolderElement(){var e=document.createElement("div");return e.classList.add("tabulator-tableholder"),e.setAttribute("tabindex",0),e}createTableElement(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e}getElement(){return this.element}getTableElement(){return this.tableElement}getRowPosition(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)}initialize(){this.initializeRenderer(),this.element.appendChild(this.tableElement),this.firstRender=!0,this.element.addEventListener("scroll",(()=>{var e=this.element.scrollLeft,t=this.scrollLeft>e,i=this.element.scrollTop,s=this.scrollTop>i;this.scrollLeft!=e&&(this.scrollLeft=e,this.dispatch("scroll-horizontal",e,t),this.dispatchExternal("scrollHorizontal",e,t)),this.scrollTop!=i&&(this.scrollTop=i,this.renderer.scrollRows(i,s),this.dispatch("scroll-vertical",i,s),this.dispatchExternal("scrollVertical",i,s))}))}findRow(e){if("object"!=typeof e){if(null==e)return!1;return this.rows.find((t=>t.data[this.table.options.index]==e))||!1}if(e instanceof f)return e;if(e instanceof b)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.rows.find((t=>t.getElement()===e))||!1}return!1}getRowFromDataObject(e){return this.rows.find((t=>t.data===e))||!1}getRowFromPosition(e,t){return t?this.activeRows[e]:this.rows[e]}scrollToRow(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}setData(e,t,i){return new Promise(((s,o)=>{t&&this.getDisplayRows().length?this.table.options.pagination?this._setDataActual(e,!0):this.reRenderInPosition((()=>{this._setDataActual(e)})):(this.table.options.autoColumns&&i&&this.table.columnManager.generateColumnsFromRowData(e),this.resetScroll(),this._setDataActual(e)),s()}))}_setDataActual(e,t){this.dispatchExternal("dataProcessing",e),this._wipeElements(),Array.isArray(e)?(this.dispatch("data-processing",e),e.forEach(((e,t)=>{if(e&&"object"==typeof e){var i=new f(e,this);this.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)})),this.refreshActiveData(!1,!1,t),this.dispatch("data-processed",e),this.dispatchExternal("dataProcessed",e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",typeof e,"\nData: ",e)}_wipeElements(){this.dispatch("rows-wipe"),this.rows.forEach((e=>{e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()}deleteRow(e,t){var i=this.rows.indexOf(e),s=this.activeRows.indexOf(e);s>-1&&this.activeRows.splice(s,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((t=>{var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this._showPlaceholder(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}addRow(e,t,i,s){var o=this.addRowActual(e,t,i,s);return this.dispatch("row-added",o,e,t,i),o}addRows(e,t,i){var s=[];return new Promise(((o,n)=>{t=this.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length,(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach(((o,n)=>{var r=this.addRow(o,t,i,!0);s.push(r),this.dispatch("row-added",r,e,t,i)})),this.reRenderInPosition(),this.regenerateRowNumbers(),s.length&&this._clearPlaceholder(),o(s)}))}findAddRowPos(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}addRowActual(e,t,i,s){var o,n,r=e instanceof f?e:new f(e||{},this),a=this.findAddRowPos(t),l=-1;return i||(n=this.chain("row-adding-position",[r,a],null,{index:i,top:a}),i=n.index,a=n.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,a],null,i))&&(l=this.rows.indexOf(i)),i&&l>-1?(o=this.activeRows.indexOf(i),this.displayRowIterator((function(e){var t=e.indexOf(i);t>-1&&e.splice(a?t:t+1,0,r)})),o>-1&&this.activeRows.splice(a?o:o+1,0,r),this.rows.splice(a?l:l+1,0,r)):a?(this.displayRowIterator((function(e){e.unshift(r)})),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator((function(e){e.push(r)})),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.dispatchExternal("rowAdded",r.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),s||this.reRenderInPosition(),r}moveRow(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowNumbers(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}moveRowActual(e,t,i){this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((s=>{this.moveRowInArray(s,e,t,i)})),this.dispatch("row-moving",e,t,i)}moveRowInArray(e,t,i,s){var o,n,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(n=e.indexOf(i))>-1?s?e.splice(n+1,0,t):e.splice(n,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=n>o?n:o+1;for(let t=o-1&&t}nextDisplayRow(e,t){var i=this.getDisplayRowIndex(e),s=!1;return!1!==i&&i-1)&&i}getData(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}getComponents(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}getDataCount(e){return this.getRows(e).length}scrollHorizontal(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}registerDataPipelineHandler(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Data pipeline handlers must have a priority in order to be registered")}registerDisplayPipelineHandler(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Display pipeline handlers must have a priority in order to be registered")}refreshActiveData(e,t,i){var o=this.table,n="",r=0,a=["all","dataPipeline","display","displayPipeline","end"];if("function"==typeof e)if((r=this.dataPipeline.findIndex((t=>t.handler===e)))>-1)n="dataPipeline",t&&(r==this.dataPipeline.length-1?n="display":r++);else{if(!((r=this.displayPipeline.findIndex((t=>t.handler===e)))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);n="displayPipeline",t&&(r==this.displayPipeline.length-1?n="end":r++)}else n=e||"all",r=0;if(this.redrawBlock)(!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===n&&r{var t=e.getCell(this.rowNumColumn);t&&t._generateContents()}))}setActiveRows(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length}resetDisplayRows(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length}getNextDisplayIndex(){return this.displayRows.length}setDisplayRows(e,t){var i=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,i=!0):(this.displayRows.push(e),i=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),i}getDisplayRows(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]}getVisibleRows(e){return this.renderer.visibleRows(!e)}displayRowIterator(e){this.activeRowsPipeline.forEach(e),this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length}getRows(e){var t;switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!0);break;default:t=this.chain("rows-retrieve",e,null,this.rows)||this.rows}return t}reRenderInPosition(e){this.redrawBlock?e?e():this.redrawBlockRederInPosition=!0:this.renderer.rerenderRows(e)}initializeRenderer(){var e,t={virtual:ge,basic:pe};(e="string"==typeof this.table.options.renderVertical?t[this.table.options.renderVertical]:this.table.options.renderVertical)?(this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize(),this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):console.error("Unable to find matching renderer:",table.options.renderVertical)}getRenderMode(){return this.renderMode}renderTable(){this.dispatchExternal("renderStarted"),this.element.scrollTop=0,this.displayRowsCount?(this._clearTable(),this.renderer.renderRows(),this.firstRender&&(this.firstRender=!1,this.layoutRefresh())):this.renderEmptyScroll(),this.fixedHeight||this.adjustTableSize(),this.dispatch("table-layout"),this.displayRowsCount||this._showPlaceholder(),this.dispatchExternal("renderComplete")}renderEmptyScroll(){this.table.options.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"}_clearTable(){this.tableElement;this._clearPlaceholder(),this.scrollTop=0,this.scrollLeft=0,this.renderer.clearRows()}_showPlaceholder(){this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px")}_clearPlaceholder(){this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder)}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}normalizeHeight(){this.activeRows.forEach((function(e){e.normalizeHeight()}))}adjustTableSize(){var e=this.element.clientHeight;if("fill"===this.renderer.verticalFillMode){let t=Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height+(this.table.footerManager&&this.table.footerManager.active&&!this.table.footerManager.external?this.table.footerManager.getElement().getBoundingClientRect().height:0));this.fixedHeight?(this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-t+"px",this.element.scrollTop=this.scrollTop),this.renderer.resize(),this.fixedHeight||e==this.element.clientHeight||(this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw())}}reinitialize(){this.rows.forEach((function(e){e.reinitialize(!0)}))}blockRedraw(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1}restoreRedraw(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.handler,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1}redraw(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():(this.reRenderInPosition(),this.scrollHorizontal(t),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))}resetScroll(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))}}class fe extends e{constructor(e){super(e),this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this.initializeElement()}initialize(){}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e}initializeElement(e){if(this.table.options.footerElement)switch(typeof this.table.options.footerElement){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}}getElement(){return this.element}append(e,t){this.activate(t),this.element.appendChild(e),this.table.rowManager.adjustTableSize()}prepend(e,t){this.activate(t),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()}remove(e){e.parentNode.removeChild(e),this.deactivate()}deactivate(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)}activate(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)}redraw(){this.links.forEach((function(e){e.footerRedraw()}))}}class ve extends e{constructor(e){super(e),this.el=this.table.element,this.abortClasses=["tabulator-headers","tabulator-table"],this.previousTargets={},this.listeners=["click","dblclick","contextmenu","mouseenter","mouseleave","mouseover","mouseout","mousemove","touchstart","touchend"],this.componentMap={"tabulator-cell":"cell","tabulator-row":"row","tabulator-group":"group","tabulator-col":"column"},this.buildListenerMap(),this.bindSubscriptionWatchers()}buildListenerMap(){var e={};this.listeners.forEach((t=>{e[t]={handler:null,components:[]}})),this.listeners=e}bindSubscriptionWatchers(){var e=Object.keys(this.listeners),t=Object.values(this.componentMap);for(let i of t)for(let t of e){let e=i+"-"+t;this.subscriptionChange(e,this.subscriptionChanged.bind(this,i,t))}}subscriptionChanged(e,t,i){var s=this.listeners[t].components,o=s.indexOf(e),n=!1;i?-1===o&&(s.push(e),n=!0):this.subscribed(e+"-"+t)||o>-1&&(s.splice(o,1),n=!0),n&&this.updateEventListeners()}updateEventListeners(){for(let e in this.listeners){let t=this.listeners[e];t.components.length?t.handler||(t.handler=this.track.bind(this,e),this.el.addEventListener(e,t.handler)):t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}track(e,t){var i=t.composedPath&&t.composedPath()||t.path,s=this.findTargets(i);s=this.bindComponents(e,s),this.triggerEvents(e,t,s)}findTargets(e){var t={};let i=Object.keys(this.componentMap);for(let s of e){let e=s.classList?[...s.classList]:[];if(e.filter((e=>this.abortClasses.includes(e))).length)break;let o=e.filter((e=>i.includes(e)));for(let e of o)t[this.componentMap[e]]=s}return t.group&&t.group===t.row&&delete t.row,t}bindComponents(e,t){var i=Object.keys(t).reverse(),s=this.listeners[e],o={};for(let e of i){let i,n=t[e],r=this.previousTargets[e];if(r&&r.target===n)i=r.component;else switch(e){case"row":case"group":if(s.components.includes("row")||s.components.includes("cell")){i=this.table.rowManager.getVisibleRows().find((e=>e.getElement()===n))}break;case"column":s.components.includes("column")&&(i=this.table.columnManager.findColumn(n));break;case"cell":s.components.includes("cell")&&(i=t.row.findCell(n))}i&&(t[e]=i,o[e]={target:n,component:i})}return this.previousTargets=o,t}triggerEvents(e,t,i){var s=this.listeners[e];for(let o in i)i[o]&&s.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}}class we{constructor(e){this.table=e,this.bindings={}}bind(e,t,i){this.bindings[e]||(this.bindings[e]={}),this.bindings[e][t]?console.warn("Unable to bind component handler, a matching function name is already bound",e,t,hanlder):this.bindings[e][t]=i}handle(e,t,i){if(this.bindings[e]&&this.bindings[e][i])return this.bindings[e][i].bind(null,t);"then"!==i&&console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}class Ce extends e{constructor(e){super(e),this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=null,this.errorElement=null,this.requestOrder=0,this.loading=!1}initialize(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.dataLoaderLoading&&("string"==typeof this.table.options.dataLoaderLoading?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderLoading.trim(),this.loadingElement=e.firstElementChild):this.loadingElement=this.table.options.dataLoaderLoading),this.table.options.dataLoaderError&&("string"==typeof this.table.options.dataLoaderError?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderError.trim(),this.errorElement=e.firstElementChild):this.errorElement=this.table.options.dataLoaderError)}createLoaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e}createMsgElement(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e}load(e,t,i,s,o){var n=++this.requestOrder;if(this.dispatchExternal("dataLoading",e),!e||0!=e.indexOf("{")&&0!=e.indexOf("[")||(e=JSON.parse(e)),this.confirm("data-loading",e,t,i,o)){this.loading=!0,o||this.showLoader();t=this.chain("data-params",[e,i,o],t||{},{});return t=this.mapParams(t,this.table.options.dataSendParams),this.chain("data-load",[e,t,i,o],Promise.resolve([])).then((t=>{Array.isArray(t)||"object"!=typeof t||(t=this.mapParams(t,this.objectInvert(this.table.options.dataReceiveParams)));var i=this.chain("data-loaded",t,null,t);n==this.requestOrder?(this.hideLoader(),!1!==i&&(this.dispatchExternal("dataLoaded",e),this.table.rowManager.setData(i,s,!s))):console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made")})).catch((e=>{console.error("Data Load Error: ",e),this.dispatchExternal("dataLoadError",e),o||this.showError(),setTimeout((()=>{this.hideLoader()}),3e3)})).finally((()=>{this.loading=!1}))}return this.dispatchExternal("dataLoaded",e),e||(e=[]),this.table.rowManager.setData(e,s,!s),Promise.resolve()}mapParams(e,t){var i={};for(let s in e)i[t.hasOwnProperty(s)?t[s]:s]=e[s];return i}objectInvert(e){var t={};for(let i in e)t[e[i]]=i;return t}blockActiveLoad(){this.requestOrder++}showLoader(){if("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.langText("data|loading"),this.table.element.appendChild(this.loaderElement)}}showError(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.langText("data|error"),this.table.element.appendChild(this.loaderElement)}hideLoader(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)}}class Ee{constructor(e,t){this.events={},this.optionsList=e||{},this.subscriptionNotifiers={},this.dispatch=t?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=t}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}subscribe(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifiySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}else delete this.events[e];this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_notifiySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e,t=Array.from(arguments),i=t.shift();return this.events[i]&&this.events[i].forEach(((i,s)=>{let o=i.apply(this,t);s||(e=o)})),e}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="ExternalEvent:"+e[0],(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}}class ye{constructor(e){this.events={},this.subscriptionNotifiers={},this.dispatch=e?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=e?this._debugChain.bind(this):this._chain.bind(this),this.confirm=e?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=e}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}subscribe(e,t,i=1e4){this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort(((e,t)=>e.priority-t.priority)),this._notifiySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e.callback===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_chain(e,t,i,s){var o=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach(((e,i)=>{o=e.callback.apply(this,t.concat([o]))})),o):"function"==typeof s?s():s}_confirm(e,t){var i=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach(((e,s)=>{e.callback.apply(this,t)&&(i=!0)})),i}_notifiySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e=Array.from(arguments),t=e.shift();this.events[t]&&this.events[t].forEach((t=>{t.callback.apply(this,e)}))}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}_debugChain(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._chain(...arguments)}_debugConfirm(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._confirm(...arguments)}}class Re{static register(e){Re.tables.push(e)}static deregister(e){var t=Re.tables.indexOf(e);t>-1&&Re.tables.splice(t,1)}static lookupTable(e,t){var i,s,o=[];if("string"==typeof e){if((i=document.querySelectorAll(e)).length)for(var n=0;n{e.widthFixed||e.reinitializeWidth(),(this.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(o=e),e.visible&&(t+=e.getWidth())})),o?(s=i-t+o.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(o.setWidth(0),this.table.modules.responsiveLayout.update()),s>0?o.setWidth(s):o.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,i,s=this.table.element.clientWidth,o=0,n=0,r=0,a=[],l=[],h=0,d=0;function c(e){return"string"==typeof e?e.indexOf("%")>-1?s/100*parseInt(e):parseInt(e):e}function u(e,t,i,s){var o=[],n=0,a=0,l=0,h=r,d=0,m=0,p=[];function g(e){return i*(e.column.definition.widthGrow||1)}function b(e){return c(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,n){var r=s?b(e):g(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(s-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,s;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(s=c(t),o+=s>i?s:i,e.definition.widthShrink&&(l.push({column:e,width:s>i?s:i}),h+=e.definition.widthShrink)):(a.push({column:e,width:0}),r+=e.definition.widthGrow||1))})),n=s-o,t=Math.floor(n/r),d=u(a,n,t,!1),a.length&&d>0&&(a[a.length-1].width+=+d),a.forEach((function(e){n-=e.width})),(i=Math.abs(d)+n)>0&&h&&(d=u(l,i,Math.floor(i/h),!0)),l.length&&(l[l.length-1].width-=d),a.forEach((function(e){e.column.setWidth(e.width)})),l.forEach((function(e){e.column.setWidth(e.width)}))}};class Me extends t{constructor(e){super(e,"layout"),this.mode=null,this.registerTableOption("layout","fitData"),this.registerTableOption("layoutColumnsOnNewData",!1),this.registerColumnOption("widthGrow"),this.registerColumnOption("widthShrink")}initialize(){var e=this.table.options.layout;Me.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)}getMode(){return this.mode}layout(){Me.modes[this.mode].call(this,this.table.columnManager.columnsByIndex),this.dispatch("layout-refreshed")}}Me.moduleName="layout",Me.modes=Te;class Le extends t{constructor(e){super(e),this.locale="default",this.lang=!1,this.bindings={},this.langList={},this.registerTableOption("locale",!1),this.registerTableOption("langs",{})}initialize(){this.langList=s.deepClone(Le.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);for(let e in this.table.options.langs)this.installLang(e,this.table.options.langs[e]);this.setLocale(this.table.options.locale),this.registerTableFunction("setLocale",this.setLocale.bind(this)),this.registerTableFunction("getLocale",this.getLocale.bind(this)),this.registerTableFunction("getLang",this.getLang.bind(this))}setHeaderFilterPlaceholder(e){this.langList.default.headerFilters.default=e}setHeaderFilterColumnPlaceholder(e,t){this.langList.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)}installLang(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}_setLangProp(e,t){for(let i in t)e[i]&&"object"==typeof e[i]?this._setLangProp(e[i],t[i]):e[i]=t[i]}setLocale(e){if(!0===(e=e||"default")&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!this.langList[e]){let t=e.split("-")[0];this.langList[t]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,t),e=t):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}this.locale=e,this.lang=s.deepClone(this.langList.default||{}),"default"!=e&&function e(t,i){for(var s in t)"object"==typeof t[s]?(i[s]||(i[s]={}),e(t[s],i[s])):i[s]=t[s]}(this.langList[e],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}getLocale(e){return this.locale}getLang(e){return e?this.langList[e]:this.lang}getText(e,t){var i=(e=t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}_getLangElement(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}bind(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}_executeBindings(){for(let e in this.bindings)this.bindings[e].forEach((t=>{t(this.getText(e),this.lang)}))}}Le.moduleName="localize",Le.langs={default:{groups:{item:"item",items:"items"},columns:{},data:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}};class ke extends t{constructor(e){super(e)}initialize(){this.registerTableFunction("tableComms",this.receive.bind(this))}getConnections(e){var t=[];return Re.lookupTable(e).forEach((e=>{this.table!==e&&t.push(e)})),t}send(e,t,i,s){var o=this.getConnections(e);o.forEach((e=>{e.tableComms(this.table.element,t,i,s)})),!o.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}receive(e,t,i,s){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,s);console.warn("Inter-table Comms Error - no such module:",t)}}ke.moduleName="comms";var De=Object.freeze({__proto__:null,LayoutModule:Me,LocalizeModule:Le,CommsModule:ke});class Se{constructor(e,t){this.bindStaticFuctionality(e),this.bindModules(e,De,!0),t&&this.bindModules(e,t)}bindStaticFuctionality(e){e.moduleBindings={},e.extendModule=function(t,i,s){if(e.moduleBindings[t]){var o=e.moduleBindings[t].prototype[i];if(o)if("object"==typeof s)for(let e in s)o[e]=s[e];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",i)}else console.warn("Module Error - module does not exist:",t)},e.registerModule=function(t){Array.isArray(t)||(t=[t]),t.forEach((t=>{e.registerModuleBinding(t)}))},e.registerModuleBinding=function(t){e.moduleBindings[t.moduleName]=t},e.findTable=function(e){var t=Re.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},e.prototype.bindModules=function(){for(var t in this.modules={},e.moduleBindings){let i=e.moduleBindings[t];this.modules[t]=new i(this),i.prototype.moduleCore?this.modulesCore[t]=this.modules[t]:this.modulesRegular[t]=this.modules[t]}}}bindModules(e,t,i){var s=Object.values(t);i&&s.forEach((e=>{e.prototype.moduleCore=!0})),e.registerModule(s)}}class Fe{constructor(e,t){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.vdomHoz=null,this.externalEvents=null,this.eventBus=null,this.interactionMonitor=!1,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.componentFunctionBinder=new we(this),this.dataLoader=!1,this.modules={},this.modulesCore={},this.modulesRegular={},this.optionsList=new he(this,"table constructor"),this.initializeElement(e)&&(this.initialzeCoreSystems(t),setTimeout((()=>{this._create()}))),Re.register(this)}initializeElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)}initialzeCoreSystems(e){this.columnManager=new me(this),this.rowManager=new be(this),this.footerManager=new fe(this),this.dataLoader=new Ce(this),this.bindModules(),this.options=this.optionsList.generate(Fe.defaultOptions,e),this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.externalEvents=new Ee(this.options,this.options.debugEventsExternal),this.eventBus=new ye(this.options.debugEventsInternal),this.interactionMonitor=new ve(this),this.dataLoader.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this.footerManager.initialize()}rtlCheck(){var e=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==e.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}}_mapDepricatedFunctionality(){}_clearSelection(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")}_create(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this.rtlCheck(),this._buildElement(),this._loadInitialData()}_clearObjectPointers(){this.options.columns=this.options.columns.slice(0),this.options.data&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}_buildElement(){var e=this.element,t=this.options;for(e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);t.height&&(t.height=isNaN(t.height)?t.height:t.height+"px",e.style.height=t.height),!1!==t.minHeight&&(t.minHeight=isNaN(t.minHeight)?t.minHeight:t.minHeight+"px",e.style.minHeight=t.minHeight),!1!==t.maxHeight&&(t.maxHeight=isNaN(t.maxHeight)?t.maxHeight:t.maxHeight+"px",e.style.maxHeight=t.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser();for(let e in this.modulesCore){this.modulesCore[e].initialize()}if("string"==typeof t.placeholder){var i=document.createElement("div");i.classList.add("tabulator-placeholder");var s=document.createElement("span");s.innerHTML=t.placeholder,i.appendChild(s),t.placeholder=i}e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),t.footerElement&&this.footerManager.activate(),t.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data);for(let e in this.modulesRegular){this.modulesRegular[e].initialize()}this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built"),this.externalEvents.dispatch("tableBuilt")}_loadInitialData(){this.dataLoader.load(this.options.data)}destroy(){var e=this.element;for(Re.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.rows.forEach((function(e){e.wipe()})),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[];e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")}_detectBrowser(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}blockRedraw(){return this.rowManager.blockRedraw()}restoreRedraw(){return this.rowManager.restoreRedraw()}setDataFromLocalFile(e){return new Promise(((t,i)=>{var s=document.createElement("input");s.type="file",s.accept=e||".json,application/json",s.addEventListener("change",(e=>{var o,n=s.files[0],r=new FileReader;r.readAsText(n),r.onload=e=>{try{o=JSON.parse(r.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void i(e)}this.setData(o).then((e=>{t(e)})).catch((e=>{t(e)}))},r.onerror=e=>{console.warn("File Load Error - Unable to read file"),i()}})),s.click()}))}setData(e,t,i){return this.dataLoader.load(e,t,i,!1)}clearData(){this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}getData(e){return this.rowManager.getData(e)}getDataCount(e){return this.rowManager.getDataCount(e)}replaceData(e,t,i){return this.dataLoader.load(e,t,i,!0,!0)}updateData(e){var t=0;return new Promise(((i,s)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((e=>{var s=this.rowManager.findRow(e[this.options.index]);s&&(t++,s.updateData(e).then((()=>{--t||i()})))})):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))}))}addData(e,t,i){return new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?this.rowManager.addRows(e,t,i).then((e=>{var t=[];e.forEach((function(e){t.push(e.getComponent())})),s(t)})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}updateOrAddData(e){var t=[],i=0;return new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);i++,o?o.updateData(e).then((()=>{i--,t.push(o.getComponent()),i||s(t)})):this.rowManager.addRows(e).then((e=>{i--,t.push(e[0].getComponent()),i||s(t)}))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}getRow(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}getRowFromPosition(e,t){var i=this.rowManager.getRowFromPosition(e,t);return i?i.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}deleteRow(e){var t=[];Array.isArray(e)||(e=[e]);for(let i of e){let e=this.rowManager.findRow(i,!0);if(!e)return console.error("Delete Error - No matching row found:",i),Promise.reject("Delete Error - No matching row found");t.push(e)}return t.sort(((e,t)=>this.rowManager.rows.indexOf(e)>this.rowManager.rows.indexOf(t)?1:-1)),t.forEach((e=>{e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}addRow(e,t,i){return"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i).then((e=>e[0].getComponent()))}updateOrAddRow(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>i.getComponent())):this.rowManager.addRows(t).then((e=>e[0].getComponent()))}updateRow(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>{resolve(i.getComponent())})):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}scrollToRow(e,t,i){var s=this.rowManager.findRow(e);return s?this.rowManager.scrollToRow(s,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}moveRow(e,t,i){var s=this.rowManager.findRow(e);s?s.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}getRows(e){return this.rowManager.getComponents(e)}getRowPosition(e,t){var i=this.rowManager.findRow(e);return i?this.rowManager.getRowPosition(i,t):(console.warn("Position Error - No matching row found:",e),!1)}setColumns(e){this.columnManager.setColumns(e)}getColumns(e){return this.columnManager.getComponents(e)}getColumn(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}getColumnDefinitions(){return this.columnManager.getDefinitionTree()}showColumn(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}hideColumn(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}toggleColumn(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()}addColumn(e,t,i){var s=this.columnManager.findColumn(i);return this.columnManager.addColumn(e,t,s).then((e=>e.getComponent()))}deleteColumn(e){var t=this.columnManager.findColumn(e);return t?t.delete():(console.warn("Column Delete Error - No matching column found:",e),Promise.reject())}updateColumnDefinition(e,t){var i=this.columnManager.findColumn(e);return i?i.updateDefinition(t):(console.warn("Column Update Error - No matching column found:",e),Promise.reject())}moveColumn(e,t,i){var s=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);s?o?this.columnManager.moveColumn(s,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}scrollToColumn(e,t,i){return new Promise(((s,o)=>{var n=this.columnManager.findColumn(e);return n?this.columnManager.scrollToColumn(n,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}redraw(e){this.columnManager.redraw(e),this.rowManager.redraw(e)}setHeight(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw()}on(e,t){this.externalEvents.subscribe(e,t)}off(e,t){this.externalEvents.unsubscribe(e,t)}dispatchEvent(){Array.from(arguments).shift();this.externalEvents.dispatch(...arguments)}modExists(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}module(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}Fe.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,height:!1,minHeight:!1,maxHeight:!1,columnMaxWidth:!1,columnHeaderVertAlign:"top",columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",tooltipGenerationMode:"load",footerElement:!1,index:"id",textDirection:"auto",addRowPos:"bottom",headerVisible:!0,renderVertical:"virtual",renderHorizontal:"basic",renderVerticalBuffer:0,scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataSendParams:{},dataReceiveParams:{}},new Se(Fe);class He extends Fe{}new Se(He,le);class Pe{constructor(e){this.type=e,this.element=this._createElement()}_createElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e}getElement(){return this.element}getComponent(){return!1}getData(){return{}}getHeight(){return this.element.outerHeight}initialize(){}reinitialize(){}normalizeHeight(){}generateCells(){}reinitializeHeight(){}calcHeight(){}setCellHeight(){}clearCellHeight(){}}export{d as CalcComponent,c as CellComponent,m as ColumnComponent,A as GroupComponent,t as Module,Pe as PseudoRow,de as Renderer,b as RowComponent,Fe as Tabulator,He as TabulatorFull,le as modules}; +/* Tabulator v5.0.1 (c) Oliver Folkerd 2021 */ +class e{constructor(e){this.table=e}reloadData(e,t){return this.table.dataLoader.load(e,void 0,void 0,void 0,t)}langText(){return this.table.modules.localize.getText(...arguments)}langBind(){return this.table.modules.localize.bind(...arguments)}langLocale(){return this.table.modules.localize.getLocale(...arguments)}commsConnections(){return this.table.modules.comms.getConnections(...arguments)}commsSend(){return this.table.modules.comms.send(...arguments)}layoutMode(){return this.table.modules.layout.getMode()}layoutRefresh(){return this.table.modules.layout.layout()}subscribe(){return this.table.eventBus.subscribe(...arguments)}unsubscribe(){return this.table.eventBus.unsubscribe(...arguments)}subscribed(e){return this.table.eventBus.subscribed(e)}subscriptionChange(){return this.table.eventBus.subscriptionChange(...arguments)}dispatch(){return this.table.eventBus.dispatch(...arguments)}chain(){return this.table.eventBus.chain(...arguments)}confirm(){return this.table.eventBus.confirm(...arguments)}dispatchExternal(){return this.table.externalEvents.dispatch(...arguments)}subscribedExternal(e){return this.table.externalEvents.subscribed(e)}subscriptionChangeExternal(){return this.table.externalEvents.subscriptionChange(...arguments)}options(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}setOption(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}module(e){return this.table.module(e)}}class t extends e{constructor(e,t){super(e),this._handler=null}initialize(){}registerTableOption(e,t){this.table.optionsList.register(e,t)}registerColumnOption(e,t){this.table.columnManager.optionsList.register(e,t)}registerTableFunction(e,t){void 0===this.table[e]?this.table[e]=t:console.warn("Unable to bind table function, name already in use",e)}registerComponentFunction(e,t,i){return this.table.componentFunctionBinder.bind(e,t,i)}registerDataHandler(e,t){this.table.rowManager.registerDataPipelineHandler(e,t),this._handler=e}registerDisplayHandler(e,t){this.table.rowManager.registerDisplayPipelineHandler(e,t),this._handler=e}refreshData(e,t){t||(t=this._handler),t&&this.table.rowManager.refreshActiveData(t,!1,e)}}class s{static elVisible(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}static elOffset(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}static deepClone(e){var t=Object.assign(Array.isArray(e)?[]:{},e);for(var i in e)null!=e[i]&&"object"==typeof e[i]&&(e[i]instanceof Date?t[i]=new Date(e[i]):t[i]=this.deepClone(e[i]));return t}}class o extends t{constructor(e){super(e),this.allowedTypes=["","data","download","clipboard","print","htmlOutput"],this.registerColumnOption("accessor"),this.registerColumnOption("accessorParams"),this.registerColumnOption("accessorData"),this.registerColumnOption("accessorDataParams"),this.registerColumnOption("accessorDownload"),this.registerColumnOption("accessorDownloadParams"),this.registerColumnOption("accessorClipboard"),this.registerColumnOption("accessorClipboardParams"),this.registerColumnOption("accessorPrint"),this.registerColumnOption("accessorPrintParams"),this.registerColumnOption("accessorHtmlOutput"),this.registerColumnOption("accessorHtmlOutputParams")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((function(s){var o,n="accessor"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupAccessor(e.definition[n]))&&(t=!0,i[n]={accessor:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.accessor=i)}lookupAccessor(e){var t=!1;switch(typeof e){case"string":o.accessors[e]?t=o.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t){var i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),o=e.getComponent(),n=s.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var s,r,a,l;e.modules.accessor&&(r=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(s=e.getFieldValue(n))&&(l=e.getComponent(),a="function"==typeof r.params?r.params(s,n,t,l,o):r.params,e.setFieldValue(n,r.accessor(s,n,t,a,l,o)))})),n}}o.moduleName="accessor",o.accessors={};function n(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(n(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(n(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}function r(e){var t=n(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}var a={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var s=this.generateParamsList(i),o=new FormData;return s.forEach((function(e){o.append(e.key,e.value)})),o}}};class l extends t{constructor(e){super(e),this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderPromise=!1,this.registerTableOption("ajaxURL",!1),this.registerTableOption("ajaxURLGenerator",!1),this.registerTableOption("ajaxParams",{}),this.registerTableOption("ajaxConfig","get"),this.registerTableOption("ajaxContentType","form"),this.registerTableOption("ajaxRequestFunc",!1),this.registerTableOption("ajaxRequesting",(function(){})),this.registerTableOption("ajaxResponse",!1),this.contentTypeFormatters=l.contentTypeFormatters}initialize(){this.loaderPromise=this.table.options.ajaxRequestFunc||l.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||l.defaultURLGenerator,this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.registerTableFunction("getAjaxUrl",this.getUrl.bind(this)),this.subscribe("data-loading",this.requestDataCheck.bind(this)),this.subscribe("data-load",this.requestData.bind(this))}requestDataCheck(e,t,i,s){return!((e||!this.url)&&"string"!=typeof e)}requestData(e,t,i,s,o){return this.requestDataCheck(e)?(e&&this.setUrl(e),t&&this.setParams(t,!0),i&&this.setConfig(i),this.sendRequest()):o}setParams(e,t){if(t){this.params=this.params||{};for(let t in e)this.params[t]=e[t]}else this.params=e}getParams(){return this.params||{}}setConfig(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(let t in e)this.config[t]=e[t]}_loadDefaultConfig(e){if(!this.config||e){this.config={};for(let e in l.defaultConfig)this.config[e]=l.defaultConfig[e]}}setUrl(e){this.url=e}getUrl(){return this.url}sendRequest(e){var t=this.url;return this._loadDefaultConfig(),!1!==this.table.options.ajaxRequesting.call(this.table,this.url,this.params)?this.loaderPromise(t,this.config,this.params).then((e=>(this.table.options.ajaxResponse&&(e=this.table.options.ajaxResponse.call(this.table,this.url,this.params,e)),e))):Promise.reject()}}l.moduleName="ajax",l.defaultConfig={method:"GET"},l.defaultURLGenerator=function(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+r(i))),e},l.defaultLoaderPromise=function(e,t,i){var s;return new Promise(((o,n)=>{if(e=this.urlGenerator.call(this.table,e,t,i),"GET"!=t.method.toUpperCase())if(s="object"==typeof this.table.options.ajaxContentType?this.table.options.ajaxContentType:this.contentTypeFormatters[this.table.options.ajaxContentType]){for(var r in s.headers)t.headers||(t.headers={}),void 0===t.headers[r]&&(t.headers[r]=s.headers[r]);t.body=s.body.call(this,e,t,i)}else console.warn("Ajax Error - Invalid ajaxContentType value:",this.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers.Origin&&(t.headers.Origin=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then((e=>{e.ok?e.json().then((e=>{o(e)})).catch((e=>{n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))})).catch((e=>{console.error("Ajax Load Error - Connection Error: ",e),n(e)}))):(console.warn("Ajax Load Error - No URL Set"),o([]))}))},l.contentTypeFormatters=a;class h extends t{constructor(e){super(e),this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0,this.registerTableOption("clipboard",!1),this.registerTableOption("clipboardCopyStyled",!0),this.registerTableOption("clipboardCopyConfig",!1),this.registerTableOption("clipboardCopyFormatter",!1),this.registerTableOption("clipboardCopyRowRange","active"),this.registerTableOption("clipboardPasteParser","table"),this.registerTableOption("clipboardPasteAction","insert"),this.registerColumnOption("clipboard"),this.registerColumnOption("titleClipboard")}initialize(){this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(e=>{var t,i;if(!this.blocked){if(e.preventDefault(),this.customSelection)t=this.customSelection,this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t));else{var s=this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig,this.table.options.clipboardCopyStyled,this.rowRange,"clipboard");t=(i=this.table.modules.export.genereateHTMLTable(s))?this.generatePlainContent(s):"",this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t),i=this.table.options.clipboardCopyFormatter("html",i))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",t):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",t),i&&e.clipboardData.setData("text/html",i)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",t),i&&e.originalEvent.clipboardData.setData("text/html",i)),this.dispatchExternal("clipboardCopied",t,i),this.reset()}})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(e=>{this.paste(e)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}reset(){this.blocked=!0,this.customSelection=!1}generatePlainContent(e){var t=[];return e.forEach((e=>{var i=[];e.columns.forEach((t=>{var s="";if(t)if("group"===e.type&&(t.value=t.component.getKey()),null===t.value)s="";else switch(typeof t.value){case"object":s=JSON.stringify(t.value);break;case"undefined":s="";break;default:s=t.value}i.push(s)})),t.push(i.join("\t"))})),t.join("\n")}copy(e,t){var i,s;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?((e=document.createRange()).selectNodeContents(this.table.element),(i=window.getSelection()).toString()&&t&&(this.customSelection=i.toString()),i.removeAllRanges(),i.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((s=document.body.createTextRange()).moveToElementText(this.table.element),s.select()),document.execCommand("copy"),i&&i.removeAllRanges())}setPasteAction(e){switch(typeof e){case"string":this.pasteAction=h.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}}setPasteParser(e){switch(typeof e){case"string":this.pasteParser=h.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}}paste(e){var t,i,s;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),s=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,s)):this.dispatchExternal("clipboardPasteError",t))}mutateData(e){var t=[];return Array.isArray(e)?e.forEach((e=>{t.push(this.table.modules.mutator.transformRow(e,"clipboard"))})):t=e,t}checkPaseOrigin(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t}getPasteData(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t}}h.moduleName="clipboard",h.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},h.pasteParsers={table:function(e){var t=[],i=!0,s=this.table.columnManager.columns,o=[],n=[];return(e=e.split("\n")).forEach((function(e){t.push(e.split("\t"))})),!(!t.length||1===t.length&&t[0].length<2)&&(t[0].forEach((function(e){var t=s.find((function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()}));t?o.push(t):i=!1})),i||(i=!0,o=[],t[0].forEach((function(e){var t=s.find((function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()}));t?o.push(t):i=!1})),i||(o=this.table.columnManager.columnsByIndex)),i&&t.shift(),t.forEach((function(e){var t={};e.forEach((function(e,i){o[i]&&(t[o[i].field]=e)})),n.push(t)})),n)}};class d{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getTable(){return this._row.table}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}_getSelf(){return this._row}}class c{constructor(e){return this._cell=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}getValue(){return this._cell.getValue()}getOldValue(){return this._cell.getOldValue()}getInitialValue(){return this._cell.initialValue}getElement(){return this._cell.getElement()}getRow(){return this._cell.row.getComponent()}getData(){return this._cell.row.getData()}getField(){return this._cell.column.getField()}getColumn(){return this._cell.column.getComponent()}setValue(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}restoreOldValue(){this._cell.setValueActual(this._cell.getOldValue())}restoreInitialValue(){this._cell.setValueActual(this._cell.initialValue)}checkHeight(){this._cell.checkHeight()}getTable(){return this._cell.table}_getSelf(){return this._cell}}class u extends e{constructor(e,t){super(e.table),this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.initialValue,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.loaded=!1,this.build()}build(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}generateElement(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element}_configureCell(){var e=this.element,t=this.column.getField();(e.style.textAlign=this.column.hozAlign,this.column.vertAlign&&(e.style.display="inline-flex",e.style.alignItems={top:"flex-start",bottom:"flex-end",middle:"center"}[this.column.vertAlign]||"",this.column.hozAlign&&(e.style.justifyContent={left:"flex-start",right:"flex-end",center:"center"}[this.column.hozAlign]||"")),t&&e.setAttribute("tabulator-field",t),this.column.definition.cssClass)&&this.column.definition.cssClass.split(" ").forEach((t=>{e.classList.add(t)}));"hover"===this.table.options.tooltipGenerationMode&&e.addEventListener("mouseenter",(e=>{this._generateTooltip()})),this.dispatch("cell-init",this),this.column.visible||this.hide()}_generateContents(){var e;switch(typeof(e=this.chain("cell-format",this,null,(()=>this.element.innerHTML=this.value)))){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}}cellRendered(){this.dispatch("cell-rendered",this)}_generateTooltip(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")}getElement(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}getValue(){return this.value}getOldValue(){return this.oldValue}setValue(e,t){this.setValueProcessData(e,t)&&(this.dispatch("cell-value-updated",this),this.cellRendered(),this.dispatchExternal("cellEdited",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()))}setValueProcessData(e,t){var i=!1;return this.value!=e&&(i=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),i&&this.dispatch("cell-value-changed",this),i}setValueActual(e){this.oldValue=this.value,this.value=e,this.dispatch("cell-value-save-before",this),this.column.setFieldValue(this.row.data,e),this.dispatch("cell-value-save-after",this),this.loaded&&this.layoutElement()}layoutElement(){this._generateContents(),this._generateTooltip(),this.dispatch("cell-layout",this)}setWidth(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}clearWidth(){this.width="",this.element.style.width=""}getWidth(){return this.width||this.element.offsetWidth}setMinWidth(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}setMaxWidth(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}checkHeight(){this.row.reinitializeHeight()}clearHeight(){this.element.style.height="",this.height=null}setHeight(){this.height=this.row.height,this.element.style.height=this.row.heightStyled}getHeight(){return this.height||this.element.offsetHeight}show(){this.element.style.display=this.column.vertAlign?"inline-flex":""}hide(){this.element.style.display="none"}delete(){this.dispatch("cell-delete",this),!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}}getIndex(){return this.row.getCellIndex(this)}getComponent(){return this.component||(this.component=new c(this)),this.component}}class m{constructor(e){return this._column=e,this.type="ColumnComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._column.table.componentFunctionBinder.handle("column",e._column,t)}})}getElement(){return this._column.getElement()}getDefinition(){return this._column.getDefinition()}getField(){return this._column.getField()}getCells(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}isVisible(){return this._column.visible}show(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}hide(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}toggle(){this._column.visible?this.hide():this.show()}delete(){return this._column.delete()}getSubColumns(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}getParentColumn(){return this._column.parent instanceof Column&&this._column.parent.getComponent()}_getSelf(){return this._column}scrollTo(){return this._column.table.columnManager.scrollToColumn(this._column)}getTable(){return this._column.table}move(e,t){var i=this._column.table.columnManager.findColumn(e);i?this._column.table.columnManager.moveColumn(this._column,i,t):console.warn("Move Error - No matching column found:",i)}getNextColumn(){var e=this._column.nextColumn();return!!e&&e.getComponent()}getPrevColumn(){var e=this._column.prevColumn();return!!e&&e.getComponent()}updateDefinition(e){return this._column.updateDefinition(e)}getWidth(){return this._column.getWidth()}setWidth(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.renderer.rerenderColumns(!0),t}}var p={title:void 0,field:void 0,columns:void 0,visible:void 0,hozAlign:void 0,vertAlign:void 0,width:void 0,minWidth:40,maxWidth:void 0,tooltip:void 0,cssClass:void 0,variableHeight:void 0,headerTooltip:void 0,headerVertical:void 0,headerHozAlign:void 0,editableTitle:void 0};class g extends e{constructor(e,t){super(t.table),this.definition=e,this.parent=t,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleHolderElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.mapDefinitions(),this.setField(this.definition.field),this.modules={},this.width=null,this.widthStyled="",this.maxWidth=null,this.maxWidthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this.definition.columns?(this.isGroup=!0,this.definition.columns.forEach(((e,t)=>{var i=new g(e,this);this.attachColumn(i)})),this.checkColumnVisibility()):t.registerColumnField(this),this._initialize(),this.bindModuleColumns()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e}createGroupElement(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}mapDefinitions(){var e=this.table.options.columnDefaults;if(e)for(let t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(g.defaultOptionList,this.definition)}checkDefinition(){Object.keys(this.definition).forEach((e=>{-1===g.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(this.field||this.definition.title)+"' column:",e)}))}setField(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData}registerColumnPosition(e){this.parent.registerColumnPosition(e)}registerColumnField(e){this.parent.registerColumnField(e)}reRegisterPosition(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}_mapDepricatedFunctionality(){}setTooltip(){var e=this.definition,t=void 0===e.headerTooltip?e.tooltip:e.headerTooltip;t?!0===t?e.field?this.langBind("columns|"+e.field,(t=>{this.element.setAttribute("title",t||e.title)})):this.element.setAttribute("title",e.title):("function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")}_initialize(){for(var e=this.definition;this.element.firstChild;)this.element.removeChild(this.element.firstChild);e.headerVertical&&(this.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&this.element.classList.add("tabulator-col-vertical-flip")),this.contentElement=this._bindEvents(),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.setTooltip(),this.dispatch("column-init",this),this.element.addEventListener("mouseenter",(e=>{this.setTooltip()}))}_bindEvents(){var e,t,i,s=this.definition;"function"==typeof s.headerClick&&this.element.addEventListener("click",(e=>{s.headerClick(e,this.getComponent())})),"function"==typeof s.headerDblClick&&this.element.addEventListener("dblclick",(e=>{s.headerDblClick(e,this.getComponent())})),"function"==typeof s.headerContext&&this.element.addEventListener("contextmenu",(e=>{s.headerContext(e,this.getComponent())})),"function"==typeof s.headerTap&&(i=!1,this.element.addEventListener("touchstart",(e=>{i=!0}),{passive:!0}),this.element.addEventListener("touchend",(e=>{i&&s.headerTap(e,this.getComponent()),i=!1}))),"function"==typeof s.headerDblTap&&(e=null,this.element.addEventListener("touchend",(t=>{e?(clearTimeout(e),e=null,s.headerDblTap(t,this.getComponent())):e=setTimeout((()=>{clearTimeout(e),e=null}),300)}))),"function"==typeof s.headerTapHold&&(t=null,this.element.addEventListener("touchstart",(e=>{clearTimeout(t),t=setTimeout((function(){clearTimeout(t),t=null,i=!1,s.headerTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(e=>{clearTimeout(t),t=null})))}_buildColumnHeader(){var e=this.definition;this.table;(this.dispatch("column-layout",this),void 0!==e.visible&&(e.visible?this.show(!0):this.hide(!0)),e.cssClass)&&e.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));e.field&&this.element.setAttribute("tabulator-field",e.field),this.setMinWidth(parseInt(e.minWidth)),e.maxWidth&&this.setMaxWidth(parseInt(e.maxWidth)),this.reinitializeWidth(),this.tooltip=this.definition.tooltip,this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}_buildColumnHeaderContent(){this.definition,this.table;var e=document.createElement("div");return e.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),e.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),e}_buildColumnHeaderTitle(){var e=this.definition,t=document.createElement("div");if(t.classList.add("tabulator-col-title"),e.editableTitle){var i=document.createElement("input");i.classList.add("tabulator-title-editor"),i.addEventListener("click",(e=>{e.stopPropagation(),i.focus()})),i.addEventListener("change",(()=>{e.title=i.value,this.dispatchExternal("columnTitleChanged",this.getComponent())})),t.appendChild(i),e.field?this.langBind("columns|"+e.field,(t=>{i.value=t||e.title||" "})):i.value=e.title||" "}else e.field?this.langBind("columns|"+e.field,(i=>{this._formatColumnHeaderTitle(t,i||e.title||" ")})):this._formatColumnHeaderTitle(t,e.title||" ");return t}_formatColumnHeaderTitle(e,t){var i=this.chain("column-format",[this,t,e],null,(()=>t));switch(typeof i){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=i}}_buildGroupHeader(){(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass)&&this.definition.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}_getFlatData(e){return e[this.field]}_getNestedData(e){var t,i=e,s=this.fieldStructure,o=s.length;for(let e=0;e-1&&this.columns.splice(t,1),this.columns.length||this.delete()}setWidth(e){this.widthFixed=!0,this.setWidthActual(e)}setWidthActual(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.maxWidth&&(e=Math.min(this.maxWidth,e)),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach((function(e){e.setWidth()})),this.parent.isGroup&&this.parent.matchChildWidths(),this.dispatch("column-width",this)}checkCellHeights(){var e=[];this.cells.forEach((function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)})),e.forEach((function(e){e.calcHeight()})),e.forEach((function(e){e.setCellHeight()}))}getWidth(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}getHeight(){return this.element.offsetHeight}setMinWidth(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}setMaxWidth(e){this.maxWidth=e,this.maxWidthStyled=e?e+"px":"",this.element.style.maxWidth=this.maxWidthStyled,this.cells.forEach((function(e){e.setMaxWidth()}))}delete(){return new Promise(((e,t)=>{this.isGroup&&this.columns.forEach((function(e){e.delete()})),this.dispatch("column-delete",this);var i=this.cells.length;for(let e=0;e-1&&this._nextVisibleColumn(e+1)}_nextVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}prevColumn(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}_prevVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}reinitializeWidth(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.dispatch("column-width-fit-before",this),this.fitToData(),this.dispatch("column-width-fit-after",this)}fitToData(){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((e=>{e.clearWidth()})));var e=this.element.offsetWidth;this.width&&this.widthFixed||(this.cells.forEach((t=>{var i=t.getWidth();i>e&&(e=i)})),e&&this.setWidthActual(e+1))}}updateDefinition(e){var t;return this.isGroup||this.parent.isGroup?(console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"),Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(t=Object.assign({},this.getDefinition()),t=Object.assign(t,e),this.table.columnManager.addColumn(t,!1,this).then((e=>(t.field==this.field&&(this.field=!1),this.delete().then((()=>e.getComponent()))))))}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}getComponent(){return this.component||(this.component=new m(this)),this.component}}g.defaultOptionList=p;class b{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}getIndex(){return this._row.getData("data")[this._row.table.options.index]}getPosition(e){return this._row.table.rowManager.getRowPosition(this._row,e)}delete(){return this._row.delete()}scrollTo(){return this._row.table.rowManager.scrollToRow(this._row)}move(e,t){this._row.moveToRow(e,t)}update(e){return this._row.updateData(e)}normalizeHeight(){this._row.normalizeHeight(!0)}_getSelf(){return this._row}reformat(){return this._row.reinitialize()}getTable(){return this._row.table}getNextRow(){var e=this._row.nextRow();return e?e.getComponent():e}getPrevRow(){var e=this._row.prevRow();return e?e.getComponent():e}}class f extends e{constructor(e,t,i="row"){super(t.table),this.parent=t,this.data={},this.type=i,this.element=!1,this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.component=null,this.created=!1,this.setData(e)}create(){this.created||(this.created=!0,this.generateElement())}createElement(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}getElement(){return this.create(),this.element}detachElement(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}generateElement(){this.createElement(),this.dispatch("row-init",this)}generateCells(){this.cells=this.table.columnManager.generateCells(this)}initialize(e){if(this.create(),!this.initialized||e){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.dispatch("row-layout-before",this),this.generateCells(),this.table.columnManager.renderer.renderRowCells(this),e&&this.normalizeHeight(),this.dispatch("row-layout",this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.initialized=!0,this.dispatch("row-layout-after",this)}else this.table.columnManager.renderer.rerenderRowCells(this)}reinitializeHeight(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}reinitialize(e){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),this.element&&null!==this.element.offsetParent&&this.initialize(!0),this.dispatch("row-relayout",this)}calcHeight(e){var t=0,i=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach((function(e){var i=e.getHeight();i>t&&(t=i)})),this.height=e?Math.max(t,i):this.manualHeight?this.height:Math.max(t,i),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight}setCellHeight(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}clearCellHeight(){this.cells.forEach((function(e){e.clearHeight()}))}normalizeHeight(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}setHeight(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}getHeight(){return this.outerHeight}getWidth(){return this.element.offsetWidth}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}setData(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}updateData(e){var t,i=this.element&&s.elVisible(this.element),o={};return new Promise(((s,n)=>{for(var r in"string"==typeof e&&(e=JSON.parse(e)),this.dispatch("row-data-save-before",this),this.subscribed("row-data-changing")&&(o=Object.assign(o,this.data),o=Object.assign(o,e)),t=this.chain("row-data-changing",[this,o,e],null,e))this.data[r]=t[r];for(var r in this.dispatch("row-data-save-after",this),e){this.table.columnManager.getColumnsByFieldRoot(r).forEach((e=>{let s=this.getCell(e.getField());if(s){let o=e.getFieldValue(t);s.getValue()!=o&&(s.setValueProcessData(o),i&&s.cellRendered())}}))}i?(this.normalizeHeight(!0),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent())):(this.initialized=!1,this.height=0,this.heightStyled=""),this.dispatch("row-data-changed",this,i,e),this.dispatchExternal("rowUpdated",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),s()}))}getData(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}getCell(e){return e=this.table.columnManager.findColumn(e),this.initialized||this.generateCells(),this.cells.find((function(t){return t.column===e}))}getCellIndex(e){return this.cells.findIndex((function(t){return t===e}))}findCell(e){return this.cells.find((t=>t.element===e))}getCells(){return this.initialized||this.generateCells(),this.cells}nextRow(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}prevRow(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}moveToRow(e,t){var i=this.table.rowManager.findRow(e);i?(this.table.rowManager.moveRowActual(this,i,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)}delete(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}deleteActual(e){this.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}detatchModules(){this.dispatch("row-deleting",this)}deleteCells(){var e=this.cells.length;for(let t=0;ts||null===s)&&(s=e)})),null!==s?!1!==o?s.toFixed(o):s:""},min:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e)){this.recalcGroup(e)})))}recalcGroup(e){var t,i;e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),i=this.generateRowData("bottom",t),e.calcs.bottom.updateData(i),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),i=this.generateRowData("top",t),e.calcs.top.updateData(i),e.calcs.top.reinitialize()))}generateTopRow(e){return this.generateRow("top",this.rowsToData(e))}generateBottomRow(e){return this.generateRow("bottom",this.rowsToData(e))}rowsToData(e){var t=[];return e.forEach((e=>{if(t.push(e.getData()),this.table.options.dataTree&&this.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree.open){var i=this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(e));t=t.concat(i)}})),t}generateRow(e,t){var i,s=this.generateRowData(e,t);return this.table.modExists("mutator")&&this.table.modules.mutator.disable(),i=new f(s,this,"calc"),this.table.modExists("mutator")&&this.table.modules.mutator.enable(),i.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),i.component=!1,i.getComponent=()=>(i.component||(i.component=new d(this)),i.component),i.generateCells=()=>{var t=[];this.table.columnManager.columnsByIndex.forEach((s=>{this.genColumn.setField(s.getField()),this.genColumn.hozAlign=s.hozAlign,s.definition[e+"CalcFormatter"]&&this.table.modExists("format")?this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter(s.definition[e+"CalcFormatter"]),params:s.definition[e+"CalcFormatterParams"]||{}}:this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter("plaintext"),params:{}},this.genColumn.definition.cssClass=s.definition.cssClass;var o=new u(this.genColumn,i);o.getElement(),o.column=s,o.setWidth(),s.cells.push(o),t.push(o),s.visible||o.hide()})),i.cells=t},i}generateRowData(e,t){var i,s,o={},n="top"==e?this.topCalcs:this.botCalcs,r="top"==e?"topCalc":"botCalc";return n.forEach((function(e){var n=[];e.modules.columnCalcs&&e.modules.columnCalcs[r]&&(t.forEach((function(t){n.push(e.getFieldValue(t))})),s=r+"Params",i="function"==typeof e.modules.columnCalcs[s]?e.modules.columnCalcs[s](n,t):e.modules.columnCalcs[s],e.setFieldValue(o,e.modules.columnCalcs[r](n,t,i)))})),o}hasTopCalcs(){return!!this.topCalcs.length}hasBottomCalcs(){return!!this.botCalcs.length}redraw(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)}getResults(){var e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.getGroups(!0).forEach((t=>{e[t.getKey()]=this.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e}getGroupResults(e){var t=e._getSelf(),i=e.getSubGroups(),s={};return i.forEach((e=>{s[e.getKey()]=this.getGroupResults(e)})),{top:t.calcs.top?t.calcs.top.getData():{},bottom:t.calcs.bottom?t.calcs.bottom.getData():{},groups:s}}}w.moduleName="columnCalcs",w.calculations=v;class C extends t{constructor(e){super(e),this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0,this.registerTableOption("dataTree",!1),this.registerTableOption("dataTreeFilter",!0),this.registerTableOption("dataTreeSort",!0),this.registerTableOption("dataTreeElementColumn",!1),this.registerTableOption("dataTreeBranchElement",!0),this.registerTableOption("dataTreeChildIndent",9),this.registerTableOption("dataTreeChildField","_children"),this.registerTableOption("dataTreeCollapseElement",!1),this.registerTableOption("dataTreeExpandElement",!1),this.registerTableOption("dataTreeStartExpanded",!1),this.registerTableOption("dataTreeChildColumnCalcs",!1),this.registerTableOption("dataTreeSelectPropagate",!1),this.registerComponentFunction("row","treeCollapse",this.collapseRow.bind(this)),this.registerComponentFunction("row","treeExpand",this.expandRow.bind(this)),this.registerComponentFunction("row","treeToggle",this.toggleRow.bind(this)),this.registerComponentFunction("row","getTreeParent",this.getTreeParent.bind(this)),this.registerComponentFunction("row","getTreeChildren",this.getRowChildren.bind(this)),this.registerComponentFunction("row","addTreeChild",this.addTreeChildRow.bind(this))}initialize(){if(this.table.options.dataTree){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),i=this.table.options;switch(this.field=i.dataTreeChildField,this.indent=i.dataTreeChildIndent,this.elementField=i.dataTreeElementColumn||!!t&&t.field,i.dataTreeBranchElement&&(!0===i.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof i.dataTreeBranchElement?((e=document.createElement("div")).innerHTML=i.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=i.dataTreeBranchElement),i.dataTreeCollapseElement?"string"==typeof i.dataTreeCollapseElement?((e=document.createElement("div")).innerHTML=i.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=i.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="
"),i.dataTreeExpandElement?"string"==typeof i.dataTreeExpandElement?((e=document.createElement("div")).innerHTML=i.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=i.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
"),typeof i.dataTreeStartExpanded){case"boolean":this.startOpen=function(e,t){return i.dataTreeStartExpanded};break;case"function":this.startOpen=i.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return i.dataTreeStartExpanded[t]}}this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("row-relayout",this.layoutRow.bind(this)),this.subscribe("row-deleted",this.rowDelete.bind(this),0),this.subscribe("row-data-changed",this.rowDataChanged.bind(this),10),this.subscribe("column-moving-rows",this.columnMoving.bind(this)),this.registerDisplayHandler(this.getRows.bind(this),30)}}getRowChildren(e){return this.getTreeChildren(e,!0)}columnMoving(){var e=[];return this.table.rowManager.rows.forEach((t=>{e=e.concat(this.getTreeChildren(t,!1,!0))})),e}rowDataChanged(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}initializeRow(e){var t=e.getData()[this.field],i=Array.isArray(t),s=i||!i&&"object"==typeof t&&null!==t;!s&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!s&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!s&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:s}}reinitializeRowChildren(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}layoutRow(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,t),e.getElement().classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(i.branchEl,t.firstChild),this.table.rtl?i.branchEl.style.marginRight=(i.branchEl.offsetWidth+i.branchEl.style.marginLeft)*(i.index-1)+i.index*this.indent+"px":i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):this.table.rtl?t.style.paddingRight=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-right"))+i.index*this.indent+"px":t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")}generateControlElement(e,t){var i=e.modules.dataTree,s=(t=t||e.getCells()[0].getElement(),i.controlEl);!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.collapseRow(e)}))):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.expandRow(e)}))),i.controlEl.addEventListener("mousedown",(e=>{e.stopPropagation()})),s&&s.parentNode===t?s.parentNode.replaceChild(i.controlEl,s):t.insertBefore(i.controlEl,t.firstChild))}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}getRows(e){var t=[];return e.forEach(((e,i)=>{var s;t.push(e),e instanceof f&&(e.create(),(s=e.modules.dataTree.children).index||!1===s.children||this.getChildren(e).forEach((e=>{e.create(),t.push(e)})))})),t}getChildren(e,t){var i=e.modules.dataTree,s=[],o=[];return!1!==i.children&&(i.open||t)&&(Array.isArray(i.children)||(i.children=this.generateChildren(e)),s=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(i.children):i.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(s),s.forEach((e=>{o.push(e),this.getChildren(e).forEach((e=>{o.push(e)}))}))),o}generateChildren(e){var t=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach((i=>{var s=new f(i||{},this.table.rowManager);s.create(),s.modules.dataTree.index=e.modules.dataTree.index+1,s.modules.dataTree.parent=e,s.modules.dataTree.children&&(s.modules.dataTree.open=this.startOpen(s.getComponent(),s.modules.dataTree.index)),t.push(s)})),t}expandRow(e,t){var i=e.modules.dataTree;!1!==i.children&&(i.open=!0,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowExpanded",e.getComponent(),e.modules.dataTree.index))}collapseRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowCollapsed",e.getComponent(),e.modules.dataTree.index))}toggleRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}getTreeParent(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}getFilteredTreeChildren(e){var t=e.modules.dataTree,i=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),(this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(t.children):t.children).forEach((e=>{e instanceof f&&i.push(e)}))),i}rowDelete(e){var t,i=e.modules.dataTree.parent;i&&(!1!==(t=this.findChildIndex(e,i))&&i.data[this.field].splice(t,1),i.data[this.field].length||delete i.data[this.field],this.initializeRow(i),this.layoutRow(i)),this.refreshData(!0)}addTreeChildRow(e,t,i,s){var o=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==s&&!1!==(o=this.findChildIndex(s,e))&&e.data[this.field].splice(i?o:o+1,0,t),!1===o&&(i?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.refreshData(!0)}findChildIndex(e,t){var i=!1;return"object"==typeof e?e instanceof f?i=e.data:e instanceof RowComponent?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(i=t.modules.dataTree.children.find((t=>t instanceof f&&t.element===e)))&&(i=i.data):i=null!=e&&t.data[this.field].find((t=>t.data[this.table.options.index]==e)),i&&(Array.isArray(t.data[this.field])&&(i=t.data[this.field].indexOf(i)),-1==i&&(i=!1)),i}getTreeChildren(e,t,i){var s=e.modules.dataTree,o=[];return s.children&&(Array.isArray(s.children)||(s.children=this.generateChildren(e)),s.children.forEach((e=>{e instanceof f&&(o.push(t?e.getComponent():e),i&&(o=o.concat(this.getTreeChildren(e,t,i))))}))),o}checkForRestyle(e){e.row.cells.indexOf(e)||e.row.reinitialize()}getChildField(){return this.field}redrawNeeded(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}C.moduleName="dataTree";var E={csv:function(e,t,i){var s=t&&t.delimiter?t.delimiter:",",o=[],n=[];e.forEach((e=>{var t=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(((e,t)=>{e&&1===e.depth&&(n[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":e.columns.forEach((e=>{if(e){switch(typeof e.value){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}t.push('"'+String(e.value).split('"').join('""')+'"')}})),o.push(t.join(s))}})),n.length&&o.unshift(n.join(s)),o=o.join("\n"),t.bom&&(o="\ufeff"+o),i(o,"text/csv")},json:function(e,t,i){var s=[];e.forEach((e=>{var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getField()]=e.value)})),s.push(t)}})),i(s=JSON.stringify(s,null,"\t"),"application/json")},pdf:function(e,t,i){var s=[],o=[],n={},r=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},a=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},l=t.jsPDF||{},h=t&&t.title?t.title:"";function d(e,t){var i=[];return e.columns.forEach((e=>{var s;if(e){switch(typeof e.value){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}s={content:e.value,colSpan:e.width,rowSpan:e.height},t&&(s.styles=t),i.push(s)}else i.push("")})),i}l.orientation||(l.orientation=t.orientation||"landscape"),l.unit||(l.unit="pt"),e.forEach((e=>{switch(e.type){case"header":s.push(d(e));break;case"group":o.push(d(e,r));break;case"calc":o.push(d(e,a));break;case"row":o.push(d(e))}}));var c=new jspdf.jsPDF(l);t&&t.autoTable&&(n="function"==typeof t.autoTable?t.autoTable(c)||{}:t.autoTable),h&&(n.didDrawPage=function(e){c.text(h,40,30)}),n.head=s,n.body=o,c.autoTable(n),t&&t.documentProcessing&&t.documentProcessing(c),i(c.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,s){var o=i.sheetName||"Sheet1",n=XLSX.utils.book_new(),r=new e(this);function a(){var e=[],i=[],s={},o={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce(((e,t)=>e+(t&&t.width?t.width:1)),0):0,r:t.length}};return t.forEach(((t,s)=>{var o=[];t.columns.forEach((function(e,t){e?(o.push(e.value instanceof Date||"object"!=typeof e.value?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&i.push({s:{r:s,c:t},e:{r:s+e.height-1,c:t+e.width-1}})):o.push("")})),e.push(o)})),XLSX.utils.sheet_add_aoa(s,e),s["!ref"]=XLSX.utils.encode_range(o),i.length&&(s["!merges"]=i),s}if(n.SheetNames=[],n.Sheets={},i.sheetOnly)s(a());else{if(i.sheets)for(var l in i.sheets)!0===i.sheets[l]?(n.SheetNames.push(l),n.Sheets[l]=a()):(n.SheetNames.push(l),r.commsSend(i.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){n.Sheets[l]=e}}));else n.SheetNames.push(o),n.Sheets[o]=a();i.documentProcessing&&(n=i.documentProcessing(n)),s(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),s=0;s!=e.length;++s)i[s]=255&e.charCodeAt(s);return t}(XLSX.write(n,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.genereateHTMLTable(e),"text/html")}};class y extends t{constructor(e){super(e),this.registerTableOption("downloadReady",(function(e,t){return t})),this.registerTableOption("downloadConfig",{}),this.registerTableOption("downloadRowRange","active"),this.registerColumnOption("download"),this.registerColumnOption("titleDownload")}initialize(){this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}downloadToTab(e,t,i,s){this.download(e,t,i,s,!0)}download(e,t,i,s,o){var n=!1;if("function"==typeof e?n=e:y.downloaders[e]?n=y.downloaders[e]:console.warn("Download Error - No such download type found: ",e),n){var r=this.generateExportList(s);n.call(this.table,r,i||{},function(i,s){o?!0===o?this.triggerDownload(i,s,e,t,!0):o(i):this.triggerDownload(i,s,e,t)}.bind(this))}}generateExportList(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),i=this.table.options.groupHeaderDownload;return i&&!Array.isArray(i)&&(i=[i]),t.forEach((e=>{var t;"group"===e.type&&(t=e.columns[0],i&&i[e.indent]&&(t.value=i[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))})),t}triggerDownload(e,t,i,s,o){var n=document.createElement("a"),r=new Blob([e],{type:t});s=s||"Tabulator."+("function"==typeof i?"txt":i);(r=this.table.options.downloadReady(e,r))&&(o?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,s):(n.setAttribute("href",window.URL.createObjectURL(r)),n.setAttribute("download",s),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)),this.dispatchExternal("downloadComplete"))}commsReceived(e,t,i){switch(t){case"intercept":this.download(i.type,"",i.options,i.active,i.intercept)}}}function R(e,t){var i=t.mask,s=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",n=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var a=i[t];void 0!==a&&a!==n&&a!==s&&a!==o&&(e.value=e.value+""+a,r(t+1))}e.addEventListener("keydown",(t=>{var r=e.value.length,a=t.key;if(t.keyCode>46){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case s:if(a.toUpperCase()==a.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(a))return t.preventDefault(),t.stopPropagation(),!1;break;case n:break;default:if(a!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(i=>{i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}y.moduleName="download",y.downloaders=E;var x={input:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type",o.search?"search":"text"),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(e){null==n&&""!==r.value||r.value!==n?i(r.value)&&(n=r.value):s()}return r.value=void 0!==n?n:"",t((function(){r.focus({preventScroll:!0}),r.style.height="100%"})),r.addEventListener("change",a),r.addEventListener("blur",a),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s();break;case 35:case 36:e.stopPropagation()}})),o.mask&&R(r,o),r},textarea:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"hybrid",a=String(null!=n?n:""),l=((a.match(/(?:\r\n|\r|\n)/g)||[]).length,document.createElement("textarea")),h=0;if(l.style.display="block",l.style.padding="2px",l.style.height="100%",l.style.width="100%",l.style.boxSizing="border-box",l.style.whiteSpace="pre-wrap",l.style.resize="none",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),l.setAttribute(e,l.getAttribute(e)+o.elementAttributes["+"+e])):l.setAttribute(e,o.elementAttributes[e]);function d(t){null==n&&""!==l.value||l.value!==n?(i(l.value)&&(n=l.value),setTimeout((function(){e.getRow().normalizeHeight()}),300)):s()}return l.value=a,t((function(){l.focus({preventScroll:!0}),l.style.height="100%",l.scrollHeight,l.style.height=l.scrollHeight+"px",e.getRow().normalizeHeight()})),l.addEventListener("change",d),l.addEventListener("blur",d),l.addEventListener("keyup",(function(){l.style.height="";var t=l.scrollHeight;l.style.height=t+"px",t!=h&&(h=t,e.getRow().normalizeHeight())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 27:s();break;case 38:("editor"==r||"hybrid"==r&&l.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==r||"hybrid"==r&&l.selectionStart!==l.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&R(l,o),l},number:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"editor",a=document.createElement("input");if(a.setAttribute("type","number"),void 0!==o.max&&a.setAttribute("max",o.max),void 0!==o.min&&a.setAttribute("min",o.min),void 0!==o.step&&a.setAttribute("step",o.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),a.setAttribute(e,a.getAttribute(e)+o.elementAttributes["+"+e])):a.setAttribute(e,o.elementAttributes[e]);a.value=n;var l=function(e){h()};function h(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!==n?i(e)&&(n=e):s()}return t((function(){a.removeEventListener("blur",l),a.focus({preventScroll:!0}),a.style.height="100%",a.addEventListener("blur",l)})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:s();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&R(a,o),a},range:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type","range"),void 0!==o.max&&r.setAttribute("max",o.max),void 0!==o.min&&r.setAttribute("min",o.min),void 0!==o.step&&r.setAttribute("step",o.step),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(){var e=r.value;isNaN(e)||""===e||(e=Number(e)),e!=n?i(e)&&(n=e):s()}return r.value=n,t((function(){r.focus({preventScroll:!0}),r.style.height="100%"})),r.addEventListener("blur",(function(e){a()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s()}})),r},select:function(e,t,i,o,n){var r=this,a=e.getElement(),l=e.getValue(),h=n.verticalNavigation||"editor",d=void 0!==l||null===l?Array.isArray(l)?l:[l]:void 0!==n.defaultValue?n.defaultValue:[],c=document.createElement("input"),u=document.createElement("div"),m=n.multiselect,p=[],g={},b=[],f=[],v=!0,w=!1,C="",E=null;function y(t){var i,s={},o=r.table.getData();return(i=t?r.table.columnManager.getColumnByField(t):e.getColumn()._getSelf())?o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(s[t]=!0)})):console.warn("unable to find matching column to create select lookup list:",t),Object.keys(s)}function R(t,i){var s=[],o=[];function r(e){e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return i.indexOf(e.value)>-1&&M(e),s.push(e),o.push(e),e}if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach((function(e){var t;"object"==typeof e?e.options?(t={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1},o.push(t),e.options.forEach((function(e){r(e)}))):r(e):(t={label:e,value:e,element:!1},i.indexOf(t.value)>-1&&M(t),s.push(t),o.push(t))}));else for(var a in t){var l={label:t[a],value:a,element:!1};i.indexOf(l.value)>-1&&M(l),s.push(l),o.push(l)}n.sortValuesList&&(s.sort(((e,t)=>e.labelt.label?1:0)),o.sort(((e,t)=>e.labelt.label?1:0)),"asc"!==n.sortValuesList&&(s.reverse(),o.reverse())),p=s,b=o,function(){for(;u.firstChild;)u.removeChild(u.firstChild);b.forEach((function(t){var i=t.element;if(!i){if(i=document.createElement("div"),t.label=n.listItemFormatter?n.listItemFormatter(t.value,t.label,e,i,t.itemParams):t.label,t.group?(i.classList.add("tabulator-edit-select-list-group"),i.tabIndex=0,i.innerHTML=""===t.label?" ":t.label):(i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=""===t.label?" ":t.label,i.addEventListener("click",(function(){w=!0,setTimeout((()=>{w=!1}),10),m?(L(t),c.focus()):k(t)})),f.indexOf(t)>-1&&i.classList.add("active")),t.elementAttributes&&"object"==typeof t.elementAttributes)for(let e in t.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),i.setAttribute(e,c.getAttribute(e)+t.elementAttributes["+"+e])):i.setAttribute(e,t.elementAttributes[e]);i.addEventListener("mousedown",(function(){v=!1,setTimeout((function(){v=!0}),10)})),t.element=i}u.appendChild(i)}))}()}function x(e,t){!m&&g&&g.element&&g.element.classList.remove("active"),g&&g.element&&g.element.classList.remove("focused"),g=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active")),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function M(e){-1==f.indexOf(e)&&(f.push(e),x(e,!0)),S()}function T(e){var t=f[e];e>-1&&(f.splice(e,1),t.element&&t.element.classList.remove("active"))}function L(e){e||(e=g);var t=f.indexOf(e);t>-1?T(t):(!0!==m&&f.length>=m&&T(0),M(e)),S()}function k(e){H(),e||(e=g),e&&(c.value=e.label,i(e.value)),d=[e.value]}function D(e){e||H();var t=[];f.forEach((e=>{t.push(e.value)})),d=t,i(t)}function S(){var e=[];f.forEach((t=>{e.push(t.label)})),c.value=e.join(", "),!1===r.currentCell&&D(!0)}function F(){H(),o()}function H(){u.parentNode&&u.parentNode.removeChild(u),r.table.rowManager.element.removeEventListener("scroll",F)}if((Array.isArray(n)||!Array.isArray(n)&&"object"==typeof n&&!n.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),n={values:n}),c.setAttribute("type","text"),c.style.padding="4px",c.style.width="100%",c.style.boxSizing="border-box",c.style.cursor="default",c.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==typeof n.elementAttributes)for(let e in n.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+n.elementAttributes["+"+e])):c.setAttribute(e,n.elementAttributes[e]);return c.value=void 0!==l||null===l?l:"",c.addEventListener("search",(function(e){c.value||(!function(){var e=f.length;for(let t=0;t0&&x(p[t-1],!m));break;case 40:t=p.indexOf(g),("editor"==h||"hybrid"==h&&t=38&&e.keyCode<=90&&function(e){clearTimeout(E);var t=String.fromCharCode(event.keyCode).toLowerCase();C+=t.toLowerCase();var i=p.find((e=>void 0!==e.label&&e.label.toLowerCase().startsWith(C)));i&&x(i,!m),E=setTimeout((()=>{C=""}),800)}(e.keyCode)}})),c.addEventListener("blur",(function(e){v&&(m?D():F())})),c.addEventListener("focus",(function(e){w||function(){if(f=[],!u.parentNode){!0===n.values?R(y(),d):"string"==typeof n.values?R(y(n.values),d):R(n.values||[],d);var e=s.elOffset(a);u.style.minWidth=a.offsetWidth+"px",u.style.top=e.top+a.offsetHeight+"px",u.style.left=e.left+"px",u.addEventListener("mousedown",(function(e){v=!1,setTimeout((function(){v=!0}),10)})),document.body.appendChild(u)}}()})),(u=document.createElement("div")).classList.add("tabulator-edit-select-list"),t((function(){c.style.height="100%",c.focus({preventScroll:!0})})),setTimeout((()=>{this.table.rowManager.element.addEventListener("scroll",F)}),10),c},autocomplete:function(e,t,i,o,n){var r=this,a=e.getElement(),l=e.getValue(),h=n.verticalNavigation||"editor",d=void 0!==l||null===l?l:void 0!==n.defaultValue?n.defaultValue:"",c=document.createElement("input"),u=document.createElement("div"),m=[],p=!1,g=!0,b=!1;if(c.setAttribute("type","search"),c.style.padding="4px",c.style.width="100%",c.style.boxSizing="border-box",n.elementAttributes&&"object"==typeof n.elementAttributes)for(let e in n.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+n.elementAttributes["+"+e])):c.setAttribute(e,n.elementAttributes[e]);function f(){!0===n.values?b=v():"string"==typeof n.values&&(b=v(n.values))}function v(t){var i,s={},o=r.table.getData();return(i=t?r.table.columnManager.getColumnByField(t):e.getColumn()._getSelf())?(o.forEach((function(e){var t=i.getFieldValue(e);null!=t&&""!==t&&(s[t]=!0)})),s=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(s).sort():Object.keys(s).sort().reverse():Object.keys(s)):console.warn("unable to find matching column to create autocomplete lookup list:",t),s}function w(e,t){var i,s,o=[];i=b||(n.values||[]),n.searchFunc?(o=n.searchFunc(e,i))instanceof Promise?(C(void 0!==n.searchingPlaceholder?n.searchingPlaceholder:"Searching..."),o.then((e=>{x(E(e),t)})).catch((e=>{console.err("error in autocomplete search promise:",e)}))):x(E(o),t):(s=E(i),""===e?n.showListOnEmpty&&(o=s):s.forEach((function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&o.push(t)})),x(o,t))}function C(e){var t=document.createElement("div");y(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,u.appendChild(t))}function E(e){var t=[];if(Array.isArray(e))e.forEach((function(e){var i={};"object"==typeof e?(i.title=n.listItemFormatter?n.listItemFormatter(e.value,e.label):e.label,i.value=e.value):(i.title=n.listItemFormatter?n.listItemFormatter(e,e):e,i.value=e),t.push(i)}));else for(var i in e){var s={title:n.listItemFormatter?n.listItemFormatter(i,e[i]):e[i],value:i};t.push(s)}return t}function y(){for(;u.firstChild;)u.removeChild(u.firstChild)}function x(e,t){e.length?function(e,t){var i=!1;y(),(m=e).forEach((function(e){var s=e.element;s||((s=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),s.tabIndex=0,s.innerHTML=e.title,s.addEventListener("click",(function(t){T(e),M()})),s.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),e.element=s,t&&e.value==l&&(c.value=e.title,e.element.classList.add("active"),i=!0),e===p&&(e.element.classList.add("active"),i=!0)),u.appendChild(s)})),i||T(!1)}(e,t):n.emptyPlaceholder&&C(n.emptyPlaceholder)}function M(){L(),p?l!==p.value?(l=p.value,c.value=p.title,i(p.value)):o():n.freetext||n.allowEmpty&&""===c.value?(l=c.value,i(c.value)):o()}function T(e,t){p&&p.element&&p.element.classList.remove("active"),p=e,e&&e.element&&e.element.classList.add("active"),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function L(){u.parentNode&&u.parentNode.removeChild(u),r.table.rowManager.element.removeEventListener("scroll",k)}function k(){L(),o()}return u.classList.add("tabulator-edit-select-list"),u.addEventListener("mousedown",(function(e){g=!1,setTimeout((function(){g=!0}),10)})),c.addEventListener("keydown",(function(e){var t;switch(e.keyCode){case 38:t=m.indexOf(p),("editor"==h||"hybrid"==h&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),T(t>0&&m[t-1]));break;case 40:t=m.indexOf(p),("editor"==h||"hybrid"==h&&t{this.table.rowManager.element.addEventListener("scroll",k)}),10),f(),c.value=d,w(d,!0),c},star:function(e,t,i,s,o){var n=this,r=e.getElement(),a=e.getValue(),l=r.getElementsByTagName("svg").length||5,h=r.getElementsByTagName("svg")[0]?r.getElementsByTagName("svg")[0].getAttribute("width"):14,d=[],c=document.createElement("div"),u=document.createElementNS("http://www.w3.org/2000/svg","svg");function m(e){d.forEach((function(t,i){i'):("ie"==n.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function p(e){var t=document.createElement("span"),s=u.cloneNode(!0);d.push(s),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),m(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e),r.blur()})),t.appendChild(s),c.appendChild(t)}function g(e){a=e,m(e)}if(r.style.whiteSpace="nowrap",r.style.overflow="hidden",r.style.textOverflow="ellipsis",c.style.verticalAlign="middle",c.style.display="inline-block",c.style.padding="4px",u.setAttribute("width",h),u.setAttribute("height",h),u.setAttribute("viewBox","0 0 512 512"),u.setAttribute("xml:space","preserve"),u.style.padding="0 1px",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+o.elementAttributes["+"+e])):c.setAttribute(e,o.elementAttributes[e]);for(var b=1;b<=l;b++)p(b);return m(a=Math.min(parseInt(a),l)),c.addEventListener("mousemove",(function(e){m(0)})),c.addEventListener("click",(function(e){i(0)})),r.addEventListener("blur",(function(e){s()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(a+1);break;case 37:g(a-1);break;case 13:i(a);break;case 27:s()}})),c},progress:function(e,t,i,s,o){var n,r,a=e.getElement(),l=void 0===o.max?a.getElementsByTagName("div")[0].getAttribute("max")||100:o.max,h=void 0===o.min?a.getElementsByTagName("div")[0].getAttribute("min")||0:o.min,d=(l-h)/100,c=e.getValue()||0,u=document.createElement("div"),m=document.createElement("div");function p(){var e=window.getComputedStyle(a,null),t=d*Math.round(m.offsetWidth/((a.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+h;i(t),a.setAttribute("aria-valuenow",t),a.setAttribute("aria-label",c)}if(u.style.position="absolute",u.style.right="0",u.style.top="0",u.style.bottom="0",u.style.width="5px",u.classList.add("tabulator-progress-handle"),m.style.display="inline-block",m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),m.setAttribute(e,m.getAttribute(e)+o.elementAttributes["+"+e])):m.setAttribute(e,o.elementAttributes[e]);return a.style.padding="4px 4px",c=Math.min(parseFloat(c),l),c=Math.max(parseFloat(c),h),c=Math.round((c-h)/d),m.style.width=c+"%",a.setAttribute("aria-valuemin",h),a.setAttribute("aria-valuemax",l),m.appendChild(u),u.addEventListener("mousedown",(function(e){n=e.screenX,r=m.offsetWidth})),u.addEventListener("mouseover",(function(){u.style.cursor="ew-resize"})),a.addEventListener("mousemove",(function(e){n&&(m.style.width=r+e.screenX-n+"px")})),a.addEventListener("mouseup",(function(e){n&&(e.stopPropagation(),e.stopImmediatePropagation(),n=!1,r=!1,p())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),m.style.width=m.clientWidth+a.clientWidth/100+"px";break;case 37:e.preventDefault(),m.style.width=m.clientWidth-a.clientWidth/100+"px";break;case 9:case 13:p();break;case 27:s()}})),a.addEventListener("blur",(function(){s()})),m},tickCross:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input"),a=o.tristate,l=void 0===o.indeterminateValue?null:o.indeterminateValue,h=!1;if(r.setAttribute("type","checkbox"),r.style.marginTop="5px",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function d(e){return a?e?h?l:r.checked:r.checked&&!h?(r.checked=!1,r.indeterminate=!0,h=!0,l):(h=!1,r.checked):r.checked}return r.value=n,!a||void 0!==n&&n!==l&&""!==n||(h=!0,r.indeterminate=!0),"firefox"!=this.table.browser&&t((function(){r.focus({preventScroll:!0})})),r.checked=!0===n||"true"===n||"True"===n||1===n,t((function(){r.focus()})),r.addEventListener("change",(function(e){i(d())})),r.addEventListener("blur",(function(e){i(d(!0))})),r.addEventListener("keydown",(function(e){13==e.keyCode&&i(d()),27==e.keyCode&&s()})),r}};class M extends t{constructor(e){super(e),this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[],this.editors=M.editors,this.registerColumnOption("editable"),this.registerColumnOption("editor"),this.registerColumnOption("editorParams"),this.registerColumnOption("cellEditing"),this.registerColumnOption("cellEdited"),this.registerColumnOption("cellEditCancelled"),this.registerTableFunction("getEditedCells",this.getEditedCells.bind(this)),this.registerTableFunction("clearCellEdited",this.clearCellEdited.bind(this)),this.registerTableFunction("navigatePrev",this.navigatePrev.bind(this)),this.registerTableFunction("navigateNext",this.navigateNext.bind(this)),this.registerTableFunction("navigateLeft",this.navigateLeft.bind(this)),this.registerTableFunction("navigateRight",this.navigateRight.bind(this)),this.registerTableFunction("navigateUp",this.navigateUp.bind(this)),this.registerTableFunction("navigateDown",this.navigateDown.bind(this)),this.registerComponentFunction("cell","isEdited",this.cellisEdited.bind(this)),this.registerComponentFunction("cell","clearEdited",this.clearEdited.bind(this)),this.registerComponentFunction("cell","edit",this.editCell.bind(this)),this.registerComponentFunction("cell","cancelEdit",this.cellCancelEdit.bind(this)),this.registerComponentFunction("cell","navigatePrev",this.navigatePrev.bind(this)),this.registerComponentFunction("cell","navigateNext",this.navigateNext.bind(this)),this.registerComponentFunction("cell","navigateLeft",this.navigateLeft.bind(this)),this.registerComponentFunction("cell","navigateRight",this.navigateRight.bind(this)),this.registerComponentFunction("cell","navigateUp",this.navigateUp.bind(this)),this.registerComponentFunction("cell","navigateDown",this.navigateDown.bind(this))}initialize(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("data-refeshing",this.cancelEdit.bind(this)),this.subscribe("keybinding-nav-prev",this.navigatePrev.bind(this)),this.subscribe("keybinding-nav-next",this.keybindingNavigateNext.bind(this)),this.subscribe("keybinding-nav-left",this.navigateLeft.bind(this)),this.subscribe("keybinding-nav-right",this.navigateRight.bind(this)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this))}keybindingNavigateNext(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(e)||i&&(t.getElement().firstChild.blur(),(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((()=>{setTimeout((()=>{nav.next()}))}))))}cellisEdited(e){return!!e.modules.edit&&e.modules.edit.edited}cellCancelEdit(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}clearCellEdited(e){e||(e=this.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.modules.edit.clearEdited(e._getSelf())}))}navigatePrev(e){var t,i,s=this.currentCell;if(s){if(e&&e.preventDefault(),t=this.navigateLeft())return!0;if((i=this.table.rowManager.prevDisplayRow(s.row,!0))&&(t=this.findNextEditableCell(i,i.cells.length)))return t.edit(),!0}return!1}navigateNext(e){var t,i,s=this.currentCell;if(s){if(e&&e.preventDefault(),t=this.navigateRight())return!0;if((i=this.table.rowManager.nextDisplayRow(s.row,!0))&&(t=this.findNextEditableCell(i,-1)))return t.edit(),!0}return!1}navigateLeft(e){var t,i,s=this.currentCell;return!!(s&&(e&&e.preventDefault(),t=s.getIndex(),i=this.findPrevEditableCell(s.row,t)))&&(i.edit(),!0)}navigateRight(e){var t,i,s=this.currentCell;return!!(s&&(e&&e.preventDefault(),t=s.getIndex(),i=this.findNextEditableCell(s.row,t)))&&(i.edit(),!0)}navigateUp(e){var t,i,s=this.currentCell;return!!(s&&(e&&e.preventDefault(),t=s.getIndex(),i=this.table.rowManager.prevDisplayRow(s.row,!0)))&&(i.cells[t].edit(),!0)}navigateDown(e){var t,i,s=this.currentCell;return!!(s&&(e&&e.preventDefault(),t=s.getIndex(),i=this.table.rowManager.nextDisplayRow(s.row,!0)))&&(i.cells[t].edit(),!0)}findNextEditableCell(e,t){var i=!1;if(t0)for(var s=t-1;s>=0;s--){let t=e.cells[s],o=!0;if(t.column.modules.edit&&Helpers.elVisible(t.getElement())&&("function"==typeof t.column.modules.edit.check&&(o=t.column.modules.edit.check(t.getComponent())),o)){i=t;break}}return i}initializeColumnCheck(e){void 0!==e.definition.editor&&this.initializeColumn(e)}columnDeleteCheck(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}rowDeleteCheck(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}initializeColumn(e){var t={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(typeof e.definition.editor){case"string":this.editors[e.definition.editor]?t.editor=this.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":t.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?this.editors[e.definition.formatter]?t.editor=this.editors[e.definition.formatter]:t.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}t.editor&&(e.modules.edit=t)}getCurrentCell(){return!!this.currentCell&&this.currentCell.getComponent()}clearEditor(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),e?i.validate&&i.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-row-editing")}}cancelEdit(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.definition.cellEditCancelled&&e.column.definition.cellEditCancelled.call(this.table,t),this.dispatchExternal("cellEditCancelled",t)}}bindEditor(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);i.setAttribute("tabindex",0),i.addEventListener("click",(function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})})),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}focusCellNoEvent(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}editCell(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}focusScrollAdjust(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,s=e.row.getElement();s.offsetTop;s.offsetTopi&&(this.table.rowManager.element.scrollTop+=s.offsetTop+s.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,n=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();r.offsetLeft;this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin),n-=parseInt(this.table.modules.frozenColumns.rightMargin)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),n-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLeftn&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-n)}}edit(e,t,i){var s,o,n,r=this,a=!0,l=function(){},h=e.getElement();if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(t&&t.stopPropagation(),typeof e.column.modules.edit.check){case"function":a=e.column.modules.edit.check(e.getComponent());break;case"boolean":a=e.column.modules.edit.check}if(a||i){if(r.cancelEdit(),r.currentCell=e,this.focusScrollAdjust(e),o=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.definition.cellClick&&e.column.definition.cellClick.call(this.table,t,o)),e.column.definition.cellEditing&&e.column.definition.cellEditing.call(this.table,o),this.dispatchExternal("cellEditing",o),n="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(o):e.column.modules.edit.params,!1===(s=e.column.modules.edit.editor.call(r,o,(function(e){l=e}),(function(t){if(r.currentCell===e){var i=!0;return e.column.modules.validate&&r.table.modExists("validate")&&"manual"!=r.table.options.validationMode&&(i=r.table.modules.validate.validate(e.column.modules.validate,e,t)),!0===i||"highlight"===r.table.options.validationMode?(r.clearEditor(),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==r.editedCells.indexOf(e)&&r.editedCells.push(e),e.setValue(t,!0),r.table.options.dataTree&&r.table.modExists("dataTree")&&r.table.modules.dataTree.checkForRestyle(e),!0===i||(h.classList.add("tabulator-validation-fail"),r.table.externalEvents.dispatch("validationFailed",e.getComponent(),t,i),!1)):(r.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),r.focusCellNoEvent(e,!0),l(),r.table.externalEvents.dispatch("validationFailed",e.getComponent(),t,i),!1)}}),(function(){r.currentCell===e&&(r.cancelEdit(),r.table.options.dataTree&&r.table.modExists("dataTree")&&r.table.modules.dataTree.checkForRestyle(e))}),n)))return h.blur(),!1;if(!(s instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",s),h.blur(),!1;for(h.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(s),l();for(var d=h.children,c=0;c{e.push(t.getComponent())})),e}clearEdited(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.edit.edited=!1,e.modules.validate&&(e.modules.validate.invalid=!1)),(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1)}}M.moduleName="edit",M.editors=x;class T{constructor(e,t,i,s){this.type=e,this.columns=t,this.component=i||!1,this.indent=s||0}}class L{constructor(e,t,i,s,o){this.value=e,this.component=t||!1,this.width=i,this.height=s,this.depth=o}}class k extends t{constructor(e){super(e),this.config={},this.cloneTableStyle=!0,this.colVisProp="",this.registerTableOption("htmlOutputConfig",!1),this.registerColumnOption("htmlOutput"),this.registerColumnOption("titleHtmlOutput")}initialize(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}generateExportList(e,t,i,s){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=s;var o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],n=this.bodyToExportRows(this.rowLookup(i));return o.concat(n)}genereateTable(e,t,i,s){var o=this.generateExportList(e,t,i,s);return this.genereateTableElement(o)}rowLookup(e){var t=[];if("function"==typeof e)e.call(this.table).forEach((e=>{(e=this.table.rowManager.findRow(e))&&t.push(e)}));else switch(e){case!0:case"visible":t=this.table.rowManager.getVisibleRows(!0);break;case"all":t=this.table.rowManager.rows;break;case"selected":t=this.table.modules.selectRow.selectedRows;break;case"active":default:t=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],t)}generateColumnGroupHeaders(){var e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((t=>{var i=this.processColumnGroup(t);i&&e.push(i)})),e}processColumnGroup(e){var t=e.columns,i=0,s={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(t.length){if(s.subGroups=[],s.width=0,t.forEach((e=>{var t=this.processColumnGroup(e);t&&(s.width+=t.width,s.subGroups.push(t),t.depth>i&&(i=t.depth))})),s.depth+=i,!s.width)return!1}else{if(!this.columnVisCheck(e))return!1;s.width=1}return s}columnVisCheck(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])}headersToExportRows(e){var t=[],i=0,s=[];function o(e,s){var n=i-s;if(void 0===t[s]&&(t[s]=[]),e.height=e.subGroups?1:n-e.depth+1,t[s].push(e),e.height>1)for(let i=1;i1)for(let i=1;ii&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((e=>{var t=[];e.forEach((e=>{e?t.push(new L(e.title,e.column.getComponent(),e.width,e.height,e.depth)):t.push(null)})),s.push(new T("header",t))})),s}bodyToExportRows(e){var t=[],i=[];return this.table.columnManager.columnsByIndex.forEach((e=>{this.columnVisCheck(e)&&t.push(e.getComponent())})),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),(e=e.filter((e=>{switch(e.type){case"group":return!1!==this.config.rowGroups;case"calc":return!1!==this.config.columnCalcs;case"row":return!(this.table.options.dataTree&&!1===this.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach(((e,s)=>{var o=e.getData(this.colVisProp),n=[],r=0;switch(e.type){case"group":r=e.level,n.push(new L(e.key,e.getComponent(),t.length,1));break;case"calc":case"row":t.forEach((e=>{n.push(new L(e._column.getFieldValue(o),e,1,1))})),this.table.options.dataTree&&!1!==this.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new T(e.type,n,e.getComponent(),r))})),i}genereateTableElement(e){var t=document.createElement("table"),i=document.createElement("thead"),s=document.createElement("tbody"),o=this.lookupTableStyles(),n=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r={};return r.rowFormatter=null!==n?n:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(r.treeElementField=this.table.modules.dataTree.elementField),r.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r.groupHeader&&!Array.isArray(r.groupHeader)&&(r.groupHeader=[r.groupHeader]),t.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),i,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(((e,t)=>{switch(e.type){case"header":i.appendChild(this.genereateHeaderElement(e,r,o));break;case"group":s.appendChild(this.genereateGroupElement(e,r,o));break;case"calc":s.appendChild(this.genereateCalcElement(e,r,o));break;case"row":let n=this.genereateRowElement(e,r,o);this.mapElementStyles(t%2&&o.evenRow?o.evenRow:o.oddRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s.appendChild(n)}})),i.innerHTML&&t.appendChild(i),t.appendChild(s),this.mapElementStyles(this.table.element,t,["border-top","border-left","border-right","border-bottom"]),t}lookupTableStyles(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e}genereateHeaderElement(e,t,i){var s=document.createElement("tr");return e.columns.forEach((e=>{if(e){var t=document.createElement("th"),i=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,this.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),this.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),this.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?this.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&this.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),s.appendChild(t)}})),s}genereateGroupElement(e,t,i){var s=document.createElement("tr"),o=document.createElement("td"),n=e.columns[0];return s.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?n.value=t.groupHeader[e.indent](n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1===t.groupHeader?n.value=n.value:n.value=e.component._group.generator(n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component),o.colSpan=n.width,o.innerHTML=n.value,s.classList.add("tabulator-print-table-group"),s.classList.add("tabulator-group-level-"+e.indent),n.component.isVisible()&&s.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(i.firstGroup,o,["padding-top","padding-left","padding-right","padding-bottom"]),s.appendChild(o),s}genereateCalcElement(e,t,i){var s=this.genereateRowElement(e,t,i);return s.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s}genereateRowElement(e,t,s){var o=document.createElement("tr");return o.classList.add("tabulator-print-table-row"),e.columns.forEach((n=>{if(n){var r=document.createElement("td"),a=n.component._column,l=n.value,h={modules:{},getValue:function(){return l},getField:function(){return a.definition.field},getElement:function(){return r},getColumn:function(){return a.getComponent()},getData:function(){return e.component.getData()},getRow:function(){return e.component},getComponent:function(){return h},column:a};if((a.definition.cssClass?a.definition.cssClass.split(" "):[]).forEach((function(e){r.classList.add(e)})),this.table.modExists("format")&&!1!==this.config.formatCells)l=this.table.modules.format.formatExportValue(h,this.colVisProp);else switch(typeof l){case"object":l=JSON.stringify(l);break;case"undefined":case"null":l="";break;default:l=l}l instanceof Node?r.appendChild(l):r.innerHTML=l,s.firstCell&&(this.mapElementStyles(s.firstCell,r,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),a.definition.align&&(r.style.textAlign=a.definition.align)),this.table.options.dataTree&&!1!==this.config.dataTree&&(t.treeElementField&&t.treeElementField==a.field||!t.treeElementField&&0==i)&&(e.component._row.modules.dataTree.controlEl&&r.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),r.firstChild),e.component._row.modules.dataTree.branchEl&&r.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),r.firstChild)),o.appendChild(r),h.modules.format&&h.modules.format.renderedCallback&&h.modules.format.renderedCallback(),t.rowFormatter&&!1!==this.config.formatCells&&t.rowFormatter(e.component)}})),o}genereateHTMLTable(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML}getHtml(e,t,i,s){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,s||"htmlOutput");return this.genereateHTMLTable(o)}mapElementStyles(e,t,i){if(this.cloneTableStyle&&e&&t){var s={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var o=window.getComputedStyle(e);i.forEach((function(e){t.style[s[e]]=o.getPropertyValue(e)}))}}}}k.moduleName="export";var D={"=":function(e,t,i,s){return t==e},"<":function(e,t,i,s){return t":function(e,t,i,s){return t>e},">=":function(e,t,i,s){return t>=e},"!=":function(e,t,i,s){return t!=e},regex:function(e,t,i,s){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,s){var o=e.toLowerCase().split(void 0===s.separator?" ":s.separator),n=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((e=>{n.includes(e)&&r.push(!0)})),s.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,s){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}};class S extends t{constructor(e){super(e),this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1,this.registerTableOption("filterMode","local"),this.registerTableOption("initialFilter",!1),this.registerTableOption("initialHeaderFilter",!1),this.registerTableOption("headerFilterLiveFilterDelay",300),this.registerColumnOption("headerFilter"),this.registerColumnOption("headerFilterPlaceholder"),this.registerColumnOption("headerFilterParams"),this.registerColumnOption("headerFilterEmptyCheck"),this.registerColumnOption("headerFilterFunc"),this.registerColumnOption("headerFilterFuncParams"),this.registerColumnOption("headerFilterLiveFilter"),this.registerTableFunction("searchRows",this.searchRows.bind(this)),this.registerTableFunction("searchData",this.searchData.bind(this)),this.registerTableFunction("setFilter",this.userSetFilter.bind(this)),this.registerTableFunction("refreshFilter",this.userRefreshFilter.bind(this)),this.registerTableFunction("addFilter",this.userAddFilter.bind(this)),this.registerTableFunction("getFilters",this.getFilters.bind(this)),this.registerTableFunction("setHeaderFilterFocus",this.userSetHeaderFilterFocus.bind(this)),this.registerTableFunction("getHeaderFilterValue",this.userGetHeaderFilterValue.bind(this)),this.registerTableFunction("setHeaderFilterValue",this.userSetHeaderFilterValue.bind(this)),this.registerTableFunction("getHeaderFilters",this.getHeaderFilters.bind(this)),this.registerTableFunction("removeFilter",this.userRemoveFilter.bind(this)),this.registerTableFunction("clearFilter",this.userClearFilter.bind(this)),this.registerTableFunction("clearHeaderFilter",this.userClearHeaderFilter.bind(this)),this.registerComponentFunction("column","headerFilterFocus",this.setHeaderFilterFocus.bind(this)),this.registerComponentFunction("column","reloadHeaderFilter",this.reloadHeaderFilter.bind(this)),this.registerComponentFunction("column","getHeaderFilterValue",this.getHeaderFilterValue.bind(this)),this.registerComponentFunction("column","setHeaderFilterValue",this.setHeaderFilterValue.bind(this))}initialize(){this.subscribe("column-init",this.initializeColumnHeaderFilter.bind(this)),this.subscribe("column-width-fit-before",this.hideHeaderFilterElements.bind(this)),this.subscribe("column-width-fit-after",this.showHeaderFilterElements.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}tableBuilt(){this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((e=>{var t=this.table.columnManager.findColumn(e.field);if(!t)return console.warn("Column Filter Error - No matching column found:",e.field),!1;this.setHeaderFilterValue(t,e.value)}))}remoteFilterParams(e,t,i,s){return s.filter=this.getFilters(!0,!0),s}userSetFilter(e,t,i,s){this.setFilter(e,t,i,s),this.refreshFilter()}userRefreshFilter(){this.refreshFilter()}userAddFilter(e,t,i,s){this.addFilter(e,t,i,s),this.refreshFilter()}userSetHeaderFilterFocus(e){var t=this.table.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.setHeaderFilterFocus(t)}userGetHeaderFilterValue(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}userSetHeaderFilterValue(e,t){var i=this.table.columnManager.findColumn(e);if(!i)return console.warn("Column Filter Error - No matching column found:",e),!1;this.setHeaderFilterValue(i,t)}userRemoveFilter(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}userClearFilter(e){this.clearFilter(e),this.refreshFilter()}userClearHeaderFilter(){this.clearHeaderFilter(),this.refreshFilter()}searchRows(e,t,i){return this.search("rows",e,t,i)}searchData(e,t,i){return this.search("data",e,t,i)}initializeColumnHeaderFilter(e){var t=e.definition;t.headerFilter&&(void 0!==t.headerFilterPlaceholder&&t.field&&this.module("localize").setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),this.initializeColumn(e))}initializeColumn(e,t){var i=this,s=e.getField();e.modules.filter={success:function(t){var o,n="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",r="",a="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[s];else{switch(e.modules.filter.value=t,typeof e.definition.headerFilterFunc){case"string":S.filters[e.definition.headerFilterFunc]?(r=e.definition.headerFilterFunc,o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,S.filters[e.definition.headerFilterFunc](t,o,i,s)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,e.definition.headerFilterFunc(t,o,i,s)}}if(!o)switch(n){case"partial":o=function(i){var s=e.getFieldValue(i);return null!=s&&String(s).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";break;default:o=function(i){return e.getFieldValue(i)==t},r="="}i.headerFilters[s]={value:t,func:o,type:r,params:{}}}a=JSON.stringify(i.headerFilters),i.prevHeaderFilterChangeCheck!==a&&(i.prevHeaderFilterChangeCheck=a,i.trackChanges(),i.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)}generateHeaderFilterElement(e,t,i){var s,o,n,r,a,l,h,d=this,c=e.modules.filter.success,u=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),u){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e&&0!==e},(s=document.createElement("div")).classList.add("tabulator-header-filter"),typeof e.definition.headerFilter){case"string":d.table.modules.edit.editors[e.definition.headerFilter]?(o=d.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":o=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?o=e.modules.edit.editor:e.definition.formatter&&d.table.modules.edit.editors[e.definition.formatter]?(o=d.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):o=d.table.modules.edit.editors.input}if(o){if(r={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return s},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},h="function"==typeof(h=e.definition.headerFilterParams||{})?h.call(d.table):h,!(n=o.call(this.table.modules.edit,r,(function(){}),c,(function(){}),h)))return void console.warn("Filter Error - Cannot add filter to "+u+" column, editor returned a value of false");if(!(n instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+u+" column, editor should return an instance of Node, the editor returned:",n);u?d.langBind("headerFilters|columns|"+e.definition.field,(function(e){n.setAttribute("placeholder",void 0!==e&&e?e:d.langText("headerFilters|default"))})):d.langBind("headerFilters|default",(function(e){n.setAttribute("placeholder",e)})),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("focus",(e=>{var t=this.table.columnManager.element.scrollLeft;t!==this.table.rowManager.element.scrollLeft&&(this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))})),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout((function(){c(n.value)}),d.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=n,e.modules.filter.attrType=n.hasAttribute("type")?n.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=n.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(n.addEventListener("keyup",l),n.addEventListener("search",l),"number"==e.modules.filter.attrType&&n.addEventListener("change",(function(e){c(n.value)})),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&n.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||n.addEventListener("mousedown",(function(e){e.stopPropagation()}))),s.appendChild(n),e.contentElement.appendChild(s),i||d.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)}hideHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}showHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}setHeaderFilterFocus(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())}getHeaderFilterValue(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())}setHeaderFilterValue(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}reloadHeaderFilter(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}refreshFilter(){"remote"===this.table.options.filterMode?this.reloadData():this.refreshData()}trackChanges(){this.changed=!0,this.dispatch("filter-changed")}hasChanged(){var e=this.changed;return this.changed=!1,e}setFilter(e,t,i,s){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),this.addFilter(e)}addFilter(e,t,i,s){Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),e.forEach((e=>{(e=this.findFilter(e))&&(this.filterList.push(e),this.changed=!0)}))}findFilter(e){var t;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:S.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return S.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return S.filters[e.type](e.value,t[e.field],t,e.params||{})}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e}findSubFilters(e){var t=[];return e.forEach((e=>{(e=this.findFilter(e))&&t.push(e)})),!!t.length&&t}getFilters(e,t){var i=[];return e&&(i=this.getHeaderFilters()),t&&i.forEach((function(e){"function"==typeof e.type&&(e.type="function")})),i=i.concat(this.filtersToArray(this.filterList,t))}filtersToArray(e,t){var i=[];return e.forEach((e=>{var s;Array.isArray(e)?i.push(this.filtersToArray(e,t)):(s={field:e.field,type:e.type,value:e.value},t&&"function"==typeof s.type&&(s.type="function"),i.push(s))})),i}getHeaderFilters(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}removeFilter(e,t,i){Array.isArray(e)||(e=[{field:e,type:t,value:i}]),e.forEach((e=>{var t=-1;(t="object"==typeof e.field?this.filterList.findIndex((t=>e===t)):this.filterList.findIndex((t=>e.field===t.field&&e.type===t.type&&e.value===t.value)))>-1?this.filterList.splice(t,1):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)})),this.trackChanges()}clearFilter(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}clearHeaderFilter(){this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((e=>{void 0!==e.modules.filter.value&&delete e.modules.filter.value,e.modules.filter.prevSuccess=void 0,this.reloadHeaderFilter(e)})),this.trackChanges()}search(e,t,i,s){var o=[],n=[];return Array.isArray(t)||(t=[{field:t,type:i,value:s}]),t.forEach((e=>{(e=this.findFilter(e))&&n.push(e)})),this.table.rowManager.rows.forEach((t=>{var i=!0;n.forEach((e=>{this.filterRecurse(e,t.getData())||(i=!1)})),i&&o.push("data"===e?t.getData("data"):t.getComponent())})),o}filter(e,t){var i=[],s=[];return this.subscribedExternal("dataFiltering")&&this.dispatchExternal("dataFiltering",this.getFilters()),"remote"!==this.table.options.filterMode&&(this.filterList.length||Object.keys(this.headerFilters).length)?e.forEach((e=>{this.filterRow(e)&&i.push(e)})):i=e.slice(0),this.subscribedExternal("dataFiltered")&&(i.forEach((e=>{s.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(),s)),i}filterRow(e,t){var i=!0,s=e.getData();for(var o in this.filterList.forEach((e=>{this.filterRecurse(e,s)||(i=!1)})),this.headerFilters)this.headerFilters[o].func(s)||(i=!1);return i}filterRecurse(e,t){var i=!1;return Array.isArray(e)?e.forEach((e=>{this.filterRecurse(e,t)&&(i=!0)})):i=e.func(t),i}}S.moduleName="filter",S.filters=D;var F={plaintext:function(e,t,i){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,i){return e.getValue()},textarea:function(e,t,i){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,i){var s,o,n,r,a=parseFloat(e.getValue()),l=t.decimal||".",h=t.thousand||",",d=t.symbol||"",c=!!t.symbolAfter,u=void 0!==t.precision?t.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(s=!1!==u?a.toFixed(u):a,o=(s=String(s).split("."))[0],n=s.length>1?l+s[1]:"",r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+h+"$2");return c?o+n+d:d+o+n},link:function(e,t,i){var s=e.getValue(),o=t.urlPrefix||"",n=t.download,r=s,a=document.createElement("a");if(t.labelField&&(r=e.getData()[t.labelField]),t.label)switch(typeof t.label){case"string":r=t.label;break;case"function":r=t.label(e)}if(r){if(t.urlField&&(s=e.getData()[t.urlField]),t.url)switch(typeof t.url){case"string":s=t.url;break;case"function":s=t.url(e)}return a.setAttribute("href",o+s),t.target&&a.setAttribute("target",t.target),t.download&&(n="function"==typeof n?n(e):!0===n?"":n,a.setAttribute("download",n)),a.innerHTML=this.emptyToSpace(this.sanitizeHTML(r)),a}return" "},image:function(e,t,i){var s=document.createElement("img"),o=e.getValue();switch(t.urlPrefix&&(o=t.urlPrefix+e.getValue()),t.urlSuffix&&(o+=t.urlSuffix),s.setAttribute("src",o),typeof t.height){case"number":s.style.height=t.height+"px";break;case"string":s.style.height=t.height}switch(typeof t.width){case"number":s.style.width=t.width+"px";break;case"string":s.style.width=t.width}return s.addEventListener("load",(function(){e.getRow().normalizeHeight()})),s},tickCross:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t.allowEmpty,r=t.allowTruthy,a=void 0!==t.tickElement?t.tickElement:'',l=void 0!==t.crossElement?t.crossElement:'';return r&&s||!0===s||"true"===s||"True"===s||1===s||"1"===s?(o.setAttribute("aria-checked",!0),a||""):!n||"null"!==s&&""!==s&&null!=s?(o.setAttribute("aria-checked",!1),l||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var s=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",n=t.outputFormat||"dd/MM/yyyy HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=e.getValue();if(void 0!==s){var l=(window.DateTime||luxon.DateTime).fromFormat(a,o);return l.isValid?(t.timezone&&(l=l.shiftTimezone(t.timezone)),l.toFormat(n)):!0===r?a:"function"==typeof r?r(a):r}console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var s=window.DateTime||luxon.DateTime,o=t.inputFormat||"yyyy-MM-dd HH:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=void 0!==t.suffix&&t.suffix,a=void 0!==t.unit?t.unit:"days",l=void 0!==t.humanize&&t.humanize,h=void 0!==t.date?t.date:s.now(),d=e.getValue();if(void 0!==s){var c=s.fromFormat(d,o);if(!c.isValid)return!0===n?d:"function"==typeof n?n(d):n;if(!l)return parseInt(c.diff(h,a)[a])+(r?" "+r:"")}else console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var s=e.getValue();return void 0===t[s]?(console.warn("Missing display value for "+s),s):t[s]},star:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",s=s&&!isNaN(s)?parseInt(s):0,s=Math.max(0,Math.min(s,n));for(var l=1;l<=n;l++){var h=a.cloneNode(!0);h.innerHTML=l<=s?'':'',r.appendChild(h)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",s),r},traffic:function(e,t,i){var s,o,n=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,h=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),o=parseFloat(n)<=a?parseFloat(n):a,o=parseFloat(o)>=l?parseFloat(o):l,s=(a-l)/100,o=Math.round((o-l)/s),typeof h){case"string":d=h;break;case"function":d=h(n);break;case"object":if(Array.isArray(h)){var c=100/h.length,u=Math.floor(o/c);u=Math.min(u,h.length-1),d=h[u=Math.max(u,0)];break}}return r.style.backgroundColor=d,r}},progress:function(e,t,i){var s,o,n,r,a,l=this.sanitizeHTML(e.getValue())||0,h=e.getElement(),d=t&&t.max?t.max:100,u=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(o=parseFloat(l)<=d?parseFloat(l):d,o=parseFloat(o)>=u?parseFloat(o):u,s=(d-u)/100,o=Math.round((o-u)/s),typeof t.color){case"string":n=t.color;break;case"function":n=t.color(l);break;case"object":if(Array.isArray(t.color)){var p=100/t.color.length,g=Math.floor(o/p);g=Math.min(g,t.color.length-1),g=Math.max(g,0),n=t.color[g];break}default:n="#2DC214"}switch(typeof t.legend){case"string":r=t.legend;break;case"function":r=t.legend(l);break;case"boolean":r=l;break;default:r=!1}switch(typeof t.legendColor){case"string":a=t.legendColor;break;case"function":a=t.legendColor(l);break;case"object":if(Array.isArray(t.legendColor)){p=100/t.legendColor.length,g=Math.floor(o/p);g=Math.min(g,t.legendColor.length-1),g=Math.max(g,0),a=t.legendColor[g]}break;default:a="#000"}h.style.minWidth="30px",h.style.position="relative",h.setAttribute("aria-label",o);var b=document.createElement("div");b.style.display="inline-block",b.style.position="absolute",b.style.width=o+"%",b.style.backgroundColor=n,b.style.height="100%",b.setAttribute("data-max",d),b.setAttribute("data-min",u);var f=document.createElement("div");if(f.style.position="relative",f.style.width="100%",f.style.height="100%",r){var v=document.createElement("div");v.style.position="absolute",v.style.top=0,v.style.left=0,v.style.textAlign=m,v.style.width="100%",v.style.color=a,v.innerHTML=r}return i((function(){if(!(e instanceof c)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",h.appendChild(t),h=t}h.appendChild(f),f.appendChild(b),r&&f.appendChild(v)})),""},color:function(e,t,i){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,i){return''},buttonCross:function(e,t,i){return''},rownum:function(e,t,i){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
"},responsiveCollapse:function(e,t,i){var s=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function n(e){var t=o.element;o.open=e,t&&(o.open?(s.classList.add("open"),t.style.display=""):(s.classList.remove("open"),t.style.display="none"))}return s.classList.add("tabulator-responsive-collapse-toggle"),s.innerHTML="+-",e.getElement().classList.add("tabulator-row-handle"),s.addEventListener("click",(function(e){e.stopImmediatePropagation(),n(!o.open)})),n(o.open),s},rowSelection:function(e,t,i){var s=document.createElement("input");if(s.type="checkbox",this.table.modExists("selectRow",!0))if(s.addEventListener("click",(e=>{e.stopPropagation()})),"function"==typeof e.getRow){var o=e.getRow();o instanceof b?(s.addEventListener("change",(e=>{o.toggleSelect()})),s.checked=o.isSelected&&o.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(o,s)):s=""}else s.addEventListener("change",(e=>{this.table.modules.selectRow.selectedRows.length?this.table.deselectRow():this.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(s);return s}};class H extends t{constructor(e){super(e),this.registerColumnOption("formatter"),this.registerColumnOption("formatterParams"),this.registerColumnOption("formatterPrint"),this.registerColumnOption("formatterPrintParams"),this.registerColumnOption("formatterClipboard"),this.registerColumnOption("formatterClipboardParams"),this.registerColumnOption("formatterHtmlOutput"),this.registerColumnOption("formatterHtmlOutputParams"),this.registerColumnOption("titleFormatter"),this.registerColumnOption("titleFormatterParams")}initialize(){this.subscribe("cell-format",this.formatValue.bind(this)),this.subscribe("cell-rendered",this.cellRendered.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-format",this.formatHeader.bind(this))}initializeColumn(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))}lookupFormatter(e,t){var i={params:e.definition["formatter"+t+"Params"]||{}},s=e.definition["formatter"+t];switch(typeof s){case"string":H.formatters[s]?i.formatter=H.formatters[s]:(console.warn("Formatter Error - No such formatter found: ",s),i.formatter=H.formatters.plaintext);break;case"function":i.formatter=s;break;default:i.formatter=H.formatters.plaintext}return i}cellRendered(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}formatHeader(e,t,i){var s,o,n,r;return e.definition.titleFormatter?(s=this.getFormatter(e.definition.titleFormatter),n=t=>{e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i}},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,s.call(this,r,o,n)):t}formatValue(e){var t=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}formatExportValue(e,t){var i,s=e.column.modules.format[t];if(s){return i="function"==typeof s.params?s.params(component):s.params,s.formatter.call(this,e.getComponent(),i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}return this.formatValue(e)}sanitizeHTML(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,(function(e){return t[e]}))}return e}emptyToSpace(e){return null==e||""===e?" ":e}getFormatter(e){switch(typeof e){case"string":H.formatters[e]?e=H.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=H.formatters.plaintext);break;case"function":e=e;break;default:e=H.formatters.plaintext}return e}}H.moduleName="format",H.formatters=F;class P extends t{constructor(e){super(e),this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1,this.registerColumnOption("frozen")}reset(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0}initialize(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-width",this.layout.bind(this)),this.subscribe("row-layout-before",this.layoutRow.bind(this)),this.subscribe("table-layout",this.layout.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("table-redraw",this.layout.bind(this))}layoutCell(e){this.layoutElement(e.element,e.column)}initializeColumn(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")}frozenCheck(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen}scrollHorizontal(){var e;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout((()=>{this.layout()}),100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach((e=>{"row"===e.type&&this.layoutRow(e)})),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)}calcMargins(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft}layoutCalcRows(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))}layoutColumnPosition(e){var t=[];this.leftColumns.forEach(((i,s)=>{if(i.modules.frozen.margin=this._calcSpace(this.leftColumns,s)+this.table.columnManager.scrollLeft+"px",s==this.leftColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup){var o=this.getColGroupParentElement(i);t.includes(o)||(this.layoutElement(o,i),t.push(o)),i.modules.frozen.edge&&o.classList.add("tabulator-frozen-"+i.modules.frozen.position)}else this.layoutElement(i.getElement(),i);e&&i.cells.forEach((e=>{this.layoutElement(e.getElement(!0),i)}))})),this.rightColumns.forEach(((t,i)=>{t.modules.frozen.margin=this.rightPadding-this._calcSpace(this.rightColumns,i+1)+"px",i==this.rightColumns.length-1?t.modules.frozen.edge=!0:t.modules.frozen.edge=!1,t.parent.isGroup?this.layoutElement(this.getColGroupParentElement(t),t):this.layoutElement(t.getElement(),t),e&&t.cells.forEach((e=>{this.layoutElement(e.getElement(!0),t)}))}))}getColGroupParentElement(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}layout(){this.active&&(this.calcMargins(),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&this.layoutRow(e)})),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)}layoutRow(e){e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)})),this.rightColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)}))}layoutElement(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))}_calcSpace(e,t){var i=0;for(let s=0;s-1}isFrozen(){return!!this.rows.length}getRows(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}freezeRow(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.refreshData(!1,"display"),this.styleRows())}unfreezeRow(e){this.rows.indexOf(e);e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.refreshData(!1,"display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")}detachRow(e){var t=this.rows.indexOf(e);if(t>-1){var i=e.getElement();i.parentNode.removeChild(i),this.rows.splice(t,1)}}styleRows(e){this.rows.forEach(((e,t)=>{this.table.rowManager.styleRow(e,t)}))}}z.moduleName="frozenRows";class A{constructor(e){return this._group=e,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.table.componentFunctionBinder.handle("row",e._group,t)}})}getKey(){return this._group.key}getField(){return this._group.field}getElement(){return this._group.element}getRows(){return this._group.getRows(!0)}getSubGroups(){return this._group.getSubGroups(!0)}getParentGroup(){return!!this._group.parent&&this._group.parent.getComponent()}isVisible(){return this._group.visible}show(){this._group.show()}hide(){this._group.hide()}toggle(){this._group.toggleVisibility()}_getSelf(){return this._group}getTable(){return this._group.groupManager.table}}class O{constructor(e,t,i,s,o,n,r){this.groupManager=e,this.parent=t,this.key=s,this.level=i,this.field=o,this.hasSubGroups=i{this._createGroup(t,e)}))}addBindings(){var e,t,i;(this.groupManager.table.options.groupContextMenu||this.groupManager.table.options.groupClickMenu)&&this.groupManager.table.modExists("menu")&&this.groupManager.table.modules.menu.initializeGroup.call(this.groupManager.table.modules.menu,this),this.groupManager.table.options.groupTap&&(i=!1,this.element.addEventListener("touchstart",(e=>{i=!0}),{passive:!0}),this.element.addEventListener("touchend",(e=>{i&&this.groupManager.table.options.groupTap(e,this.getComponent()),i=!1}))),this.groupManager.table.options.groupDblTap&&(e=null,this.element.addEventListener("touchend",(t=>{e?(clearTimeout(e),e=null,this.groupManager.table.options.groupDblTap(t,this.getComponent())):e=setTimeout((()=>{clearTimeout(e),e=null}),300)}))),this.groupManager.table.options.groupTapHold&&(t=null,this.element.addEventListener("touchstart",(e=>{clearTimeout(t),t=setTimeout((()=>{clearTimeout(t),t=null,i=!1,this.groupManager.table.options.groupTapHold(e,this.getComponent())}),1e3)}),{passive:!0}),this.element.addEventListener("touchend",(e=>{clearTimeout(t),t=null}))),this.groupManager.table.options.groupToggleElement&&("arrow"==this.groupManager.table.options.groupToggleElement?this.arrowElement:this.element).addEventListener("click",(e=>{e.stopPropagation(),e.stopImmediatePropagation(),this.toggleVisibility()}))}_createGroup(e,t){var i=t+"_"+e,s=new O(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[i]);this.groups[i]=s,this.groupList.push(s)}_addRowToGroup(e){var t=this.level+1;if(this.hasSubGroups){var i=this.groupManager.groupIDLookups[t].func(e.getData()),s=t+"_"+i;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[s]&&this.groups[s].addRow(e):(this.groups[s]||this._createGroup(i,t),this.groups[s].addRow(e))}}_addRow(e){this.rows.push(e),e.modules.group=this}insertRow(e,t,i){var s=this.conformRowData({});e.updateData(s);var o=this.rows.indexOf(t);o>-1?i?this.rows.splice(o+1,0,e):this.rows.splice(o,0,e):i?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}scrollHeader(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)}))}getRowIndex(e){}conformRowData(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e}removeRow(e){var t=this.rows.indexOf(e),i=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(i.parentNode&&i.parentNode.removeChild(i),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))}getHeadersAndRows(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach((function(i){t=t.concat(i.getHeadersAndRows(e))})):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t}getData(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((e=>{i.push(e.getData(t||"data"))})),i}getRowCount(){var e=0;return this.groupList.length?this.groupList.forEach((t=>{e+=t.getRowCount()})):e=this.rows.length,e}toggleVisibility(){this.visible?this.hide():this.show()}hide(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((e=>{e.getHeadersAndRows().forEach((e=>{e.detachElement()}))})):this.rows.forEach((e=>{var t=e.getElement();t.parentNode.removeChild(t)})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}show(){if(this.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.getElement();this.groupList.length?this.groupList.forEach((t=>{t.getHeadersAndRows().forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}_visSet(){var e=[];"function"==typeof this.visible&&(this.rows.forEach((function(t){e.push(t.getData())})),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))}getRowGroup(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var s=i.getRowGroup(e);s&&(t=s)})):this.rows.find((function(t){return t===e}))&&(t=this),t}getSubGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getRows(e){var t=[];return this.rows.forEach((function(i){t.push(e?i.getComponent():i)})),t}generateGroupHeaderContents(){var e=[];for(this.rows.forEach((function(t){e.push(t.getData())})),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)}getPath(e=[]){return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}getElement(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;ei.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),this.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],this.langBind("groups|item",((e,t)=>{this.headerGenerator[0]=(i,s,o)=>(void 0===i?"":i)+"("+s+" "+(1===s?e:t.groups.items)+")"})),this.groupIDLookups=[],Array.isArray(e)||e)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs)this.table.columnManager.getRealColumns().forEach((e=>{e.definition.topCalc&&this.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&this.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(e)||(e=[e]),e.forEach(((e,t)=>{var i,s;i="function"==typeof e?e:(s=this.table.columnManager.getColumnByField(e))?function(e){return s.getFieldValue(e)}:function(t){return t[e]},this.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!this.allowedValues&&this.allowedValues[t]})})),t&&(Array.isArray(t)||(t=[t]),t.forEach((e=>{})),this.startOpen=t),i&&(this.headerGenerator=Array.isArray(i)?i:[i]),this.table.options.groupUpdateOnCellEdit&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("row-data-changed",this.reassignRowToGroup.bind(this),0)),this.subscribe("row-deleting",this.rowDeleting.bind(this)),this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("scroll-horizontal",this.scrollHeaders.bind(this)),this.subscribe("rows-wipe",this.wipe.bind(this)),this.subscribe("rows-added",this.rowsUpdated.bind(this)),this.subscribe("row-moving",this.rowMoving.bind(this)),this.subscribe("row-adding-index",this.rowAddingIndex.bind(this)),this.subscribe("rows-sample",this.rowSample.bind(this)),this.subscribe("render-virtual-fill",this.virtualRenderFill.bind(this)),this.registerDisplayHandler(this.displayHandler,20),this.initialized=!0}}rowSample(e,t){var i=this.getGroups(!1)[0];return t.push(i.getRows(!1)[0]),t}virtualRenderFill(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();t=t.filter((e=>"group"!==e.type)),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}rowAddingIndex(e,t,i){this.assignRowToGroup(e);var s=e.modules.group.rows;return s.length>1&&(!t||t&&-1==s.indexOf(t)?i?s[0]!==e&&(t=s[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):s[s.length-1]!==e&&(t=s[s.length-1],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)),t}trackChanges(){this.dispatch("group-changed")}setGroupBy(e){this.table.options.groupBy=e,this.initialize(),this.refreshData(!1,"display"),this.trackChanges()}setGroupValues(e){this.table.options.groupValues=e,this.initialize(),this.refreshData(!1,"display"),this.trackChanges()}setGroupStartOpen(e){this.table.options.groupStartOpen=e,this.initialize(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}setGroupHeader(e){this.table.options.groupHeader=e,this.initialize(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}userGetGroups(e){return this.getGroups(!0)}userGetGroupedData(){return this.table.options.groupBy?this.getGroupedData():this.getData()}rowGetGroup(e){return!!e.modules.group&&e.modules.group.getComponent()}rowMoving(e,t,i){!i&&t instanceof O&&(t=this.table.rowManager.prevDisplayRow(e)||t);var s=t instanceof O?t:t.modules.group,o=e instanceof O?e:e.modules.group;s===o?this.table.rowManager.moveRowInArray(s.rows,e,t,i):(o&&o.removeRow(e),s.insertRow(e,t,i))}rowDeleting(e){e.modules.group&&e.modules.group.removeRow(e)}rowsUpdated(e){this.updateGroupRows(!0)}cellUpdated(e){this.reassignRowToGroup(e.row)}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}getRows(e){return this.groupIDLookups.length?(Object.keys(this.groups).length||(this.dispatchExternal("dataGrouping"),this.generateGroups(e),this.subscribedExternal("dataGrouped")&&this.dispatchExternal("dataGrouped",this.getGroups(!0))),this.updateGroupRows()):e.slice(0)}getGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getChildGroups(e){var t=[];return e||(e=this),e.groupList.forEach((e=>{e.groupList.length?t=t.concat(this.getChildGroups(e)):t.push(e)})),t}wipe(){this.groupList.forEach((function(e){e.wipe()}))}pullGroupListData(e){var t=[];return e.forEach((e=>{var i={level:0,rowCount:0,headerContent:""},s=[];e.hasSubGroups?(s=this.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=s.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),t.push(i),t=t.concat(s)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,t.push(i),e.getRows().forEach((e=>{t.push(e.getData("data"))})))})),t}getGroupedData(){return this.pullGroupListData(this.groupList)}getRowGroup(e){var t=!1;return this.groupList.forEach((i=>{var s=i.getRowGroup(e);s&&(t=s)})),t}countGroups(){return this.groupList.length}generateGroups(e){var t=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((e=>{this.createGroup(e,0,t)})),e.forEach((e=>{this.assignRowToExistingGroup(e,t)}))):e.forEach((e=>{this.assignRowToGroup(e,t)}))}createGroup(e,t,i){var s,o=t+"_"+e;i=i||[],s=new O(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=s,this.groupList.push(s)}assignRowToExistingGroup(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}assignRowToGroup(e,t){var i=this.groupIDLookups[0].func(e.getData()),s=!this.groups["0_"+i];return s&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!s}reassignRowToGroup(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),s=this.getExpectedPath(e);i.length==s.length&&i.every(((e,t)=>e===s[t]))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}getExpectedPath(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((e=>{t.push(e.func(i))})),t}updateGroupRows(e){var t=[];return this.groupList.forEach((e=>{t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0,this.displayHandler),t}scrollHeaders(e){"virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((t=>{t.scrollHeader(e)}))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))}}_.moduleName="groupRows";class N extends t{constructor(e){super(e),this.history=[],this.index=-1,this.registerTableOption("history",!1)}initialize(){this.table.options.history&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("cell-delete",this.clearComponentHistory.bind(this)),this.subscribe("row-delete",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clear.bind(this)),this.subscribe("row-added",this.rowAdded.bind(this)),this.subscribe("row-move",this.rowMoved.bind(this))),this.registerTableFunction("undo",this.undo.bind(this)),this.registerTableFunction("redo",this.redo.bind(this)),this.registerTableFunction("getHistoryUndoSize",this.getHistoryUndoSize.bind(this)),this.registerTableFunction("getHistoryRedoSize",this.getHistoryRedoSize.bind(this)),this.registerTableFunction("clearHistory",this.clear.bind(this))}rowMoved(e,t,i){this.action("rowMove",e,{posFrom:this.table.rowManager.getRowPosition(e),posTo:this.table.rowManager.getRowPosition(t),to:t,after:i})}rowAdded(e,t,i,s){this.action("rowAdd",e,{data:t,pos:i,index:s})}rowDeleted(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup().rows).indexOf(e))&&(t=i[t-1]):(t=e.table.rowManager.getRowIndex(e))&&(t=e.table.rowManager.rows[t-1]),this.history.action("rowDelete",e,{data:e.getData(),pos:!t,index:t})}cellUpdated(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}clear(){this.history=[],this.index=-1}action(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}getHistoryUndoSize(){return this.index+1}getHistoryRedoSize(){return this.history.length-(this.index+1)}clearComponentHistory(e){var t=this.history.findIndex((function(t){return t.component===e}));t>-1&&(this.history.splice(t,1),t<=this.index&&this.index--,this.clearComponentHistory(e))}undo(){if(this.index>-1){let e=this.history[this.index];return N.undoers[e.type].call(this,e),this.index--,this.dispatchExternal("historyUndo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1}redo(){if(this.history.length-1>this.index){this.index++;let e=this.history[this.index];return N.redoers[e.type].call(this,e),this.dispatchExternal("historyRedo",e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1}_rebindRow(e,t){this.history.forEach((function(i){if(i.component instanceof Row)i.component===e&&(i.component=t);else if(i.component instanceof Cell&&i.component.row===e){var s=i.component.column.getField();s&&(i.component=t.getCell(s))}}))}}N.moduleName="history",N.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},N.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}};class B extends t{constructor(e){super(e),this.fieldIndex=[],this.hasIndex=!1}initialize(){this.subscribe("table-building",this.tableElementCheck.bind(this))}tableElementCheck(){"TABLE"===this.table.element.tagName&&this.parseTable()}parseTable(){var e=this.table.element,t=this.table.options,i=(t.columns,e.getElementsByTagName("th")),s=e.getElementsByTagName("tbody")[0],o=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),s=s?s.getElementsByTagName("tr"):[],this._extractOptions(e,t),i.length?this._extractHeaders(i,s):this._generateBlankHeaders(i,s);for(var n=0;n{n[e.toLowerCase()]=e})),s){var a,l=s[r];l&&"object"==typeof l&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==n[a]&&(t[n[a]]=this._attribValue(l.value)))}}_attribValue(e){return"true"===e||"false"!==e&&e}_findCol(e){return this.table.options.columns.find((t=>t.title===e))||!1}_extractHeaders(e,t){for(var i=0;i{clearTimeout(o.tapHold),o.tapHold=null,o.tap=null,clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"TapHold",i,s)}),1e3);break;case"end":o.tap&&(o.tap=null,this.dispatchEvent(e+"Tap",i,s)),o.tapDbl?(clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"DblTap",i,s)):o.tapDbl=setTimeout((()=>{clearTimeout(o.tapDbl),o.tapDbl=null}),300),clearTimeout(o.tapHold),o.tapHold=null}}dispatchEvent(e,t,i){var s,o=i.getComponent();this.columnSubscribers[e]&&(i instanceof u?s=i.column.definition[e]:i instanceof g&&(s=i.definition[e]),s&&s(t,o)),this.dispatchExternal(e,t,o)}}V.moduleName="interaction";class I extends t{constructor(e){super(e),this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1,this.registerTableOption("keybindings",[]),this.registerTableOption("tabEndNewRow",!1)}initialize(){var e=this.table.options.keybindings,t={};if(this.watchKeys={},this.pressedKeys=[],!1!==e){for(let e in I.bindings)t[e]=I.bindings[e];if(Object.keys(e).length)for(let i in e)t[i]=e[i];this.mapBindings(t),this.bindEvents()}this.subscribe("table-destroy",this.clearBindings.bind(this))}mapBindings(e){for(let t in e)I.actions[t]?e[t]&&("object"!=typeof e[t]&&(e[t]=[e[t]]),e[t].forEach((e=>{this.mapBinding(t,e)}))):console.warn("Key Binding Error - no such action:",t)}mapBinding(e,t){var i={action:I.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach((e=>{switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=parseInt(e),i.keys.push(e),this.watchKeys[e]||(this.watchKeys[e]=[]),this.watchKeys[e].push(i)}}))}bindEvents(){var e=this;this.keyupBinding=function(t){var i=t.keyCode,s=e.watchKeys[i];s&&(e.pressedKeys.push(i),s.forEach((function(i){e.checkBinding(t,i)})))},this.keydownBinding=function(t){var i=t.keyCode;if(e.watchKeys[i]){var s=e.pressedKeys.indexOf(i);s>-1&&e.pressedKeys.splice(s,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}clearBindings(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}checkBinding(e,t){var i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((e=>{-1==this.pressedKeys.indexOf(e)&&(i=!1)})),i&&t.action.call(this,e),!0)}}I.moduleName="keybindings",I.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},I.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i>=0?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,i=t.scrollTop+t.element.clientHeight,s=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=s?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){this.dispatch("keybinding-nav-prev",e)},navNext:function(e){this.dispatch("keybinding-nav-next",e)},navLeft:function(e){this.dispatch("keybinding-nav-left",e)},navRight:function(e){this.dispatch("keybinding-nav-right",e)},navUp:function(e){this.dispatch("keybinding-nav-up",e)},navDown:function(e){this.dispatch("keybinding-nav-down",e)},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}};class W extends t{constructor(e){super(e),this.menuElements=[],this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1,this.positionReversedX=!1,this.registerTableOption("rowContextMenu",!1),this.registerTableOption("rowClickMenu",!1),this.registerTableOption("groupContextMenu",!1),this.registerTableOption("groupClickMenu",!1),this.registerColumnOption("headerContextMenu"),this.registerColumnOption("headerMenu"),this.registerColumnOption("contextMenu"),this.registerColumnOption("clickMenu")}initialize(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this))}layoutCell(e){(e.column.definition.contextMenu||e.column.definition.clickMenu)&&this.initializeCell(e)}initializeColumn(e){var t=e.definition;(t.headerContextMenu||t.headerClickMenu||t.headerMenu)&&this.initializeColumnHeader(e)}initializeColumnHeader(e){var t;e.definition.headerContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.definition.headerContextMenu)),this.tapHold(e,e.definition.headerContextMenu)),e.definition.headerMenu&&((t=document.createElement("span")).classList.add("tabulator-header-menu-button"),t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.LoadMenuEvent(e,e.definition.headerMenu,t)})),e.titleElement.insertBefore(t,e.titleElement.firstChild))}LoadMenuEvent(e,t,i){t="function"==typeof t?t.call(this.table,e.getComponent(),i):t,this.loadMenu(i,e,t)}tapHold(e,t){var i=e.getElement(),s=null,o=!1;i.addEventListener("touchstart",(i=>{clearTimeout(s),o=!1,s=setTimeout((()=>{clearTimeout(s),s=null,o=!0,this.LoadMenuEvent(e,t,i)}),1e3)}),{passive:!0}),i.addEventListener("touchend",(e=>{clearTimeout(s),s=null,o&&e.preventDefault()}))}initializeCell(e){e.column.definition.contextMenu&&(e.getElement(!0).addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.column.definition.contextMenu)),this.tapHold(e,e.column.definition.contextMenu)),e.column.definition.clickMenu&&e.getElement(!0).addEventListener("click",this.LoadMenuEvent.bind(this,e,e.column.definition.clickMenu))}initializeRow(e){this.table.options.rowContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.rowContextMenu)),this.tapHold(e,this.table.options.rowContextMenu)),this.table.options.rowClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.rowClickMenu))}initializeGroup(e){this.table.options.groupContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.groupContextMenu)),this.tapHold(e,this.table.options.groupContextMenu)),this.table.options.groupClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.groupClickMenu))}loadMenu(e,t,i,s){var o=!(e instanceof MouseEvent),n=document.createElement("div");if(n.classList.add("tabulator-menu"),o||e.preventDefault(),i&&i.length){if(!s){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout((()=>{this.nestedMenuBlock=!1}),100);this.hideMenu(),this.menuElements=[]}i.forEach((e=>{var i=document.createElement("div"),s=e.label,o=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof s&&(s=s.call(this.table,t.getComponent())),s instanceof Node?i.appendChild(s):i.innerHTML=s,"function"==typeof o&&(o=o.call(this.table,t.getComponent())),o?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(e=>{e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(s=>{s.stopPropagation(),this.hideOldSubMenus(n),this.loadMenu(s,t,e.menu,i)})):e.action&&i.addEventListener("click",(i=>{e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),n.appendChild(i)})),n.addEventListener("click",(e=>{this.hideMenu()})),this.menuElements.push(n),this.positionMenu(n,s,o,e)}}hideOldSubMenus(e){var t=this.menuElements.indexOf(e);if(t>-1)for(let e=this.menuElements.length-1;e>t;e--){var i=this.menuElements[e];i.parentNode&&i.parentNode.removeChild(i),this.menuElements.pop()}}positionMenu(e,t,i,o){var n,r,a,l=Math.max(document.body.offsetHeight,window.innerHeight);t?(n=(a=s.elOffset(t)).left+t.offsetWidth,r=a.top-1):(n=i?o.touches[0].pageX:o.pageX,r=i?o.touches[0].pageY:o.pageY,this.positionReversedX=!1),e.style.top=r+"px",e.style.left=n+"px",setTimeout((()=>{this.table.rowManager.element.addEventListener("scroll",this.blurEvent),document.body.addEventListener("click",this.blurEvent),document.body.addEventListener("contextmenu",this.blurEvent),window.addEventListener("resize",this.blurEvent),document.body.addEventListener("keydown",this.escEvent)}),100),document.body.appendChild(e),r+e.offsetHeight>=l&&(e.style.top="",e.style.bottom=t?l-a.top-t.offsetHeight-1+"px":l-r+"px"),(n+e.offsetWidth>=document.body.offsetWidth||this.positionReversedX)&&(e.style.left="",e.style.right=t?document.documentElement.offsetWidth-a.left+"px":document.documentElement.offsetWidth-n+"px",this.positionReversedX=!0)}isOpen(){return!!this.menuElements.length}escMenu(e){27==e.keyCode&&this.hideMenu()}hideMenu(){this.menuElements.forEach((e=>{e.parentNode&&e.parentNode.removeChild(e)})),document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent)}}W.moduleName="menu";class j extends t{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.registerTableOption("movableColumns",!1)}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}initialize(){this.subscribe("column-init",this.initializeColumn.bind(this))}initializeColumn(e){var t,i=this,o={};e.modules.frozen||(t=e.getElement(),o.mousemove=function(o){e.parent===i.moving.parent&&((i.touchMove?o.touches[0].pageX:o.pageX)-s.elOffset(t).left+i.table.columnManager.element.scrollLeft>e.getWidth()/2?i.toCol===e&&i.toColAfter||(t.parentNode.insertBefore(i.placeholderElement,t.nextSibling),i.moveColumn(e,!0)):(i.toCol!==e||i.toColAfter)&&(t.parentNode.insertBefore(i.placeholderElement,t),i.moveColumn(e,!1)))}.bind(i),t.addEventListener("mousedown",(function(t){i.touchMove=!1,1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),i.bindTouchEvents(e)),e.modules.moveColumn=o}bindTouchEvents(e){var t,i,s,o,n,r,a=e.getElement(),l=!1;a.addEventListener("touchstart",(a=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,t=e.nextColumn(),s=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,n=0,r=0,l=!1,this.startMove(a,e)}),this.checkPeriod)}),{passive:!0}),a.addEventListener("touchmove",(a=>{var h,d;this.moving&&(this.moveHover(a),l||(l=a.touches[0].pageX),(h=a.touches[0].pageX-l)>0?t&&h-n>s&&(d=t)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveColumn(d,!0)):i&&-h-r>o&&(d=i)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveColumn(d,!1)),d&&(t=d.nextColumn(),n=s,s=t?t.getWidth()/2:0,i=d.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),a.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&this.endMove(e)}))}startMove(e,t){var i=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-s.elOffset(i).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}_bindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}_unbindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}moveColumn(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&s.parentNode.insertBefore(i[t].getElement(),s.nextSibling)})):e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&s.parentNode.insertBefore(i[t].getElement(),s)}))}endMove(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))}moveHover(e){var t,i=this.table.columnManager.getElement(),o=i.scrollLeft,n=(this.touchMove?e.touches[0].pageX:e.pageX)-s.elOffset(i).left+o;this.hoverElement.style.left=n-this.startX+"px",n-o{t=Math.max(0,o-5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1))),o+i.clientWidth-n{t=Math.min(i.clientWidth,o+5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1)))}}j.moduleName="moveColumn";class G extends t{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1,this.registerTableOption("movableRows",!1),this.registerTableOption("movableRowsConnectedTables",!1),this.registerTableOption("movableRowsConnectedElements",!1),this.registerTableOption("movableRowsSender",!1),this.registerTableOption("movableRowsReceiver","insert"),this.registerColumnOption("rowHandle")}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e}initialize(){this.table.options.movableRows&&(this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements,this.subscribe("cell-init",this.initializeCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)))}initializeGroupHeader(e){var t=this,i={};i.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),i.mousemove=function(i){var o;i.pageY-s.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2?t.toRow===e&&t.toRowAfter||((o=e.getElement()).parentNode.insertBefore(t.placeholderElement,o.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(o=e.getElement()).previousSibling&&(o.parentNode.insertBefore(t.placeholderElement,o),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=i}initializeRow(e){var t,i=this,o={};o.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),o.mousemove=function(t){var o=e.getElement();t.pageY-s.elOffset(o).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||(o.parentNode.insertBefore(i.placeholderElement,o.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(o.parentNode.insertBefore(i.placeholderElement,o),i.moveRow(e,!1))}.bind(i),this.hasHandle||((t=e.getElement()).addEventListener("mousedown",(function(t){1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=o}initializeColumn(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}initializeCell(e){if(e.column.definition.rowHandle&&!1!==this.table.options.movableRows){var t=this,i=e.getElement(!0);i.addEventListener("mousedown",(function(i){1===i.which&&(t.checkTimeout=setTimeout((function(){t.startMove(i,e.row)}),t.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)})),this.bindTouchEvents(e.row,i)}}bindTouchEvents(e,t){var i,s,o,n,r,a,l=!1;t.addEventListener("touchstart",(t=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,s=e.prevRow(),n=s?s.getHeight()/2:0,r=0,a=0,l=!1,this.startMove(t,e)}),this.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(t=>{var h,d;this.moving&&(t.preventDefault(),this.moveHover(t),l||(l=t.touches[0].pageY),(h=t.touches[0].pageY-l)>0?i&&h-r>o&&(d=i)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveRow(d,!0)):s&&-h-a>n&&(d=s)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveRow(d,!1)),d&&(i=d.nextRow(),r=o,o=i?i.getHeight()/2:0,s=d.prevRow(),a=n,n=s?s.getHeight()/2:0))})),t.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&(this.endMove(e),this.touchMove=!1)}))}_bindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}_unbindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}startMove(e,t){var i=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i)),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)}setStartPosition(e,t){var i,s,o=this.touchMove?e.touches[0].pageX:e.pageX,n=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(s=i.getBoundingClientRect(),this.startX=s.left-o+window.pageXOffset,this.startY=s.top-n+window.pageYOffset):this.startY=n-i.getBoundingClientRect().top}endMove(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))}moveRow(e,t){this.toRow=e,this.toRowAfter=t}moveHover(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}moveHoverTable(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,s=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=s-this.startY+"px"}moveHoverConnections(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"}elementRowDrop(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}connectToTables(e){var t;this.connectionSelectorsTables&&(t=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStart",t),this.commsSend(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach((e=>{"string"==typeof e?this.connectionElements=this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):this.connectionElements.push(e)})),this.connectionElements.forEach((e=>{var t=t=>{this.elementRowDrop(t,e,this.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}disconnectFromTables(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((e=>{e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}connect(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)})),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStart",t,e),!0)}disconnect(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)})),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStop",e)):console.warn("Move Row Error - trying to disconnect from non connected table")}dropComplete(e,t,i){var s=!1;if(i){switch(typeof this.table.options.movableRowsSender){case"string":s=this.senders[this.table.options.movableRowsSender];break;case"function":s=this.table.options.movableRowsSender}s?s.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()}tableRowDrop(e,t){var i=!1,s=!1;switch(e.stopImmediatePropagation(),typeof this.table.options.movableRowsReceiver){case"string":i=this.receivers[this.table.options.movableRowsReceiver];break;case"function":i=this.table.options.movableRowsReceiver}i?s=i.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),s?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:t,success:s})}commsReceived(e,t,i){switch(t){case"connect":return this.connect(e,i.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,i.row,i.success)}}}G.prototype.receivers={insert:function(e,t,i){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,i){return this.table.addRow(e.getData()),!0},update:function(e,t,i){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,i){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},G.prototype.senders={delete:function(e,t,i){e.delete()}},G.moduleName="moveRow";class U extends t{constructor(e){super(e),this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0,this.registerColumnOption("mutator"),this.registerColumnOption("mutatorParams"),this.registerColumnOption("mutatorData"),this.registerColumnOption("mutatorDataParams"),this.registerColumnOption("mutatorEdit"),this.registerColumnOption("mutatorEditParams"),this.registerColumnOption("mutatorClipboard"),this.registerColumnOption("mutatorClipboardParams")}initialize(){this.subscribe("cell-value-changing",this.transformCell.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-init-before",this.rowDataChanged.bind(this)),this.subscribe("row-data-changing",this.rowDataChanged.bind(this))}rowDataChanged(e,t,i){return this.transformRow(t,"data",i)}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="mutator"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupMutator(e.definition[n]))&&(t=!0,i[n]={mutator:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.mutate=i)}lookupMutator(e){var t=!1;switch(typeof e){case"string":U.mutators[e]?t=U.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t,i){var s,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((n=>{var r,a,l;n.modules.mutate&&(r=n.modules.mutate[o]||n.modules.mutate.mutator||!1)&&(s=n.getFieldValue(void 0!==i?i:e),"data"!=t&&void 0===s||(l=n.getComponent(),a="function"==typeof r.params?r.params(s,e,t,l):r.params,n.setFieldValue(e,r.mutator(s,e,t,a,l))))})),e}transformCell(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,s={};if(i)return s=Object.assign(s,e.row.getData()),e.column.setFieldValue(s,t),i.mutator(t,s,"edit",i.params,e.getComponent())}return t}enable(){this.enabled=!0}disable(){this.enabled=!1}}U.moduleName="mutator",U.mutators={};class X extends t{constructor(e){super(e),this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.dataChanging=!1,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.registerTableOption("pagination",!1),this.registerTableOption("paginationMode","local"),this.registerTableOption("paginationSize",!1),this.registerTableOption("paginationInitialPage",1),this.registerTableOption("paginationButtonCount",5),this.registerTableOption("paginationSizeSelector",!1),this.registerTableOption("paginationElement",!1),this.registerTableOption("paginationAddRow","page"),this.registerTableOption("progressiveLoad",!1),this.registerTableOption("progressiveLoadDelay",0),this.registerTableOption("progressiveLoadScrollMargin",0),this.registerTableFunction("setMaxPage",this.setMaxPage.bind(this)),this.registerTableFunction("setPage",this.setPage.bind(this)),this.registerTableFunction("setPageToRow",this.userSetPageToRow.bind(this)),this.registerTableFunction("setPageSize",this.userSetPageSize.bind(this)),this.registerTableFunction("getPageSize",this.getPageSize.bind(this)),this.registerTableFunction("previousPage",this.previousPage.bind(this)),this.registerTableFunction("nextPage",this.nextPage.bind(this)),this.registerTableFunction("getPage",this.getPage.bind(this)),this.registerTableFunction("getPageMax",this.getPageMax.bind(this)),this.registerComponentFunction("row","pageTo",this.setPageToRow.bind(this))}initialize(){this.table.options.pagination?(this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("row-adding-position",this.rowAddingPosition.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),"remote"===this.table.options.paginationMode&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this))),this.table.options.progressiveLoad&&console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"),this.registerDisplayHandler(this.restOnRenderBefore.bind(this),40),this.registerDisplayHandler(this.getRows.bind(this),50),this.createElements(),this.initializePaginator()):this.table.options.progressiveLoad&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.initializeProgressive(this.table.options.progressiveLoad),"scroll"===this.table.options.progressiveLoad&&this.subscribe("scroll-vertical",this.scrollVertical.bind(this)))}rowAddingPosition(e,t){var i,s=this.table.rowManager,o=s.getDisplayRows();return t?o.length?i=o[0]:s.activeRows.length&&(i=s.activeRows[s.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.length{var t=document.createElement("option");t.value=e,!0===e?this.langBind("pagination|all",(function(e){t.innerHTML=e})):t.innerHTML=e,this.pageSizeSelect.appendChild(t)})),this.pageSizeSelect.value=this.size}}initializePaginator(e){var t;e||(this.langBind("pagination|first",(e=>{this.firstBut.innerHTML=e})),this.langBind("pagination|first_title",(e=>{this.firstBut.setAttribute("aria-label",e),this.firstBut.setAttribute("title",e)})),this.langBind("pagination|prev",(e=>{this.prevBut.innerHTML=e})),this.langBind("pagination|prev_title",(e=>{this.prevBut.setAttribute("aria-label",e),this.prevBut.setAttribute("title",e)})),this.langBind("pagination|next",(e=>{this.nextBut.innerHTML=e})),this.langBind("pagination|next_title",(e=>{this.nextBut.setAttribute("aria-label",e),this.nextBut.setAttribute("title",e)})),this.langBind("pagination|last",(e=>{this.lastBut.innerHTML=e})),this.langBind("pagination|last_title",(e=>{this.lastBut.setAttribute("aria-label",e),this.lastBut.setAttribute("title",e)})),this.firstBut.addEventListener("click",(()=>{this.setPage(1)})),this.prevBut.addEventListener("click",(()=>{this.previousPage()})),this.nextBut.addEventListener("click",(()=>{this.nextPage()})),this.lastBut.addEventListener("click",(()=>{this.setPage(this.max)})),this.table.options.paginationElement&&(this.element=this.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),this.langBind("pagination|page_size",(e=>{this.pageSizeSelect.setAttribute("aria-label",e),this.pageSizeSelect.setAttribute("title",e),t.innerHTML=e})),this.element.appendChild(t),this.element.appendChild(this.pageSizeSelect),this.pageSizeSelect.addEventListener("change",(e=>{this.setPageSize("true"==this.pageSizeSelect.value||this.pageSizeSelect.value),this.setPage(1)}))),this.element.appendChild(this.firstBut),this.element.appendChild(this.prevBut),this.element.appendChild(this.pagesElement),this.element.appendChild(this.nextBut),this.element.appendChild(this.lastBut),this.table.options.paginationElement||e||this.table.footerManager.append(this.element,this),this.page=this.table.options.paginationInitialPage,this.count=this.table.options.paginationButtonCount,this.generatePageSizeSelectList()),this.mode=this.table.options.paginationMode}initializeProgressive(e){this.initializePaginator(!0),this.mode="progressive_"+e,this.progressiveLoad=!0}trackChanges(){this.dispatch("page-changed")}setDisplayIndex(e){this.displayIndex=e}getDisplayIndex(){return this.displayIndex}setMaxRows(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)}reset(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1)}setMaxPage(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}setPage(e){switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return(e=parseInt(e))>0&&e<=this.max||"local"!==this.mode?(this.page=e,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Requested page is out of range of 1 - "+this.max+":",e),Promise.reject())}setPageToRow(e){var t=this.table.rowManager.getDisplayRows(this.displayIndex-1).indexOf(e);if(t>-1){var i=!0===this.size?1:Math.ceil((t+1)/this.size);return this.setPage(i)}return console.warn("Pagination Error - Requested row is not visible"),Promise.reject()}setPageSize(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}_setPageButtons(){let e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&e<=this.max&&this.pagesElement.appendChild(this._generatePageButton(e));this.footerRedraw()}_generatePageButton(e){var t=document.createElement("button");return t.classList.add("tabulator-page"),e==this.page&&t.classList.add("active"),t.setAttribute("type","button"),t.setAttribute("role","button"),this.langBind("pagination|page_title",(i=>{t.setAttribute("aria-label",i+" "+e),t.setAttribute("title",i+" "+e)})),t.setAttribute("data-page",e),t.textContent=e,t.addEventListener("click",(t=>{this.setPage(e)})),t}previousPage(){return this.page>1?(this.page--,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Previous page would be less than page 1:",0),Promise.reject())}nextPage(){return this.page{this.dataChanging=!1}));case"progressive_load":case"progressive_scroll":return this.reloadData(null,!0);default:return console.warn("Pagination Error - no such pagination mode:",this.mode),Promise.reject()}}_parseRemoteData(e){var t;if(void 0===e.last_page&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e.data){if(this.max=parseInt(e.last_page)||1,this.progressiveLoad){switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e.data,!1,1==this.page):this.table.rowManager.addRows(e.data),this.page{this.nextPage()}),this.table.options.progressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e.data),this.table.rowManager.setData(e,1!==this.page,1==this.page),t=this.table.options.progressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,this.table.rowManager.element.scrollHeight<=this.table.rowManager.element.clientHeight+t&&setTimeout((()=>{this.nextPage()}))}return!1}this.dispatchExternal("pageLoaded",this.getPage())}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property");return e.data}footerRedraw(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))}}X.moduleName="page";var q={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s,o=document.cookie,n=e+"-"+t,r=o.indexOf(n+"=");return r>-1&&((i=(o=o.substr(r)).indexOf(";"))>-1&&(o=o.substr(0,i)),s=o.replace(n+"=","")),!!s&&JSON.parse(s)}},K={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var s=new Date;s.setDate(s.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+s.toUTCString()}};class Y extends t{constructor(e){super(e),this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1,this.registerTableOption("persistence",!1),this.registerTableOption("persistenceID",""),this.registerTableOption("persistenceMode",!0),this.registerTableOption("persistenceReaderFunc",!1),this.registerTableOption("persistenceWriterFunc",!1)}localStorageTest(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}initialize(){if(this.table.options.persistence){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:Y.readers[this.table.options.persistenceReaderFunc]?this.readFunc=Y.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):Y.readers[this.mode]?this.readFunc=Y.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:Y.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=Y.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):Y.writers[this.mode]?this.writeFunc=Y.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader)),this.config.columns&&(this.table.options.columns=this.load("columns",this.table.options.columns),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-show",this.save.bind(this,"columns")),this.subscribe("column-hide",this.save.bind(this,"columns")),this.subscribe("column-moved",this.save.bind(this,"columns")),this.subscribe("table-built",this.tableBuilt.bind(this),0)),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("filter-changed",this.eventSave.bind(this,"filter")),this.subscribe("sort-changed",this.eventSave.bind(this,"sort")),this.subscribe("group-changed",this.eventSave.bind(this,"group")),this.subscribe("page-changed",this.eventSave.bind(this,"page")),this.subscribe("column-resized",this.eventSave.bind(this,"columns")),this.subscribe("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}eventSave(e){this.config[e]&&this.save(e)}tableBuilt(){var e,t;this.table.options;this.config.sort&&!1==!(e=this.load("sort"))&&(this.table.initialSort=e),this.config.filter&&!1==!(t=this.load("filter"))&&(this.table.initialFilter=t)}tableRedraw(e){e&&this.config.columns&&this.save("columns")}getColumnLayout(){return this.parseColumns(this.table.columnManager.getColumns())}setColumnLayout(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e)),!0}initializeColumn(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((e=>{var i=Object.getOwnPropertyDescriptor(t,e),s=t[e];i&&Object.defineProperty(t,e,{set:function(e){s=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),s}})})),this.defWatcherBlock=!1)}load(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}retreiveData(e){return!!this.readFunc&&this.readFunc(this.id,e)}mergeDefinition(e,t){var i=[];return(t=t||[]).forEach(((t,s)=>{var o,n=this._findColumn(e,t);n&&(!0===this.config.columns||null==this.config.columns?(o=Object.keys(n)).push("width"):o=this.config.columns,o.forEach((e=>{"columns"!==e&&void 0!==t[e]&&(n[e]=t[e])})),n.columns&&(n.columns=this.mergeDefinition(n.columns,t.columns)),i.push(n))})),e.forEach(((e,s)=>{this._findColumn(t,e)||(i.length>s?i.splice(s,0,e):i.push(e))})),i}_findColumn(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find((function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}}))}save(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)}validateSorters(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}getGroupConfig(){var e={};return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e}getPageConfig(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e}parseColumns(e){var t=[],i=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((e=>{var s,o={},n=e.getDefinition();e.isGroup?(o.title=n.title,o.columns=this.parseColumns(e.getColumns())):(o.field=e.getField(),!0===this.config.columns||null==this.config.columns?(s=Object.keys(n)).push("width"):s=this.config.columns,s.forEach((t=>{switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:"function"!=typeof n[t]&&-1===i.indexOf(t)&&(o[t]=n[t])}}))),t.push(o)})),t}}Y.moduleName="persistence",Y.readers=q,Y.writers=K;class J extends t{constructor(e){super(e),this.element=!1,this.manualBlock=!1,this.registerTableOption("printAsHtml",!1),this.registerTableOption("printFormatter",!1),this.registerTableOption("printHeader",!1),this.registerTableOption("printFooter",!1),this.registerTableOption("printStyled",!0),this.registerTableOption("printRowRange","visible"),this.registerTableOption("printConfig",{}),this.registerColumnOption("print"),this.registerColumnOption("titlePrint")}initialize(){this.table.options.printAsHtml&&(window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}replaceTable(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))}cleanup(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}printFullscreen(e,t,i){var s,o,n=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),h=this.table.modules.export.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e||this.table.options.printRowRange,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),"string"==typeof(s="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?a.innerHTML=s:a.appendChild(s),this.element.appendChild(a)),this.element.appendChild(h),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(o="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=o:l.appendChild(o),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,h),window.print(),this.cleanup(),window.scrollTo(n,r),this.manualBlock=!1}}J.moduleName="print";class $ extends t{constructor(e){super(e),this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0,this.registerTableOption("reactiveData",!1)}initialize(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this)),this.subscribe("cell-value-save-after",this.unblock.bind(this)),this.subscribe("row-data-save-before",this.block.bind(this)),this.subscribe("row-data-save-after",this.unblock.bind(this)),this.subscribe("row-data-init-after",this.watchRow.bind(this)),this.subscribe("data-processing",this.watchData.bind(this)),this.subscribe("table-destroy",this.unwatchData.bind(this)))}watchData(e){var t;this.currentVersion++,t=this.currentVersion,this.unwatchData(),this.data=e,this.origFuncs.push=e.push,Object.defineProperty(this.data,"push",{enumerable:!1,configurable:!0,value:()=>{var i=Array.from(arguments);return this.blocked||t!==this.currentVersion||i.forEach((e=>{this.table.rowManager.addRowActual(e,!1)})),this.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:()=>{var i=Array.from(arguments);return this.blocked||t!==this.currentVersion||i.forEach((e=>{this.table.rowManager.addRowActual(e,!0)})),this.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:()=>{var i;return this.blocked||t!==this.currentVersion||this.data.length&&(i=this.table.rowManager.getRowFromDataObject(this.data[0]))&&i.deleteActual(),this.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:()=>{var i;return this.blocked||t!==this.currentVersion||this.data.length&&(i=this.table.rowManager.getRowFromDataObject(this.data[this.data.length-1]))&&i.deleteActual(),this.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:()=>{var i,s=Array.from(arguments),o=s[0]<0?e.length+s[0]:s[0],n=s[1],r=!!s[2]&&s.slice(2);if(!this.blocked&&t===this.currentVersion){if(r&&((i=!!e[o]&&this.table.rowManager.getRowFromDataObject(e[o]))?r.forEach((e=>{this.table.rowManager.addRowActual(e,!0,i,!0)})):(r=r.slice().reverse()).forEach((e=>{this.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==n){var a=e.slice(o,void 0===s[1]?s[1]:o+n);a.forEach(((e,t)=>{var i=this.table.rowManager.getRowFromDataObject(e);i&&i.deleteActual(t!==a.length-1)}))}(r||0!==n)&&this.table.rowManager.reRenderInPosition()}return this.origFuncs.splice.apply(e,arguments)}})}unwatchData(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})}watchRow(e){var t=e.getData();for(var i in this.blocked=!0,t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1}watchTreeChildren(e){var t=e.getData()[this.table.options.dataTreeChildField],i={};function s(){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}t&&(i.push=t.push,Object.defineProperty(t,"push",{enumerable:!1,configurable:!0,value:()=>{var e=i.push.apply(t,arguments);return s(),e}}),i.unshift=t.unshift,Object.defineProperty(t,"unshift",{enumerable:!1,configurable:!0,value:()=>{var e=i.unshift.apply(t,arguments);return s(),e}}),i.shift=t.shift,Object.defineProperty(t,"shift",{enumerable:!1,configurable:!0,value:()=>{var e=i.shift.call(t);return s(),e}}),i.pop=t.pop,Object.defineProperty(t,"pop",{enumerable:!1,configurable:!0,value:()=>{var e=i.pop.call(t);return s(),e}}),i.splice=t.splice,Object.defineProperty(t,"splice",{enumerable:!1,configurable:!0,value:()=>{var e=i.splice.apply(t,arguments);return s(),e}}))}watchKey(e,t,i){var s=Object.getOwnPropertyDescriptor(t,i),o=t[i],n=this.currentVersion;Object.defineProperty(t,i,{set:t=>{if(o=t,!this.blocked&&n===this.currentVersion){var r={};r[i]=t,e.updateData(r)}s.set&&s.set(t)},get:()=>(s.get&&s.get(),o)})}unwatchRow(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}block(){this.blocked=!0}unblock(){this.blocked=!1}}$.moduleName="reactiveData";class Q extends t{constructor(e){super(e),this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null,this.registerColumnOption("resizable",!0)}initialize(){this.subscribe("cell-layout",this.layoutCellHandles.bind(this)),this.subscribe("column-init",this.layoutColumnHeader.bind(this))}layoutCellHandles(e){"row"===e.row.type&&this.initializeColumn("cell",e.column,e.element)}layoutColumnHeader(e){this.initializeColumn("header",e,e.element)}initializeColumn(e,t,i){var s=this,o=!1,n=t.definition.resizable;if("header"===e&&(o="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:o}),!0===n||n==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var a=document.createElement("div");a.className="tabulator-col-resize-handle prev",r.addEventListener("click",(function(e){e.stopPropagation()}));var l=function(e){var i=t.getLastColumn();i&&s._checkResizability(i)&&(s.startColumn=t,s._mouseDown(e,i,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",(function(e){var i=t.getLastColumn();i&&s._checkResizability(i)&&(e.stopPropagation(),i.reinitializeWidth(!0))})),a.addEventListener("click",(function(e){e.stopPropagation()}));var h=function(e){var i,o,n;(i=t.getFirstColumn())&&(n=(o=s.table.columnManager.findColumnIndex(i))>0&&s.table.columnManager.getColumnByIndex(o-1))&&s._checkResizability(n)&&(s.startColumn=t,s._mouseDown(e,n,a))};a.addEventListener("mousedown",h),a.addEventListener("touchstart",h,{passive:!0}),a.addEventListener("dblclick",(function(e){var i,o,n;(i=t.getFirstColumn())&&(n=(o=s.table.columnManager.findColumnIndex(i))>0&&s.table.columnManager.getColumnByIndex(o-1))&&s._checkResizability(n)&&(e.stopPropagation(),n.reinitializeWidth(!0))})),i.appendChild(r),i.appendChild(a)}}_checkResizability(e){return e.definition.resizable}_mouseDown(e,t,i){var s=this;function o(e){s.table.rtl?t.setWidth(s.startWidth-((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)):t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),s.table.columnManager.renderer.rerenderColumns(!0),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.dispatch("column-resized",t),s.table.externalEvents.dispatch("columnResized",t.getComponent())}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}Q.moduleName="resizeColumns";class Z extends t{constructor(e){super(e),this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null,this.registerTableOption("resizableRows",!1)}initialize(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}initializeRow(e){var t=this,i=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",s.addEventListener("click",(function(e){e.stopPropagation()}));var n=function(i){t.startRow=e,t._mouseDown(i,e,s)};s.addEventListener("mousedown",n),s.addEventListener("touchstart",n,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(i,s,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(s),i.appendChild(o)}_mouseDown(e,t,i){var s=this;function o(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),this.dispatchExternal("rowResized",t.getComponent())}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}Z.moduleName="resizeRows";class ee extends t{constructor(e){super(e),this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1,this.registerTableOption("autoResize",!0)}initialize(){if(this.table.options.autoResize){var e,t=this.table;this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.tableHeight==i&&this.tableWidth==s||(this.tableHeight=i,this.tableWidth=s,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),this.table.columnManager.renderer.rerenderColumns(!0),t.redraw())}})),this.observer.observe(t.element),e=window.getComputedStyle(t.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(e.getPropertyValue("max-height")||e.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.containerHeight==i&&this.containerWidth==s||(this.containerHeight=i,this.containerWidth=s,this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth),t.columnManager.renderer.rerenderColumns(!0),t.redraw()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!t.browserMobile||t.browserMobile&&!t.modules.edit.currentCell)&&(t.columnManager.renderer.rerenderColumns(!0),t.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}tableResized(){this.table.rowManager.redraw()}clearBindings(){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}ee.moduleName="resizeTable";class te extends t{constructor(e){super(e),this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1,this.registerTableOption("responsiveLayout",!1),this.registerTableOption("responsiveLayoutCollapseStartOpen",!0),this.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),this.registerTableOption("responsiveLayoutCollapseFormatter",!1),this.registerColumnOption("responsive")}initialize(){this.table.options.responsiveLayout&&(this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-show",this.updateColumnVisibility.bind(this)),this.subscribe("column-hide",this.updateColumnVisibility.bind(this)),this.subscribe("columns-loaded",this.initializeResponsivity.bind(this)),this.subscribe("column-moved",this.initializeResponsivity.bind(this)),this.subscribe("column-add",this.initializeResponsivity.bind(this)),this.subscribe("column-delete",this.initializeResponsivity.bind(this)),this.subscribe("table-redrawing",this.tableRedraw.bind(this)),"collapse"===this.table.options.responsiveLayout&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}tableRedraw(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}initializeResponsivity(){var e=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach((function(t,i){t.modules.responsive&&t.modules.responsive.order&&t.modules.responsive.visible&&(t.modules.responsive.index=i,e.push(t),t.visible||"collapse"!==self.mode||self.hiddenColumns.push(t))})),e=(e=e.reverse()).sort((function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index})),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent();for(let e of this.table.columnManager.columnsByIndex)if("responsiveCollapse"==e.definition.formatter){this.collapseHandleColumn=e;break}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}initializeColumn(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}initializeRow(e){var t;"calc"!==e.type&&((t=document.createElement("div")).classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))}layoutRow(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}updateColumnVisibility(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initialize())}hideColumn(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())}showColumn(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())}update(){for(var e=this,t=!0;t;){let i="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),s=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-i;if(s<0){let i=e.columns[e.index];i?(e.hideColumn(i),e.index++):t=!1}else{let i=e.columns[e.index-1];i&&s>0&&s>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}}generateCollapsedContent(){var e=this;this.table.rowManager.getDisplayRows().forEach((function(t){e.generateCollapsedRowContent(t)}))}generateCollapsedRowContent(e){var t,i;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(i=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(i)}}generateCollapsedRowData(e){var t,i=this,s=e.getData(),o=[];return this.hiddenColumns.forEach((function(n){var r=n.getFieldValue(s);n.definition.title&&n.field&&(n.modules.format&&i.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return r},getData:function(){return s},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return n.getComponent()}},o.push({field:n.field,title:n.definition.title,value:n.modules.format.formatter.call(i.table.modules.format,t,n.modules.format.params)})):o.push({field:n.field,title:n.definition.title,value:r}))})),o}formatCollapsedData(e){var t=document.createElement("table");return e.forEach((function(e){var i,s=document.createElement("tr"),o=document.createElement("td"),n=document.createElement("td"),r=document.createElement("strong");o.appendChild(r),this.langBind("columns|"+e.field,(function(t){r.innerText=t||e.title})),e.value instanceof Node?((i=document.createElement("div")).appendChild(e.value),n.appendChild(i)):n.innerHTML=e.value,s.appendChild(o),s.appendChild(n),t.appendChild(s)}),this),Object.keys(e).length?t:""}}te.moduleName="responsiveLayout";class ie extends t{constructor(e){super(e),this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null,this.registerTableOption("selectable","highlight"),this.registerTableOption("selectableRangeMode","drag"),this.registerTableOption("selectableRollingSelection",!0),this.registerTableOption("selectablePersistence",!0),this.registerTableOption("selectableCheck",(function(e,t){return!0})),this.registerTableFunction("selectRow",this.selectRows.bind(this)),this.registerTableFunction("deselectRow",this.deselectRows.bind(this)),this.registerTableFunction("toggleSelectRow",this.toggleRow.bind(this)),this.registerTableFunction("getSelectedRows",this.getSelectedRows.bind(this)),this.registerTableFunction("getSelectedData",this.getSelectedData.bind(this)),this.registerComponentFunction("row","select",this.selectRows.bind(this)),this.registerComponentFunction("row","deselect",this.deselectRows.bind(this)),this.registerComponentFunction("row","toggleSelect",this.toggleRow.bind(this)),this.registerComponentFunction("row","isSelected",this.isRowSelected.bind(this))}initialize(){!1!==this.table.options.selectable&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-deleting",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clearSelectionData.bind(this)),this.subscribe("rows-retrieve",this.clearSelectionData.bind(this)),this.table.options.selectable&&this.table.options.selectablePersistence&&this.subscribe("data-refeshing",this.deselectRows.bind(this)))}rowRetrieve(e,t){return"selected"===e?this.selectedRows:t}rowDeleted(e){this._deselectRow(e,!0)}clearSelectionData(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],!0!==e&&this._rowSelectionChanged()}initializeRow(e){var t=this,i=e.getElement(),s=function(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",s)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(i.classList.add("tabulator-selectable"),i.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?i.addEventListener("click",(function(i){if(i.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var s=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),o=t.table.rowManager.getDisplayRowIndex(e),n=s<=o?s:o,r=s>=o?s:o,a=t.table.rowManager.getDisplayRows().slice(0).splice(n,r-n+1);i.ctrlKey||i.metaKey?(a.forEach((function(i){i!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)||t.selectedRows.lengtht.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a)),t.table._clearSelection()}else i.ctrlKey||i.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)})):(i.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),i.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",s),document.body.addEventListener("keyup",s),t.toggleRow(e),!1})),i.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),i.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))):(i.classList.add("tabulator-unselectable"),i.classList.remove("tabulator-selectable"))}toggleRow(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}selectRows(e){var t;switch(typeof e){case"undefined":this.table.rowManager.rows.forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;case"string":(t=this.table.rowManager.findRow(e))?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach((e=>{this._selectRow(e,!0,!0)})),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}}_selectRow(e,t,i){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!i&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var s=this.table.rowManager.findRow(e);s?-1==this.selectedRows.indexOf(s)&&(s.getElement().classList.add("tabulator-selected"),s.modules.select||(s.modules.select={}),s.modules.select.selected=!0,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!0),this.selectedRows.push(s),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!0),t||this.dispatchExternal("rowSelected",s.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}isRowSelected(e){return-1!==this.selectedRows.indexOf(e)}deselectRows(e,t){var i,s=this;if(void 0===e){i=s.selectedRows.length;for(let e=0;e-1&&(o.getElement().classList.remove("tabulator-selected"),o.modules.select||(o.modules.select={}),o.modules.select.selected=!1,o.modules.select.checkboxEl&&(o.modules.select.checkboxEl.checked=!1),s.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(o,!1),t||this.dispatchExternal("rowDeselected",o.getComponent()),s._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}getSelectedData(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}getSelectedRows(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}_rowSelectionChanged(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows())}registerRowSelectCheckbox(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}registerHeaderSelectCheckbox(e){this.headerCheckboxElement=e}childRowSelection(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t)for(let e of i)this._selectRow(e,!0);else for(let e of i)this._deselectRow(e,!0)}}function se(e,t,i,s,o,n,r){var a=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",h=r.alignEmptyValues,d=0;if(void 0!==a){if(e=a.fromFormat(e,l),t=a.fromFormat(t,l),e.isValid){if(t.isValid)return e-t;d=1}else d=t.isValid?-1:0;return("top"===h&&"desc"===n||"bottom"===h&&"asc"===n)&&(d*=-1),d}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}ie.moduleName="selectRow";var oe={number:function(e,t,i,s,o,n,r){var a=r.alignEmptyValues,l=r.decimalSeparator,h=r.thousandSeparator,d=0;if(e=String(e),t=String(t),h&&(e=e.split(h).join(""),t=t.split(h).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))d=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;d=1}return("top"===a&&"desc"===n||"bottom"===a&&"asc"===n)&&(d*=-1),d},string:function(e,t,i,s,o,n,r){var a,l=r.alignEmptyValues,h=0;if(e){if(t){switch(typeof r.locale){case"boolean":r.locale&&(a=this.langLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}h=1}else h=t?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},date:function(e,t,i,s,o,n,r){return r.format||(r.format="dd/MM/yyyy"),se.call(this,e,t,i,s,o,n,r)},time:function(e,t,i,s,o,n,r){return r.format||(r.format="HH:mm"),se.call(this,e,t,i,s,o,n,r)},datetime:se,boolean:function(e,t,i,s,o,n,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,i,s,o,n,r){var a=r.type||"length",l=r.alignEmptyValues,h=0;function d(e){switch(a){case"length":return e.length;case"sum":return e.reduce((function(e,t){return e+t}));case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce((function(e,t){return e+t}))/e.length}}if(Array.isArray(e)){if(Array.isArray(t))return(e?d(e):0)-(t?d(t):0);l=1}else l=Array.isArray(t)?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},exists:function(e,t,i,s,o,n,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,s,o,n,r){var a,l,h,d,c,u=0,m=/(\d+)|(\D+)/g,p=/\d/,g=r.alignEmptyValues,b=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((a=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(m),l=l.match(m),c=a.length>l.length?l.length:a.length;ud?1:-1;return a.length>l.length}b=1}else b=t||0===t?-1:0;return("top"===g&&"desc"===n||"bottom"===g&&"asc"===n)&&(b*=-1),b}};class ne extends t{constructor(e){super(e),this.sortList=[],this.changed=!1,this.registerTableOption("sortMode","local"),this.registerTableOption("initialSort",!1),this.registerTableOption("columnHeaderSortMulti",!0),this.registerTableOption("sortOrderReverse",!1),this.registerTableOption("headerSortElement","
"),this.registerColumnOption("sorter"),this.registerColumnOption("sorterParams"),this.registerColumnOption("headerSort",!0),this.registerColumnOption("headerSortStartingDir"),this.registerColumnOption("headerSortTristate")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.registerDataHandler(this.sort.bind(this),20),this.registerTableFunction("setSort",this.userSetSort.bind(this)),this.registerTableFunction("getSorters",this.getSort.bind(this)),this.registerTableFunction("clearSort",this.clearSort.bind(this)),"remote"===this.table.options.sortMode&&this.subscribe("data-params",this.remoteSortParams.bind(this))}tableBuilt(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}remoteSortParams(e,t,i,s){var o=this.getSort();return o.forEach((e=>{delete e.column})),s.sort=o,s}userSetSort(e,t){this.setSort(e,t),this.refreshSort()}clearSort(){this.clear(),this.refreshSort()}initializeColumn(e){var t,i,s=!1;switch(typeof e.definition.sorter){case"string":ne.sorters[e.definition.sorter]?s=ne.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort&&((t=e.getElement()).classList.add("tabulator-sortable"),(i=document.createElement("div")).classList.add("tabulator-col-sorter"),"object"==typeof this.table.options.headerSortElement?i.appendChild(this.table.options.headerSortElement):i.innerHTML=this.table.options.headerSortElement,e.titleHolderElement.appendChild(i),e.modules.sort.element=i,t.addEventListener("click",(t=>{var i="",s=[],o=!1;if(e.modules.sort){if(e.modules.sort.tristate)i="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=e.modules.sort.startingDir}this.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?((o=(s=this.getSort()).findIndex((t=>t.field===e.getField())))>-1?(s[o].dir=i,o!=s.length-1&&(o=s.splice(o,1)[0],"none"!=i&&s.push(o))):"none"!=i&&s.push({column:e,dir:i}),this.setSort(s)):"none"==i?this.clear():this.setSort(e,i),this.refreshSort()}})))}refreshSort(){"remote"===this.table.options.sortMode?this.reloadData():this.refreshData()}hasChanged(){var e=this.changed;return this.changed=!1,e}getSort(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}setSort(e,t){var i=this,s=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,s.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=s,this.dispatch("sort-changed")}clear(){this.setSort([])}findSorter(e){var t,i=this.table.rowManager.activeRows[0],s="string";if(i&&(i=i.getData(),e.getField()))switch(typeof(t=e.getFieldValue(i))){case"undefined":s="string";break;case"boolean":s="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(s="alphanum"):s="number"}return ne.sorters[s]}sort(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,s=[],o=[];return this.subscribedExternal("dataSorting")&&this.dispatchExternal("dataSorting",t.getSort()),t.clearColumnHeaders(),"remote"!==this.table.options.sortMode?(i.forEach((function(e,i){var o=e.column.modules.sort;e.column&&o&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,s.push(e)),t.setColumnHeader(e.column,e.dir)})),s.length&&t._sortItems(e,s)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((e=>{o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}clearColumnHeaders(){this.table.columnManager.getRealColumns().forEach((function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))}))}setColumnHeader(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)}_sortItems(e,t){var i=t.length-1;e.sort(((e,s)=>{for(var o,n=i;n>=0;n--){let i=t[n];if(0!==(o=this._sortRow(e,s,i.column,i.dir,i.params)))break}return o}))}_sortRow(e,t,i,s,o){var n,r,a="asc"==s?e:t,l="asc"==s?t:e;return e=void 0!==(e=i.getFieldValue(a.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",n=a.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,n,r,i.getComponent(),s,o)}}ne.moduleName="sort",ne.sorters=oe;var re={integer:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,i){return""===t||null==t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,i){return""===t||null==t||!isNaN(t)},string:function(e,t,i){return""===t||null==t||isNaN(t)},max:function(e,t,i){return""===t||null==t||parseFloat(t)<=i},min:function(e,t,i){return""===t||null==t||parseFloat(t)>=i},starts:function(e,t,i){return""===t||null==t||String(t).toLowerCase().startsWith(String(i).toLowerCase())},ends:function(e,t,i){return""===t||null==t||String(t).toLowerCase().endsWith(String(i).toLowerCase())},minLength:function(e,t,i){return""===t||null==t||String(t).length>=i},maxLength:function(e,t,i){return""===t||null==t||String(t).length<=i},in:function(e,t,i){return""===t||null==t||("string"==typeof i&&(i=i.split("|")),""===t||i.indexOf(t)>-1)},regex:function(e,t,i){return""===t||null==t||new RegExp(i).test(t)},unique:function(e,t,i){if(""===t||null==t)return!0;var s=!0,o=e.getData(),n=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==n.getFieldValue(i)&&(s=!1)})),s},required:function(e,t,i){return""!==t&&null!=t}};class ae extends t{constructor(e){super(e),this.invalidCells=[],this.registerTableOption("validationMode","blocking"),this.registerColumnOption("validator"),this.registerTableFunction("getInvalidCells",this.getInvalidCells.bind(this)),this.registerTableFunction("clearCellValidation",this.userClearCellValidation.bind(this)),this.registerTableFunction("validate",this.userValidate.bind(this)),this.registerComponentFunction("cell","isValid",this.cellIsValid.bind(this)),this.registerComponentFunction("cell","clearValidation",this.clearValidation.bind(this)),this.registerComponentFunction("cell","validate",this.cellValidate.bind(this)),this.registerComponentFunction("column","validate",this.columnValidate.bind(this)),this.registerComponentFunction("row","validate",this.rowValidate.bind(this))}initialize(){this.subscribe("cell-delete",this.clearValidation.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this))}cellIsValid(e){return!e.modules.validate||!e.modules.validate.invalid}cellValidate(e){return this.validate(e.column.modules.validate,e,e.getValue())}columnValidate(e){var t=[];return e.cells.forEach((function(e){this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}rowValidate(e){var t=[];return e.cells.forEach((function(e){this.cellValidate(e)||t.push(e.getComponent())})),!t.length||t}userClearCellValidation(e){e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.clearValidation(e._getSelf())}))}userValidate(e){var t=[];return this.table.rowManager.rows.forEach((function(e){var i=e.validate();!0!==i&&(t=t.concat(i))})),!t.length||t}initializeColumnCheck(e){void 0!==e.definition.validator&&this.initializeColumn(e)}initializeColumn(e){var t,i=this,s=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((function(e){(t=i._extractValidator(e))&&s.push(t)})):(t=this._extractValidator(e.definition.validator))&&s.push(t),e.modules.validate=!!s.length&&s)}_extractValidator(e){var t,i,s;switch(typeof e){case"string":return(s=e.indexOf(":"))>-1?(t=e.substring(0,s),i=e.substring(s+1)):t=e,this._buildValidator(t,i);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}}_buildValidator(e,t){var i="function"==typeof e?e:ae.validators[e];return i?{type:"function"==typeof e?"function":e,func:i,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)}validate(e,t,i){var s=this,o=[],n=this.invalidCells.indexOf(t);return e&&e.forEach((function(e){e.func.call(s,t.getComponent(),i,e.params)||o.push({type:e.type,parameters:e.params})})),o=!o.length||o,t.modules.validate||(t.modules.validate={}),!0===o?(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),n>-1&&this.invalidCells.splice(n,1)):(t.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==n&&this.invalidCells.push(t)),o}getInvalidCells(){var e=[];return this.invalidCells.forEach((t=>{e.push(t.getComponent())})),e}clearValidation(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.getElement().classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))}}ae.moduleName="validate",ae.validators=re;var le=Object.freeze({__proto__:null,AccessorModule:o,AjaxModule:l,ClipboardModule:h,ColumnCalcsModule:w,DataTreeModule:C,DownloadModule:y,EditModule:M,ExportModule:k,FilterModule:S,FormatModule:H,FrozenColumnsModule:P,FrozenRowsModule:z,GroupRowsModule:_,HistoryModule:N,HtmlTableImportModule:B,InteractionModule:V,KeybindingsModule:I,MenuModule:W,MoveColumnsModule:j,MoveRowsModule:G,MutatorModule:U,PageModule:X,PersistenceModule:Y,PrintModule:J,ReactiveDataModule:$,ResizeColumnsModule:Q,ResizeRowsModule:Z,ResizeTableModule:ee,ResponsiveLayoutModule:te,SelectRowModule:ie,SortModule:ne,ValidateModule:ae});class he{constructor(e,t){this.table=e,this.msgType=t,this.registeredDefaults={}}register(e,t){this.registeredDefaults[e]=t}generate(e,t={}){var i=Object.assign({},this.registeredDefaults);if(Object.assign(i,e),!1!==t.debugInvalidOptions||this.table.options.debugInvalidOptions)for(var s in t)i.hasOwnProperty(s)||console.warn("Invalid "+this.msgType+" option:",s);for(var s in i)s in t?i[s]=t[s]:Array.isArray(i[s])?i[s]=Object.assign([],i[s]):"object"==typeof i[s]&&null!==i[s]?i[s]=Object.assign({},i[s]):void 0===i[s]&&delete i[s];return i}}class de extends e{constructor(e){super(e),this.elementVertical=e.rowManager.element,this.elementHorizontal=e.columnManager.element,this.tableElement=e.rowManager.tableElement,this.verticalFillMode="fit"}initialize(){}clearRows(){}clearColumns(){}reinitializeColumnWidths(e){}renderRows(){}renderColumns(){}rerenderRows(e){e&&e()}rerenderColumns(e,t){}renderRowCells(e){}rerenderRowCells(e,t){}scrollColumns(e,t){}scrollRows(e,t){}resize(){}scrollToRow(e){}scrollToRowNearestTop(e){}visibleRows(e){return[]}rows(){return this.table.rowManager.getDisplayRows()}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}clear(){this.clearRows(),this.clearColumns()}render(){this.renderRows(),this.renderColumns()}rerender(e){this.rerenderRows(),this.rerenderColumns()}scrollToRowPosition(e,t,i){var o=this.rows().indexOf(e),n=e.getElement(),r=0;return new Promise(((a,l)=>{if(o>-1){if(void 0===i&&(i=this.table.options.scrollToRowIfVisible),!i&&s.elVisible(n)&&(r=s.elOffset(n).top-s.elOffset(this.elementVertical).top)>0&&r{e.element.appendChild(t.getElement()),t.cellRendered()}))}reinitializeColumnWidths(e){e.forEach((function(e){e.reinitializeWidth()}))}}class ue extends de{constructor(e){super(e),this.leftCol=0,this.rightCol=0,this.scrollLeft=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0,this.fitDataColAvg=0,this.window=200,this.initialized=!1,this.columns=[]}initialize(){this.compatabilityCheck()}compatabilityCheck(){var e=this.options("columns"),t=!0;return"fitDataTable"==this.options("layout")&&(console.warn("Horizontal Vitrual DOM is not compatible with fitDataTable layout mode"),t=!1),this.options("responsiveLayout")&&(console.warn("Horizontal Vitrual DOM is not compatible with responsive columns"),t=!1),this.options("rtl")&&(console.warn("Horizontal Vitrual DOM is not currently compatible with RTL text direction"),t=!1),e&&e.find((e=>e.frozen))&&(console.warn("Horizontal Vitrual DOM is not compatible with frozen columns"),t=!1),t}renderColumns(e,t){this.dataChange()}scrollColumns(e,t){this.scrollLeft!=e&&(this.scrollLeft=e,this.scroll(e-(this.vDomScrollPosLeft+this.window)))}rerenderColumns(e,t){var i={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol};if(!e||this.initialized){this.clear(),this.scrollLeft=this.elementVertical.scrollLeft,this.vDomScrollPosLeft=this.scrollLeft-this.window,this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.window;var s=0;this.table.columnManager.columnsByIndex.forEach((e=>{var t={};if(e.visible){var i=e.getWidth();t.leftPos=s,t.rightPos=s+i,t.width=i,"fitData"===this.options("layout")&&(t.fitDataCheck=!0),s+i>this.vDomScrollPosLeft&&s{e.element.appendChild(t.getElement()),t.cellRendered()}))}rerenderRowCells(e,t){this.reinitializeRow(e,t)}reinitializeColumnWidths(e){for(let e=this.leftCol;e<=this.rightCol;e++)this.columns[e].reinitializeWidth()}deinitialize(){this.initialized=!1}clear(){this.columns=[],this.leftCol=-1,this.rightCol=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0}dataChange(){var e,t,i=!1,s=0,o=0;if("fitData"===this.options("layout")){if(this.table.columnManager.columnsByIndex.forEach((e=>{!e.definition.width&&e.visible&&(i=!0)})),i&&i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.window,t=this.chain("rows-sample",[1],[],(()=>this.table.rowManager.getDisplayRows()[0]))[0])){e=t.getElement(),t.generateCells(),this.tableElement.appendChild(e);for(o=0;othis.vDomScrollPosRight)break}for(e.parentNode.removeChild(e),this.fitDataColAvg=Math.floor(s/(o+1));o{e!==this.columns[i]&&(t=!1)})),!t)}renitializeRows(){this.table.rowManager.getVisibleRows().forEach((e=>{this.reinitializeRow(e,!0)}))}scroll(e){this.vDomScrollPosLeft+=e,this.vDomScrollPosRight+=e,e>.8*this.elementVertical.clientWidth?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}colPositionAdjust(e,t,i){for(let s=e;s{if("group"!==t.type){var i=t.getCell(e);t.getElement().appendChild(i.getElement()),i.cellRendered()}})),this.fitDataColActualWidthCheck(e),this.rightCol++,this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=e.getWidth(),this.tableElement.style.paddingRight=this.vDomPadRight+"px",this.addColRight())}addColLeft(){var e=this.columns[this.leftCol-1];e&&e.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft&&(this.table.rowManager.getVisibleRows().forEach((t=>{if("group"!==t.type){var i=t.getCell(e);t.getElement().prepend(i.getElement()),i.cellRendered()}})),this.fitDataColActualWidthCheck(e),this.leftCol?this.vDomPadLeft-=e.getWidth():this.vDomPadLeft=0,this.tableElement.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol--,this.addColLeft())}removeColRight(e){var t;(e=this.columns[this.rightCol])&&e.modules.vdomHoz.leftPos>this.vDomScrollPosRight&&(t=this.table.rowManager.getVisibleRows(),e.modules.vdomHoz.visible=!1,t.forEach((t=>{if("group"!==t.type){var i=t.getCell(e);t.getElement().removeChild(i.getElement())}})),this.vDomPadRight+=e.getWidth(),this.tableElement.style.paddingRight=this.vDomPadRight+"px",this.rightCol--,this.removeColRight())}removeColLeft(){var e=this.columns[this.leftCol];e&&e.modules.vdomHoz.rightPos{if("group"!==t.type){var i=t.getCell(e);i.parentNode&&t.getElement().removeChild(i.getElement())}})),this.vDomPadLeft+=e.getWidth(),this.tableElement.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol++,this.removeColLeft())}fitDataColActualWidthCheck(e){var t,i;e.modules.vdomHoz.fitDataCheck&&(e.reinitializeWidth(),(i=(t=e.getWidth())-e.modules.vdomHoz.width)&&(e.modules.vdomHoz.rightPos+=i,e.modules.vdomHoz.width=t,this.colPositionAdjust(this.rightCol+2,this.columns.length,i)),e.modules.vdomHoz.fitDataCheck=!1)}initializeRow(e){if("group"!==e.type){e.modules.vdomHoz={leftCol:this.leftCol,rightCol:this.rightCol};for(let t=this.leftCol;t<=this.rightCol;t++){let i=this.columns[t];if(i&&i.visible){let t=e.getCell(i);e.getElement().appendChild(t.getElement()),t.cellRendered()}}}}reinitializeRow(e,t){if("group"!==e.type&&(t||!e.modules.vdomHoz||e.modules.vdomHoz.leftCol!==this.leftCol||e.modules.vdomHoz.rightCol!==this.rightCol)){for(var i=e.getElement();i.firstChild;)i.removeChild(i.firstChild);this.initializeRow(e)}}}class me extends e{constructor(e){super(e),this.blockHozScrollEvent=!1,this.headersElement=null,this.element=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.optionsList=new he(this.table,"column definition"),this.renderer=null}initialize(){this.initializeRenderer(),this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.element.insertBefore(this.headersElement,this.element.firstChild),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this))}initializeRenderer(){var e,t={virtual:ue,basic:ce};(e="string"==typeof this.table.options.renderHorizontal?t[this.table.options.renderHorizontal]:this.table.options.renderHorizontal)?(this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize()):console.error("Unable to find matching renderer:",table.options.renderHorizontal)}createHeadersElement(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e}createHeaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-header"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e}getElement(){return this.element}getHeadersElement(){return this.headersElement}scrollHorizontal(e){var t=0,i=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>i?(t=e-i,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.renderer.scrollColumns(e)}generateColumnsFromRowData(e){var t,i,s=[],o=this.table.options.autoColumnsDefinitions;if(e&&e.length){for(var n in t=e[0]){let e={field:n,title:n},o=t[n];switch(typeof o){case"undefined":i="string";break;case"boolean":i="boolean";break;case"object":i=Array.isArray(o)?"array":"string";break;default:i=isNaN(o)||""===o?o.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}e.sorter=i,s.push(e)}if(o)switch(typeof o){case"function":this.table.options.columns=o.call(this.table,s);break;case"object":Array.isArray(o)?s.forEach((e=>{var t=o.find((t=>t.field===e.field));t&&Object.assign(e,t)})):s.forEach((e=>{o[e.field]&&Object.assign(e,o[e.field])})),this.table.options.columns=s}else this.table.options.columns=s;this.setColumns(this.table.options.columns)}}setColumns(e,t){for(;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach(((e,t)=>{this._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.renderer.rerenderColumns(!1,!0),this.redraw(!0)}_addColumn(e,t,i){var s=new g(e,this),o=s.getElement(),n=i?this.findColumnIndex(i):i;if(i&&n>-1){var r=this.columns.indexOf(i.getTopColumn()),a=i.getElement();t?(this.columns.splice(r,0,s),a.parentNode.insertBefore(o,a)):(this.columns.splice(r+1,0,s),a.parentNode.insertBefore(o,a.nextSibling))}else t?(this.columns.unshift(s),this.headersElement.insertBefore(s.getElement(),this.headersElement.firstChild)):(this.columns.push(s),this.headersElement.appendChild(s.getElement())),s.columnRendered();return s}registerColumnField(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}registerColumnPosition(e){this.columnsByIndex.push(e)}_reIndexColumns(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}_verticalAlignHeaders(){var e=0;this.columns.forEach((t=>{var i;t.clearVerticalAlign(),(i=t.getHeight())>e&&(e=i)})),this.columns.forEach((t=>{t.verticalAlign(this.table.options.columnHeaderVertAlign,e)})),this.table.rowManager.adjustTableSize()}findColumn(e){if("object"!=typeof e)return this.columnsByField[e]||!1;if(e instanceof g)return e;if(e instanceof m)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.columns.find((t=>t.element===e))||!1}return!1}getColumnByField(e){return this.columnsByField[e]}getColumnsByFieldRoot(e){var t=[];return Object.keys(this.columnsByField).forEach((i=>{i.split(".")[0]===e&&t.push(this.columnsByField[i])})),t}getColumnByIndex(e){return this.columnsByIndex[e]}getFirstVisibileColumn(e){return(e=this.columnsByIndex.findIndex((e=>e.visible)))>-1&&this.columnsByIndex[e]}getColumns(){return this.columns}findColumnIndex(e){return this.columnsByIndex.findIndex((t=>e===t))}getRealColumns(){return this.columnsByIndex}traverse(e){this.columnsByIndex.forEach(((t,i)=>{e(t,i)}))}getDefinitions(e){var t=[];return this.columnsByIndex.forEach((i=>{(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}getDefinitionTree(){var e=[];return this.columns.forEach((t=>{e.push(t.getDefinition(!0))})),e}getComponents(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((e=>{t.push(e.getComponent())})),t}getWidth(){var e=0;return this.columnsByIndex.forEach((t=>{t.visible&&(e+=t.getWidth())})),e}moveColumn(e,t,i){this.moveColumnActual(e,t,i),t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()}moveColumnActual(e,t,i){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,i):this._moveColumnInArray(this.columns,e,t,i),this._moveColumnInArray(this.columnsByIndex,e,t,i,!0),this.renderer.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}_moveColumnInArray(e,t,i,s,o){var n,r=e.indexOf(t);r>-1&&(e.splice(r,1),(n=e.indexOf(i))>-1?s&&(n+=1):n=r,e.splice(n,0,t),o&&(this.chain("column-moving-rows",[t,i,s],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(n,0,t)}})))}scrollToColumn(e,t,i){var s=0,o=0,n=0,r=e.getElement();return new Promise(((a,l)=>{if(void 0===t&&(t=this.table.options.scrollToColumnPosition),void 0===i&&(i=this.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":n=-this.element.clientWidth/2;break;case"right":n=r.clientWidth-this.headersElement.clientWidth}if(!i&&(o=r.offsetLeft)>0&&o+r.offsetWidth{t.push(i.generateCell(e))})),t}getFlexBaseWidth(){var e=this.table.element.clientWidth,t=0;return this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var s,o,n;i.visible&&(s=i.definition.width||0,o=parseInt(i.minWidth),n="string"==typeof s?s.indexOf("%")>-1?e/100*parseInt(s):parseInt(s):s,t+=n>o?n:o)})),t}addColumn(e,t,i){return new Promise(((s,o)=>{var n=this._addColumn(e,t,i);this._reIndexColumns(),this.dispatch("column-add",e,t,i),this.redraw(!0),"fitColumns"!=this.layoutMode()&&n.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize(),this.renderer.rerenderColumns(),s(n)}))}deregisterColumn(e){var t,i=e.getField();i&&delete this.columnsByField[i],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this._verticalAlignHeaders(),this.redraw()}redraw(e){e&&(s.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}class pe extends de{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.scrollTop=0,e.scrollLeft=0,e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility=""}renderRows(){var e=this.tableElement,t=!0;this.rows().forEach(((i,s)=>{this.styleRow(i,s),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(t=!1)})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}rerenderRows(e){this.render(),e&&e()}scrollToRowNearestTop(e){var t=s.elOffset(e.getElement()).top;return!(Math.abs(this.elementVertical.scrollTop-t)>Math.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-t))}scrollToRow(e){var t=e.getElement();this.elementVertical.scrollTop=s.elOffset(t).top-s.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}visibleRows(e){return this.rows()}}class ge extends de{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.elementVertical.scrollTop=0,this.elementVertical.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0}renderRows(){this._virtualRenderFill()}rerenderRows(e){for(var t=this.elementVertical.scrollTop,i=!1,s=!1,o=this.table.rowManager.scrollLeft,n=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(n[r]){var a=t-n[r].getElement().offsetTop;if(!(!1===s||Math.abs(a)o||s>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*n.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(n,-i),s<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(n,-s):this.vDomScrollPosBottom=this.scrollTop)):(s>=0&&this._addBottomRow(n,s),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(n,i):this.vDomScrollPosTop=this.scrollTop))}resize(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}scrollToRowNearestTop(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}scrollToRow(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}visibleRows(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,s=!1,o=0,n=0,r=this.rows();if(e)o=this.vDomTop,n=this.vDomBottom;else for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(s){if(!(i-r[a].getElement().offsetTop>=0))break;n=a}else if(t-r[a].getElement().offsetTop>=0)o=a;else{if(s=!0,!(i-r[a].getElement().offsetTop>=0))break;n=a}return r.slice(o,n+1)}_virtualRenderFill(e,t,i){var o=this.tableElement,n=this.elementVertical,r=0,a=0,l=0,h=0,d=0,c=this.rows(),u=c.length,m=this.elementVertical.clientHeight;if(i=i||0,e=e||0){for(;o.firstChild;)o.removeChild(o.firstChild);(l=(u-e+1)*this.vDomRowHeight)this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*p),this.vDomBottom++,d++}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+i:this.scrollTop-h,this.vDomBottomPad=this.vDomBottom==u-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-a-h,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((a+h)/d),this.vDomBottomPad=this.vDomRowHeight*(u-this.vDomBottom-1),this.vDomScrollHeight=h+a+this.vDomBottomPad-m),o.style.paddingTop=this.vDomTopPad+"px",o.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+h+i-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-m:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-m),this.elementVertical.scrollWidth>this.elementVertical.offsetWidth&&t&&(this.scrollTop+=this.elementVertical.offsetHeight-m),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,n.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}_addTopRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomTop-1,r=0;this.vDomTop;){let a,l,h=e[n];if(!(h&&r=a))break;this.styleRow(h,n),i.insertBefore(h.getElement(),i.firstChild),h.initialized&&h.heightInitialized||s.push(h),h.initialize(),l||(a=h.getElement().offsetHeight,a>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*a)),t-=a,o+=a,this.vDomTop--,n--,r++}for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomTopPad-=o,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n<1&&(this.vDomTopPad=0),i.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=o)}_removeTopRow(e,t){for(var i=[],s=0,o=0;;){let n,r=e[this.vDomTop];if(!(r&&o=n))break;this.vDomTop++,t-=n,s+=n,i.push(r),o++}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomTopPad+=s,this.tableElement.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?s:s+this.vDomWindowBuffer)}_addBottomRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomBottom+1,r=0;;){let a,l,h=e[n];if(!(h&&r=a))break;this.styleRow(h,n),i.appendChild(h.getElement()),h.initialized&&h.heightInitialized||s.push(h),h.initialize(),l||(a=h.getElement().offsetHeight,a>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*a)),t-=a,o+=a,this.vDomBottom++,n++,r++}for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomBottomPad-=o,(this.vDomBottomPad<0||n==e.length-1)&&(this.vDomBottomPad=0),i.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=o)}_removeBottomRow(e,t){for(var i=[],s=0,o=0;;){let n,r=e[this.vDomBottom];if(!(r&&o=n))break;this.vDomBottom--,t-=n,s+=n,i.push(r),o++}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomBottomPad+=s,this.vDomBottomPad<0&&(this.vDomBottomPad=0),this.tableElement.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=s)}_quickNormalizeRowHeight(e){for(let t of e)t.calcHeight();for(let t of e)t.setCellHeight()}}class be extends e{constructor(e){super(e),this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRowsPipeline=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1,this.dataPipeline=[],this.displayPipeline=[],this.renderer=null}createHolderElement(){var e=document.createElement("div");return e.classList.add("tabulator-tableholder"),e.setAttribute("tabindex",0),e}createTableElement(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e}getElement(){return this.element}getTableElement(){return this.tableElement}getRowPosition(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)}initialize(){this.initializeRenderer(),this.element.appendChild(this.tableElement),this.firstRender=!0,this.element.addEventListener("scroll",(()=>{var e=this.element.scrollLeft,t=this.scrollLeft>e,i=this.element.scrollTop,s=this.scrollTop>i;this.scrollLeft!=e&&(this.scrollLeft=e,this.dispatch("scroll-horizontal",e,t),this.dispatchExternal("scrollHorizontal",e,t)),this.scrollTop!=i&&(this.scrollTop=i,this.renderer.scrollRows(i,s),this.dispatch("scroll-vertical",i,s),this.dispatchExternal("scrollVertical",i,s))}))}findRow(e){if("object"!=typeof e){if(null==e)return!1;return this.rows.find((t=>t.data[this.table.options.index]==e))||!1}if(e instanceof f)return e;if(e instanceof b)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.rows.find((t=>t.getElement()===e))||!1}return!1}getRowFromDataObject(e){return this.rows.find((t=>t.data===e))||!1}getRowFromPosition(e,t){return t?this.activeRows[e]:this.rows[e]}scrollToRow(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}setData(e,t,i){return new Promise(((s,o)=>{t&&this.getDisplayRows().length?this.table.options.pagination?this._setDataActual(e,!0):this.reRenderInPosition((()=>{this._setDataActual(e)})):(this.table.options.autoColumns&&i&&this.table.columnManager.generateColumnsFromRowData(e),this.resetScroll(),this._setDataActual(e)),s()}))}_setDataActual(e,t){this.dispatchExternal("dataProcessing",e),this._wipeElements(),Array.isArray(e)?(this.dispatch("data-processing",e),e.forEach(((e,t)=>{if(e&&"object"==typeof e){var i=new f(e,this);this.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)})),this.refreshActiveData(!1,!1,t),this.dispatch("data-processed",e),this.dispatchExternal("dataProcessed",e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",typeof e,"\nData: ",e)}_wipeElements(){this.dispatch("rows-wipe"),this.rows.forEach((e=>{e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()}deleteRow(e,t){var i=this.rows.indexOf(e),s=this.activeRows.indexOf(e);s>-1&&this.activeRows.splice(s,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((t=>{var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this._showPlaceholder(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}addRow(e,t,i,s){var o=this.addRowActual(e,t,i,s);return this.dispatch("row-added",o,e,t,i),o}addRows(e,t,i){var s=[];return new Promise(((o,n)=>{t=this.findAddRowPos(t),Array.isArray(e)||(e=[e]),e.length,(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach(((o,n)=>{var r=this.addRow(o,t,i,!0);s.push(r),this.dispatch("row-added",r,e,t,i)})),this.reRenderInPosition(),this.regenerateRowNumbers(),s.length&&this._clearPlaceholder(),o(s)}))}findAddRowPos(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}addRowActual(e,t,i,s){var o,n,r=e instanceof f?e:new f(e||{},this),a=this.findAddRowPos(t),l=-1;return i||(n=this.chain("row-adding-position",[r,a],null,{index:i,top:a}),i=n.index,a=n.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,a],null,i))&&(l=this.rows.indexOf(i)),i&&l>-1?(o=this.activeRows.indexOf(i),this.displayRowIterator((function(e){var t=e.indexOf(i);t>-1&&e.splice(a?t:t+1,0,r)})),o>-1&&this.activeRows.splice(a?o:o+1,0,r),this.rows.splice(a?l:l+1,0,r)):a?(this.displayRowIterator((function(e){e.unshift(r)})),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator((function(e){e.push(r)})),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.dispatchExternal("rowAdded",r.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),s||this.reRenderInPosition(),r}moveRow(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowNumbers(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}moveRowActual(e,t,i){this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((s=>{this.moveRowInArray(s,e,t,i)})),this.dispatch("row-moving",e,t,i)}moveRowInArray(e,t,i,s){var o,n,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(n=e.indexOf(i))>-1?s?e.splice(n+1,0,t):e.splice(n,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=n>o?n:o+1;for(let t=o-1&&t}nextDisplayRow(e,t){var i=this.getDisplayRowIndex(e),s=!1;return!1!==i&&i-1)&&i}getData(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}getComponents(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}getDataCount(e){return this.getRows(e).length}scrollHorizontal(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}registerDataPipelineHandler(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Data pipeline handlers must have a priority in order to be registered")}registerDisplayPipelineHandler(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Display pipeline handlers must have a priority in order to be registered")}refreshActiveData(e,t,i){var o=this.table,n="",r=0,a=["all","dataPipeline","display","displayPipeline","end"];if("function"==typeof e)if((r=this.dataPipeline.findIndex((t=>t.handler===e)))>-1)n="dataPipeline",t&&(r==this.dataPipeline.length-1?n="display":r++);else{if(!((r=this.displayPipeline.findIndex((t=>t.handler===e)))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);n="displayPipeline",t&&(r==this.displayPipeline.length-1?n="end":r++)}else n=e||"all",r=0;if(this.redrawBlock)(!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===n&&r{var t=e.getCell(this.rowNumColumn);t&&t._generateContents()}))}setActiveRows(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length}resetDisplayRows(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length}getNextDisplayIndex(){return this.displayRows.length}setDisplayRows(e,t){var i=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,i=!0):(this.displayRows.push(e),i=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),i}getDisplayRows(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]}getVisibleRows(e){return this.renderer.visibleRows(!e)}displayRowIterator(e){this.activeRowsPipeline.forEach(e),this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length}getRows(e){var t;switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!0);break;default:t=this.chain("rows-retrieve",e,null,this.rows)||this.rows}return t}reRenderInPosition(e){this.redrawBlock?e?e():this.redrawBlockRederInPosition=!0:this.renderer.rerenderRows(e)}initializeRenderer(){var e,t={virtual:ge,basic:pe};(e="string"==typeof this.table.options.renderVertical?t[this.table.options.renderVertical]:this.table.options.renderVertical)?(this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize(),this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):console.error("Unable to find matching renderer:",table.options.renderVertical)}getRenderMode(){return this.renderMode}renderTable(){this.dispatchExternal("renderStarted"),this.element.scrollTop=0,this.displayRowsCount?(this._clearTable(),this.renderer.renderRows(),this.firstRender&&(this.firstRender=!1,this.layoutRefresh())):this.renderEmptyScroll(),this.fixedHeight||this.adjustTableSize(),this.dispatch("table-layout"),this.displayRowsCount||this._showPlaceholder(),this.dispatchExternal("renderComplete")}renderEmptyScroll(){this.table.options.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"}_clearTable(){this.tableElement;this._clearPlaceholder(),this.scrollTop=0,this.scrollLeft=0,this.renderer.clearRows()}_showPlaceholder(){this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px")}_clearPlaceholder(){this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder)}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}normalizeHeight(){this.activeRows.forEach((function(e){e.normalizeHeight()}))}adjustTableSize(){var e=this.element.clientHeight;if("fill"===this.renderer.verticalFillMode){let t=Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height+(this.table.footerManager&&this.table.footerManager.active&&!this.table.footerManager.external?this.table.footerManager.getElement().getBoundingClientRect().height:0));this.fixedHeight?(this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-t+"px",this.element.scrollTop=this.scrollTop),this.renderer.resize(),this.fixedHeight||e==this.element.clientHeight||(this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw())}}reinitialize(){this.rows.forEach((function(e){e.reinitialize(!0)}))}blockRedraw(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1}restoreRedraw(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.handler,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1}redraw(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():(this.reRenderInPosition(),this.scrollHorizontal(t),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))}resetScroll(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))}}class fe extends e{constructor(e){super(e),this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this.initializeElement()}initialize(){}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e}initializeElement(e){if(this.table.options.footerElement)switch(typeof this.table.options.footerElement){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}}getElement(){return this.element}append(e,t){this.activate(t),this.element.appendChild(e),this.table.rowManager.adjustTableSize()}prepend(e,t){this.activate(t),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()}remove(e){e.parentNode.removeChild(e),this.deactivate()}deactivate(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)}activate(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)}redraw(){this.links.forEach((function(e){e.footerRedraw()}))}}class ve extends e{constructor(e){super(e),this.el=this.table.element,this.abortClasses=["tabulator-headers","tabulator-table"],this.previousTargets={},this.listeners=["click","dblclick","contextmenu","mouseenter","mouseleave","mouseover","mouseout","mousemove","touchstart","touchend"],this.componentMap={"tabulator-cell":"cell","tabulator-row":"row","tabulator-group":"group","tabulator-col":"column"},this.buildListenerMap(),this.bindSubscriptionWatchers()}buildListenerMap(){var e={};this.listeners.forEach((t=>{e[t]={handler:null,components:[]}})),this.listeners=e}bindSubscriptionWatchers(){var e=Object.keys(this.listeners),t=Object.values(this.componentMap);for(let i of t)for(let t of e){let e=i+"-"+t;this.subscriptionChange(e,this.subscriptionChanged.bind(this,i,t))}}subscriptionChanged(e,t,i){var s=this.listeners[t].components,o=s.indexOf(e),n=!1;i?-1===o&&(s.push(e),n=!0):this.subscribed(e+"-"+t)||o>-1&&(s.splice(o,1),n=!0),n&&this.updateEventListeners()}updateEventListeners(){for(let e in this.listeners){let t=this.listeners[e];t.components.length?t.handler||(t.handler=this.track.bind(this,e),this.el.addEventListener(e,t.handler)):t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}track(e,t){var i=t.composedPath&&t.composedPath()||t.path,s=this.findTargets(i);s=this.bindComponents(e,s),this.triggerEvents(e,t,s)}findTargets(e){var t={};let i=Object.keys(this.componentMap);for(let s of e){let e=s.classList?[...s.classList]:[];if(e.filter((e=>this.abortClasses.includes(e))).length)break;let o=e.filter((e=>i.includes(e)));for(let e of o)t[this.componentMap[e]]=s}return t.group&&t.group===t.row&&delete t.row,t}bindComponents(e,t){var i=Object.keys(t).reverse(),s=this.listeners[e],o={};for(let e of i){let i,n=t[e],r=this.previousTargets[e];if(r&&r.target===n)i=r.component;else switch(e){case"row":case"group":if(s.components.includes("row")||s.components.includes("cell")){i=this.table.rowManager.getVisibleRows().find((e=>e.getElement()===n))}break;case"column":s.components.includes("column")&&(i=this.table.columnManager.findColumn(n));break;case"cell":s.components.includes("cell")&&(i=t.row.findCell(n))}i&&(t[e]=i,o[e]={target:n,component:i})}return this.previousTargets=o,t}triggerEvents(e,t,i){var s=this.listeners[e];for(let o in i)i[o]&&s.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}}class we{constructor(e){this.table=e,this.bindings={}}bind(e,t,i){this.bindings[e]||(this.bindings[e]={}),this.bindings[e][t]?console.warn("Unable to bind component handler, a matching function name is already bound",e,t,hanlder):this.bindings[e][t]=i}handle(e,t,i){if(this.bindings[e]&&this.bindings[e][i])return this.bindings[e][i].bind(null,t);"then"===i||"string"!=typeof i||i.startsWith("_")||console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}class Ce extends e{constructor(e){super(e),this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=null,this.errorElement=null,this.requestOrder=0,this.loading=!1}initialize(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.dataLoaderLoading&&("string"==typeof this.table.options.dataLoaderLoading?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderLoading.trim(),this.loadingElement=e.firstElementChild):this.loadingElement=this.table.options.dataLoaderLoading),this.table.options.dataLoaderError&&("string"==typeof this.table.options.dataLoaderError?((e=document.createElement("template")).innerHTML=this.table.options.dataLoaderError.trim(),this.errorElement=e.firstElementChild):this.errorElement=this.table.options.dataLoaderError)}createLoaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e}createMsgElement(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e}load(e,t,i,s,o){var n=++this.requestOrder;if(this.dispatchExternal("dataLoading",e),!e||0!=e.indexOf("{")&&0!=e.indexOf("[")||(e=JSON.parse(e)),this.confirm("data-loading",e,t,i,o)){this.loading=!0,o||this.showLoader();t=this.chain("data-params",[e,i,o],t||{},{});return t=this.mapParams(t,this.table.options.dataSendParams),this.chain("data-load",[e,t,i,o],Promise.resolve([])).then((t=>{Array.isArray(t)||"object"!=typeof t||(t=this.mapParams(t,this.objectInvert(this.table.options.dataReceiveParams)));var i=this.chain("data-loaded",t,null,t);n==this.requestOrder?(this.hideLoader(),!1!==i&&(this.dispatchExternal("dataLoaded",e),this.table.rowManager.setData(i,s,!s))):console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made")})).catch((e=>{console.error("Data Load Error: ",e),this.dispatchExternal("dataLoadError",e),o||this.showError(),setTimeout((()=>{this.hideLoader()}),3e3)})).finally((()=>{this.loading=!1}))}return this.dispatchExternal("dataLoaded",e),e||(e=[]),this.table.rowManager.setData(e,s,!s),Promise.resolve()}mapParams(e,t){var i={};for(let s in e)i[t.hasOwnProperty(s)?t[s]:s]=e[s];return i}objectInvert(e){var t={};for(let i in e)t[e[i]]=i;return t}blockActiveLoad(){this.requestOrder++}showLoader(){if("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.langText("data|loading"),this.table.element.appendChild(this.loaderElement)}}showError(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.langText("data|error"),this.table.element.appendChild(this.loaderElement)}hideLoader(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)}}class Ee{constructor(e,t){this.events={},this.optionsList=e||{},this.subscriptionNotifiers={},this.dispatch=t?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=t}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}subscribe(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifiySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}else delete this.events[e];this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_notifiySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e,t=Array.from(arguments),i=t.shift();return this.events[i]&&this.events[i].forEach(((i,s)=>{let o=i.apply(this,t);s||(e=o)})),e}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="ExternalEvent:"+e[0],(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}}class ye{constructor(e){this.events={},this.subscriptionNotifiers={},this.dispatch=e?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=e?this._debugChain.bind(this):this._chain.bind(this),this.confirm=e?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=e}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifiySubscriptionChange(e,!0)}subscribe(e,t,i=1e4){this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort(((e,t)=>e.priority-t.priority)),this._notifiySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e.callback===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifiySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_chain(e,t,i,s){var o=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach(((e,i)=>{o=e.callback.apply(this,t.concat([o]))})),o):"function"==typeof s?s():s}_confirm(e,t){var i=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach(((e,s)=>{e.callback.apply(this,t)&&(i=!0)})),i}_notifiySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e=Array.from(arguments),t=e.shift();this.events[t]&&this.events[t].forEach((t=>{t.callback.apply(this,e)}))}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}_debugChain(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._chain(...arguments)}_debugConfirm(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._confirm(...arguments)}}class Re{static register(e){Re.tables.push(e)}static deregister(e){var t=Re.tables.indexOf(e);t>-1&&Re.tables.splice(t,1)}static lookupTable(e,t){var i,s,o=[];if("string"==typeof e){if((i=document.querySelectorAll(e)).length)for(var n=0;n{e.widthFixed||e.reinitializeWidth(),(this.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(o=e),e.visible&&(t+=e.getWidth())})),o?(s=i-t+o.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(o.setWidth(0),this.table.modules.responsiveLayout.update()),s>0?o.setWidth(s):o.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){var t,i,s=this.table.element.clientWidth,o=0,n=0,r=0,a=[],l=[],h=0,d=0;function c(e){return"string"==typeof e?e.indexOf("%")>-1?s/100*parseInt(e):parseInt(e):e}function u(e,t,i,s){var o=[],n=0,a=0,l=0,h=r,d=0,m=0,p=[];function g(e){return i*(e.column.definition.widthGrow||1)}function b(e){return c(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,n){var r=s?b(e):g(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(s-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,s;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(s=c(t),o+=s>i?s:i,e.definition.widthShrink&&(l.push({column:e,width:s>i?s:i}),h+=e.definition.widthShrink)):(a.push({column:e,width:0}),r+=e.definition.widthGrow||1))})),n=s-o,t=Math.floor(n/r),d=u(a,n,t,!1),a.length&&d>0&&(a[a.length-1].width+=+d),a.forEach((function(e){n-=e.width})),(i=Math.abs(d)+n)>0&&h&&(d=u(l,i,Math.floor(i/h),!0)),l.length&&(l[l.length-1].width-=d),a.forEach((function(e){e.column.setWidth(e.width)})),l.forEach((function(e){e.column.setWidth(e.width)}))}};class Te extends t{constructor(e){super(e,"layout"),this.mode=null,this.registerTableOption("layout","fitData"),this.registerTableOption("layoutColumnsOnNewData",!1),this.registerColumnOption("widthGrow"),this.registerColumnOption("widthShrink")}initialize(){var e=this.table.options.layout;Te.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)}getMode(){return this.mode}layout(){Te.modes[this.mode].call(this,this.table.columnManager.columnsByIndex),this.dispatch("layout-refreshed")}}Te.moduleName="layout",Te.modes=Me;class Le extends t{constructor(e){super(e),this.locale="default",this.lang=!1,this.bindings={},this.langList={},this.registerTableOption("locale",!1),this.registerTableOption("langs",{})}initialize(){this.langList=s.deepClone(Le.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);for(let e in this.table.options.langs)this.installLang(e,this.table.options.langs[e]);this.setLocale(this.table.options.locale),this.registerTableFunction("setLocale",this.setLocale.bind(this)),this.registerTableFunction("getLocale",this.getLocale.bind(this)),this.registerTableFunction("getLang",this.getLang.bind(this))}setHeaderFilterPlaceholder(e){this.langList.default.headerFilters.default=e}setHeaderFilterColumnPlaceholder(e,t){this.langList.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)}installLang(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}_setLangProp(e,t){for(let i in t)e[i]&&"object"==typeof e[i]?this._setLangProp(e[i],t[i]):e[i]=t[i]}setLocale(e){if(!0===(e=e||"default")&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!this.langList[e]){let t=e.split("-")[0];this.langList[t]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,t),e=t):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}this.locale=e,this.lang=s.deepClone(this.langList.default||{}),"default"!=e&&function e(t,i){for(var s in t)"object"==typeof t[s]?(i[s]||(i[s]={}),e(t[s],i[s])):i[s]=t[s]}(this.langList[e],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}getLocale(e){return this.locale}getLang(e){return e?this.langList[e]:this.lang}getText(e,t){var i=(e=t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}_getLangElement(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}bind(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}_executeBindings(){for(let e in this.bindings)this.bindings[e].forEach((t=>{t(this.getText(e),this.lang)}))}}Le.moduleName="localize",Le.langs={default:{groups:{item:"item",items:"items"},columns:{},data:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}};class ke extends t{constructor(e){super(e)}initialize(){this.registerTableFunction("tableComms",this.receive.bind(this))}getConnections(e){var t=[];return Re.lookupTable(e).forEach((e=>{this.table!==e&&t.push(e)})),t}send(e,t,i,s){var o=this.getConnections(e);o.forEach((e=>{e.tableComms(this.table.element,t,i,s)})),!o.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}receive(e,t,i,s){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,s);console.warn("Inter-table Comms Error - no such module:",t)}}ke.moduleName="comms";var De=Object.freeze({__proto__:null,LayoutModule:Te,LocalizeModule:Le,CommsModule:ke});class Se{constructor(e,t){this.bindStaticFuctionality(e),this.bindModules(e,De,!0),t&&this.bindModules(e,t)}bindStaticFuctionality(e){e.moduleBindings={},e.extendModule=function(t,i,s){if(e.moduleBindings[t]){var o=e.moduleBindings[t].prototype[i];if(o)if("object"==typeof s)for(let e in s)o[e]=s[e];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",i)}else console.warn("Module Error - module does not exist:",t)},e.registerModule=function(t){Array.isArray(t)||(t=[t]),t.forEach((t=>{e.registerModuleBinding(t)}))},e.registerModuleBinding=function(t){e.moduleBindings[t.moduleName]=t},e.findTable=function(e){var t=Re.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},e.prototype.bindModules=function(){for(var t in this.modules={},e.moduleBindings){let i=e.moduleBindings[t];this.modules[t]=new i(this),i.prototype.moduleCore?this.modulesCore[t]=this.modules[t]:this.modulesRegular[t]=this.modules[t]}}}bindModules(e,t,i){var s=Object.values(t);i&&s.forEach((e=>{e.prototype.moduleCore=!0})),e.registerModule(s)}}class Fe{constructor(e,t){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.vdomHoz=null,this.externalEvents=null,this.eventBus=null,this.interactionMonitor=!1,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.componentFunctionBinder=new we(this),this.dataLoader=!1,this.modules={},this.modulesCore={},this.modulesRegular={},this.optionsList=new he(this,"table constructor"),this.initialized=!1,this.initializeElement(e)&&(this.initialzeCoreSystems(t),setTimeout((()=>{this._create()}))),Re.register(this)}initializeElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)}initialzeCoreSystems(e){this.columnManager=new me(this),this.rowManager=new be(this),this.footerManager=new fe(this),this.dataLoader=new Ce(this),this.bindModules(),this.options=this.optionsList.generate(Fe.defaultOptions,e),this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.externalEvents=new Ee(this.options,this.options.debugEventsExternal),this.eventBus=new ye(this.options.debugEventsInternal),this.interactionMonitor=new ve(this),this.dataLoader.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this.footerManager.initialize()}rtlCheck(){var e=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==e.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}}_mapDepricatedFunctionality(){}_clearSelection(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")}_create(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this.rtlCheck(),this._buildElement(),this._loadInitialData(),this.initialized=!0}_clearObjectPointers(){this.options.columns=this.options.columns.slice(0),this.options.data&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}_buildElement(){var e=this.element,t=this.options;for(e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);t.height&&(t.height=isNaN(t.height)?t.height:t.height+"px",e.style.height=t.height),!1!==t.minHeight&&(t.minHeight=isNaN(t.minHeight)?t.minHeight:t.minHeight+"px",e.style.minHeight=t.minHeight),!1!==t.maxHeight&&(t.maxHeight=isNaN(t.maxHeight)?t.maxHeight:t.maxHeight+"px",e.style.maxHeight=t.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser();for(let e in this.modulesCore){this.modulesCore[e].initialize()}if("string"==typeof t.placeholder){var i=document.createElement("div");i.classList.add("tabulator-placeholder");var s=document.createElement("span");s.innerHTML=t.placeholder,i.appendChild(s),t.placeholder=i}e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),t.footerElement&&this.footerManager.activate(),t.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data);for(let e in this.modulesRegular){this.modulesRegular[e].initialize()}this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built"),this.externalEvents.dispatch("tableBuilt")}_loadInitialData(){this.dataLoader.load(this.options.data)}destroy(){var e=this.element;for(Re.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.rows.forEach((function(e){e.wipe()})),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[];e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")}_detectBrowser(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}blockRedraw(){return this.rowManager.blockRedraw()}restoreRedraw(){return this.rowManager.restoreRedraw()}setDataFromLocalFile(e){return new Promise(((t,i)=>{var s=document.createElement("input");s.type="file",s.accept=e||".json,application/json",s.addEventListener("change",(e=>{var o,n=s.files[0],r=new FileReader;r.readAsText(n),r.onload=e=>{try{o=JSON.parse(r.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void i(e)}this.setData(o).then((e=>{t(e)})).catch((e=>{t(e)}))},r.onerror=e=>{console.warn("File Load Error - Unable to read file"),i()}})),s.click()}))}setData(e,t,i){if(this.initialized)return this.dataLoader.load(e,t,i,!1);console.warn("setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.")}clearData(){this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}getData(e){return this.rowManager.getData(e)}getDataCount(e){return this.rowManager.getDataCount(e)}replaceData(e,t,i){return this.dataLoader.load(e,t,i,!0,!0)}updateData(e){var t=0;return new Promise(((i,s)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((e=>{var s=this.rowManager.findRow(e[this.options.index]);s&&(t++,s.updateData(e).then((()=>{--t||i()})))})):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))}))}addData(e,t,i){return new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?this.rowManager.addRows(e,t,i).then((e=>{var t=[];e.forEach((function(e){t.push(e.getComponent())})),s(t)})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}updateOrAddData(e){var t=[],i=0;return new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);i++,o?o.updateData(e).then((()=>{i--,t.push(o.getComponent()),i||s(t)})):this.rowManager.addRows(e).then((e=>{i--,t.push(e[0].getComponent()),i||s(t)}))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}getRow(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}getRowFromPosition(e,t){var i=this.rowManager.getRowFromPosition(e,t);return i?i.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}deleteRow(e){var t=[];Array.isArray(e)||(e=[e]);for(let i of e){let e=this.rowManager.findRow(i,!0);if(!e)return console.error("Delete Error - No matching row found:",i),Promise.reject("Delete Error - No matching row found");t.push(e)}return t.sort(((e,t)=>this.rowManager.rows.indexOf(e)>this.rowManager.rows.indexOf(t)?1:-1)),t.forEach((e=>{e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}addRow(e,t,i){return"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i).then((e=>e[0].getComponent()))}updateOrAddRow(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>i.getComponent())):this.rowManager.addRows(t).then((e=>e[0].getComponent()))}updateRow(e,t){var i=this.rowManager.findRow(e);return"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>{resolve(i.getComponent())})):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}scrollToRow(e,t,i){var s=this.rowManager.findRow(e);return s?this.rowManager.scrollToRow(s,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}moveRow(e,t,i){var s=this.rowManager.findRow(e);s?s.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}getRows(e){return this.rowManager.getComponents(e)}getRowPosition(e,t){var i=this.rowManager.findRow(e);return i?this.rowManager.getRowPosition(i,t):(console.warn("Position Error - No matching row found:",e),!1)}setColumns(e){this.columnManager.setColumns(e)}getColumns(e){return this.columnManager.getComponents(e)}getColumn(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}getColumnDefinitions(){return this.columnManager.getDefinitionTree()}showColumn(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}hideColumn(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}toggleColumn(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()}addColumn(e,t,i){var s=this.columnManager.findColumn(i);return this.columnManager.addColumn(e,t,s).then((e=>e.getComponent()))}deleteColumn(e){var t=this.columnManager.findColumn(e);return t?t.delete():(console.warn("Column Delete Error - No matching column found:",e),Promise.reject())}updateColumnDefinition(e,t){var i=this.columnManager.findColumn(e);return i?i.updateDefinition(t):(console.warn("Column Update Error - No matching column found:",e),Promise.reject())}moveColumn(e,t,i){var s=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);s?o?this.columnManager.moveColumn(s,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}scrollToColumn(e,t,i){return new Promise(((s,o)=>{var n=this.columnManager.findColumn(e);return n?this.columnManager.scrollToColumn(n,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}redraw(e){this.columnManager.redraw(e),this.rowManager.redraw(e)}setHeight(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw()}on(e,t){this.externalEvents.subscribe(e,t)}off(e,t){this.externalEvents.unsubscribe(e,t)}dispatchEvent(){Array.from(arguments).shift();this.externalEvents.dispatch(...arguments)}modExists(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}module(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}Fe.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,height:!1,minHeight:!1,maxHeight:!1,columnMaxWidth:!1,columnHeaderVertAlign:"top",columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",tooltipGenerationMode:"load",footerElement:!1,index:"id",textDirection:"auto",addRowPos:"bottom",headerVisible:!0,renderVertical:"virtual",renderHorizontal:"basic",renderVerticalBuffer:0,scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataSendParams:{},dataReceiveParams:{}},new Se(Fe);class He extends Fe{}new Se(He,le);class Pe{constructor(e){this.type=e,this.element=this._createElement()}_createElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e}getElement(){return this.element}getComponent(){return!1}getData(){return{}}getHeight(){return this.element.outerHeight}initialize(){}reinitialize(){}normalizeHeight(){}generateCells(){}reinitializeHeight(){}calcHeight(){}setCellHeight(){}clearCellHeight(){}}export{o as AccessorModule,l as AjaxModule,d as CalcComponent,c as CellComponent,h as ClipboardModule,w as ColumnCalcsModule,m as ColumnComponent,C as DataTreeModule,y as DownloadModule,M as EditModule,k as ExportModule,S as FilterModule,H as FormatModule,P as FrozenColumnsModule,z as FrozenRowsModule,A as GroupComponent,_ as GroupRowsModule,N as HistoryModule,B as HtmlTableImportModule,V as InteractionModule,I as KeybindingsModule,W as MenuModule,t as Module,j as MoveColumnsModule,G as MoveRowsModule,U as MutatorModule,X as PageModule,Y as PersistenceModule,J as PrintModule,Pe as PseudoRow,$ as ReactiveDataModule,de as Renderer,Q as ResizeColumnsModule,Z as ResizeRowsModule,ee as ResizeTableModule,te as ResponsiveLayoutModule,b as RowComponent,ie as SelectRowModule,ne as SortModule,Fe as Tabulator,He as TabulatorFull,ae as ValidateModule}; //# sourceMappingURL=tabulator_esm.min.js.map diff --git a/dist/js/tabulator_esm.min.js.map b/dist/js/tabulator_esm.min.js.map index bd35e3701..f1750b7e5 100644 --- a/dist/js/tabulator_esm.min.js.map +++ b/dist/js/tabulator_esm.min.js.map @@ -1 +1 @@ -{"version":3,"file":"tabulator_esm.min.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/Module.js","../../src/js/core/tools/Helpers.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/column/Column.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/defaults/options.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFuctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/TableRegistry.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/Tabulator.js","../../src/js/core/row/PseudoRow.js"],"sourcesContent":["export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj){\r\n\t\tvar clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tif(obj[i] != null && typeof(obj[i]) === \"object\"){\r\n\t\t\t\tif (obj[i] instanceof Date) {\r\n\t\t\t\t\tclone[i] = new Date(obj[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn clone;\r\n\t}\r\n}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach(function(type){\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {}","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\tvar output = this.generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = false; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\r\n\t\tthis.loaderPromise = false;\r\n\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\r\n\t\tif(this.table.options.ajaxParams){\r\n\t\t\tthis.setParams(this.table.options.ajaxParams);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxConfig){\r\n\t\t\tthis.setConfig(this.table.options.ajaxConfig);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\r\n\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\r\n\trequestData(data, params, config, silent, previousData){\r\n\t\tif(this.requestDataCheck(data)){\r\n\t\t\tif(data){\r\n\t\t\t\tthis.setUrl(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(params){\r\n\t\t\t\tthis.setParams(params, true);\r\n\t\t\t}\r\n\r\n\t\t\tif(config){\r\n\t\t\t\tthis.setConfig(config);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.sendRequest();\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\r\n\t//set ajax params\r\n\tsetParams(params, update){\r\n\t\tif(update){\r\n\t\t\tthis.params = this.params || {};\r\n\r\n\t\t\tfor(let key in params){\r\n\t\t\t\tthis.params[key] = params[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.params = params;\r\n\t\t}\r\n\t}\r\n\r\n\tgetParams(){\r\n\t\treturn this.params || {};\r\n\t}\r\n\r\n\t//load config object\r\n\tsetConfig(config){\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tfor(let key in config){\r\n\t\t\t\tthis.config[key] = config[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create config object from default\r\n\t_loadDefaultConfig(force){\r\n\t\tif(!this.config || force){\r\n\r\n\t\t\tthis.config = {};\r\n\r\n\t\t\t//load base config from defaults\r\n\t\t\tfor(let key in Ajax.defaultConfig){\r\n\t\t\t\tthis.config[key] = Ajax.defaultConfig[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\r\n\t//send ajax request\r\n\tsendRequest(silent){\r\n\t\tvar url = this.url,\r\n\t\tesc, query;\r\n\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, this.url, this.params) !== false){\r\n\t\t\treturn this.loaderPromise(url, this.config, this.params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, this.url, this.params, data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\tmethod: \"GET\",\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value != value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = typeof def.headerTooltip === \"undefined\" ? def.tooltip : def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.offsetHeight;\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData();\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tthis.setWidthActual(maxWidth + 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refeshed\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(this);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\tfirstCol = this.table.columnManager.getFirstVisibileColumn(),\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\t\t\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-relayout\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tcheckForRestyle(cell){\r\n\t\tif(!cell.row.cells.indexOf(cell)){\r\n\t\t\tcell.row.reinitialize();\r\n\t\t}\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}else{\r\n\t\t\t\trowData.push(\"\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refeshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tnav.next();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.validate){\r\n\t\t\t\t\tcell.validate();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tcolumns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tif(left !== this.table.rowManager.element.scrollLeft){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tthis.changed = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = (window.DateTime || luxon.DateTime).fromFormat(value, inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = DT.fromFormat(value, inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-before\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\r\n\t\tif(!column.isGroup){\r\n\r\n\t\t\tif(this.frozenCheck(column)){\r\n\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.active = true;\r\n\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\r\n\t\treturn frozen;\r\n\t}\r\n\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\t//layout all rows after scroll is complete\r\n\t\t\tthis.scrollEndTimer = setTimeout(() => {\r\n\t\t\t\tthis.layout();\r\n\t\t\t}, 100);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate margins for rows\r\n\tcalcMargins(){\r\n\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\r\n\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\r\n\t\tvar leftParents = [];\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this._calcSpace(this.leftColumns, i) + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - this._calcSpace(this.rightColumns, i + 1)) + \"px\";\r\n\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\r\n\t//layout columns appropropriatly\r\n\tlayout(){\r\n\t\tvar rightMargin = 0;\r\n\r\n\t\tif(this.active){\r\n\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutElement(element, column){\r\n\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.arrowElement = false;\r\n\t\t\tthis.elementContents = false;\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\taddBindings(){\r\n\t\tvar dblTap,\ttapHold, tap, toggleElement;\r\n\r\n\t\tif ((this.groupManager.table.options.groupContextMenu || this.groupManager.table.options.groupClickMenu) && this.groupManager.table.modExists(\"menu\")){\r\n\t\t\tthis.groupManager.table.modules.menu.initializeGroup.call(this.groupManager.table.modules.menu, this);\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTap){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tthis.groupManager.table.options.groupTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupDblTap){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tthis.groupManager.table.options.groupDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTapHold){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tthis.groupManager.table.options.groupTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\t_addRowToGroup(row){\r\n\r\n\t\tvar level = this.level + 1;\r\n\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\r\n\t\trow.updateData(data);\r\n\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trow.modules.group = this;\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\r\n\tscrollHeader(left){\r\n\t\tthis.arrowElement.style.marginLeft = left;\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\tchild.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tgetRowIndex(row){}\r\n\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\r\n\t\toutput.push(this);\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\r\n\t\t\tvar prev = this.getElement();\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\r\n\t\tif(typeof this.visible == \"function\"){\r\n\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\r\n\t////////////// Standard Row Functions //////////////\r\n\r\n\tgetElement(){\r\n\t\tthis.addBindingsd = false;\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t// this.addBindings();\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.groupIDLookups.length){\r\n\r\n\t\t\tif(!Object.keys(this.groups).length){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList =[];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.history.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"table-building\", this.tableElementCheck.bind(this));\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.element.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.element,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for tablator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\t//create new element\r\n\t\tvar newElement = document.createElement(\"div\");\r\n\r\n\t\t//transfer attributes to new element\r\n\t\tvar attributes = element.attributes;\r\n\r\n\t\t// loop through attributes and apply them on div\r\n\r\n\t\tfor(var i in attributes){\r\n\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// replace table with div element\r\n\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\r\n\t\tthis.table.element = newElement;\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for tablator inline options\r\n\t\t\tattributes = header.attributes;\r\n\r\n\t\t\t// //check for tablator inline options\r\n\t\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:\"ctrl + 90\",\r\n\tredo:\"ctrl + 89\",\r\n\tcopyToClipboard:\"ctrl + 67\",\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", []); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\r\n\t\t\tfor(let key in Keybindings.bindings){\r\n\t\t\t\tmergedBindings[key] = Keybindings.bindings[key];\r\n\t\t\t}\r\n\r\n\t\t\tif(Object.keys(bindings).length){\r\n\r\n\t\t\t\tfor(let key in bindings){\r\n\t\t\t\t\tmergedBindings[key] = bindings[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tthis.mapBinding(key, binding);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tif(cell.column.definition.contextMenu || cell.column.definition.clickMenu){\r\n\t\t\tthis.initializeCell(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerContextMenu || def.headerClickMenu || def.headerMenu){\r\n\t\t\tthis.initializeColumnHeader(column);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnHeader(column){\r\n\t\tvar headerMenuEl;\r\n\r\n\t\tif(column.definition.headerContextMenu){\r\n\t\t\tcolumn.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));\r\n\t\t\tthis.tapHold(column, column.definition.headerContextMenu);\r\n\t\t}\r\n\r\n\t\t// if(column.definition.headerClickMenu){\r\n\t\t// \tcolumn.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));\r\n\t\t// }\r\n\r\n\t\tif(column.definition.headerMenu){\r\n\r\n\t\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\r\n\t\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.LoadMenuEvent(column, column.definition.headerMenu, e);\r\n\t\t\t});\r\n\r\n\t\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t\t}\r\n\t}\r\n\r\n\tLoadMenuEvent(component, menu, e){\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\r\n\t\t// if(component instanceof Cell){\r\n\t\t// \te.stopImmediatePropagation();\r\n\t\t// }\r\n\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\r\n\ttapHold(component, menu){\r\n\t\tvar element = component.getElement(),\r\n\t\ttapHold = null,\r\n\t\tloaded = false;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\tloaded = false;\r\n\r\n\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t\tloaded = true;\r\n\r\n\t\t\t\tthis.LoadMenuEvent(component, menu, e);\r\n\t\t\t}, 1000);\r\n\r\n\t\t}, {passive: true});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tif(loaded){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.contextMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));\r\n\t\t\tthis.tapHold(cell, cell.column.definition.contextMenu);\r\n\t\t}\r\n\r\n\t\tif(cell.column.definition.clickMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"click\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\trow.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));\r\n\t\t\tthis.tapHold(row, this.table.options.rowContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\trow.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroup (group){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));\r\n\t\t\tthis.tapHold(group, this.table.options.groupContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tloadMenu(e, component, menu, parentEl){\r\n\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t}\r\n\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar docHeight = Math.max(document.body.offsetHeight, window.innerHeight),\r\n\t\tx, y, parentOffset;\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\r\n\t\tdocument.body.appendChild(element);\r\n\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) >= docHeight){\r\n\t\t\telement.style.top = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.bottom = (docHeight - parentOffset.top - parentEl.offsetHeight - 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.bottom = (docHeight - y) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= document.body.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t}\r\n\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\r\n\thideMenu(){\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\r\n\t\tif(!column.modules.frozen){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement();\r\n\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = \"0\";\r\n\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Page extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\r\n\t\tthis.pageSizes = [];\r\n\r\n\t\tthis.dataReceivedNames = {}; //TODO - remove once pagimation update is complete\r\n\t\tthis.dataSentNames = {}; //TODO - remove once pagimation update is complete\r\n\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initail page to show on load\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {index, top}\r\n\t}\r\n\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Promise.reject();\r\n\t}\r\n\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup pageination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel;\r\n\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set the maxmum page\r\n\tsetMaxPage(max){\r\n\r\n\t\tmax = parseInt(max);\r\n\r\n\t\tthis.max = max || 1;\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\r\n\t\tpage = parseInt(page);\r\n\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\r\n\t\treturn button;\r\n\t}\r\n\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger()\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar output, start, end;\r\n\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\r\n\t\t\tthis.setMaxRows(data.length);\r\n\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tif(data[i]){\r\n\t\t\t\t\toutput.push(data[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\ttrigger(){\r\n\t\tvar left;\r\n\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.last_page + \"' property\");\r\n\t\t}\r\n\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.table.rowManager.getData().concat(data.data);\r\n\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.data + \"' property\");\r\n\t\t}\r\n\r\n\t\treturn data.data;\r\n\t}\r\n\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.element;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.substr(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.substr(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar pushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[this.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? this.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = this.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tthis.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\r\n\t\tif(mode === true || mode == type){\r\n\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\r\n\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn();\r\n\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tthis.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate resposive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//detemine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column, i){\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && self.mode === \"collapse\"){\r\n\t\t\t\t\t\tself.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort(function(a, b){\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initialize();\r\n\t\t}\r\n\r\n\t\t//this.update();\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerText = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.clearSelectionData.bind(this));\r\n\r\n\t\t\tif(this.table.options.selectable && this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refeshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\r\n\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\r\n\t\trow.modules.select = {selected:false};\r\n\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\r\n\r\n\t\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\r\n\t\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\r\n\r\n\t\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\r\n\t\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\r\n\t\t\t\t\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\t\ttoggledRows.forEach(function(toggledRow){\r\n\t\t\t\t\t\t\t\t\tif(toggledRow !== self.lastClickedRow){\r\n\r\n\t\t\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true && !self.isRowSelected(row)){\r\n\t\t\t\t\t\t\t\t\t\t\tif(self.selectedRows.length < self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\r\n\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true){\r\n\t\t\t\t\t\t\t\t\tif(toggledRows.length > self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tself.selectRows(toggledRows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\t\t\t\t\t\t\tself.selectRows(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"string\":\r\n\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\r\n\t\tif(typeof rows == \"undefined\"){\r\n\r\n\t\t\trowCount = self.selectedRows.length;\r\n\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\r\n\t\t\tself._rowSelectionChanged(silent);\r\n\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetSelectedRows(){\r\n\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = DT.fromFormat(a, format);\r\n\t\tb = DT.fromFormat(b, format);\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach(function(item){\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach(function(item){\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnMaxWidth:false, //minimum global width for a column\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //seperatpr for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = {};\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determin weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\r\n\t\tthis.fitDataColAvg = 0;\r\n\r\n\t\tthis.window = 200; //pixel margin to make column visible before it is shown on screen\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tthis.columns = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.compatabilityCheck();\r\n\t}\r\n\r\n\tcompatabilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\r\n\t\treturn ok;\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.window));\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t};\r\n\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.clear();\r\n\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.window;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\tvar colPos = 0;\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\r\n\t\t\t\tconfig.width = width;\r\n\r\n\t\t\t\tif (this.options(\"layout\") === \"fitData\") {\r\n\t\t\t\t\tconfig.fitDataCheck = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t \t\t//column is visible\r\n\r\n\t \t\tif(this.leftCol == -1){\r\n\t \t\t\tthis.leftCol = this.columns.length;\r\n\t \t\t\tthis.vDomPadLeft = colPos;\r\n\t \t\t}\r\n\r\n\t \t\tthis.rightCol = this.columns.length;\r\n\t \t}else{\r\n\t \t\t// column is hidden\r\n\t \t\tif(this.leftCol !== -1){\r\n\t \t\t\tthis.vDomPadRight += width;\r\n\t \t\t}\r\n\t \t}\r\n\r\n\t \tthis.columns.push(column);\r\n\r\n\t \tcolumn.modules.vdomHoz = config;\r\n\r\n\t \tcolPos += width;\r\n\t }\r\n\t });\r\n\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.renitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\r\n\t\tif(this.options(\"layout\") === \"fitData\"){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows()[0];\r\n\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\tif(row){\r\n\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\r\n\t\t\t\t\t\trow.generateCells();\r\n\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\r\n\t\t\t\t\t\t\tif(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\t\t\t\tthis.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\r\n\t\t\t\t\t\tfor(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t\tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn !match;\r\n\t}\r\n\r\n\trenitializeRows(){\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(diff > (this.elementVertical.clientWidth * .8)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\r\n\taddColRight(){\r\n\t\tvar column = this.columns[this.rightCol + 1],\r\n\t\trows, newWidth, widthDiff;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tthis.rightCol++;\r\n\r\n\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.addColRight();\r\n\t\t}\r\n\t}\r\n\r\n\taddColLeft(){\r\n\t\tvar column = this.columns[this.leftCol - 1],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tif(!this.leftCol){\r\n\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol--;\r\n\r\n\t\t\tthis.addColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColRight(column){\r\n\t\tvar column = this.columns[this.rightCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tcolumn.modules.vdomHoz.visible = false;\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.rightCol --;\r\n\r\n\t\t\tthis.removeColRight();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColLeft(){\r\n\t\tvar column = this.columns[this.leftCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\tif(cell.parentNode){\r\n\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol ++;\r\n\r\n\t\t\tthis.removeColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.rightCol + 2, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t};\r\n\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\");\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\r\n\t\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\r\n\t\t\tvar nextEl = nextToColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\t_verticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibileColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis._verticalAlignHeaders();\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(force){\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tthis._verticalAlignHeaders();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.render();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold caluclation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\r\n\t\tthis.firstRender = true;\r\n\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\t\t\t}\r\n\r\n\t\t\t//handle verical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\r\n\t\t\t\tthis._setDataActual(data);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\r\n\t\tthis._wipeElements();\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\r\n\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\r\n\t\t\tlength = data.length - 1;\r\n\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRenderInPosition();\r\n\r\n\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\r\n\t\treturn pos;\r\n\t}\r\n\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\r\n\t\t}else{\r\n\r\n\t\t\tif(top){\r\n\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\r\n\t\tthis.moveRowActual(from, to, after);\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\r\n\t\tif(from !== to){\r\n\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\r\n\t\t\tif (fromIndex > -1) {\r\n\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\r\n\t\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\r\n\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn nextRow;\r\n\t}\r\n\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn prevRow;\r\n\t}\r\n\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\r\n\t\trow = this.findRow(row);\r\n\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\r\n\t\treturn rows.length;\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\r\n\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tthis.dispatch(\"data-refeshing\");\r\n\r\n\t\t\tif(!handler){\r\n\t\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t\t}\r\n\r\n\t\t\t//cascade through data refresh stages\r\n\t\t\tswitch(stage){\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\t//handle case where alldata needs refreshing\r\n\r\n\t\t\t\tcase \"dataPipeline\":\r\n\r\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\r\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\r\n\t\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\t\tcase \"display\":\r\n\t\t\t\tindex = 0;\r\n\t\t\t\tthis.resetDisplayRows();\r\n\r\n\t\t\t\tcase \"displayPipeline\":\r\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\r\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcase \"end\":\r\n\t\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t\t}\r\n\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.renderTable();\r\n\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"data-refeshed\");\r\n\t\t}\r\n\t}\r\n\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\r\n\t\tvar output = true;\r\n\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\r\n\tgetVisibleRows(viewable){\r\n\t\treturn this.renderer.visibleRows(!viewable);\r\n\t}\r\n\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRederInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\r\n\trenderTable(){\r\n\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis._clearTable();\r\n\t\t\tthis.renderer.renderRows();\r\n\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-layout\");\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.table.options.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\tthis._clearPlaceholder();\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\r\n\t_showPlaceholder(){\r\n\t\tif(this.table.options.placeholder){\r\n\r\n\t\t\tthis.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\r\n\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\tthis.table.options.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearPlaceholder(){\r\n\t\tif(this.table.options.placeholder && this.table.options.placeholder.parentNode){\r\n\t\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\r\n\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\r\n\t\t\tthis.renderer.resize();\r\n\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRederInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.redrawBlockRederInPosition = false;\r\n\t}\r\n\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\r\n\t\tthis.adjustTableSize();\r\n\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\tif(!this.displayRowsCount){\r\n\t\t\t\tif(this.table.options.placeholder){\r\n\t\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tinitialize(){\r\n\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.el = this.table.element;\r\n\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\r\n\t\tthis.previousTargets = {};\r\n\r\n\t\tthis.listeners = [\r\n\t\t\"click\",\r\n\t\t\"dblclick\",\r\n\t\t\"contextmenu\",\r\n\t\t\"mouseenter\",\r\n\t\t\"mouseleave\",\r\n\t\t\"mouseover\",\r\n\t\t\"mouseout\",\r\n\t\t\"mousemove\",\r\n\t\t\"touchstart\",\r\n\t\t\"touchend\",\r\n\t\t];\r\n\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t}\r\n\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.previousTargets = targetMatches;\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFuctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\"){\r\n\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", data, params, config, silent)){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tvar params = this.chain(\"data-params\", [data, config, silent], params || {}, {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], Promise.resolve([]));\r\n\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, 3000);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(optionsList, debug){\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name].prototype[property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\r\n\t\t\t\tthis.modules[name] = new mod(this);\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore[name] = this.modules[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.modulesRegular[name] = this.modules[name];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFuctionBinder from './tools/ComponentFuctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFuctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = {}; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = {}; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initialzeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediatly after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inderdevice communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitialzeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDepricatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\trtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//convert depricated functionality to new functions\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//concreate table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis.rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._loadInitialData();\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(this.options.data && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tfor (let key in this.modulesCore){\r\n\t\t\tlet mod = this.modulesCore[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\t//configure placeholder element\r\n\t\tif(typeof options.placeholder == \"string\"){\r\n\r\n\t\t\tvar el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\r\n\t\t\tvar span = document.createElement(\"span\");\r\n\t\t\tspan.innerHTML = options.placeholder;\r\n\r\n\t\t\tel.appendChild(span);\r\n\r\n\t\t\toptions.placeholder = el;\r\n\t\t}\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && this.options.data){\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tfor (let key in this.modulesRegular){\r\n\t\t\tlet mod = this.modulesRegular[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inderdevice communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(ua.substr(0,4));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//local data from local file\r\n\tsetDataFromLocalFile(extensions){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.type = \"file\";\r\n\t\t\tinput.accept = extensions || \".json,application/json\";\r\n\r\n\t\t\tinput.addEventListener(\"change\", (e) => {\r\n\t\t\t\tvar file = input.files[0],\r\n\t\t\t\treader = new FileReader(),\r\n\t\t\t\tdata;\r\n\r\n\t\t\t\treader.readAsText(file);\r\n\r\n\t\t\t\treader.onload = (e) => {\r\n\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tdata = JSON.parse(reader.result);\r\n\t\t\t\t\t} catch(e) {\r\n\t\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\r\n\t\t\t\t\t\treject(e);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.setData(data)\r\n\t\t\t\t\t.then((data) => {\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\tresolve(err);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\treader.onerror = (e) => {\r\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\r\n\t\t\t\t\treject();\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tinput.click();\r\n\t\t});\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\tresolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;","export default class PseudoRow {\r\n\r\n\tconstructor (type){\r\n\t\tthis.type = type;\r\n\t\tthis.element = this._createElement();\r\n\t}\r\n\r\n\t_createElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetComponent(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn {};\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.outerHeight;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\treinitialize(){}\r\n\r\n\tnormalizeHeight(){}\r\n\r\n\tgenerateCells(){}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n}"],"names":["CoreFeature","[object Object]","table","this","data","silent","dataLoader","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","value","options","module","Module","name","super","_handler","optionsList","register","columnManager","func","console","warn","component","handler","componentFunctionBinder","priority","rowManager","registerDataPipelineHandler","registerDisplayPipelineHandler","renderInPosition","refreshActiveData","Helpers","el","offsetWidth","offsetHeight","box","getBoundingClientRect","top","window","pageYOffset","document","documentElement","clientTop","left","pageXOffset","clientLeft","obj","clone","Object","assign","Array","isArray","i","Date","deepClone","Accessor","allowedTypes","registerColumnOption","initializeColumn","transformRow","column","match","config","forEach","type","accessor","charAt","toUpperCase","slice","definition","lookupAccessor","params","accessors","row","rowComponent","getComponent","traverse","colCompnent","getFieldValue","setFieldValue","moduleName","generateParamsList","prefix","output","item","concat","push","serializeParams","encoded","encodeURIComponent","join","json","headers","Content-Type","body","url","JSON","stringify","form","FormData","append","Ajax","urlGenerator","loaderPromise","registerTableOption","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxParams","setParams","ajaxConfig","setConfig","ajaxURL","setUrl","registerTableFunction","getUrl","requestDataCheck","requestData","previousData","sendRequest","update","_loadDefaultConfig","method","force","defaultConfig","call","then","keys","length","toLowerCase","includes","contentType","Promise","resolve","reject","ajaxContentType","Accept","mode","location","origin","credentials","fetch","response","ok","catch","error","status","statusText","pasteParser","pasteAction","customSelection","rowRange","plain","html","list","setData","e","element","setPasteParser","clipboardPasteParser","blocked","col","rowData","getSelection","range","selectNodeContents","sel","removeAllRanges","selection","textRange","moveToElementText","action","parser","dispatchExternal","valid","clipboardData","getData","Clipboard","pasteActions","clipboard","headerFindSuccess","columns","columnMap","rows","transform","cells","mutate","initialValue","oldValue","height","width","className","field","vertAlign","bottom","middle","hozAlign","right","center","tooltip","_generateContents","minWidth","maxWidth","_column","hide","to","result","title","visible","cssClass","variableHeight","headerTooltip","headerVertical","headerHozAlign","parent","contentElement","titleHolderElement","titleElement","groupElement","isGroup","fieldStructure","widthStyled","maxWidthStyled","minWidthStyled","newCol","Column$1","def","checkColumnVisibility","classList","setAttribute","defaults","nestedFieldSeparator","_getNestedData","_getFlatData","langBind","_buildGroupHeader","tap","clearTimeout","dblTap","addEventListener","tapHold","show","stopPropagation","appendChild","contents","textAlign","structure","dataObj","alignment","style","paddingTop","clientHeight","childWidth","Math","heightInitialized","offsetParent","cell","clearCellHeight","cellCount","deregisterColumn","Cell$1","index","fitToData","target","heightStyled","manualHeight","outerHeight","created","generateCells","initialized","minHeight","maxHeight","max","calcHeight","newRowData","tempData","findCell","subject","detatchModules","deleteCells","precision","values","toString","Number","topCalcs","botCalcs","genColumn","topElement","botElement","topRow","botRow","botInitialized","rowsUpdated","recalcActiveRows","recalcRowGroup","groupBy","topCalcParams","topCalc","bottomCalc","botCalc","generateRow","rowsToData","calcs","group","generateRowData","dataTree","getElement","modExists","formatter","pos","columnCalcs","subGroups","ColumnCalcs","indent","collapseEl","expandEl","elementField","startOpen","displayIndex","registerComponentFunction","toggleRow","dataTreeBranchElement","branchEl","dummyEl","firstChild","dataTreeCollapseElement","createElement","dataTreeExpandElement","rowDelete","childArray","children","open","controlEl","insertBefore","marginRight","paddingRight","oldControl","replaceChild","getChildren","child","childRow","create","reinitialize","refreshData","collapseRow","childIndex","findChildIndex","unshift","layoutRow","Row$1","RowComponent","HTMLElement","DataTree","csv","fileContents","pdf","fontStyle","fontSize","cellPadding","content","colSpan","jspdf","autoTableParams","autoTable","doc","xlsx","sheetName","workbook","merges","XLSX","worksheet","Sheets","setFileContents","sheets","sheetOnly","ArrayBuffer","downloadFunc","mime","filename","blob","navigator","maskLetter","maskWildcard","mask","fillSymbols","Download","downloaders","defaultDownloaders","defaultEditors","input","editorParams","keyCode","onChange","cancel","textarea","getValue","vertNav","cellValue","scrollHeight","display","padding","getRow","focus","normalizeHeight","stopImmediatePropagation","removeEventListener","select","cellEl","initialDisplayValue","listEl","multiselect","dataItems","currentItem","displayItems","currentItems","blurable","searchWord","label","itemParams","dataList","displayList","b","tabIndex","innerHTML","toggleItem","chooseItem","elementAttributes","setTimeout","setItem","indexOf","unsetItem","readOnly","unsetItems","setCurrentItem","cancelItem","preventDefault","character","searchWordTimeout","scrollTovalue","chooseItems","parseItems","autocomplete","uniqueColumnValues","sortValuesList","searchingPlaceholder","fillListIfNotEmpty","matches","searchEl","listItemFormatter","removeChild","items","success","add","filterList","genUniqueColumnValues","parentNode","showList","star","maxStars","size","getElementsByTagName","val","starHolder","starsHolder","parseInt","changeValue","mouseDrag","min","percent","handle","position","bar","mouseDragWidth","updateValue","onRendered","indetermValue","indetermState","tristate","indeterminate","checked","setValue","currentCell","mouseClick","invalidEdit","editors","navigatePrev","navigateLeft","clearEdited","initializeColumnCheck","rowDeleteCheck","cancelEdit","addRow","newRow","findNextEditableCell","findPrevEditableCell","edit","editor","validate","cellRendered","button","recursionBlock","rowEl","offsetTop","scrollTop","scrollLeft","offsetLeft","cellEditor","allowEdit","self","edited","rendered","Node","editedCells","Edit","ExportRow","ExportColumn","cloneTableStyle","columnHeaders","maxDepth","groupData","subGroupData","columnVisCheck","headerDepth","header","rowGroups","exportCols","headerEl","bodyEl","rowFormatter","colVisProp","groupHeader","styles","oddRow","evenRow","firstGroup","setup","mapElementStyles","getField","getColumn","firstCell","_row","format","holder","background-color","color","font-weight","font-family","font-size","text-align","border-top","border-left","border-right","border-bottom","padding-top","padding-left","fromStyle","getComputedStyle","props","Export","defaultFilters","rowVal","RegExp","String","filterVal","headerFilters","headerFilterColumns","prevHeaderFilterChangeCheck","userSetFilter","userRefreshFilter","getHeaderFilters","initializeColumnHeaderFilter","showHeaderFilterElements","tableBuilt","remoteFilterParams","headerFilter","filterFunc","refreshFilter","filterElement","headerFilterParams","editorElement","headerFilterLiveFilterDelay","headerFilterLiveFilter","filter","filters","Filter","all","ajax","findIndex","trackChanges","subscribedExternal","filterMode","activeRows","plaintext","emptyToSpace","sanitizeHTML","money","number","floatVal","parseFloat","decimalSym","symbolAfter","toFixed","decimal","rgx","link","urlPrefix","labelField","formatterParams","urlField","image","src","tickCross","truthy","allowTruthy","datetime","DT","DateTime","luxon","newDatetime","timezone","datetimediff","inputFormat","invalid","suffix","lookup","stars","traffic","colors","isNaN","percentValue","progress","legendColor","legendAlign","legend","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","checkbox","toggleSelect","formatterPrint","print","formatterClipboard","lookupFormatter","htmlOutput","entityMap","&","<",">","\"","'","=","formatters","Format","leftColumns","rightColumns","leftMargin","rightMargin","initializationMode","layoutCell","frozenCheck","active","calcMargins","layoutColumnPosition","_calcSpace","topInitialized","frozen","leftParents","edge","FrozenColumns","getRows","initialize","adjustTableSize","detachRow","FrozenRows","receiver","_group","getSubGroups","toggleVisibility","Group","groupManager","level","hasSubGroups","old","groups","groupList","generator","elementContents","arrowElement","arrow","groupID","groupKey","splice","updateGroupRows","groupValues","count","getHeadersAndRows","prev","compoment","path","remove","childNodes","groupIDLookups","headerGenerator","allowedValues","displayHandler","setGroupValues","initializeTopRow","lookupFunc","getColumnByField","getGroups","groupStartOpen","after","groupComponents","rowCount","childData","groupListData","pullGroupListData","createGroup","assignRowToExistingGroup","oldGroups","newGroupPath","renderer","GroupRows","History","history","Cell","_rebindRow","redoers","HtmlTableImport","fieldIndex","_generateBlankHeaders","attributes","newElement","attrib","exists","getAttribute","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellClick","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerClick","headerDblClick","headerContext","headerMouseEnter","headerMouseLeave","headerMouseMove","headerTap","headerDblTap","headerTapHold","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","subscribers","touchSubscribers","touchWatchers","tapDbl","added","eventMap","subscribeTouchEvents","subscriptionChanged","watchers","callback","Interaction","Keybindings","watchKeys","actions","meta","binding","bindings","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","undo","scrollToRow","getDisplayRows","Menu","menuElements","blurEvent","escEvent","nestedMenuBlock","menu","passive","LoadMenuEvent","rowClickMenu","isOpen","hideMenu","itemEl","hideOldSubMenus","menuEl","pop","touch","parentOffset","x","y","pageY","MoveColumns","placeholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","startX","autoScrollMargin","autoScrollTimeout","touches","colEl","nextColWidthLast","nextCol","prevCol","prevColWidth","startXMove","moveToCol","moveColumn","nextColWidth","pageX","Helpers$1","toColAfter","_unbindMouseMove","xPos","MoveRows","toRow","toRowAfter","hasHandle","moveHover","endMove","tableRowDropEvent","touchMove","connection","connectionSelectorsTables","connectionElements","connections","connectedTable","connectedRow","movableRowsConnectedTables","connectionSelectorsElements","mousemove","nextSibling","moveRow","tableRowDrop","which","rowHandle","prevRow","nextRowHeight","nextRow","diff","startYMove","moveToRow","nextRowHeightLast","setStartPosition","whiteSpace","yPos","connectionTables","commsConnections","prototype","fromRow","delete","Mutator","enabled","mutator","Page","initialLoad","dataChanging","pageSizes","dataReceivedNames","dataSentNames","setMaxPage","initialLoadComplete","registerDisplayHandler","createElements","dispRows","paginationSize","testElRow","testElCell","reset","setPageToRow","nextPage","firstBut","nextBut","paginationSizeSelector","pageSelectLabel","prevBut","setPage","previousPage","paginationElement","pageSizeSelect","pagesElement","progressiveLoad","page","rightSize","disabled","lastBut","start","end","scrollHorizontal","margin","cookie","localStorage","expireDate","setDate","Persistence","id","defWatcherBlock","persistence","readers","readFunc","persistenceWriterFunc","retreiveData","retreivedData","sort","sorters","initialSort","get","mergeDefinition","current","oldCols","from","find","parseColumns","validateSorters","writeFunc","definitions","getWidth","defStore","defaultReaders","Print","manualBlock","scrollY","tableEl","printHeader","headerContent","footerContent","scrollX","ReactiveData","origFuncs","currentVersion","version","defineProperty","childField","configurable","apply","shift","getOwnPropertyDescriptor","ResizeColumns","prevHandle","_mouseDown","nearestColumn","colIndex","rtl","setWidth","mouseUp","startColumn","ResizeRows","initializeRow","handleDown","observer","autoResize","containerHeight","containerWidth","floor","tableHeight","rerenderColumns","browserMobile","ResizeTable","ResponsiveLayout","hiddenColumns","collapseStartOpen","responsiveLayout","a","collapseHandleColumn","generateCollapsedRowContent","colCount","working","titleHighlight","text","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","isRowSelected","_deselectRow","selectable","shiftKey","rowIdx","fromRowIdx","toggledRow","deselectRows","toggledRows","_rowSelectionChanged","_selectRow","rowInfo","selectedRows","datetime$1","emptyAlign","decimalSeparator","thousandSeparator","string","langLocale","boolean","d","c","calc","alignEmptyValues","aRow","bs","as","rd","b1","sortList","setSort","sorter","dir","startingDir","columnHeaderSortMulti","rowComponents","sortMode","sortObj","_sortItems","el1Comp","el2","Sort","integer","isFinite","float","parameters","ends","Validate","clearValidation","_getSelf","_buildValidator","validators","invalidIndex","invalidCells","ResizeTableModule","ResponsiveLayoutModule","SelectRowModule","ValidateModule","ifVisible","rowIndex","elementVertical","VirtualDomHorizontal","rightCol","vDomScrollPosRight","vDomPadLeft","clear","fitDataCheck","vdomHoz","reinitChanged","columnsByIndex","change","colEnd","layoutRefresh","reinitializeRow","removeColRight","getCell","paddingLeft","widthDiff","newWidth","ColumnManager","blockHozScrollEvent","renderClass","renderers","headersElement","nextToColumn","before","parentIndex","nextEl","_verticalAlignHeaders","toIndex","updateRows","fromIndex","adjust","reinitializeWidth","BaiscVertical","VirtualDomVertical","vDomRowHeight","vDomTop","vDomScrollPosBottom","vDomBottomPad","paddingBottom","_addBottomRow","bottomDiff","topPad","heightOccupied","vDomWindowBuffer","fillableSpace","getHeight","vDomScrollPosTop","removableRows","vDomBottom","RowManager","tableElement","heightFixer","createTableElement","firstRender","renderMode","displayRows","displayRowsCount","rowNumColumn","initializeRenderer","activeIndex","displayRowIterator","regenerateRowNumbers","blockRedraw","_clearPlaceholder","setActiveRows","moveRowActual","findRowIndex","skipStage","stage","dataPipeline","reRenderInPosition","basic","fixedHeight","renderEmptyScroll","_showPlaceholder","placeholder","otherHeight","redrawBlock","redrawBlockRestoreConfig","renderTable","links","InteractionManager","tabulator-col","listener","comp","components","changed","findTargets","triggerEvents","targets","previousTargets","msgElement","dataLoaderLoading","template","loadingElement","requestOrder","errorElement","subscriptionNotifiers","debug","args","events","_notifiySubscriptionChange","confirmed","notifiers","_confirm","TableRegistry","results","lastCol","flexGrowUnits","remainingSpace","changeUnits","calcShrink","remainingFlexGrowUnits","shrinkCols","oversizeCols","oversizeSpace","freeSpace","fixedWidth","fixedShrinkColumns","flexColWidth","flexColumns","Layout","Localize","lang","_setLangProp","langList","desiredLocale","locale","trans","root","rootPath","loading","page_size","first","first_title","last","Comms","con","coreModules","tabulator","registerModule","modulesCore","Tabulator","footerManager","interactionMonitor","browserSlow","ComponentFuctionBinder","bindModules","_clearObjectPointers","debugEventsInternal","extensions","accept","onload","parse","responses","findRow","foundRows","addRows","findColumn","plugin","debugEventsExternal","debugInvalidOptions","columnMaxWidth","columnDefaults","autoColumns","addRowPos","headerVisible","renderHorizontal","renderVerticalBuffer","scrollToRowPosition","scrollToColumnIfVisible","rowFormatterClipboard","ModuleBinder"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tabulator_esm.min.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/Module.js","../../src/js/core/tools/Helpers.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/column/Column.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/defaults/options.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFuctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/TableRegistry.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/Tabulator.js","../../src/js/core/row/PseudoRow.js"],"sourcesContent":["export default class CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// DataLoad /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\treloadData(data, silent){\r\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t///////////// Localization ///////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlangText(){\r\n\t\treturn this.table.modules.localize.getText(...arguments);\r\n\t}\r\n\r\n\tlangBind(){\r\n\t\treturn this.table.modules.localize.bind(...arguments);\r\n\t}\r\n\r\n\tlangLocale(){\r\n\t\treturn this.table.modules.localize.getLocale(...arguments);\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t////////// Inter Table Comms /////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tcommsConnections(){\r\n\t\treturn this.table.modules.comms.getConnections(...arguments);\r\n\t}\r\n\r\n\tcommsSend(){\r\n\t\treturn this.table.modules.comms.send(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Layout /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tlayoutMode(){\r\n\t\treturn this.table.modules.layout.getMode();\r\n\t}\r\n\r\n\tlayoutRefresh(){\r\n\t\treturn this.table.modules.layout.layout();\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t/////////////// Event Bus ////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tsubscribe(){\r\n\t\treturn this.table.eventBus.subscribe(...arguments);\r\n\t}\r\n\r\n\tunsubscribe(){\r\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.table.eventBus.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChange(){\r\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\tdispatch(){\r\n\t\treturn this.table.eventBus.dispatch(...arguments);\r\n\t}\r\n\r\n\tchain(){\r\n\t\treturn this.table.eventBus.chain(...arguments);\r\n\t}\r\n\r\n\tconfirm(){\r\n\t\treturn this.table.eventBus.confirm(...arguments);\r\n\t}\r\n\r\n\tdispatchExternal(){\r\n\t\treturn this.table.externalEvents.dispatch(...arguments);\r\n\t}\r\n\r\n\tsubscribedExternal(key){\r\n\t\treturn this.table.externalEvents.subscribed(key);\r\n\t}\r\n\r\n\tsubscriptionChangeExternal(){\r\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\r\n\t}\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Options /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\toptions(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\tsetOption(key, value){\r\n\t\tif(typeof value !== \"undefined\"){\r\n\t\t\tthis.table.options[key] = value;\r\n\t\t}\r\n\r\n\t\treturn this.table.options[key];\r\n\t}\r\n\r\n\r\n\t//////////////////////////////////////////\r\n\t//////////////// Modules /////////////////\r\n\t//////////////////////////////////////////\r\n\r\n\tmodule(key){\r\n\t\treturn this.table.module(key);\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nclass Module extends CoreFeature{\r\n\r\n\tconstructor(table, name){\r\n\t\tsuper(table);\r\n\r\n\t\tthis._handler = null;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// setup module when table is initialized, to be overriden in module\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Options Registration ///////\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableOption(key, value){\r\n\t\tthis.table.optionsList.register(key, value);\r\n\t}\r\n\r\n\tregisterColumnOption(key, value){\r\n\t\tthis.table.columnManager.optionsList.register(key, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/// Public Function Registation ///\r\n\t///////////////////////////////////\r\n\r\n\tregisterTableFunction(name, func){\r\n\t\tif(typeof this.table[name] === \"undefined\"){\r\n\t\t\tthis.table[name] = func;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name)\r\n\t\t}\r\n\t}\r\n\r\n\tregisterComponentFunction(component, func, handler){\r\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Data Pipeline //////////\r\n\t///////////////////////////////////\r\n\r\n\tregisterDataHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\tregisterDisplayHandler(handler, priority){\r\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority)\r\n\t\tthis._handler = handler;\r\n\t}\r\n\r\n\trefreshData(renderInPosition, handler){\r\n\t\tif(!handler){\r\n\t\t\thandler = this._handler;\r\n\t\t}\r\n\r\n\t\tif(handler){\r\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Module;","export default class Helpers{\r\n\r\n\tstatic elVisible(el){\r\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\r\n\t}\r\n\r\n\tstatic elOffset(el){\r\n\t\tvar box = el.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\r\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\r\n\t\t};\r\n\t}\r\n\r\n\tstatic deepClone(obj){\r\n\t\tvar clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tif(obj[i] != null && typeof(obj[i]) === \"object\"){\r\n\t\t\t\tif (obj[i] instanceof Date) {\r\n\t\t\t\t\tclone[i] = new Date(obj[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn clone;\r\n\t}\r\n}","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defautlAccessors from './defaults/accessors.js';\r\n\r\nclass Accessor extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"] //list of accessor types\r\n\r\n\t\tthis.registerColumnOption(\"accessor\");\r\n\t\tthis.registerColumnOption(\"accessorParams\");\r\n\t\tthis.registerColumnOption(\"accessorData\");\r\n\t\tthis.registerColumnOption(\"accessorDataParams\");\r\n\t\tthis.registerColumnOption(\"accessorDownload\");\r\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\r\n\t\tthis.registerColumnOption(\"accessorClipboard\");\r\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\r\n\t\tthis.registerColumnOption(\"accessorPrint\");\r\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\r\n\t}\r\n\r\n\t//initialize column accessor\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach(function(type){\r\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\taccessor;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\taccessor:accessor,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.accessor = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupAccessor(value){\r\n\t\tvar accessor = false;\r\n\r\n\t\t//set column accessor\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Accessor.accessors[value]){\r\n\t\t\t\taccessor = Accessor.accessors[value]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\taccessor = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn accessor;\r\n\t}\r\n\r\n\t//apply accessor to row\r\n\ttransformRow(row, type){\r\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\trowComponent = row.getComponent();\r\n\r\n\t\t//clone data object with deep copy to isolate internal data from returned result\r\n\t\tvar data = Helpers.deepClone(row.data || {});\r\n\r\n\t\tthis.table.columnManager.traverse(function(column){\r\n\t\t\tvar value, accessor, params, colCompnent;\r\n\r\n\t\t\tif(column.modules.accessor){\r\n\r\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\r\n\r\n\t\t\t\tif(accessor){\r\n\t\t\t\t\tvalue = column.getFieldValue(data);\r\n\r\n\t\t\t\t\tif(value != \"undefined\"){\r\n\t\t\t\t\t\tcolCompnent = column.getComponent();\r\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\r\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\n//load defaults\r\nAccessor.moduleName = \"accessor\";\r\nAccessor.accessors = defautlAccessors;\r\n\r\nexport default Accessor;","export default {}","function generateParamsList(data, prefix){\r\n\tvar output = [];\r\n\r\n\tprefix = prefix || \"\";\r\n\r\n\tif(Array.isArray(data)){\r\n\t\tdata.forEach((item, i) => {\r\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\r\n\t\t});\r\n\t}else if (typeof data === \"object\"){\r\n\t\tfor (var key in data){\r\n\t\t\toutput = output.concat(generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\r\n\t\t}\r\n\t}else{\r\n\t\toutput.push({key:prefix, value:data});\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\nfunction serializeParams(params){\r\n\tvar output = generateParamsList(params),\r\n\tencoded = [];\r\n\r\n\toutput.forEach(function(item){\r\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\r\n\t});\r\n\r\n\treturn encoded.join(\"&\");\r\n}\r\n\r\nexport default function(url, config, params){\r\n\tif(url){\r\n\t\tif(params && Object.keys(params).length){\r\n\t\t\tif(!config.method || config.method.toLowerCase() == \"get\"){\r\n\t\t\t\tconfig.method = \"get\";\r\n\r\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + serializeParams(params);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n};","export default {\r\n\t\"json\":{\r\n\t\theaders:{\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\treturn JSON.stringify(params);\r\n\t\t},\r\n\t},\r\n\t\"form\":{\r\n\t\theaders:{\r\n\t\t},\r\n\t\tbody:function(url, config, params){\r\n\t\t\tvar output = this.generateParamsList(params),\r\n\t\t\tform = new FormData();\r\n\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tform.append(item.key, item.value);\r\n\t\t\t});\r\n\r\n\t\t\treturn form;\r\n\t\t},\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultConfig from './defaults/config.js';\r\nimport defaultURLGenerator from './defaults/urlGenerator.js';\r\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\r\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\r\n\r\nclass Ajax extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = false; //hold config object for ajax request\r\n\t\tthis.url = \"\"; //request URL\r\n\t\tthis.urlGenerator = false;\r\n\t\tthis.params = false; //request parameters\r\n\r\n\t\tthis.loaderPromise = false;\r\n\r\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\r\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\r\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\r\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\r\n\r\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\r\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\r\n\r\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\r\n\t}\r\n\r\n\t//initialize setup options\r\n\tinitialize(){\r\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\r\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\r\n\r\n\t\tif(this.table.options.ajaxParams){\r\n\t\t\tthis.setParams(this.table.options.ajaxParams);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxConfig){\r\n\t\t\tthis.setConfig(this.table.options.ajaxConfig);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.ajaxURL){\r\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\r\n\r\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\r\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\r\n\t}\r\n\r\n\r\n\trequestDataCheck(data, params, config, silent){\r\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\r\n\t}\r\n\r\n\trequestData(data, params, config, silent, previousData){\r\n\t\tif(this.requestDataCheck(data)){\r\n\t\t\tif(data){\r\n\t\t\t\tthis.setUrl(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(params){\r\n\t\t\t\tthis.setParams(params, true);\r\n\t\t\t}\r\n\r\n\t\t\tif(config){\r\n\t\t\t\tthis.setConfig(config);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.sendRequest();\r\n\t\t}else{\r\n\t\t\treturn previousData;\r\n\t\t}\r\n\t}\r\n\r\n\t//set ajax params\r\n\tsetParams(params, update){\r\n\t\tif(update){\r\n\t\t\tthis.params = this.params || {};\r\n\r\n\t\t\tfor(let key in params){\r\n\t\t\t\tthis.params[key] = params[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.params = params;\r\n\t\t}\r\n\t}\r\n\r\n\tgetParams(){\r\n\t\treturn this.params || {};\r\n\t}\r\n\r\n\t//load config object\r\n\tsetConfig(config){\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(typeof config == \"string\"){\r\n\t\t\tthis.config.method = config;\r\n\t\t}else{\r\n\t\t\tfor(let key in config){\r\n\t\t\t\tthis.config[key] = config[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create config object from default\r\n\t_loadDefaultConfig(force){\r\n\t\tif(!this.config || force){\r\n\r\n\t\t\tthis.config = {};\r\n\r\n\t\t\t//load base config from defaults\r\n\t\t\tfor(let key in Ajax.defaultConfig){\r\n\t\t\t\tthis.config[key] = Ajax.defaultConfig[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set request url\r\n\tsetUrl(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\t//get request url\r\n\tgetUrl(){\r\n\t\treturn this.url;\r\n\t}\r\n\r\n\t//send ajax request\r\n\tsendRequest(silent){\r\n\t\tvar url = this.url,\r\n\t\tesc, query;\r\n\r\n\t\tthis._loadDefaultConfig();\r\n\r\n\t\tif(this.table.options.ajaxRequesting.call(this.table, this.url, this.params) !== false){\r\n\t\t\treturn this.loaderPromise(url, this.config, this.params)\r\n\t\t\t.then((data)=>{\r\n\t\t\t\tif(this.table.options.ajaxResponse){\r\n\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, this.url, this.params, data);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAjax.moduleName = \"ajax\";\r\n\r\n//load defaults\r\nAjax.defaultConfig = defaultConfig;\r\nAjax.defaultURLGenerator = defaultURLGenerator;\r\nAjax.defaultLoaderPromise = defaultLoaderPromise;\r\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\r\n\r\nexport default Ajax;","export default {\r\n\tmethod: \"GET\",\r\n};","export default function(url, config, params){\r\n\tvar contentType;\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t//set url\r\n\t\turl = this.urlGenerator.call(this.table, url, config, params);\r\n\r\n\t\t//set body content if not GET request\r\n\t\tif(config.method.toUpperCase() != \"GET\"){\r\n\t\t\tcontentType = typeof this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType];\r\n\t\t\tif(contentType){\r\n\r\n\t\t\t\tfor(var key in contentType.headers){\r\n\t\t\t\t\tif(!config.headers){\r\n\t\t\t\t\t\tconfig.headers = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof config.headers[key] === \"undefined\"){\r\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfig.body = contentType.body.call(this, url, config, params);\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(url){\r\n\t\t\t//configure headers\r\n\t\t\tif(typeof config.headers === \"undefined\"){\r\n\t\t\t\tconfig.headers = {};\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers.Accept === \"undefined\"){\r\n\t\t\t\tconfig.headers.Accept = \"application/json\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.headers[\"X-Requested-With\"] === \"undefined\"){\r\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof config.mode === \"undefined\"){\r\n\t\t\t\tconfig.mode = \"cors\";\r\n\t\t\t}\r\n\r\n\t\t\tif(config.mode == \"cors\"){\r\n\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\r\n\t\t\t\t\tconfig.headers[\"Origin\"] = window.location.origin;\r\n\t\t\t\t}\r\n \r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'same-origin';\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof config.credentials === \"undefined\"){\r\n\t\t\t\t\tconfig.credentials = 'include';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//send request\r\n\t\t\tfetch(url, config)\r\n\t\t\t.then((response)=>{\r\n\t\t\t\tif(response.ok) {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t.then((data)=>{\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t}).catch((error)=>{\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\r\n\t\t\t\t\treject(response);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error)=>{\r\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\r\n\t\t\t\treject(error);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\r\n\t\t\tresolve([]);\r\n\t\t}\r\n\t});\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultPasteActions from './defaults/pasteActions.js';\r\nimport defaultPasteParsers from './defaults/pasteParsers.js';\r\n\r\nclass Clipboard extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = true;\r\n\t\tthis.pasteParser = function(){};\r\n\t\tthis.pasteAction = function(){};\r\n\t\tthis.customSelection = false;\r\n\t\tthis.rowRange = false;\r\n\t\tthis.blocked = true; //block copy actions not originating from this command\r\n\r\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\r\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\r\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\r\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRICATED - REMOVE in 5.0\r\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\r\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\r\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\r\n\r\n\t\tthis.registerColumnOption(\"clipboard\");\r\n\t\tthis.registerColumnOption(\"titleClipboard\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.mode = this.table.options.clipboard;\r\n\r\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\r\n\r\n\t\tif(this.mode === true || this.mode === \"copy\"){\r\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\r\n\t\t\t\tvar plain, html, list;\r\n\r\n\t\t\t\tif(!this.blocked){\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(this.customSelection){\r\n\t\t\t\t\t\tplain = this.customSelection;\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tvar list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\r\n\r\n\t\t\t\t\t\thtml = this.table.modules.export.genereateHTMLTable(list);\r\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\r\n\r\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\r\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\r\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\r\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\r\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\r\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\r\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\r\n\t\t\t\t\t\tif(html){\r\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.mode === true || this.mode === \"paste\"){\r\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\r\n\t\t\t\tthis.paste(e);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\r\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\r\n\r\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\r\n\t}\r\n\r\n\treset(){\r\n\t\tthis.blocked = true;\r\n\t\tthis.customSelection = false;\r\n\t}\r\n\r\n\tgeneratePlainContent (list) {\r\n\t\tvar output = [];\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tvar value = \"\";\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tif(row.type === \"group\"){\r\n\t\t\t\t\t\tcol.value = col.component.getKey();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(col.value === null){\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tvalue = col.value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput.push(rowData.join(\"\\t\"));\r\n\t\t});\r\n\r\n\t\treturn output.join(\"\\n\");\r\n\t}\r\n\r\n\tcopy (range, internal) {\r\n\t\tvar range, sel, textRange;\r\n\t\tthis.blocked = false;\r\n\t\tthis.customSelection = false;\r\n\r\n\t\tif (this.mode === true || this.mode === \"copy\") {\r\n\r\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\r\n\r\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\r\n\t\t\t\trange = document.createRange();\r\n\t\t\t\trange.selectNodeContents(this.table.element);\r\n\t\t\t\tsel = window.getSelection();\r\n\r\n\t\t\t\tif (sel.toString() && internal) {\r\n\t\t\t\t\tthis.customSelection = sel.toString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t\tsel.addRange(range);\r\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\r\n\t\t\t\ttextRange = document.body.createTextRange();\r\n\t\t\t\ttextRange.moveToElementText(this.table.element);\r\n\t\t\t\ttextRange.select();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.execCommand('copy');\r\n\r\n\t\t\tif (sel) {\r\n\t\t\t\tsel.removeAllRanges();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//PASTE EVENT HANDLING\r\n\tsetPasteAction(action){\r\n\r\n\t\tswitch(typeof action){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\r\n\r\n\t\t\tif(!this.pasteAction){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteAction = action;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPasteParser(parser){\r\n\t\tswitch(typeof parser){\r\n\t\t\tcase \"string\":\r\n\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\r\n\r\n\t\t\tif(!this.pasteParser){\r\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tthis.pasteParser = parser;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tpaste(e){\r\n\t\tvar data, rowData, rows;\r\n\r\n\t\tif(this.checkPaseOrigin(e)){\r\n\r\n\t\t\tdata = this.getPasteData(e);\r\n\r\n\t\t\trowData = this.pasteParser.call(this, data);\r\n\r\n\t\t\tif(rowData){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\t\t\trowData = this.mutateData(rowData);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trows = this.pasteAction.call(this, rowData);\r\n\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\r\n\t\t\t}else{\r\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmutateData(data){\r\n\t\tvar output = [];\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\toutput = data;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\r\n\tcheckPaseOrigin(e){\r\n\t\tvar valid = true;\r\n\r\n\t\tif(e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell){\r\n\t\t\tvalid = false;\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetPasteData(e){\r\n\t\tvar data;\r\n\r\n\t\tif (window.clipboardData && window.clipboardData.getData) {\r\n\t\t\tdata = window.clipboardData.getData('Text');\r\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\r\n\t\t\tdata = e.clipboardData.getData('text/plain');\r\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\r\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nClipboard.moduleName = \"clipboard\";\r\n\r\n//load defaults\r\nClipboard.pasteActions = defaultPasteActions;\r\nClipboard.pasteParsers = defaultPasteParsers;\r\n\r\nexport default Clipboard;","export default {\r\n\treplace:function(rows){\r\n\t\treturn this.table.setData(rows);\r\n\t},\r\n\tupdate:function(rows){\r\n\t\treturn this.table.updateOrAddData(rows);\r\n\t},\r\n\tinsert:function(rows){\r\n\t\treturn this.table.addData(rows);\r\n\t},\r\n};","export default {\r\n\ttable:function(clipboard){\r\n\t\tvar data = [],\r\n\t\tsuccess = false,\r\n\t\theaderFindSuccess = true,\r\n\t\tcolumns = this.table.columnManager.columns,\r\n\t\tcolumnMap = [],\r\n\t\trows = [];\r\n\r\n\t\t//get data from clipboard into array of columns and rows.\r\n\t\tclipboard = clipboard.split(\"\\n\");\r\n\r\n\t\tclipboard.forEach(function(row){\r\n\t\t\tdata.push(row.split(\"\\t\"));\r\n\t\t});\r\n\r\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\r\n\t\t\tsuccess = true;\r\n\r\n\t\t\t//check if headers are present by title\r\n\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t//check if column headers are present by field\r\n\t\t\tif(!headerFindSuccess){\r\n\t\t\t\theaderFindSuccess = true;\r\n\t\t\t\tcolumnMap = [];\r\n\r\n\t\t\t\tdata[0].forEach(function(value){\r\n\t\t\t\t\tvar column = columns.find(function(column){\r\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tcolumnMap.push(column);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\theaderFindSuccess = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!headerFindSuccess){\r\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//remove header row if found\r\n\t\t\tif(headerFindSuccess){\r\n\t\t\t\tdata.shift();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach(function(item){\r\n\t\t\t\tvar row = {};\r\n\r\n\t\t\t\titem.forEach(function(value, i){\r\n\t\t\t\t\tif(columnMap[i]){\r\n\t\t\t\t\t\trow[columnMap[i].field] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\trows.push(row);\r\n\t\t\t});\r\n\r\n\t\t\treturn rows;\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n};","class CalcComponent{\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n}\r\n\r\nexport default CalcComponent;","//public cell object\r\nexport default class CellComponent {\r\n\r\n\tconstructor (cell){\r\n\t\tthis._cell = cell;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this._cell.getValue();\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this._cell.getOldValue();\r\n\t}\r\n\r\n\tgetInitialValue(){\r\n\t\treturn this._cell.initialValue;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._cell.getElement();\r\n\t}\r\n\r\n\tgetRow(){\r\n\t\treturn this._cell.row.getComponent();\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn this._cell.row.getData();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._cell.column.getField();\r\n\t}\r\n\r\n\tgetColumn(){\r\n\t\treturn this._cell.column.getComponent();\r\n\t}\r\n\r\n\tsetValue(value, mutate){\r\n\t\tif(typeof mutate == \"undefined\"){\r\n\t\t\tmutate = true;\r\n\t\t}\r\n\r\n\t\tthis._cell.setValue(value, mutate);\r\n\t}\r\n\r\n\trestoreOldValue(){\r\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\r\n\t}\r\n\r\n\trestoreInitialValue(){\r\n\t\tthis._cell.setValueActual(this._cell.initialValue);\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\tthis._cell.checkHeight();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._cell.table;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._cell;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport CellComponent from './CellComponent.js';\r\n\r\nexport default class Cell extends CoreFeature{\r\n\tconstructor(column, row){\r\n\t\tsuper(column.table);\r\n\r\n\t\tthis.table = column.table;\r\n\t\tthis.column = column;\r\n\t\tthis.row = row;\r\n\t\tthis.element = null;\r\n\t\tthis.value = null;\r\n\t\tthis.initialValue;\r\n\t\tthis.oldValue = null;\r\n\t\tthis.modules = {};\r\n\r\n\t\tthis.height = null;\r\n\t\tthis.width = null;\r\n\t\tthis.minWidth = null;\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\t//generate element\r\n\tbuild(){\r\n\t\tthis.generateElement();\r\n\r\n\t\tthis.setWidth();\r\n\r\n\t\tthis._configureCell();\r\n\r\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\r\n\r\n\t\tthis.initialValue = this.value;\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.element = document.createElement('div');\r\n\t\tthis.element.className = \"tabulator-cell\";\r\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\r\n\t\tthis.element = this.element;\r\n\t}\r\n\r\n\t_configureCell(){\r\n\t\tvar element = this.element,\r\n\t\tfield = this.column.getField(),\r\n\t\tvertAligns = {\r\n\t\t\ttop:\"flex-start\",\r\n\t\t\tbottom:\"flex-end\",\r\n\t\t\tmiddle:\"center\",\r\n\t\t},\r\n\t\thozAligns = {\r\n\t\t\tleft:\"flex-start\",\r\n\t\t\tright:\"flex-end\",\r\n\t\t\tcenter:\"center\",\r\n\t\t};\r\n\r\n\t\t//set text alignment\r\n\t\telement.style.textAlign = this.column.hozAlign;\r\n\r\n\t\tif(this.column.vertAlign){\r\n\t\t\telement.style.display = \"inline-flex\";\r\n\r\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\r\n\r\n\t\t\tif(this.column.hozAlign){\r\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\t\t\telement.setAttribute(\"tabulator-field\", field);\r\n\t\t}\r\n\r\n\t\t//add class to cell if needed\r\n\t\tif(this.column.definition.cssClass){\r\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \")\r\n\t\t\tclassNames.forEach((className) => {\r\n\t\t\t\telement.classList.add(className)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//update tooltip on mouse enter\r\n\t\tif (this.table.options.tooltipGenerationMode === \"hover\"){\r\n\t\t\telement.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\t\tthis._generateTooltip();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"cell-init\", this);\r\n\r\n\t\t//hide cell if not visible\r\n\t\tif(!this.column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//generate cell contents\r\n\t_generateContents(){\r\n\t\tvar val;\r\n\r\n\t\tval = this.chain(\"cell-format\", this, null, () => {\r\n\t\t\treturn this.element.innerHTML = this.value;\r\n\t\t});\r\n\r\n\t\tswitch(typeof val){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(val instanceof Node){\r\n\r\n\t\t\t\t//clear previous cell contents\r\n\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\t\tthis.element.appendChild(val);\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.innerHTML = \"\";\r\n\r\n\t\t\t\tif(val != null){\r\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tthis.element.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tthis.element.innerHTML = val;\r\n\t\t}\r\n\t}\r\n\r\n\tcellRendered(){\r\n\t\tthis.dispatch(\"cell-rendered\", this);\r\n\t}\r\n\r\n\t//generate tooltip text\r\n\t_generateTooltip(){\r\n\t\tvar tooltip = this.column.tooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\ttooltip = this.value;\r\n\t\t\t}else if(typeof(tooltip) == \"function\"){\r\n\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof tooltip === \"undefined\"){\r\n\t\t\t\ttooltip = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////// Getters ////////////////////\r\n\tgetElement(containerOnly){\r\n\t\tif(!this.loaded){\r\n\t\t\tthis.loaded = true;\r\n\t\t\tif(!containerOnly){\r\n\t\t\t\tthis.layoutElement();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetValue(){\r\n\t\treturn this.value;\r\n\t}\r\n\r\n\tgetOldValue(){\r\n\t\treturn this.oldValue;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tsetValue(value, mutate){\r\n\t\tvar changed = this.setValueProcessData(value, mutate);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\r\n\r\n\t\t\tthis.cellRendered();\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetValueProcessData(value, mutate){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.value != value){\r\n\r\n\t\t\tchanged = true;\r\n\r\n\t\t\tif(mutate){\r\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setValueActual(value);\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\tsetValueActual(value){\r\n\t\tthis.oldValue = this.value;\r\n\r\n\t\tthis.value = value;\r\n\r\n\t\tthis.dispatch(\"cell-value-save-before\", this);\r\n\r\n\t\tthis.column.setFieldValue(this.row.data, value);\r\n\r\n\t\tthis.dispatch(\"cell-value-save-after\", this);\r\n\r\n\t\tif(this.loaded){\r\n\t\t\tthis.layoutElement();\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutElement(){\r\n\t\tthis._generateContents();\r\n\t\tthis._generateTooltip();\r\n\r\n\t\tthis.dispatch(\"cell-layout\", this);\r\n\t}\r\n\r\n\tsetWidth(){\r\n\t\tthis.width = this.column.width;\r\n\t\tthis.element.style.width = this.column.widthStyled;\r\n\t}\r\n\r\n\tclearWidth(){\r\n\t\tthis.width = \"\";\r\n\t\tthis.element.style.width = \"\";\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this.width || this.element.offsetWidth;\r\n\t}\r\n\r\n\tsetMinWidth(){\r\n\t\tthis.minWidth = this.column.minWidth;\r\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\r\n\t}\r\n\r\n\tsetMaxWidth(){\r\n\t\tthis.maxWidth = this.column.maxWidth;\r\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\r\n\t}\r\n\r\n\tcheckHeight(){\r\n\t\t// var height = this.element.css(\"height\");\r\n\t\tthis.row.reinitializeHeight();\r\n\t}\r\n\r\n\tclearHeight(){\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.height = null;\r\n\t}\r\n\r\n\tsetHeight(){\r\n\t\tthis.height = this.row.height;\r\n\t\tthis.element.style.height = this.row.heightStyled;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.height || this.element.offsetHeight;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.element.style.display = \"none\";\r\n\t}\r\n\r\n\tdelete(){\r\n\t\tthis.dispatch(\"cell-delete\", this);\r\n\r\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.column.deleteCell(this);\r\n\t\tthis.row.deleteCell(this);\r\n\t\tthis.calcs = {};\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this.row.getCellIndex(this);\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new CellComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","//public column object\r\nexport default class ColumnComponent {\r\n\tconstructor (column){\r\n\t\tthis._column = column;\r\n\t\tthis.type = \"ColumnComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._column.getElement();\r\n\t}\r\n\r\n\tgetDefinition(){\r\n\t\treturn this._column.getDefinition();\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._column.getField();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._column.cells.forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._column.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.show();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tif(this._column.isGroup){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis._column.hide();\r\n\t\t}\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tif(this._column.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._column.delete();\r\n\t}\r\n\r\n\tgetSubColumns(){\r\n\t\tvar output = [];\r\n\r\n\t\tif(this._column.columns.length){\r\n\t\t\tthis._column.columns.forEach(function(column){\r\n\t\t\t\toutput.push(column.getComponent());\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetParentColumn(){\r\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._column;\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column);\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._column.table;\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\r\n\r\n\t\tif(toColumn){\r\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t}\r\n\t}\r\n\r\n\tgetNextColumn(){\r\n\t\tvar nextCol = this._column.nextColumn();\r\n\r\n\t\treturn nextCol ? nextCol.getComponent() : false;\r\n\t}\r\n\r\n\tgetPrevColumn(){\r\n\t\tvar prevCol = this._column.prevColumn();\r\n\r\n\t\treturn prevCol ? prevCol.getComponent() : false;\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\treturn this._column.updateDefinition(updates);\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\treturn this._column.getWidth();\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tvar result;\r\n\r\n\t\tif(width === true){\r\n\t\t\tresult = this._column.reinitializeWidth(true);\r\n\t\t}else{\r\n\t\t\tresult = this._column.setWidth(width);\r\n\t\t}\r\n\r\n\t\tthis._column.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\treturn result;\r\n\t}\r\n}","export default {\r\n\t\"title\": undefined,\r\n\t\"field\": undefined,\r\n\t\"columns\": undefined,\r\n\t\"visible\": undefined,\r\n\t\"hozAlign\": undefined,\r\n\t\"vertAlign\": undefined,\r\n\t\"width\": undefined,\r\n\t\"minWidth\": 40,\r\n\t\"maxWidth\": undefined,\r\n\t\"tooltip\": undefined,\r\n\t\"cssClass\": undefined,\r\n\t\"variableHeight\": undefined,\r\n\t\"headerTooltip\": undefined,\r\n\t\"headerVertical\": undefined,\r\n\t\"headerHozAlign\": undefined,\r\n\t\"editableTitle\": undefined,\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport ColumnComponent from './ColumnComponent.js';\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport Cell from '../cell/Cell.js';\r\n\r\nclass Column extends CoreFeature{\r\n\r\n\tconstructor(def, parent){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.definition = def; //column definition\r\n\t\tthis.parent = parent; //hold parent object\r\n\t\tthis.type = \"column\"; //type of element\r\n\t\tthis.columns = []; //child columns\r\n\t\tthis.cells = []; //cells bound to this column\r\n\t\tthis.element = this.createElement(); //column header element\r\n\t\tthis.contentElement = false;\r\n\t\tthis.titleHolderElement = false;\r\n\t\tthis.titleElement = false;\r\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\r\n\t\tthis.isGroup = false;\r\n\t\tthis.tooltip = false; //hold column tooltip\r\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\r\n\t\tthis.vertAlign = \"\"; //vert text alignment\r\n\r\n\t\t//multi dimensional filed handling\r\n\t\tthis.field =\"\";\r\n\t\tthis.fieldStructure = \"\";\r\n\t\tthis.getFieldValue = \"\";\r\n\t\tthis.setFieldValue = \"\";\r\n\r\n\t\tthis.titleFormatterRendered = false;\r\n\r\n\t\tthis.mapDefinitions();\r\n\r\n\t\tthis.setField(this.definition.field);\r\n\r\n\t\tthis.modules = {}; //hold module variables;\r\n\r\n\t\tthis.width = null; //column width\r\n\t\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\r\n\t\tthis.maxWidth = null; //column maximum width\r\n\t\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\r\n\t\tthis.minWidth = null; //column minimum width\r\n\t\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\r\n\t\tthis.widthFixed = false; //user has specified a width for this column\r\n\r\n\t\tthis.visible = true; //default visible state\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\t//initialize column\r\n\t\tif(this.definition.columns){\r\n\r\n\t\t\tthis.isGroup = true;\r\n\r\n\t\t\tthis.definition.columns.forEach((def, i) => {\r\n\t\t\t\tvar newCol = new Column(def, this);\r\n\t\t\t\tthis.attachColumn(newCol);\r\n\t\t\t});\r\n\r\n\t\t\tthis.checkColumnVisibility();\r\n\t\t}else{\r\n\t\t\tparent.registerColumnField(this);\r\n\t\t}\r\n\r\n\t\tthis._initialize();\r\n\r\n\t\tthis.bindModuleColumns();\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.setAttribute(\"role\", \"columnheader\");\r\n\t\tel.setAttribute(\"aria-sort\", \"none\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateGroupElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col-group-cols\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tmapDefinitions(){\r\n\t\tvar defaults = this.table.options.columnDefaults;\r\n\r\n\t\t//map columnDefaults onto column definitions\r\n\t\tif(defaults){\r\n\t\t\tfor(let key in defaults){\r\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\r\n\t\t\t\t\tthis.definition[key] = defaults[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition)\r\n\t}\r\n\r\n\tcheckDefinition(){\r\n\t\tObject.keys(this.definition).forEach((key) => {\r\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\r\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetField(field){\r\n\t\tthis.field = field;\r\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\r\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\r\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnPosition(column){\r\n\t\tthis.parent.registerColumnPosition(column);\r\n\t}\r\n\r\n\t//register column position with column manager\r\n\tregisterColumnField(column){\r\n\t\tthis.parent.registerColumnField(column);\r\n\t}\r\n\r\n\t//trigger position registration\r\n\treRegisterPosition(){\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolumn.reRegisterPosition();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.registerColumnPosition(this);\r\n\t\t}\r\n\t}\r\n\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\tsetTooltip(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\t//set header tooltips\r\n\t\tvar tooltip = typeof def.headerTooltip === \"undefined\" ? def.tooltip : def.headerTooltip;\r\n\r\n\t\tif(tooltip){\r\n\t\t\tif(tooltip === true){\r\n\t\t\t\tif(def.field){\r\n\t\t\t\t\tthis.langBind(\"columns|\" + def.field, (value) => {\r\n\t\t\t\t\t\tthis.element.setAttribute(\"title\", value || def.title);\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.element.setAttribute(\"title\", def.title);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(typeof(tooltip) == \"function\"){\r\n\t\t\t\t\ttooltip = tooltip(this.getComponent());\r\n\r\n\t\t\t\t\tif(tooltip === false){\r\n\t\t\t\t\t\ttooltip = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.element.setAttribute(\"title\", tooltip);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.element.setAttribute(\"title\", \"\");\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element\r\n\t_initialize(){\r\n\t\tvar def = this.definition;\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(def.headerVertical){\r\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\r\n\r\n\t\t\tif(def.headerVertical === \"flip\"){\r\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.contentElement = this._bindEvents();\r\n\r\n\t\tthis.contentElement = this._buildColumnHeaderContent();\r\n\r\n\t\tthis.element.appendChild(this.contentElement);\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis._buildGroupHeader();\r\n\t\t}else{\r\n\t\t\tthis._buildColumnHeader();\r\n\t\t}\r\n\r\n\t\tthis.setTooltip();\r\n\r\n\t\tthis.dispatch(\"column-init\", this);\r\n\r\n\t\t//update header tooltip on mouse enter\r\n\t\tthis.element.addEventListener(\"mouseenter\", (e) => {\r\n\t\t\tthis.setTooltip();\r\n\t\t});\r\n\t}\r\n\r\n\t_bindEvents(){\r\n\t\tvar def = this.definition,\r\n\t\tdblTap,\ttapHold, tap;\r\n\r\n\t\t//setup header click event bindings\r\n\t\tif(typeof(def.headerClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"click\", (e) => {def.headerClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblClick) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"dblclick\", (e) => {def.headerDblClick(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerContext) == \"function\"){\r\n\t\t\tthis.element.addEventListener(\"contextmenu\", (e) => {def.headerContext(e, this.getComponent());});\r\n\t\t}\r\n\r\n\t\t//setup header tap event bindings\r\n\t\tif(typeof(def.headerTap) == \"function\"){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tdef.headerTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerDblTap) == \"function\"){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tdef.headerDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(typeof(def.headerTapHold) == \"function\"){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(function(){\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tdef.headerTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for header\r\n\t_buildColumnHeader(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tthis.dispatch(\"column-layout\", this);\r\n\r\n\t\t//set column visibility\r\n\t\tif(typeof def.visible != \"undefined\"){\r\n\t\t\tif(def.visible){\r\n\t\t\t\tthis.show(true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.hide(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(def.cssClass){\r\n\t\t\tvar classeNames = def.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(def.field){\r\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\r\n\t\t}\r\n\r\n\t\t//set min width if present\r\n\t\tthis.setMinWidth(parseInt(def.minWidth));\r\n\r\n\t\tif(def.maxWidth){\r\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\r\n\t\t}\r\n\r\n\t\tthis.reinitializeWidth();\r\n\r\n\t\t//set tooltip if present\r\n\t\tthis.tooltip = this.definition.tooltip;\r\n\r\n\t\t//set orizontal text alignment\r\n\t\tthis.hozAlign = this.definition.hozAlign;\r\n\t\tthis.vertAlign = this.definition.vertAlign;\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\t}\r\n\r\n\t_buildColumnHeaderContent(){\r\n\t\tvar def = this.definition,\r\n\t\ttable = this.table;\r\n\r\n\t\tvar contentElement = document.createElement(\"div\");\r\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\r\n\r\n\t\tthis.titleHolderElement = document.createElement(\"div\");\r\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\r\n\r\n\t\tcontentElement.appendChild(this.titleHolderElement);\r\n\r\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\r\n\r\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\r\n\r\n\t\treturn contentElement;\r\n\t}\r\n\r\n\t//build title element of column\r\n\t_buildColumnHeaderTitle(){\r\n\t\tvar def = this.definition,\r\n\t\ttitle;\r\n\r\n\t\tvar titleHolderElement = document.createElement(\"div\");\r\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\r\n\r\n\t\tif(def.editableTitle){\r\n\t\t\tvar titleElement = document.createElement(\"input\");\r\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\r\n\r\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\ttitleElement.focus();\r\n\t\t\t});\r\n\r\n\t\t\ttitleElement.addEventListener(\"change\", () => {\r\n\t\t\t\tdef.title = titleElement.value;\r\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\ttitleHolderElement.appendChild(titleElement);\r\n\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\ttitleElement.value = def.title || \" \";\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(def.field){\r\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\r\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn titleHolderElement;\r\n\t}\r\n\r\n\t_formatColumnHeaderTitle(el, title){\r\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\r\n\t\t\treturn title;\r\n\t\t});\r\n\r\n\t\tswitch(typeof contents){\r\n\t\t\tcase \"object\":\r\n\t\t\tif(contents instanceof Node){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}else{\r\n\t\t\t\tel.innerHTML = \"\";\r\n\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"undefined\":\r\n\t\t\tcase \"null\":\r\n\t\t\tel.innerHTML = \"\";\r\n\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tel.innerHTML = contents;\r\n\t\t}\r\n\t}\r\n\r\n\t//build header element for column group\r\n\t_buildGroupHeader(){\r\n\t\tthis.element.classList.add(\"tabulator-col-group\");\r\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\r\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\r\n\r\n\t\t//asign additional css classes to column header\r\n\t\tif(this.definition.cssClass){\r\n\t\t\tvar classeNames = this.definition.cssClass.split(\" \");\r\n\t\t\tclasseNames.forEach((className) => {\r\n\t\t\t\tthis.element.classList.add(className);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\r\n\r\n\t\tthis.element.appendChild(this.groupElement);\r\n\t}\r\n\r\n\t//flat field lookup\r\n\t_getFlatData(data){\r\n\t\treturn data[this.field];\r\n\t}\r\n\r\n\t//nested field lookup\r\n\t_getNestedData(data){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length,\r\n\t\toutput;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tdataObj = dataObj[structure[i]];\r\n\r\n\t\t\toutput = dataObj;\r\n\r\n\t\t\tif(!dataObj){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//flat field set\r\n\t_setFlatData(data, value){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//nested field set\r\n\t_setNestedData(data, value){\r\n\t\tvar dataObj = data,\r\n\t\tstructure = this.fieldStructure,\r\n\t\tlength = structure.length;\r\n\r\n\t\tfor(let i = 0; i < length; i++){\r\n\r\n\t\t\tif(i == length -1){\r\n\t\t\t\tdataObj[structure[i]] = value;\r\n\t\t\t}else{\r\n\t\t\t\tif(!dataObj[structure[i]]){\r\n\t\t\t\t\tif(typeof value !== \"undefined\"){\r\n\t\t\t\t\t\tdataObj[structure[i]] = {};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataObj = dataObj[structure[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//attach column to this group\r\n\tattachColumn(column){\r\n\t\tif(this.groupElement){\r\n\t\t\tthis.columns.push(column);\r\n\t\t\tthis.groupElement.appendChild(column.getElement());\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\r\n\t\t}\r\n\t}\r\n\r\n\t//vertically align header in column\r\n\tverticalAlign(alignment, height){\r\n\r\n\t\t//calculate height of column header and group holder element\r\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\r\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\r\n\r\n\t\tthis.element.style.height = parentHeight + \"px\";\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t}\r\n\r\n\t\t//vertically align cell contents\r\n\t\tif(!this.isGroup && alignment !== \"top\"){\r\n\t\t\tif(alignment === \"bottom\"){\r\n\t\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.verticalAlign(alignment);\r\n\t\t});\r\n\t}\r\n\r\n\t//clear vertical alignmenet\r\n\tclearVerticalAlign(){\r\n\t\tthis.element.style.paddingTop = \"\";\r\n\t\tthis.element.style.height = \"\";\r\n\t\tthis.element.style.minHeight = \"\";\r\n\t\tthis.groupElement.style.minHeight = \"\";\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\t\t});\r\n\t}\r\n\r\n\tbindModuleColumns (){\r\n\t\t//check if rownum formatter is being used on a column\r\n\t\tif(this.definition.formatter == \"rownum\"){\r\n\t\t\tthis.table.rowManager.rowNumColumn = this;\r\n\t\t}\r\n\t}\r\n\r\n\t//// Retreive Column Information ////\r\n\t//return column header element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return colunm group element\r\n\tgetGroupElement(){\r\n\t\treturn this.groupElement;\r\n\t}\r\n\r\n\t//return field name\r\n\tgetField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\t//return the first column in a group\r\n\tgetFirstColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[0].getFirstColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return the last column in a group\r\n\tgetLastColumn(){\r\n\t\tif(!this.isGroup){\r\n\t\t\treturn this;\r\n\t\t}else{\r\n\t\t\tif(this.columns.length){\r\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\t//return all columns in a group\r\n\tgetCells(){\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\t//retreive the top column in a group of columns\r\n\tgetTopColumn(){\r\n\t\tif(this.parent.isGroup){\r\n\t\t\treturn this.parent.getTopColumn();\r\n\t\t}else{\r\n\t\t\treturn this;\r\n\t\t}\r\n\t}\r\n\r\n\t//return column definition object\r\n\tgetDefinition(updateBranches){\r\n\t\tvar colDefs = [];\r\n\r\n\t\tif(this.isGroup && updateBranches){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tcolDefs.push(column.getDefinition(true));\r\n\t\t\t});\r\n\r\n\t\t\tthis.definition.columns = colDefs;\r\n\t\t}\r\n\r\n\t\treturn this.definition;\r\n\t}\r\n\r\n\t//////////////////// Actions ////////////////////\r\n\tcheckColumnVisibility(){\r\n\t\tvar visible = false;\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(visible){\r\n\t\t\tthis.show();\r\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t}else{\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t//show column\r\n\tshow(silent, responsiveToggle){\r\n\t\tif(!this.visible){\r\n\t\t\tthis.visible = true;\r\n\r\n\t\t\tthis.element.style.display = \"\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.show();\r\n\t\t\t});\r\n\r\n\t\t\tif(!this.isGroup && this.width === null){\r\n\t\t\t\tthis.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//hide column\r\n\thide(silent, responsiveToggle){\r\n\t\tif(this.visible){\r\n\t\t\tthis.visible = false;\r\n\r\n\t\t\tthis.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.columnManager._verticalAlignHeaders();\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.checkColumnVisibility();\r\n\t\t\t}\r\n\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.hide();\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatch(\"column-hide\", this);\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.silent){\r\n\t\t\t\tthis.table.columnManager.renderer.rerenderColumns();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmatchChildWidths(){\r\n\t\tvar childWidth = 0;\r\n\r\n\t\tif(this.contentElement && this.columns.length){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\tchildWidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.matchChildWidths();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremoveChild(child){\r\n\t\tvar index = this.columns.indexOf(child);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.columns.length){\r\n\t\t\tthis.delete();\r\n\t\t}\r\n\t}\r\n\r\n\tsetWidth(width){\r\n\t\tthis.widthFixed = true;\r\n\t\tthis.setWidthActual(width);\r\n\t}\r\n\r\n\tsetWidthActual(width){\r\n\t\tif(isNaN(width)){\r\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\r\n\t\t}\r\n\r\n\t\twidth = Math.max(this.minWidth, width);\r\n\r\n\t\tif(this.maxWidth){\r\n\t\t\twidth = Math.min(this.maxWidth, width);\r\n\t\t}\r\n\r\n\t\tthis.width = width;\r\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.width = this.widthStyled;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tthis.cells.forEach(function(cell){\r\n\t\t\t\tcell.setWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.parent.isGroup){\r\n\t\t\tthis.parent.matchChildWidths();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width\", this);\r\n\t}\r\n\r\n\tcheckCellHeights(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tif(cell.row.heightInitialized){\r\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\r\n\t\t\t\t\trows.push(cell.row);\r\n\t\t\t\t\tcell.row.clearCellHeight();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcell.row.heightInitialized = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.calcHeight();\r\n\t\t});\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\trow.setCellHeight();\r\n\t\t});\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tif(this.isGroup){\r\n\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\tif(column.visible){\r\n\t\t\t\t\twidth += column.getWidth();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\twidth = this.width;\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.offsetHeight;\r\n\t}\r\n\r\n\tsetMinWidth(minWidth){\r\n\t\tthis.minWidth = minWidth;\r\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.minWidth = this.minWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMinWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tsetMaxWidth(maxWidth){\r\n\t\tthis.maxWidth = maxWidth;\r\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\r\n\r\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setMaxWidth();\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar index;\r\n\r\n\t\t\tif(this.isGroup){\r\n\t\t\t\tthis.columns.forEach(function(column){\r\n\t\t\t\t\tcolumn.delete();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"column-delete\", this);\r\n\r\n\t\t\tvar cellCount = this.cells.length;\r\n\r\n\t\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\t\tthis.cells[0].delete();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.contentElement = false;\r\n\t\t\tthis.titleElement = false;\r\n\t\t\tthis.groupElement = false;\r\n\r\n\t\t\tif(this.parent.isGroup){\r\n\t\t\t\tthis.parent.removeChild(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.columnManager.deregisterColumn(this);\r\n\r\n\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tcolumnRendered(){\r\n\t\tif(this.titleFormatterRendered){\r\n\t\t\tthis.titleFormatterRendered();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\t//generate cell for this column\r\n\tgenerateCell(row){\r\n\t\tvar cell = new Cell(this, row);\r\n\r\n\t\tthis.cells.push(cell);\r\n\r\n\t\treturn cell;\r\n\t}\r\n\r\n\tnextColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\r\n\t}\r\n\r\n\t_nextVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\r\n\t}\r\n\r\n\tprevColumn(){\r\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\r\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\r\n\t}\r\n\r\n\t_prevVisibleColumn(index){\r\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\r\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\r\n\t}\r\n\r\n\treinitializeWidth(force){\r\n\t\tthis.widthFixed = false;\r\n\r\n\t\t//set width if present\r\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\r\n\t\t\tthis.setWidth(this.definition.width);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"column-width-fit-before\", this);\r\n\r\n\t\tthis.fitToData();\r\n\r\n\t\tthis.dispatch(\"column-width-fit-after\", this);\r\n\t}\r\n\r\n\t//set column width to maximum cell width for non group columns\r\n\tfitToData(){\r\n\t\tif(this.isGroup){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.widthFixed){\r\n\t\t\tthis.element.style.width = \"\";\r\n\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tcell.clearWidth();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar maxWidth = this.element.offsetWidth;\r\n\r\n\t\tif(!this.width || !this.widthFixed){\r\n\t\t\tthis.cells.forEach((cell) => {\r\n\t\t\t\tvar width = cell.getWidth();\r\n\r\n\t\t\t\tif(width > maxWidth){\r\n\t\t\t\t\tmaxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(maxWidth){\r\n\t\t\t\tthis.setWidthActual(maxWidth + 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateDefinition(updates){\r\n\t\tvar definition;\r\n\r\n\t\tif(!this.isGroup){\r\n\t\t\tif(!this.parent.isGroup){\r\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\r\n\t\t\t\tdefinition = Object.assign(definition, updates);\r\n\r\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\r\n\t\t\t\t.then((column) => {\r\n\r\n\t\t\t\t\tif(definition.field == this.field){\r\n\t\t\t\t\t\tthis.field = false; //cleair field name to prevent deletion of duplicate column from arrays\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.delete()\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\r\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\r\n\t\t}\r\n\t}\r\n\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new ColumnComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nColumn.defaultOptionList = defaultOptions;\r\n\r\nexport default Column;","//public row object\r\nexport default class RowComponent {\r\n\r\n\tconstructor (row){\r\n\t\tthis._row = row;\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\treturn this._row.getData(transform);\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._row.getElement();\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis._row.getCells().forEach(function(cell){\r\n\t\t\tcells.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar cell = this._row.getCell(column);\r\n\t\treturn cell ? cell.getComponent() : false;\r\n\t}\r\n\r\n\tgetIndex(){\r\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\r\n\t}\r\n\r\n\tgetPosition(active){\r\n\t\treturn this._row.table.rowManager.getRowPosition(this._row, active);\r\n\t}\r\n\r\n\tdelete(){\r\n\t\treturn this._row.delete();\r\n\t}\r\n\r\n\tscrollTo(){\r\n\t\treturn this._row.table.rowManager.scrollToRow(this._row);\r\n\t}\r\n\r\n\tmove(to, after){\r\n\t\tthis._row.moveToRow(to, after);\r\n\t}\r\n\r\n\tupdate(data){\r\n\t\treturn this._row.updateData(data);\r\n\t}\r\n\r\n\tnormalizeHeight(){\r\n\t\tthis._row.normalizeHeight(true);\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._row;\r\n\t}\r\n\r\n\treformat(){\r\n\t\treturn this._row.reinitialize();\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._row.table;\r\n\t}\r\n\r\n\tgetNextRow(){\r\n\t\tvar row = this._row.nextRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n\r\n\tgetPrevRow(){\r\n\t\tvar row = this._row.prevRow();\r\n\t\treturn row ? row.getComponent() : row;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport RowComponent from './RowComponent.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Row extends CoreFeature{\r\n\tconstructor (data, parent, type = \"row\"){\r\n\t\tsuper(parent.table);\r\n\r\n\t\tthis.parent = parent;\r\n\t\tthis.data = {};\r\n\t\tthis.type = type; //type of element\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {}; //hold module variables;\r\n\t\tthis.cells = [];\r\n\t\tthis.height = 0; //hold element height\r\n\t\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\r\n\t\tthis.manualHeight = false; //user has manually set row height\r\n\t\tthis.outerHeight = 0; //holde lements outer height\r\n\t\tthis.initialized = false; //element has been rendered\r\n\t\tthis.heightInitialized = false; //element has resized cells to fit\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.created = false;\r\n\r\n\t\tthis.setData(data);\r\n\t}\r\n\r\n\tcreate(){\r\n\t\tif(!this.created){\r\n\t\t\tthis.created = true;\r\n\t\t\tthis.generateElement();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.setAttribute(\"role\", \"row\");\r\n\r\n\t\tthis.element = el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\tthis.create();\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateElement(){\r\n\t\tthis.createElement();\r\n\t\tthis.dispatch(\"row-init\", this);\r\n\t}\r\n\r\n\tgenerateCells(){\r\n\t\tthis.cells = this.table.columnManager.generateCells(this);\r\n\t}\r\n\r\n\t//functions to setup on first render\r\n\tinitialize(force){\r\n\t\tthis.create();\r\n\r\n\t\tif(!this.initialized || force){\r\n\r\n\t\t\tthis.deleteCells();\r\n\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tthis.dispatch(\"row-layout-before\", this);\r\n\r\n\t\t\tthis.generateCells();\r\n\r\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this);\r\n\r\n\t\t\tif(force){\r\n\t\t\t\tthis.normalizeHeight();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-layout\", this);\r\n\r\n\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t}\r\n\r\n\t\t\tthis.initialized = true;\r\n\r\n\t\t\tthis.dispatch(\"row-layout-after\", this);\r\n\t\t}else{\r\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this);\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(children){\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\r\n\t\tif(!this.manualHeight){\r\n\t\t\tthis.height = 0;\r\n\t\t\tthis.heightStyled = \"\";\r\n\t\t}\r\n\r\n\t\tif(this.element && this.element.offsetParent !== null){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"row-relayout\", this);\r\n\t}\r\n\r\n\t//get heights when doing bulk row style calcs in virtual DOM\r\n\tcalcHeight(force){\r\n\r\n\t\tvar maxHeight = 0,\r\n\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\r\n\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tvar height = cell.getHeight();\r\n\t\t\tif(height > maxHeight){\r\n\t\t\t\tmaxHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.height = Math.max(maxHeight, minHeight);\r\n\t\t}else{\r\n\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\r\n\t\t}\r\n\r\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\r\n\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t}\r\n\r\n\t//set of cells\r\n\tsetCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.setHeight();\r\n\t\t});\r\n\r\n\t\tthis.heightInitialized = true;\r\n\t}\r\n\r\n\tclearCellHeight(){\r\n\t\tthis.cells.forEach(function(cell){\r\n\t\t\tcell.clearHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(force){\r\n\r\n\t\tif(force){\r\n\t\t\tthis.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis.calcHeight(force);\r\n\r\n\t\tthis.setCellHeight();\r\n\t}\r\n\r\n\t//set height of rows\r\n\tsetHeight(height, force){\r\n\t\tif(this.height != height || force){\r\n\r\n\t\t\tthis.manualHeight = true;\r\n\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\r\n\r\n\t\t\tthis.setCellHeight();\r\n\r\n\t\t\t// this.outerHeight = this.element.outerHeight();\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\t//return rows outer Width\r\n\tgetWidth(){\r\n\t\treturn this.element.offsetWidth;\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tdeleteCell(cell){\r\n\t\tvar index = this.cells.indexOf(cell);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.cells.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////// Data Management /////////////////\r\n\tsetData(data){\r\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\r\n\r\n\t\tthis.dispatch(\"row-data-init-after\", this);\r\n\t}\r\n\r\n\t//update the rows data\r\n\tupdateData(updatedData){\r\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\r\n\t\ttempData = {},\r\n\t\tnewRowData;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof updatedData === \"string\"){\r\n\t\t\t\tupdatedData = JSON.parse(updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\r\n\r\n\t\t\tif(this.subscribed(\"row-data-changing\")){\r\n\t\t\t\ttempData = Object.assign(tempData, this.data);\r\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\r\n\t\t\t}\r\n\r\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\r\n\r\n\t\t\t//set data\r\n\t\t\tfor (var attrname in newRowData) {\r\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\r\n\r\n\t\t\t//update affected cells only\r\n\t\t\tfor (var attrname in updatedData) {\r\n\r\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\r\n\r\n\t\t\t\tcolumns.forEach((column) => {\r\n\t\t\t\t\tlet cell = this.getCell(column.getField());\r\n\r\n\t\t\t\t\tif(cell){\r\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\r\n\t\t\t\t\t\tif(cell.getValue() != value){\r\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\r\n\r\n\t\t\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//Partial reinitialization if visible\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.normalizeHeight(true);\r\n\r\n\t\t\t\tif(this.table.options.rowFormatter){\r\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.initialized = false;\r\n\t\t\t\tthis.height = 0;\r\n\t\t\t\tthis.heightStyled = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\r\n\r\n\t\t\t//this.reinitialize();\r\n\r\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\tgetData(transform){\r\n\t\tif(transform){\r\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\r\n\t\t}\r\n\r\n\t\treturn this.data;\r\n\t}\r\n\r\n\tgetCell(column){\r\n\t\tvar match = false;\r\n\r\n\t\tcolumn = this.table.columnManager.findColumn(column);\r\n\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\tmatch = this.cells.find(function(cell){\r\n\t\t\treturn cell.column === column;\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetCellIndex(findCell){\r\n\t\treturn this.cells.findIndex(function(cell){\r\n\t\t\treturn cell === findCell;\r\n\t\t});\r\n\t}\r\n\r\n\tfindCell(subject){\r\n\t\treturn this.cells.find((cell) => {\r\n\t\t\treturn cell.element === subject;\r\n\t\t});\r\n\t}\r\n\r\n\tgetCells(){\r\n\t\tif(!this.initialized){\r\n\t\t\tthis.generateCells();\r\n\t\t}\r\n\r\n\t\treturn this.cells;\r\n\t}\r\n\r\n\tnextRow(){\r\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tprevRow(){\r\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\r\n\t\treturn row || false;\r\n\t}\r\n\r\n\tmoveToRow(to, before){\r\n\t\tvar toRow = this.table.rowManager.findRow(to);\r\n\r\n\t\tif(toRow){\r\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////// Actions /////////////////////\r\n\tdelete(){\r\n\t\tthis.dispatch(\"row-delete\", this);\r\n\r\n\t\tthis.deleteActual();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\tdeleteActual(blockRedraw){\r\n\t\tvar index = this.table.rowManager.getRowIndex(this);\r\n\r\n\t\tthis.detatchModules();\r\n\r\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\r\n\r\n\t\tthis.deleteCells();\r\n\r\n\t\tthis.initialized = false;\r\n\t\tthis.heightInitialized = false;\r\n\t\tthis.element = false;\r\n\r\n\t\tthis.dispatch(\"row-deleted\", this);\r\n\t}\r\n\r\n\tdetatchModules(){\r\n\t\tthis.dispatch(\"row-deleting\", this);\r\n\t}\r\n\r\n\tdeleteCells(){\r\n\t\tvar cellCount = this.cells.length;\r\n\r\n\t\tfor(let i = 0; i < cellCount; i++){\r\n\t\t\tthis.cells[0].delete();\r\n\t\t}\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.detatchModules();\r\n\t\tthis.deleteCells();\r\n\r\n\t\tif(this.element){\r\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\t\tif(this.element.parentNode){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.modules = {};\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this.modules.group || false;\r\n\t}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new RowComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}","export default {\r\n\t\"avg\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn Number(sum) + Number(value);\r\n\t\t\t});\r\n\r\n\t\t\toutput = output / values.length;\r\n\r\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\r\n\t\t}\r\n\r\n\t\treturn parseFloat(output).toString();\r\n\t},\r\n\t\"max\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value > output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"min\":function(values, data, calcParams){\r\n\t\tvar output = null,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tvalues.forEach(function(value){\r\n\r\n\t\t\tvalue = Number(value);\r\n\r\n\t\t\tif(value < output || output === null){\r\n\t\t\t\toutput = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output !== null ? (precision !== false ? output.toFixed(precision) : output) : \"\";\r\n\t},\r\n\t\"sum\":function(values, data, calcParams){\r\n\t\tvar output = 0,\r\n\t\tprecision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tvalue = Number(value);\r\n\r\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn precision !== false ? output.toFixed(precision) : output;\r\n\t},\r\n\t\"concat\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\toutput = values.reduce(function(sum, value){\r\n\t\t\t\treturn String(sum) + String(value);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\t\"count\":function(values, data, calcParams){\r\n\t\tvar output = 0;\r\n\r\n\t\tif(values.length){\r\n\t\t\tvalues.forEach(function(value){\r\n\t\t\t\tif(value){\r\n\t\t\t\t\toutput ++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport CalcComponent from './CalcComponent.js';\r\n\r\nimport Cell from '../../core/cell/Cell.js';\r\nimport Column from '../../core/column/Column.js';\r\nimport Row from '../../core/row/Row.js';\r\n\r\nimport defaultCalculations from './defaults/calculations.js';\r\n\r\nclass ColumnCalcs extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topCalcs = [];\r\n\t\tthis.botCalcs = [];\r\n\t\tthis.genColumn = false;\r\n\t\tthis.topElement = this.createElement();\r\n\t\tthis.botElement = this.createElement();\r\n\t\tthis.topRow = false;\r\n\t\tthis.botRow = false;\r\n\t\tthis.topInitialized = false;\r\n\t\tthis.botInitialized = false;\r\n\r\n\t\tthis.registerTableOption(\"columnCalcs\", true);\r\n\r\n\t\tthis.registerColumnOption(\"topCalc\");\r\n\t\tthis.registerColumnOption(\"topCalcParams\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalc\");\r\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\r\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-calcs-holder\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\r\n\r\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"data-refeshed\", this.recalcActiveRows.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\r\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\r\n\t\tif(force){\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tuserRecalc(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowsUpdated(row){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.recalcRowGroup(this);\r\n\t\t}else{\r\n\t\t\tthis.recalcActiveRows();\r\n\t\t}\r\n\t}\r\n\r\n\trecalcActiveRows(){\r\n\t\tthis.recalc(this.table.rowManager.activeRows);\r\n\t}\r\n\r\n\tcellValueChanged(cell){\r\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\r\n\t\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\r\n\t\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\r\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column calcs\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition\r\n\r\n\t\tvar config = {\r\n\t\t\ttopCalcParams:def.topCalcParams || {},\r\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\r\n\t\t};\r\n\r\n\t\tif(def.topCalc){\r\n\r\n\t\t\tswitch(typeof def.topCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\r\n\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.topCalc = def.topCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.topCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.topCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeTopRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(def.bottomCalc){\r\n\t\t\tswitch(typeof def.bottomCalc){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\r\n\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc]\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tconfig.botCalc = def.bottomCalc;\r\n\t\t\t\tbreak\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(config.botCalc){\r\n\t\t\t\tcolumn.modules.columnCalcs = config;\r\n\t\t\t\tthis.botCalcs.push(column);\r\n\r\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\r\n\t\t\t\t\tthis.initializeBottomRow();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//dummy functions to handle being mock column manager\r\n\tregisterColumnField(){};\r\n\r\n\tremoveCalcs(){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(this.topInitialized){\r\n\t\t\tthis.topInitialized = false;\r\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(this.botInitialized){\r\n\t\t\tthis.botInitialized = false;\r\n\t\t\tthis.table.footerManager.remove(this.botElement);\r\n\t\t\tchanged = true;\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTopRow(){\r\n\t\tif(!this.topInitialized){\r\n\t\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\t\t\tthis.topInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeBottomRow(){\r\n\t\tif(!this.botInitialized){\r\n\t\t\tthis.table.footerManager.prepend(this.botElement);\r\n\t\t\tthis.botInitialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tif(this.botInitialized && this.botRow){\r\n\t\t\tthis.botRow.getElement().style.marginLeft = (-left) + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\trecalc(rows){\r\n\t\tvar data, row;\r\n\r\n\t\tif(this.topInitialized || this.botInitialized){\r\n\t\t\tdata = this.rowsToData(rows);\r\n\r\n\t\t\tif(this.topInitialized){\r\n\t\t\t\tif(this.topRow){\r\n\t\t\t\t\tthis.topRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows))\r\n\t\t\t\tthis.topRow = row;\r\n\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\r\n\t\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.botInitialized){\r\n\t\t\t\tif(this.botRow){\r\n\t\t\t\t\tthis.botRow.deleteCells();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows))\r\n\t\t\t\tthis.botRow = row;\r\n\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\r\n\t\t\t\tthis.botElement.appendChild(row.getElement());\r\n\t\t\t\trow.initialize(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\t//set resizable handles\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tthis.table.modules.frozenColumns.layout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcRowGroup(row){\r\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\r\n\t}\r\n\r\n\trecalcAll(){\r\n\t\tif(this.topCalcs.length || this.botCalcs.length){\r\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\r\n\t\t\t\tthis.recalcActiveRows();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\r\n\r\n\r\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\r\n\r\n\t\t\t\tgroups.forEach((group) => {\r\n\t\t\t\t\tthis.recalcGroup(group);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trecalcGroup(group){\r\n\t\tvar data, rowData;\r\n\r\n\t\tif(group){\r\n\t\t\tif(group.calcs){\r\n\t\t\t\tif(group.calcs.bottom){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.bottom.reinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(group.calcs.top){\r\n\t\t\t\t\tdata = this.rowsToData(group.rows);\r\n\t\t\t\t\trowData = this.generateRowData(\"top\", data);\r\n\r\n\t\t\t\t\tgroup.calcs.top.updateData(rowData);\r\n\t\t\t\t\tgroup.calcs.top.reinitialize();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//generate top stats row\r\n\tgenerateTopRow(rows){\r\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\r\n\t}\r\n\t//generate bottom stats row\r\n\tgenerateBottomRow(rows){\r\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\r\n\t}\r\n\r\n\trowsToData(rows){\r\n\t\tvar data = [];\r\n\r\n\t\trows.forEach((row) => {\r\n\t\t\tdata.push(row.getData());\r\n\r\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\r\n\t\t\t\tif(row.modules.dataTree.open){\r\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\r\n\t\t\t\t\tdata = data.concat(children);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRow(pos, data){\r\n\t\tvar rowData = this.generateRowData(pos, data),\r\n\t\trow;\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.disable();\r\n\t\t}\r\n\r\n\t\trow = new Row(rowData, this, \"calc\");\r\n\r\n\t\tif(this.table.modExists(\"mutator\")){\r\n\t\t\tthis.table.modules.mutator.enable();\r\n\t\t}\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\r\n\r\n\t\trow.component = false;\r\n\r\n\t\trow.getComponent = () => {\r\n\t\t\tif(!row.component){\r\n\t\t\t\trow.component = new CalcComponent(this);\r\n\t\t\t}\r\n\r\n\t\t\treturn row.component;\r\n\t\t};\r\n\r\n\t\trow.generateCells = () => {\r\n\r\n\t\t\tvar cells = [];\r\n\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\r\n\t\t\t\t\t//set field name of mock column\r\n\t\t\t\t\tthis.genColumn.setField(column.getField());\r\n\t\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\r\n\r\n\t\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\r\n\t\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.genColumn.modules.format = {\r\n\t\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\r\n\t\t\t\t\t\t\tparams:{}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//ensure css class defintion is replicated to calculation cell\r\n\t\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\r\n\r\n\t\t\t\t\t//generate cell and assign to correct column\r\n\t\t\t\t\tvar cell = new Cell(this.genColumn, row);\r\n\t\t\t\t\tcell.getElement();\r\n\t\t\t\t\tcell.column = column;\r\n\t\t\t\t\tcell.setWidth();\r\n\r\n\t\t\t\t\tcolumn.cells.push(cell);\r\n\t\t\t\t\tcells.push(cell);\r\n\r\n\t\t\t\t\tif(!column.visible){\r\n\t\t\t\t\t\tcell.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\trow.cells = cells;\r\n\t\t};\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//generate stats row\r\n\tgenerateRowData(pos, data){\r\n\t\tvar rowData = {},\r\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\r\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\r\n\t\tparams, paramKey;\r\n\r\n\t\tcalcs.forEach(function(column){\r\n\t\t\tvar values = [];\r\n\r\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\r\n\t\t\t\tdata.forEach(function(item){\r\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tparamKey = type + \"Params\";\r\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\r\n\r\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\thasTopCalcs(){\r\n\t\treturn\t!!(this.topCalcs.length);\r\n\t}\r\n\r\n\thasBottomCalcs(){\r\n\t\treturn\t!!(this.botCalcs.length);\r\n\t}\r\n\r\n\t//handle table redraw\r\n\tredraw(){\r\n\t\tif(this.topRow){\r\n\t\t\tthis.topRow.normalizeHeight(true);\r\n\t\t}\r\n\t\tif(this.botRow){\r\n\t\t\tthis.botRow.normalizeHeight(true);\r\n\t\t}\r\n\t}\r\n\r\n\t//return the calculated\r\n\tgetResults(){\r\n\t\tvar results = {},\r\n\t\tgroups;\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\r\n\r\n\t\t\tgroups.forEach((group) => {\r\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tresults = {\r\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\r\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t//get results from a group\r\n\tgetGroupResults(group){\r\n\t\tvar groupObj = group._getSelf(),\r\n\t\tsubGroups = group.getSubGroups(),\r\n\t\tsubGroupResults = {},\r\n\t\tresults = {};\r\n\r\n\t\tsubGroups.forEach((subgroup) => {\r\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\r\n\t\t});\r\n\r\n\t\tresults = {\r\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\r\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\r\n\t\t\tgroups: subGroupResults,\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n}\r\n\r\nColumnCalcs.moduleName = \"columnCalcs\";\r\n\r\n//load defaults\r\nColumnCalcs.calculations = defaultCalculations;\r\n\r\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\r\n\r\nimport Row from '../../core/row/Row.js';\r\n\r\nclass DataTree extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.indent = 10;\r\n\t\tthis.field = \"\";\r\n\t\tthis.collapseEl = null;\r\n\t\tthis.expandEl = null;\r\n\t\tthis.branchEl = null;\r\n\t\tthis.elementField = false;\r\n\r\n\t\tthis.startOpen = function(){};\r\n\r\n\t\tthis.displayIndex = 0;\r\n\r\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\r\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\r\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\r\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\r\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\r\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\r\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\r\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\r\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\r\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\r\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\r\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//seleccting a parent row selects its children\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tvar dummyEl = null,\r\n\t\t\tfirstCol = this.table.columnManager.getFirstVisibileColumn(),\r\n\t\t\toptions = this.table.options;\r\n\r\n\t\t\tthis.field = options.dataTreeChildField;\r\n\t\t\tthis.indent = options.dataTreeChildIndent;\r\n\t\t\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\r\n\r\n\t\t\tif(options.dataTreeBranchElement){\r\n\r\n\t\t\t\tif(options.dataTreeBranchElement === true){\r\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\r\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\r\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\r\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeCollapseElement){\r\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\r\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\r\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.collapseEl.tabIndex = 0;\r\n\t\t\t\tthis.collapseEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif(options.dataTreeExpandElement){\r\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\r\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\r\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\r\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\r\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\r\n\t\t\t\tthis.expandEl.tabIndex = 0;\r\n\t\t\t\tthis.expandEl.innerHTML = \"
\";\r\n\t\t\t}\r\n\r\n\r\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded;\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.startOpen = function(row, index){\r\n\t\t\t\t\treturn options.dataTreeStartExpanded[index];\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-relayout\", this.layoutRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\r\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\r\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowChildren(row){\r\n\t\treturn this.getTreeChildren(row, true);\r\n\t}\r\n\r\n\tcolumnMoving(){\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowDataChanged(row, visible, updatedData){\r\n\t\tif(this.redrawNeeded(updatedData)){\r\n\t\t\tthis.initializeRow(row);\r\n\r\n\t\t\tif(visible){\r\n\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar childArray = row.getData()[this.field];\r\n\t\tvar isArray = Array.isArray(childArray);\r\n\r\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\r\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\r\n\t\t}\r\n\r\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\r\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\r\n\t\t}\r\n\r\n\t\trow.modules.dataTree = {\r\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\r\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\r\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\r\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\r\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\r\n\t\t\tchildren:children,\r\n\t\t};\r\n\t}\r\n\r\n\treinitializeRowChildren(row){\r\n\t\tvar children = this.getTreeChildren(row, false, true);\r\n\r\n\t\tchildren.forEach(function(child){\r\n\t\t\tchild.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\r\n\t\tel = cell.getElement(),\r\n\t\tconfig = row.modules.dataTree;\r\n\r\n\t\tif(config.branchEl){\r\n\t\t\tif(config.branchEl.parentNode){\r\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\r\n\t\t\t}\r\n\t\t\tconfig.branchEl = false;\r\n\t\t}\r\n\r\n\t\tif(config.controlEl){\r\n\t\t\tif(config.controlEl.parentNode){\r\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\r\n\t\t\t}\r\n\t\t\tconfig.controlEl = false;\r\n\t\t}\r\n\r\n\t\tthis.generateControlElement(row, el);\r\n\r\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\r\n\r\n\t\tif(config.index){\r\n\t\t\tif(this.branchEl){\r\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\r\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tconfig.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.table.rtl){\r\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateControlElement(row, el){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tel = el || row.getCells()[0].getElement(),\r\n\t\toldControl = config.controlEl;\r\n\r\n\t\tif(config.children !== false){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.collapseRow(row);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\r\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tthis.expandRow(row);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tif(oldControl && oldControl.parentNode === el){\r\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\r\n\t\t\t}else{\r\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetDisplayIndex (index) {\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex () {\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\tgetRows(rows){\r\n\t\tvar output = [];\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar config, children;\r\n\r\n\t\t\toutput.push(row);\r\n\r\n\t\t\tif(row instanceof Row){\r\n\r\n\t\t\t\trow.create();\r\n\r\n\t\t\t\tconfig = row.modules.dataTree.children;\r\n\r\n\t\t\t\tif(!config.index && config.children !== false){\r\n\t\t\t\t\tchildren = this.getChildren(row);\r\n\r\n\t\t\t\t\tchildren.forEach((child) => {\r\n\t\t\t\t\t\tchild.create();\r\n\t\t\t\t\t\toutput.push(child);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetChildren(row, allChildren){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\tchildren = [],\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children !== false && (config.open || allChildren)){\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\r\n\t\t\t\tthis.table.modules.sort.sort(children);\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((child) => {\r\n\t\t\t\toutput.push(child);\r\n\r\n\t\t\t\tvar subChildren = this.getChildren(child);\r\n\r\n\t\t\t\tsubChildren.forEach((sub) => {\r\n\t\t\t\t\toutput.push(sub);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateChildren(row){\r\n\t\tvar children = [];\r\n\r\n\t\tvar childArray = row.getData()[this.field];\r\n\r\n\t\tif(!Array.isArray(childArray)){\r\n\t\t\tchildArray = [childArray];\r\n\t\t}\r\n\r\n\t\tchildArray.forEach((childData) => {\r\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\r\n\r\n\t\t\tchildRow.create();\r\n\r\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\r\n\t\t\tchildRow.modules.dataTree.parent = row;\r\n\r\n\t\t\tif(childRow.modules.dataTree.children){\r\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\r\n\t\t\t}\r\n\t\t\tchildren.push(childRow);\r\n\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\texpandRow(row, silent){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = true;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\tcollapseRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tconfig.open = false;\r\n\r\n\t\t\trow.reinitialize();\r\n\r\n\t\t\tthis.refreshData(true);\r\n\r\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleRow(row){\r\n\t\tvar config = row.modules.dataTree;\r\n\r\n\t\tif(config.children !== false){\r\n\t\t\tif(config.open){\r\n\t\t\t\tthis.collapseRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.expandRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetTreeParent(row){\r\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\r\n\t}\r\n\r\n\tgetFilteredTreeChildren(row){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [], children;\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\r\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\r\n\t\t\t}else{\r\n\t\t\t\tchildren = config.children;\r\n\t\t\t}\r\n\r\n\t\t\tchildren.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(childRow);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\trowDelete(row){\r\n\t\tvar parent = row.modules.dataTree.parent,\r\n\t\tchildIndex;\r\n\r\n\t\tif(parent){\r\n\t\t\tchildIndex = this.findChildIndex(row, parent);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!parent.data[this.field].length){\r\n\t\t\t\tdelete parent.data[this.field];\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeRow(parent);\r\n\t\t\tthis.layoutRow(parent);\r\n\t\t}\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\taddTreeChildRow(row, data, top, index){\r\n\t\tvar childIndex = false;\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(row.data[this.field])){\r\n\t\t\trow.data[this.field] = [];\r\n\r\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tchildIndex = this.findChildIndex(index, row);\r\n\r\n\t\t\tif(childIndex !== false){\r\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(childIndex === false){\r\n\t\t\tif(top){\r\n\t\t\t\trow.data[this.field].unshift(data);\r\n\t\t\t}else{\r\n\t\t\t\trow.data[this.field].push(data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeRow(row);\r\n\t\tthis.layoutRow(row);\r\n\r\n\t\tthis.refreshData(true);\r\n\t}\r\n\r\n\tfindChildIndex(subject, parent){\r\n\t\tvar match = false;\r\n\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\tmatch = subject.data;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\tmatch = subject._getSelf().data;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\tif(parent.modules.dataTree){\r\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\r\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tmatch = match.data;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\tmatch = false\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tmatch = parent.data[this.field].find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(match){\r\n\r\n\t\t\tif(Array.isArray(parent.data[this.field])){\r\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\r\n\t\t\t}\r\n\r\n\t\t\tif(match == -1){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetTreeChildren(row, component, recurse){\r\n\t\tvar config = row.modules.dataTree,\r\n\t\toutput = [];\r\n\r\n\t\tif(config.children){\r\n\r\n\t\t\tif(!Array.isArray(config.children)){\r\n\t\t\t\tconfig.children = this.generateChildren(row);\r\n\t\t\t}\r\n\r\n\t\t\tconfig.children.forEach((childRow) => {\r\n\t\t\t\tif(childRow instanceof Row){\r\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\r\n\r\n\t\t\t\t\tif(recurse){\r\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tcheckForRestyle(cell){\r\n\t\tif(!cell.row.cells.indexOf(cell)){\r\n\t\t\tcell.row.reinitialize();\r\n\t\t}\r\n\t}\r\n\r\n\tgetChildField(){\r\n\t\treturn this.field;\r\n\t}\r\n\r\n\tredrawNeeded(data){\r\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\r\n\t}\r\n}\r\n\r\nDataTree.moduleName = \"dataTree\";\r\n\r\nexport default DataTree;","export default function(list, options, setFileContents){\r\n\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\r\n\tfileContents = [],\r\n\theaders = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = [];\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"header\":\r\n\t\t\trow.columns.forEach((col, i) => {\r\n\t\t\t\tif(col && col.depth === 1){\r\n\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : ('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\t\tif(col){\r\n\r\n\t\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item.join(delimiter));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(headers.length){\r\n\t\tfileContents.unshift(headers.join(delimiter));\r\n\t}\r\n\r\n\tfileContents = fileContents.join(\"\\n\");\r\n\r\n\tif(options.bom){\r\n\t\tfileContents = \"\\ufeff\" + fileContents;\r\n\t}\r\n\r\n\tsetFileContents(fileContents, \"text/csv\");\r\n};","import csv from './downloaders/csv.js';\r\nimport json from './downloaders/json.js';\r\nimport pdf from './downloaders/pdf.js';\r\nimport xlsx from './downloaders/xlsx.js';\r\nimport html from './downloaders/html.js';\r\n\r\nexport default {\r\n\tcsv:csv,\r\n\tjson:json,\r\n\tpdf:pdf,\r\n\txlsx:xlsx,\r\n\thtml:html,\r\n};","export default function(list, options, setFileContents){\r\n\tvar fileContents = [];\r\n\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\trow.columns.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\titem[col.component.getField()] = col.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfileContents.push(item);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\r\n\r\n\tsetFileContents(fileContents, \"application/json\");\r\n};","export default function(list, options, setFileContents){\r\n\tvar header = [],\r\n\tbody = [],\r\n\tautoTableParams = {},\r\n\trowGroupStyles = options.rowGroupStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 12,\r\n\t\tcellPadding: 6,\r\n\t\tfillColor: 220,\r\n\t},\r\n\trowCalcStyles = options.rowCalcStyles || {\r\n\t\tfontStyle: \"bold\",\r\n\t\tfontSize: 10,\r\n\t\tcellPadding: 4,\r\n\t\tfillColor: 232,\r\n\t},\r\n\tjsPDFParams = options.jsPDF || {},\r\n\ttitle = options && options.title ? options.title : \"\";\r\n\r\n\tif(!jsPDFParams.orientation){\r\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\r\n\t}\r\n\r\n\tif(!jsPDFParams.unit){\r\n\t\tjsPDFParams.unit = \"pt\";\r\n\t}\r\n\r\n\t//parse row list\r\n\tlist.forEach((row) => {\r\n\t\tvar item = {};\r\n\r\n\t\tswitch(row.type){\r\n\t\t\tcase \"header\":\r\n\t\t\theader.push(parseRow(row));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tbody.push(parseRow(row, rowGroupStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"calc\":\r\n\t\t\tbody.push(parseRow(row, rowCalcStyles));\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"row\":\r\n\t\t\tbody.push(parseRow(row));\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tfunction parseRow(row, styles){\r\n\t\tvar rowData = [];\r\n\r\n\t\trow.columns.forEach((col) =>{\r\n\t\t\tvar cell;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tswitch(typeof col.value){\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tcol.value = JSON.stringify(col.value);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\tcol.value = \"\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell = {\r\n\t\t\t\t\tcontent:col.value,\r\n\t\t\t\t\tcolSpan:col.width,\r\n\t\t\t\t\trowSpan:col.height,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif(styles){\r\n\t\t\t\t\tcell.styles = styles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowData.push(cell);\r\n\t\t\t}else{\r\n\t\t\t\trowData.push(\"\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowData;\r\n\t}\r\n\r\n\r\n\t//configure PDF\r\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\r\n\r\n\tif(options && options.autoTable){\r\n\t\tif(typeof options.autoTable === \"function\"){\r\n\t\t\tautoTableParams = options.autoTable(doc) || {};\r\n\t\t}else{\r\n\t\t\tautoTableParams = options.autoTable;\r\n\t\t}\r\n\t}\r\n\r\n\tif(title){\r\n\t\tautoTableParams.didDrawPage = function(data) {\r\n\t\t\tdoc.text(title, 40, 30);\r\n\t\t};\r\n\t}\r\n\r\n\tautoTableParams.head = header;\r\n\tautoTableParams.body = body;\r\n\r\n\tdoc.autoTable(autoTableParams);\r\n\r\n\tif(options && options.documentProcessing){\r\n\t\toptions.documentProcessing(doc);\r\n\t}\r\n\r\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\r\n};","import CoreFeature from '../../../../core/CoreFeature.js';\r\n\r\nexport default function(list, options, setFileContents){\r\n\tvar self = this,\r\n\tsheetName = options.sheetName || \"Sheet1\",\r\n\tworkbook = XLSX.utils.book_new(),\r\n\ttableFeatures = new CoreFeature(this),\r\n\toutput;\r\n\r\n\tworkbook.SheetNames = [];\r\n\tworkbook.Sheets = {};\r\n\r\n\tfunction generateSheet(){\r\n\t\tvar rows = [],\r\n\t\tmerges = [],\r\n\t\tworksheet = {},\r\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\r\n\r\n\t\t//parse row list\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tvar rowData = [];\r\n\r\n\t\t\trow.columns.forEach(function(col, j){\r\n\r\n\t\t\t\tif(col){\r\n\t\t\t\t\trowData.push(!(col.value instanceof Date) && typeof col.value === \"object\" ? JSON.stringify(col.value) : col.value);\r\n\r\n\t\t\t\t\tif(col.width > 1 || col.height > -1){\r\n\t\t\t\t\t\tmerges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowData.push(\"\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trows.push(rowData);\r\n\t\t});\r\n\r\n\r\n\t\t//convert rows to worksheet\r\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\r\n\r\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\r\n\r\n\t\tif(merges.length){\r\n\t\t\tworksheet[\"!merges\"] = merges;\r\n\t\t}\r\n\r\n\t\treturn worksheet;\r\n\t}\r\n\r\n\tif(options.sheetOnly){\r\n\t\tsetFileContents(generateSheet());\r\n\t\treturn;\r\n\t}\r\n\r\n\tif(options.sheets){\r\n\t\tfor(var sheet in options.sheets){\r\n\r\n\t\t\tif(options.sheets[sheet] === true){\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\r\n\t\t\t}else{\r\n\r\n\t\t\t\tworkbook.SheetNames.push(sheet);\r\n\r\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\r\n\t\t\t\t\ttype:\"xlsx\",\r\n\t\t\t\t\toptions:{sheetOnly:true},\r\n\t\t\t\t\tactive:self.active,\r\n\t\t\t\t\tintercept:function(data){\r\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tworkbook.SheetNames.push(sheetName);\r\n\t\tworkbook.Sheets[sheetName] = generateSheet();\r\n\t}\r\n\r\n\tif(options.documentProcessing){\r\n\t\tworkbook = options.documentProcessing(workbook);\r\n\t}\r\n\r\n\t//convert workbook to binary array\r\n\tfunction s2ab(s) {\r\n\t\tvar buf = new ArrayBuffer(s.length);\r\n\t\tvar view = new Uint8Array(buf);\r\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\r\n\t\t\treturn buf;\r\n\t}\r\n\r\n\toutput = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary'});\r\n\r\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\r\n};","export default function(list, options, setFileContents){\r\n\tif(this.modExists(\"export\", true)){\r\n\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultDownloaders from './defaults/downloaders.js';\r\n\r\nclass Download extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerTableOption(\"downloadReady\", function(data, blob){return blob;}); //function to manipulate download data\r\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\r\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\r\n\r\n\t\tthis.registerColumnOption(\"download\");\r\n\t\tthis.registerColumnOption(\"titleDownload\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\r\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tdownloadToTab(type, filename, options, active){\r\n\t\tthis.download(type, filename, options, active, true);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//trigger file download\r\n\tdownload(type, filename, options, range, interceptCallback){\r\n\t\tvar downloadFunc = false;\r\n\r\n\t\tfunction buildLink(data, mime){\r\n\t\t\tif(interceptCallback){\r\n\t\t\t\tif(interceptCallback === true){\r\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tinterceptCallback(data);\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(typeof type == \"function\"){\r\n\t\t\tdownloadFunc = type;\r\n\t\t}else{\r\n\t\t\tif(Download.downloaders[type]){\r\n\t\t\t\tdownloadFunc = Download.downloaders[type];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(downloadFunc){\r\n\t\t\tvar list = this.generateExportList(range);\r\n\r\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateExportList(range){\r\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\r\n\r\n\t\t//assign group header formatter\r\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\r\n\r\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\r\n\t\t\tgroupHeader = [groupHeader];\r\n\t\t}\r\n\r\n\t\tlist.forEach((row) => {\r\n\t\t\tvar group;\r\n\r\n\t\t\tif(row.type === \"group\"){\r\n\t\t\t\tgroup = row.columns[0];\r\n\r\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\r\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\ttriggerDownload(data, mime, type, filename, newTab){\r\n\t\tvar element = document.createElement('a'),\r\n\t\tblob = new Blob([data],{type:mime}),\r\n\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\r\n\r\n\t\tblob = this.table.options.downloadReady(data, blob);\r\n\r\n\t\tif(blob){\r\n\r\n\t\t\tif(newTab){\r\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\r\n\t\t\t}else{\r\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\r\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\r\n\r\n\t\t\t\t\t//set file title\r\n\t\t\t\t\telement.setAttribute('download', filename);\r\n\r\n\t\t\t\t\t//trigger download\r\n\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\tdocument.body.appendChild(element);\r\n\t\t\t\t\telement.click();\r\n\r\n\t\t\t\t\t//remove temporary link element\r\n\t\t\t\t\tdocument.body.removeChild(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\r\n\t\t}\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"intercept\":\r\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nDownload.moduleName = \"download\";\r\n\r\n//load defaults\r\nDownload.downloaders = defaultDownloaders;\r\n\r\nexport default Download;","export default function maskInput(el, options){\r\n\tvar mask = options.mask,\r\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\r\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\r\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\r\n\tsuccess = false;\r\n\r\n\tfunction fillSymbols(index){\r\n\t\tvar symbol = mask[index];\r\n\t\tif(typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){\r\n\t\t\tel.value = el.value + \"\" + symbol;\r\n\t\t\tfillSymbols(index+1);\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"keydown\", (e) => {\r\n\t\tvar index = el.value.length,\r\n\t\tchar = e.key;\r\n\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(index >= mask.length){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tsuccess = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(mask[index]){\r\n\t\t\t\t\tcase maskLetter:\r\n\t\t\t\t\tif(char.toUpperCase() == char.toLowerCase()){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskNumber:\r\n\t\t\t\t\tif(isNaN(char)){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase maskWildcard:\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(char !== mask[index]){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuccess = true;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tel.addEventListener(\"keyup\", (e) => {\r\n\t\tif(e.keyCode > 46){\r\n\t\t\tif(options.maskAutoFill){\r\n\t\t\t\tfillSymbols(el.value.length);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\r\n\tif(!el.placeholder){\r\n\t\tel.placeholder = mask;\r\n\t}\r\n\r\n\tif(options.maskAutoFill){\r\n\t\tfillSymbols(el.value.length);\r\n\t}\r\n}","import input from './editors/input.js';\r\nimport textarea from './editors/textarea.js';\r\nimport number from './editors/number.js';\r\nimport range from './editors/range.js';\r\nimport select from './editors/select.js';\r\nimport autocomplete from './editors/autocomplete.js';\r\nimport star from './editors/star.js';\r\nimport progress from './editors/progress.js';\r\nimport tickCross from './editors/tickCross.js';\r\n\r\nexport default {\r\n\tinput:input,\r\n\ttextarea:textarea,\r\n number:number,\r\n range:range,\r\n\tselect:select,\r\n\tautocomplete:autocomplete,\r\n\tstar:star,\r\n\tprogress:progress,\r\n\ttickCross:tickCross,\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\t//create and style input\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(e){\r\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\t\t\tif(success(input.value)){\r\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur or change\r\n\tinput.addEventListener(\"change\", onChange);\r\n\tinput.addEventListener(\"blur\", onChange);\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\t// case 9:\r\n\t\t\tcase 13:\r\n\t\t\tonChange(e);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//resizable text area element\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n var self = this,\r\n cellValue = cell.getValue(),\r\n vertNav = editorParams.verticalNavigation || \"hybrid\",\r\n value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\r\n count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\r\n input = document.createElement(\"textarea\"),\r\n scrollHeight = 0;\r\n\r\n //create and style input\r\n input.style.display = \"block\";\r\n input.style.padding = \"2px\";\r\n input.style.height = \"100%\";\r\n input.style.width = \"100%\";\r\n input.style.boxSizing = \"border-box\";\r\n input.style.whiteSpace = \"pre-wrap\";\r\n input.style.resize = \"none\";\r\n\r\n if(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n for (let key in editorParams.elementAttributes){\r\n if(key.charAt(0) == \"+\"){\r\n key = key.slice(1);\r\n input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n }else{\r\n input.setAttribute(key, editorParams.elementAttributes[key]);\r\n }\r\n }\r\n }\r\n\r\n input.value = value;\r\n\r\n onRendered(function(){\r\n input.focus({preventScroll: true});\r\n input.style.height = \"100%\";\r\n\r\n input.scrollHeight;\r\n input.style.height = input.scrollHeight + \"px\";\r\n cell.getRow().normalizeHeight();\r\n });\r\n\r\n function onChange(e){\r\n\r\n if(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\r\n\r\n if(success(input.value)){\r\n cellValue = input.value; //persist value if successfully validated incase editor is used as header filter\r\n }\r\n\r\n setTimeout(function(){\r\n cell.getRow().normalizeHeight();\r\n },300)\r\n }else{\r\n cancel();\r\n }\r\n }\r\n\r\n //submit new value on blur or change\r\n input.addEventListener(\"change\", onChange);\r\n input.addEventListener(\"blur\", onChange);\r\n\r\n input.addEventListener(\"keyup\", function(){\r\n\r\n input.style.height = \"\";\r\n\r\n var heightNow = input.scrollHeight;\r\n\r\n input.style.height = heightNow + \"px\";\r\n\r\n if(heightNow != scrollHeight){\r\n scrollHeight = heightNow;\r\n cell.getRow().normalizeHeight();\r\n }\r\n });\r\n\r\n input.addEventListener(\"keydown\", function(e){\r\n\r\n switch(e.keyCode){\r\n case 27:\r\n cancel();\r\n break;\r\n\r\n case 38: //up arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n\r\n break;\r\n\r\n case 40: //down arrow\r\n if(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n }\r\n break;\r\n\r\n case 35:\r\n case 36:\r\n e.stopPropagation();\r\n break;\r\n }\r\n });\r\n\r\n if(editorParams.mask){\r\n maskInput(input, editorParams);\r\n }\r\n\r\n return input;\r\n};","import maskInput from '../../inputMask.js';\r\n\r\n//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"number\");\r\n\r\n\tif(typeof editorParams.max != \"undefined\"){\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif(typeof editorParams.min != \"undefined\"){\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif(typeof editorParams.step != \"undefined\"){\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tvar blurFunc = function(e){\r\n\t\tonChange();\r\n\t};\r\n\r\n\tonRendered(function () {\r\n\t\t//submit new value on blur\r\n\t\tinput.removeEventListener(\"blur\", blurFunc);\r\n\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\r\n\t\t//submit new value on blur\r\n\t\tinput.addEventListener(\"blur\", blurFunc);\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value !== cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tif(vertNav == \"editor\"){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 35:\r\n\t\t\tcase 36:\r\n\t\t\te.stopPropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\treturn input;\r\n};","//input element with type of number\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar cellValue = cell.getValue(),\r\n\tinput = document.createElement(\"input\");\r\n\r\n\tinput.setAttribute(\"type\", \"range\");\r\n\r\n\tif (typeof editorParams.max != \"undefined\") {\r\n\t\tinput.setAttribute(\"max\", editorParams.max);\r\n\t}\r\n\r\n\tif (typeof editorParams.min != \"undefined\") {\r\n\t\tinput.setAttribute(\"min\", editorParams.min);\r\n\t}\r\n\r\n\tif (typeof editorParams.step != \"undefined\") {\r\n\t\tinput.setAttribute(\"step\", editorParams.step);\r\n\t}\r\n\r\n\t//create and style input\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = cellValue;\r\n\r\n\tonRendered(function () {\r\n\t\tinput.focus({preventScroll: true});\r\n\t\tinput.style.height = \"100%\";\r\n\t});\r\n\r\n\tfunction onChange(){\r\n\t\tvar value = input.value;\r\n\r\n\t\tif(!isNaN(value) && value !==\"\"){\r\n\t\t\tvalue = Number(value);\r\n\t\t}\r\n\r\n\t\tif(value != cellValue){\r\n\t\t\tif(success(value)){\r\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcancel();\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tonChange();\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 13:\r\n\t\t\t// case 9:\r\n\t\t\tonChange();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27:\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\n\r\n//dropdown select editor\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : []),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tmultiselect = editorParams.multiselect,\r\n\tdataItems = [],\r\n\tcurrentItem = {},\r\n\tdisplayItems = [],\r\n\tcurrentItems = [],\r\n\tblurable = true,\r\n\tblockListShow = false,\r\n\tsearchWord = \"\",\r\n\tsearchWordTimeout = null;\r\n\r\n\tif(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === \"object\" && !editorParams.values)){\r\n\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\r\n\t\teditorParams = {values:editorParams};\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\r\n\t\t}\r\n\r\n\t\treturn Object.keys(output);\r\n\t}\r\n\r\n\tfunction parseItems(inputValues, curentValues){\r\n\t\tvar dataList = [];\r\n\t\tvar displayList = [];\r\n\r\n\t\tfunction processComplexListItem(item){\r\n\t\t\tvar item = {\r\n\t\t\t\tlabel:item.label,\r\n\t\t\t\tvalue:item.value,\r\n\t\t\t\titemParams:item.itemParams,\r\n\t\t\t\telementAttributes: item.elementAttributes,\r\n\t\t\t\telement:false,\r\n\t\t\t};\r\n\r\n\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t// }\r\n\r\n\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\tsetItem(item);\r\n\t\t\t}\r\n\r\n\t\t\tdataList.push(item);\r\n\t\t\tdisplayList.push(item);\r\n\r\n\t\t\treturn item;\r\n\t\t}\r\n\r\n\t\tif(typeof inputValues == \"function\"){\r\n\t\t\tinputValues = inputValues(cell);\r\n\t\t}\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\r\n\t\t\t\t\tif(value.options){\r\n\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\tlabel:value.label,\r\n\t\t\t\t\t\t\tgroup:true,\r\n\t\t\t\t\t\t\titemParams:value.itemParams,\r\n\t\t\t\t\t\t\telementAttributes:value.elementAttributes,\r\n\t\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tdisplayList.push(item);\r\n\r\n\t\t\t\t\t\tvalue.options.forEach(function(item){\r\n\t\t\t\t\t\t\tprocessComplexListItem(item);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tprocessComplexListItem(value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\titem = {\r\n\t\t\t\t\t\tlabel:value,\r\n\t\t\t\t\t\tvalue:value,\r\n\t\t\t\t\t\telement:false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\t\tsetItem(item);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataList.push(item);\r\n\t\t\t\t\tdisplayList.push(item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tlabel:inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t\telement:false,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\r\n\t\t\t\t// \tsetCurrentItem(item);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\tif(curentValues.indexOf(item.value) > -1){\r\n\t\t\t\t\tsetItem(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataList.push(item);\r\n\t\t\t\tdisplayList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(editorParams.sortValuesList){\r\n\t\t\tdataList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tdisplayList.sort((a, b) => {\r\n\t\t\t\treturn a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList !== \"asc\"){\r\n\t\t\t\tdataList.reverse();\r\n\t\t\t\tdisplayList.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataItems = dataList;\r\n\t\tdisplayItems = displayList;\r\n\r\n\t\tfillList();\r\n\t}\r\n\r\n\tfunction fillList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\r\n\t\t\t\tif(item.group){\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\r\n\r\n\t\t\t\t\tel.addEventListener(\"click\", function(){\r\n\t\t\t\t\t\tblockListShow = true;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tblockListShow = false;\r\n\t\t\t\t\t\t}, 10);\r\n\r\n\t\t\t\t\t\t// setCurrentItem(item);\r\n\t\t\t\t\t\t// chooseItem();\r\n\t\t\t\t\t\tif(multiselect){\r\n\t\t\t\t\t\t\ttoggleItem(item);\r\n\t\t\t\t\t\t\tinput.focus();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tchooseItem(item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// if(item === currentItem){\r\n\t\t\t\t\t// \tel.classList.add(\"active\");\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\tif(currentItems.indexOf(item) > -1){\r\n\t\t\t\t\t\tel.classList.add(\"active\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\r\n\t\t\t\t\tfor (let key in item.elementAttributes){\r\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\t\t\t\tkey = key.slice(1);\r\n\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tfunction setCurrentItem(item, active){\r\n\r\n\t\tif(!multiselect && currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"focused\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item.element){\r\n\t\t\titem.element.classList.add(\"focused\");\r\n\t\t\tif(active){\r\n\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// function chooseItem(){\r\n\t// \thideList();\r\n\r\n\t// \tif(initialValue !== currentItem.value){\r\n\t// \t\tinitialValue = currentItem.value;\r\n\t// \t\tsuccess(currentItem.value);\r\n\t// \t}else{\r\n\t// \t\tcancel();\r\n\t// \t}\r\n\t// }\r\n\r\n\tfunction setItem(item) {\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index == -1){\r\n\t\t\tcurrentItems.push(item);\r\n\t\t\tsetCurrentItem(item, true);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\t}\r\n\r\n\tfunction unsetItem(index) {\r\n\t\tvar item = currentItems[index];\r\n\r\n\t\tif(index > -1){\r\n\t\t\tcurrentItems.splice(index, 1);\r\n\t\t\tif(item.element){\r\n\t\t\t\titem.element.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction toggleItem(item) {\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tvar index = currentItems.indexOf(item);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tunsetItem(index);\r\n\t\t}else{\r\n\t\t\tif(multiselect !== true && currentItems.length >= multiselect){\r\n\t\t\t\tunsetItem(0);\r\n\t\t\t}\r\n\r\n\t\t\tsetItem(item);\r\n\t\t}\r\n\r\n\t\tfillInput();\r\n\r\n\t}\r\n\r\n\tfunction chooseItem(item){\r\n\t\thideList();\r\n\r\n\t\tif(!item){\r\n\t\t\titem = currentItem;\r\n\t\t}\r\n\r\n\t\tif(item){\r\n\t\t\tinput.value = item.label;\r\n\t\t\tsuccess(item.value);\r\n\t\t}\r\n\r\n\t\tinitialDisplayValue = [item.value];\r\n\t}\r\n\r\n\r\n\tfunction chooseItems(silent){\r\n\t\tif(!silent){\r\n\t\t\thideList();\r\n\t\t}\r\n\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.value);\r\n\t\t});\r\n\r\n\t\tinitialDisplayValue = output;\r\n\r\n\t\tsuccess(output);\r\n\t}\r\n\r\n\tfunction fillInput(){\r\n\t\tvar output = [];\r\n\r\n\t\tcurrentItems.forEach((item) => {\r\n\t\t\toutput.push(item.label);\r\n\t\t});\r\n\r\n\t\tinput.value = output.join(\", \");\r\n\r\n\t\tif(self.currentCell === false){\r\n\t\t\tchooseItems(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction unsetItems() {\r\n\r\n\t\tvar len = currentItems.length;\r\n\r\n\t\tfor(let i = 0; i < len; i++){\r\n\t\t\tunsetItem(0);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tcurrentItems = [];\r\n\r\n\t\tif(!listEl.parentNode){\r\n\t\t\tif(editorParams.values === true){\r\n\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\r\n\t\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\r\n\t\t\t}else{\r\n\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\r\n\r\n\t\t\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tblurable = false;\r\n\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tblurable = true;\r\n\t\t\t\t}, 10);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\tfunction scrollTovalue(char){\r\n\r\n\t\tclearTimeout(searchWordTimeout);\r\n\r\n\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\r\n\t\tsearchWord += character.toLowerCase();\r\n\r\n\t\tvar match = dataItems.find((item) => {\r\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tsetCurrentItem(match, !multiselect);\r\n\t\t}\r\n\r\n\t\tsearchWordTimeout = setTimeout(() => {\r\n\t\t\tsearchWord = \"\";\r\n\t\t}, 800)\r\n\t}\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"text\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\tinput.style.cursor = \"default\";\r\n\tinput.readOnly = (this.currentCell != false);\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\r\n\r\n\t// if(editorParams.values === true){\r\n\t// \tparseItems(getUniqueColumnValues(), initialValue);\r\n\t// }else if(typeof editorParams.values === \"string\"){\r\n\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\r\n\t// }else{\r\n\t// \tparseItems(editorParams.values || [], initialValue);\r\n\t// }\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tif(!input.value){\r\n\t\t\tunsetItems();\r\n\t\t\tchooseItems();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\t\t\tindex = dataItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < dataItems.length - 1)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < dataItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\t// chooseItem();\r\n\r\n\t\t\tif(multiselect){\r\n\t\t\t\ttoggleItem();\r\n\t\t\t}else{\r\n\t\t\t\tchooseItem();\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(self.currentCell === false){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\r\n\t\t\t\tscrollTovalue(e.keyCode);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tchooseItems();\r\n\t\t\t}else{\r\n\t\t\t\tcancelItem();\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tif(!blockListShow){\r\n\t\t\tshowList();\r\n\t\t}\r\n\t});\r\n\r\n\t//style list element\r\n\tlistEl = document.createElement(\"div\");\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\treturn input;\r\n};","import Helpers from '../../../../core/tools/Helpers.js';\r\nimport maskInput from '../../inputMask.js';\r\n\r\n//autocomplete\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\tcellEl = cell.getElement(),\r\n\tinitialValue = cell.getValue(),\r\n\tvertNav = editorParams.verticalNavigation || \"editor\",\r\n\tinitialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : (typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\"),\r\n\tinput = document.createElement(\"input\"),\r\n\tlistEl = document.createElement(\"div\"),\r\n\tallItems = [],\r\n\tdisplayItems = [],\r\n\tvalues = [],\r\n\tcurrentItem = false,\r\n\tblurable = true,\r\n\tuniqueColumnValues = false;\r\n\r\n\t//style input\r\n\tinput.setAttribute(\"type\", \"search\");\r\n\r\n\tinput.style.padding = \"4px\";\r\n\tinput.style.width = \"100%\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style list element\r\n\tlistEl.classList.add(\"tabulator-edit-select-list\");\r\n\r\n\tlistEl.addEventListener(\"mousedown\", function(e){\r\n\t\tblurable = false;\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tblurable = true;\r\n\t\t}, 10);\r\n\t});\r\n\r\n\r\n\tfunction genUniqueColumnValues(){\r\n\t\tif(editorParams.values === true){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues();\r\n\t\t}else if(typeof editorParams.values === \"string\"){\r\n\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getUniqueColumnValues(field){\r\n\t\tvar output = {},\r\n\t\tdata = self.table.getData(),\r\n\t\tcolumn;\r\n\r\n\t\tif(field){\r\n\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\r\n\t\t}else{\r\n\t\t\tcolumn = cell.getColumn()._getSelf();\r\n\t\t}\r\n\r\n\t\tif(column){\r\n\t\t\tdata.forEach(function(row){\r\n\t\t\t\tvar val = column.getFieldValue(row);\r\n\r\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\r\n\t\t\t\t\toutput[val] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(editorParams.sortValuesList){\r\n\t\t\t\tif(editorParams.sortValuesList == \"asc\"){\r\n\t\t\t\t\toutput = Object.keys(output).sort();\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput = Object.keys(output).sort().reverse();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\toutput = Object.keys(output);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\r\n\t\t}\r\n\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfunction filterList(term, intialLoad){\r\n\t\tvar matches = [],\r\n\t\tvalues, items, searchEl;\r\n\r\n\t\t//lookup base values list\r\n\t\tif(uniqueColumnValues){\r\n\t\t\tvalues = uniqueColumnValues;\r\n\t\t}else{\r\n\t\t\tvalues = editorParams.values || [];\r\n\t\t}\r\n\r\n\t\tif(editorParams.searchFunc){\r\n\t\t\tmatches = editorParams.searchFunc(term, values);\r\n\r\n\t\t\tif(matches instanceof Promise){\r\n\r\n\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\r\n\r\n\t\t\t\tmatches.then((result) => {\r\n\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\titems = parseItems(values);\r\n\r\n\t\t\tif(term === \"\"){\r\n\t\t\t\tif(editorParams.showListOnEmpty){\r\n\t\t\t\t\tmatches = items;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\titems.forEach(function(item){\r\n\t\t\t\t\tif(item.value !== null || typeof item.value !== \"undefined\"){\r\n\t\t\t\t\t\tif(String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1){\r\n\t\t\t\t\t\t\tmatches.push(item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfillListIfNotEmpty(matches, intialLoad);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction addNotice(notice){\r\n\t\tvar searchEl = document.createElement(\"div\");\r\n\r\n\t\tclearList();\r\n\r\n\t\tif(notice !== false){\r\n\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\r\n\t\t\tsearchEl.tabIndex = 0;\r\n\r\n\t\t\tif(notice instanceof Node){\r\n\t\t\t\tsearchEl.appendChild(notice);\r\n\t\t\t}else{\r\n\t\t\t\tsearchEl.innerHTML = notice;\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(searchEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction parseItems(inputValues){\r\n\t\tvar itemList = [];\r\n\r\n\t\tif(Array.isArray(inputValues)){\r\n\t\t\tinputValues.forEach(function(value){\r\n\r\n\t\t\t\tvar item = {};\r\n\r\n\t\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\r\n\t\t\t\t\titem.value = value.value;\r\n\t\t\t\t}else{\r\n\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\r\n\t\t\t\t\titem.value = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tfor(var key in inputValues){\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttitle:editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\r\n\t\t\t\t\tvalue:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\titemList.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tfunction clearList(){\r\n\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\t}\r\n\r\n\tfunction fillListIfNotEmpty(items, intialLoad){\r\n\t\tif(items.length){\r\n\t\t\tfillList(items, intialLoad);\r\n\t\t}else{\r\n\t\t\tif(editorParams.emptyPlaceholder){\r\n\t\t\t\taddNotice(editorParams.emptyPlaceholder);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillList(items, intialLoad){\r\n\t\tvar current = false;\r\n\r\n\t\tclearList();\r\n\r\n\t\tdisplayItems = items;\r\n\r\n\t\tdisplayItems.forEach(function(item){\r\n\t\t\tvar el = item.element;\r\n\r\n\t\t\tif(!el){\r\n\t\t\t\tel = document.createElement(\"div\");\r\n\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\r\n\t\t\t\tel.tabIndex = 0;\r\n\t\t\t\tel.innerHTML = item.title;\r\n\r\n\t\t\t\tel.addEventListener(\"click\", function(e){\r\n\t\t\t\t\tsetCurrentItem(item);\r\n\t\t\t\t\tchooseItem();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tel.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\tblurable = false;\r\n\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tblurable = true;\r\n\t\t\t\t\t}, 10);\r\n\t\t\t\t});\r\n\r\n\t\t\t\titem.element = el;\r\n\r\n\t\t\t\tif(intialLoad && item.value == initialValue){\r\n\t\t\t\t\tinput.value = item.title;\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item === currentItem){\r\n\t\t\t\t\titem.element.classList.add(\"active\");\r\n\t\t\t\t\tcurrent = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlistEl.appendChild(el);\r\n\t\t});\r\n\r\n\t\tif(!current){\r\n\t\t\tsetCurrentItem(false);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction chooseItem(){\r\n\t\thideList();\r\n\r\n\t\tif(currentItem){\r\n\t\t\tif(initialValue !== currentItem.value){\r\n\t\t\t\tinitialValue = currentItem.value;\r\n\t\t\t\tinput.value = currentItem.title;\r\n\t\t\t\tsuccess(currentItem.value);\r\n\t\t\t}else{\r\n\t\t\t\tcancel();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(editorParams.freetext){\r\n\t\t\t\tinitialValue = input.value;\r\n\t\t\t\tsuccess(input.value);\r\n\t\t\t}else{\r\n\t\t\t\tif(editorParams.allowEmpty && input.value === \"\"){\r\n\t\t\t\t\tinitialValue = input.value;\r\n\t\t\t\t\tsuccess(input.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcancel();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showList(){\r\n\t\tif(!listEl.parentNode){\r\n\t\t\twhile(listEl.firstChild) listEl.removeChild(listEl.firstChild);\r\n\r\n\t\t\tvar offset = Helpers.elOffset(cellEl);\r\n\r\n\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\r\n\r\n\t\t\tlistEl.style.top = (offset.top + cellEl.offsetHeight) + \"px\";\r\n\t\t\tlistEl.style.left = offset.left + \"px\";\r\n\t\t\tdocument.body.appendChild(listEl);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setCurrentItem(item, showInputValue){\r\n\t\tif(currentItem && currentItem.element){\r\n\t\t\tcurrentItem.element.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\tcurrentItem = item;\r\n\r\n\t\tif(item && item.element){\r\n\t\t\titem.element.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tif(item && item.element && item.element.scrollIntoView){\r\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideList(){\r\n\t\tif(listEl.parentNode){\r\n\t\t\tlistEl.parentNode.removeChild(listEl);\r\n\t\t}\r\n\r\n\t\tremoveScrollListener();\r\n\t}\r\n\r\n\r\n\tfunction cancelItem(){\r\n\t\thideList();\r\n\t\tcancel();\r\n\t}\r\n\r\n\tfunction removeScrollListener() {\r\n\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\r\n\t}\r\n\r\n\t//allow key based navigation\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tvar index;\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index)){\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index > 0){\r\n\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tsetCurrentItem(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 40: //down arrow\r\n\r\n\t\t\tindex = displayItems.indexOf(currentItem);\r\n\r\n\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && index < displayItems.length - 1)){\r\n\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif(index < displayItems.length - 1){\r\n\t\t\t\t\tif(index == -1){\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\te.stopPropagation();\r\n\t\t\t// e.preventDefault();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tchooseItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancelItem();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 36: //home\r\n\t\t\tcase 35: //end\r\n\t\t\t//prevent table navigation while using input element\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"keyup\", function(e){\r\n\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 38: //up arrow\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tcase 39: //up arrow\r\n\t\t\tcase 40: //right arrow\r\n\t\t\tcase 13: //enter\r\n\t\t\tcase 27: //escape\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tfilterList(input.value);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\tinput.addEventListener(\"search\", function(e){\r\n\t\tfilterList(input.value);\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tif(blurable){\r\n\t\t\tchooseItem();\r\n\t\t}\r\n\t});\r\n\r\n\tinput.addEventListener(\"focus\", function(e){\r\n\t\tvar value = initialDisplayValue;\r\n\t\tgenUniqueColumnValues();\r\n\t\tshowList();\r\n\t\tinput.value = value;\r\n\t\tfilterList(value, true);\r\n\t});\r\n\r\n\r\n\tonRendered(function(){\r\n\t\tinput.style.height = \"100%\";\r\n\t\tinput.focus({preventScroll: true});\r\n\t});\r\n\r\n\tif(editorParams.mask){\r\n\t\tmaskInput(input, editorParams);\r\n\t}\r\n\r\n\tsetTimeout(() => {\r\n\t\tthis.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\r\n\t}, 10);\r\n\r\n\tgenUniqueColumnValues();\r\n\tinput.value = initialDisplayValue;\r\n\tfilterList(initialDisplayValue, true);\r\n\r\n\treturn input;\r\n};","//star rating\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar self = this,\r\n\telement = cell.getElement(),\r\n\tvalue = cell.getValue(),\r\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\r\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\r\n\tstars = [],\r\n\tstarsHolder = document.createElement(\"div\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\r\n\r\n\r\n\t//change star type\r\n\tfunction starChange(val){\r\n\t\tstars.forEach(function(star, i){\r\n\t\t\tif(i < val){\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}else{\r\n\t\t\t\tif(self.table.browser == \"ie\"){\r\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstar.innerHTML = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//build stars\r\n\tfunction buildStar(i){\r\n\r\n\t\tvar starHolder = document.createElement(\"span\");\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\r\n\t\tstars.push(nextStar);\r\n\r\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tstarChange(i);\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t});\r\n\r\n\t\tstarHolder.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\tsuccess(i);\r\n\t\t\telement.blur();\r\n\t\t});\r\n\r\n\t\tstarHolder.appendChild(nextStar);\r\n\t\tstarsHolder.appendChild(starHolder);\r\n\r\n\t}\r\n\r\n\t//handle keyboard navigation value change\r\n\tfunction changeValue(val){\r\n\t\tvalue = val;\r\n\t\tstarChange(val);\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\t//style holding element\r\n\tstarsHolder.style.verticalAlign = \"middle\";\r\n\tstarsHolder.style.display = \"inline-block\";\r\n\tstarsHolder.style.padding = \"4px\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", size);\r\n\tstar.setAttribute(\"height\", size);\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//create correct number of stars\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tbuildStar(i);\r\n\t}\r\n\r\n\t//ensure value does not exceed number of stars\r\n\tvalue = Math.min(parseInt(value), maxStars);\r\n\r\n\t// set initial styling of stars\r\n\tstarChange(value);\r\n\r\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\r\n\t\tstarChange(0);\r\n\t});\r\n\r\n\tstarsHolder.addEventListener(\"click\", function(e){\r\n\t\tsuccess(0);\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(e){\r\n\t\tcancel();\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\tchangeValue(value + 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\tchangeValue(value - 1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 13: //enter\r\n\t\t\tsuccess(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn starsHolder;\r\n};","//draggable progress bar\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar element = cell.getElement(),\r\n\tmax = typeof editorParams.max === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100) : editorParams.max,\r\n\tmin = typeof editorParams.min === \"undefined\" ? ( element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0) : editorParams.min,\r\n\tpercent = (max - min) / 100,\r\n\tvalue = cell.getValue() || 0,\r\n\thandle = document.createElement(\"div\"),\r\n\tbar = document.createElement(\"div\"),\r\n\tmouseDrag, mouseDragWidth;\r\n\r\n\t//set new value\r\n\tfunction updateValue(){\r\n\t\tvar style = window.getComputedStyle(element, null);\r\n\r\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\r\n\t\tsuccess(calcVal);\r\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\r\n\t\telement.setAttribute(\"aria-label\", value);\r\n\t}\r\n\r\n\t//style handle\r\n\thandle.style.position = \"absolute\";\r\n\thandle.style.right = \"0\";\r\n\thandle.style.top = \"0\";\r\n\thandle.style.bottom = \"0\";\r\n\thandle.style.width = \"5px\";\r\n\thandle.classList.add(\"tabulator-progress-handle\");\r\n\r\n\t//style bar\r\n\tbar.style.display = \"inline-block\";\r\n\tbar.style.position = \"relative\";\r\n\t// bar.style.top = \"8px\";\r\n\t// bar.style.bottom = \"8px\";\r\n\t// bar.style.left = \"4px\";\r\n\t// bar.style.marginRight = \"4px\";\r\n\tbar.style.height = \"100%\";\r\n\tbar.style.backgroundColor = \"#488CE9\";\r\n\tbar.style.maxWidth = \"100%\";\r\n\tbar.style.minWidth = \"0%\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//style cell\r\n\telement.style.padding = \"4px 4px\";\r\n\r\n\t//make sure value is in range\r\n\tvalue = Math.min(parseFloat(value), max);\r\n\tvalue = Math.max(parseFloat(value), min);\r\n\r\n\t//workout percentage\r\n\tvalue = Math.round((value - min) / percent);\r\n\t// bar.style.right = value + \"%\";\r\n\tbar.style.width = value + \"%\";\r\n\r\n\telement.setAttribute(\"aria-valuemin\", min);\r\n\telement.setAttribute(\"aria-valuemax\", max);\r\n\r\n\tbar.appendChild(handle);\r\n\r\n\thandle.addEventListener(\"mousedown\", function(e){\r\n\t\tmouseDrag = e.screenX;\r\n\t\tmouseDragWidth = bar.offsetWidth;\r\n\t});\r\n\r\n\thandle.addEventListener(\"mouseover\", function(){\r\n\t\thandle.style.cursor = \"ew-resize\";\r\n\t});\r\n\r\n\telement.addEventListener(\"mousemove\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"mouseup\", function(e){\r\n\t\tif(mouseDrag){\r\n\t\t\te.stopPropagation();\r\n\t\t\te.stopImmediatePropagation();\r\n\r\n\t\t\tmouseDrag = false;\r\n\t\t\tmouseDragWidth = false;\r\n\r\n\t\t\tupdateValue();\r\n\t\t}\r\n\t});\r\n\r\n\t//allow key based navigation\r\n\telement.addEventListener(\"keydown\", function(e){\r\n\t\tswitch(e.keyCode){\r\n\t\t\tcase 39: //right arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 37: //left arrow\r\n\t\t\te.preventDefault();\r\n\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 9: //tab\r\n\t\t\tcase 13: //enter\r\n\t\t\tupdateValue();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase 27: //escape\r\n\t\t\tcancel();\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t});\r\n\r\n\telement.addEventListener(\"blur\", function(){\r\n\t\tcancel();\r\n\t});\r\n\r\n\treturn bar;\r\n};","//checkbox\r\nexport default function(cell, onRendered, success, cancel, editorParams){\r\n\tvar value = cell.getValue(),\r\n\tinput = document.createElement(\"input\"),\r\n\ttristate = editorParams.tristate,\r\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\r\n\tindetermState = false;\r\n\r\n\tinput.setAttribute(\"type\", \"checkbox\");\r\n\tinput.style.marginTop = \"5px\";\r\n\tinput.style.boxSizing = \"border-box\";\r\n\r\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\r\n\t\tfor (let key in editorParams.elementAttributes){\r\n\t\t\tif(key.charAt(0) == \"+\"){\r\n\t\t\t\tkey = key.slice(1);\r\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\r\n\t\t\t}else{\r\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinput.value = value;\r\n\r\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\r\n\t\tindetermState = true;\r\n\t\tinput.indeterminate = true;\r\n\t}\r\n\r\n\tif(this.table.browser != \"firefox\"){ //prevent blur issue on mac firefox\r\n\t\tonRendered(function(){\r\n\t\t\tinput.focus({preventScroll: true});\r\n\t\t});\r\n\t}\r\n\r\n\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\r\n\r\n\tonRendered(function(){\r\n\t\tinput.focus();\r\n\t});\r\n\r\n\tfunction setValue(blur){\r\n\t\tif(tristate){\r\n\t\t\tif(!blur){\r\n\t\t\t\tif(input.checked && !indetermState){\r\n\t\t\t\t\tinput.checked = false;\r\n\t\t\t\t\tinput.indeterminate = true;\r\n\t\t\t\t\tindetermState = true;\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tindetermState = false;\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(indetermState){\r\n\t\t\t\t\treturn indetermValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn input.checked;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn input.checked;\r\n\t\t}\r\n\t}\r\n\r\n\t//submit new value on blur\r\n\tinput.addEventListener(\"change\", function(e){\r\n\t\tsuccess(setValue());\r\n\t});\r\n\r\n\tinput.addEventListener(\"blur\", function(e){\r\n\t\tsuccess(setValue(true));\r\n\t});\r\n\r\n\t//submit new value on enter\r\n\tinput.addEventListener(\"keydown\", function(e){\r\n\t\tif(e.keyCode == 13){\r\n\t\t\tsuccess(setValue());\r\n\t\t}\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tcancel();\r\n\t\t}\r\n\t});\r\n\r\n\treturn input;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultEditors from './defaults/editors.js';\r\n\r\nclass Edit extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.currentCell = false; //hold currently editing cell\r\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\r\n\t\tthis.recursionBlock = false; //prevent focus recursion\r\n\t\tthis.invalidEdit = false;\r\n\t\tthis.editedCells = [];\r\n\r\n\t\tthis.editors = Edit.editors;\r\n\r\n\t\tthis.registerColumnOption(\"editable\");\r\n\t\tthis.registerColumnOption(\"editor\");\r\n\t\tthis.registerColumnOption(\"editorParams\");\r\n\r\n\t\tthis.registerColumnOption(\"cellEditing\");\r\n\t\tthis.registerColumnOption(\"cellEdited\");\r\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\r\n\r\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\r\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellisEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\r\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\r\n\t\tthis.subscribe(\"data-refeshing\", this.cancelEdit.bind(this));\r\n\r\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this));\r\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this));\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t////// Keybinding Functions ///////\r\n\t///////////////////////////////////\r\n\r\n\tkeybindingNavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnewRow = this.options(\"tabEndNewRow\");\r\n\r\n\t\tif(cell){\r\n\t\t\tif(!this.navigateNext(e)){\r\n\t\t\t\tif(newRow){\r\n\t\t\t\t\tcell.getElement().firstChild.blur();\r\n\r\n\t\t\t\t\tif(newRow === true){\r\n\t\t\t\t\t\tnewRow = this.table.addRow({})\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(typeof newRow == \"function\"){\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()))\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnewRow.then(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tnav.next();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Cell Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\tcellisEdited(cell){\r\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\r\n\t}\r\n\r\n\tcellCancelEdit(cell){\r\n\t\tif(cell === this.currentCell){\r\n\t\t\tthis.table.modules.edit.cancelEdit();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\tclearCellEdited(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.modules.edit.getEditedCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.modules.edit.clearEdited(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tnavigatePrev(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, prevRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateLeft();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(prevRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateNext(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tnextCell, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tnextCell = this.navigateRight();\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\t\tif(nextRow){\r\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\r\n\r\n\t\t\t\t\tif(nextCell){\r\n\t\t\t\t\t\tnextCell.edit();\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateLeft(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateRight(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextCell;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\r\n\r\n\t\t\tif(nextCell){\r\n\t\t\t\tnextCell.edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateUp(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tnavigateDown(e){\r\n\t\tvar cell = this.currentCell,\r\n\t\tindex, nextRow;\r\n\r\n\t\tif(cell){\r\n\r\n\t\t\tif(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tindex = cell.getIndex();\r\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\r\n\r\n\t\t\tif(nextRow){\r\n\t\t\t\tnextRow.cells[index].edit();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindNextEditableCell(row, index){\r\n\t\tvar nextCell = false;\r\n\r\n\t\tif(index < row.cells.length-1){\r\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\r\n\t\t\t\tlet cell = row.cells[i];\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tlet allowEdit = true;\r\n\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tnextCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nextCell;\r\n\t}\r\n\r\n\tfindPrevEditableCell(row, index){\r\n\t\tvar prevCell = false;\r\n\r\n\t\tif(index > 0){\r\n\t\t\tfor(var i = index-1; i >= 0; i--){\r\n\t\t\t\tlet cell = row.cells[i],\r\n\t\t\t\tallowEdit = true;\r\n\r\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\r\n\t\t\t\t\tif(typeof cell.column.modules.edit.check == \"function\"){\r\n\t\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(allowEdit){\r\n\t\t\t\t\t\tprevCell = cell;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn prevCell;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.editor !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\tcolumnDeleteCheck(column){\r\n\t\tif(this.currentCell && this.currentCell.column === column){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\trowDeleteCheck(row){\r\n\t\tif(this.currentCell && this.currentCell.row === row){\r\n\t\t\tthis.cancelEdit();\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column editor\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {\r\n\t\t\teditor:false,\r\n\t\t\tblocked:false,\r\n\t\t\tcheck:column.definition.editable,\r\n\t\t\tparams:column.definition.editorParams || {}\r\n\t\t};\r\n\r\n\t\t//set column editor\r\n\t\tswitch(typeof column.definition.editor){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(this.editors[column.definition.editor]){\r\n\t\t\t\tconfig.editor = this.editors[column.definition.editor];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.editor = column.definition.editor;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(column.definition.editor === true){\r\n\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\r\n\t\t\t\t\tif(this.editors[column.definition.formatter]){\r\n\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(config.editor){\r\n\t\t\tcolumn.modules.edit = config;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCurrentCell(){\r\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\r\n\t}\r\n\r\n\tclearEditor(cancel){\r\n\t\tvar cell = this.currentCell,\r\n\t\tcellEl;\r\n\r\n\t\tthis.invalidEdit = false;\r\n\r\n\t\tif(cell){\r\n\t\t\tthis.currentCell = false;\r\n\r\n\t\t\tcellEl = cell.getElement();\r\n\r\n\t\t\tif(cancel){\r\n\t\t\t\tif(cell.validate){\r\n\t\t\t\t\tcell.validate();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\r\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\r\n\r\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-row-editing\");\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit(){\r\n\t\tif(this.currentCell){\r\n\t\t\tvar cell = this.currentCell;\r\n\t\t\tvar component = this.currentCell.getComponent();\r\n\r\n\t\t\tthis.clearEditor(true);\r\n\t\t\tcell.setValueActual(cell.getValue());\r\n\t\t\tcell.cellRendered();\r\n\r\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\r\n\t\t\t\tcell.row.normalizeHeight(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(cell.column.definition.cellEditCancelled){\r\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a cell\r\n\tbindEditor(cell){\r\n\t\tif(cell.column.modules.edit){\r\n\t\t\tvar self = this,\r\n\t\t\telement = cell.getElement(true);\r\n\r\n\t\t\telement.setAttribute(\"tabindex\", 0);\r\n\r\n\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\r\n\t\t\t\t\telement.focus({preventScroll: true});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif (e.button === 2) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.mouseClick = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener(\"focus\", function(e){\r\n\t\t\t\tif(!self.recursionBlock){\r\n\t\t\t\t\tself.edit(cell, e, false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocusCellNoEvent(cell, block){\r\n\t\tthis.recursionBlock = true;\r\n\r\n\t\tif(!(block && this.table.browser === \"ie\")){\r\n\t\t\tcell.getElement().focus({preventScroll: true});\r\n\t\t}\r\n\r\n\t\tthis.recursionBlock = false;\r\n\t}\r\n\r\n\teditCell(cell, forceEdit){\r\n\t\tthis.focusCellNoEvent(cell);\r\n\t\tthis.edit(cell, false, forceEdit);\r\n\t}\r\n\r\n\tfocusScrollAdjust(cell){\r\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\r\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\r\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\r\n\t\t\trowEl = cell.row.getElement(),\r\n\t\t\toffset = rowEl.offsetTop;\r\n\r\n\t\t\tif(rowEl.offsetTop < topEdge){\r\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\r\n\t\t\t}else{\r\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\r\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\r\n\t\t\tcellEl = cell.getElement(),\r\n\t\t\toffset = cellEl.offsetLeft;\r\n\r\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\r\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\r\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\r\n\t\t\t}\r\n\r\n\t\t\tif(cellEl.offsetLeft < leftEdge){\r\n\r\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\r\n\t\t\t}else{\r\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\r\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tedit(cell, e, forceEdit){\r\n\t\tvar self = this,\r\n\t\tallowEdit = true,\r\n\t\trendered = function(){},\r\n\t\telement = cell.getElement(),\r\n\t\tcellEditor, component, params;\r\n\r\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\r\n\t\tif(this.currentCell){\r\n\t\t\tif(!this.invalidEdit){\r\n\t\t\t\tthis.cancelEdit();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tvar valid = true;\r\n\r\n\t\t\t\tif(cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\"){\r\n\t\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\r\n\t\t\t\t\tself.clearEditor();\r\n\r\n\r\n\t\t\t\t\tif(!cell.modules.edit){\r\n\t\t\t\t\t\tcell.modules.edit = {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.modules.edit.edited = true;\r\n\r\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\r\n\t\t\t\t\t\tself.editedCells.push(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcell.setValue(value, true);\r\n\r\n\t\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(valid !== true){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.invalidEdit = true;\r\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\r\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\r\n\t\t\t\t\trendered();\r\n\t\t\t\t\tself.table.externalEvents.dispatch(\"validationFailed\", cell.getComponent(), value, valid);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){\r\n\t\t\tif(self.currentCell === cell){\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tif(self.table.options.dataTree && self.table.modExists(\"dataTree\")){\r\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\trendered = callback;\r\n\t\t}\r\n\r\n\t\tif(!cell.column.modules.edit.blocked){\r\n\t\t\tif(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tswitch(typeof cell.column.modules.edit.check){\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(allowEdit || forceEdit){\r\n\r\n\t\t\t\tself.cancelEdit();\r\n\r\n\t\t\t\tself.currentCell = cell;\r\n\r\n\t\t\t\tthis.focusScrollAdjust(cell);\r\n\r\n\t\t\t\tcomponent = cell.getComponent();\r\n\r\n\t\t\t\tif(this.mouseClick){\r\n\t\t\t\t\tthis.mouseClick = false;\r\n\r\n\t\t\t\t\tif(cell.column.definition.cellClick){\r\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(cell.column.definition.cellEditing){\r\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\r\n\r\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\r\n\r\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\r\n\r\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\r\n\t\t\t\tif(cellEditor !== false){\r\n\r\n\t\t\t\t\tif(cellEditor instanceof Node){\r\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\r\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\r\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\t\t\t\t\telement.appendChild(cellEditor);\r\n\r\n\t\t\t\t\t\t//trigger onRendered Callback\r\n\t\t\t\t\t\trendered();\r\n\r\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\r\n\t\t\t\t\t\tvar children = element.children;\r\n\r\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\r\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\r\n\t\t\t\t\t\telement.blur();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.mouseClick = false;\r\n\t\t\t\telement.blur();\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.mouseClick = false;\r\n\t\t\telement.blur();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetEditedCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.editedCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearEdited(cell){\r\n\t\tvar editIndex;\r\n\r\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\r\n\t\t\tcell.modules.edit.edited = false;\r\n\r\n\t\t\tif(cell.modules.validate){\r\n\t\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teditIndex = this.editedCells.indexOf(cell);\r\n\r\n\t\tif(editIndex > -1){\r\n\t\t\tthis.editedCells.splice(editIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEdit.moduleName = \"edit\";\r\n\r\n//load defaults\r\nEdit.editors = defaultEditors;\r\n\r\n\r\nexport default Edit;","class ExportRow{\r\n\tconstructor(type, columns, component, indent){\r\n\t\tthis.type = type;\r\n\t\tthis.columns = columns;\r\n\t\tthis.component = component || false;\r\n\t\tthis.indent = indent || 0;\r\n\t}\r\n}\r\n\r\nexport default ExportRow;","class ExportColumn{\r\n\tconstructor(value, component, width, height, depth){\r\n\t\tthis.value = value;\r\n\t\tthis.component = component || false;\r\n\t\tthis.width = width;\r\n\t\tthis.height = height;\r\n\t\tthis.depth = depth;\r\n\t}\r\n}\r\n\r\nexport default ExportColumn;","import Module from '../../core/Module.js';\r\n\r\nimport ExportRow from './ExportRow.js';\r\nimport ExportColumn from './ExportColumn.js';\r\n\r\nclass Export extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.config = {};\r\n\t\tthis.cloneTableStyle = true;\r\n\t\tthis.colVisProp = \"\";\r\n\r\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html outypu config\r\n\r\n\t\tthis.registerColumnOption(\"htmlOutput\");\r\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tgenerateExportList(config, style, range, colVisProp){\r\n\t\tthis.cloneTableStyle = style;\r\n\t\tthis.config = config || {};\r\n\t\tthis.colVisProp = colVisProp;\r\n\r\n\t\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\r\n\t\tvar body = this.bodyToExportRows(this.rowLookup(range));\r\n\r\n\t\treturn headers.concat(body);\r\n\t}\r\n\r\n\tgenereateTable(config, style, range, colVisProp){\r\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\r\n\r\n\t\treturn this.genereateTableElement(list);\r\n\t}\r\n\r\n\trowLookup(range){\r\n\t\tvar rows = [];\r\n\r\n\t\tif(typeof range == \"function\"){\r\n\t\t\trange.call(this.table).forEach((row) =>{\r\n\t\t\t\trow = this.table.rowManager.findRow(row);\r\n\r\n\t\t\t\tif(row){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tswitch(range){\r\n\t\t\t\tcase true:\r\n\t\t\t\tcase \"visible\":\r\n\t\t\t\trows = this.table.rowManager.getVisibleRows(true);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\trows = this.table.rowManager.rows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"selected\":\r\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"active\":\r\n\t\t\t\tdefault:\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Object.assign([], rows);\r\n\t}\r\n\r\n\tgenerateColumnGroupHeaders(){\r\n\t\tvar output = [];\r\n\r\n\t\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar colData = this.processColumnGroup(column);\r\n\r\n\t\t\tif(colData){\r\n\t\t\t\toutput.push(colData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprocessColumnGroup(column){\r\n\t\tvar subGroups = column.columns,\r\n\t\tmaxDepth = 0,\r\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\r\n\r\n\t\tvar groupData = {\r\n\t\t\ttitle:title,\r\n\t\t\tcolumn:column,\r\n\t\t\tdepth:1,\r\n\t\t};\r\n\r\n\t\tif(subGroups.length){\r\n\t\t\tgroupData.subGroups = [];\r\n\t\t\tgroupData.width = 0;\r\n\r\n\t\t\tsubGroups.forEach((subGroup) => {\r\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\r\n\r\n\t\t\t\tif(subGroupData){\r\n\t\t\t\t\tgroupData.width += subGroupData.width;\r\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\r\n\r\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\r\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tgroupData.depth += maxDepth;\r\n\r\n\t\t\tif(!groupData.width){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.columnVisCheck(column)){\r\n\t\t\t\tgroupData.width = 1;\r\n\t\t\t}else{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn groupData;\r\n\t}\r\n\r\n\tcolumnVisCheck(column){\r\n\t\treturn column.definition[this.colVisProp] !== false && (column.visible || (!column.visible && column.definition[this.colVisProp]));\r\n\t}\r\n\r\n\theadersToExportRows(columns){\r\n\t\tvar headers = [],\r\n\t\theaderDepth = 0,\r\n\t\texportRows = [];\r\n\r\n\t\tfunction parseColumnGroup(column, level){\r\n\r\n\t\t\tvar depth = headerDepth - level;\r\n\r\n\t\t\tif(typeof headers[level] === \"undefined\"){\r\n\t\t\t\theaders[level] = [];\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\r\n\r\n\t\t\theaders[level].push(column);\r\n\r\n\t\t\tif(column.height > 1){\r\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\r\n\r\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\r\n\t\t\t\t\t\theaders[level + i] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theaders[level + i].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.width > 1){\r\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\r\n\t\t\t\t\theaders[level].push(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(column.subGroups){\r\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\r\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//calculate maximum header debth\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tif(column.depth > headerDepth){\r\n\t\t\t\theaderDepth = column.depth;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tparseColumnGroup(column,0);\r\n\t\t});\r\n\r\n\t\theaders.forEach((header) => {\r\n\t\t\tvar columns = [];\r\n\r\n\t\t\theader.forEach((col) => {\r\n\t\t\t\tif(col){\r\n\t\t\t\t\tcolumns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumns.push(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tbodyToExportRows(rows){\r\n\r\n\t\tvar columns = [];\r\n\t\tvar exportRows = [];\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tif (this.columnVisCheck(column)) {\r\n\t\t\t\tcolumns.push(column.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\r\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\r\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn this.config.rowGroups !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\treturn this.config.columnCalcs !== false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\trows.forEach((row, i) => {\r\n\t\t\tvar rowData = row.getData(this.colVisProp);\r\n\t\t\tvar exportCols = [];\r\n\t\t\tvar indent = 0;\r\n\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tindent = row.level;\r\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\" :\r\n\t\t\t\tcase \"row\" :\r\n\t\t\t\tcolumns.forEach((col) => {\r\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tindent = row.modules.dataTree.index;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\r\n\t\t});\r\n\r\n\t\treturn exportRows;\r\n\t}\r\n\r\n\tgenereateTableElement(list){\r\n\t\tvar table = document.createElement(\"table\"),\r\n\t\theaderEl = document.createElement(\"thead\"),\r\n\t\tbodyEl = document.createElement(\"tbody\"),\r\n\t\tstyles = this.lookupTableStyles(),\r\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\r\n\t\tsetup = {};\r\n\r\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\r\n\r\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\r\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\r\n\t\t}\r\n\r\n\t\t//assign group header formatter\r\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\r\n\r\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\r\n\t\t\tsetup.groupHeader = [setup.groupHeader];\r\n\t\t}\r\n\r\n\t\ttable.classList.add(\"tabulator-print-table\");\r\n\r\n\t\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\r\n\t\tif(list.length > 1000){\r\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\r\n\t\t}\r\n\r\n\t\tlist.forEach((row, i) => {\r\n\t\t\tswitch(row.type){\r\n\t\t\t\tcase \"header\":\r\n\t\t\t\theaderEl.appendChild(this.genereateHeaderElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateGroupElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"calc\":\r\n\t\t\t\tbodyEl.appendChild(this.genereateCalcElement(row, setup, styles));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"row\":\r\n\t\t\t\tlet rowEl = this.genereateRowElement(row, setup, styles);\r\n\t\t\t\tthis.mapElementStyles(((i % 2) && styles.evenRow) ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\t\t\tbodyEl.appendChild(rowEl);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(headerEl.innerHTML){\r\n\t\t\ttable.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\ttable.appendChild(bodyEl);\r\n\r\n\r\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\r\n\t\treturn table;\r\n\t}\r\n\r\n\tlookupTableStyles(){\r\n\t\tvar styles = {};\r\n\r\n\t\t//lookup row styles\r\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\r\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\r\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\r\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\r\n\r\n\t\t\tif(styles.firstRow){\r\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\r\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\r\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tgenereateHeaderElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trow.columns.forEach((column) => {\r\n\t\t\tif(column){\r\n\t\t\t\tvar cellEl = document.createElement(\"th\");\r\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tcellEl.colSpan = column.width;\r\n\t\t\t\tcellEl.rowSpan = column.height;\r\n\r\n\t\t\t\tcellEl.innerHTML = column.value;\r\n\r\n\t\t\t\tif(this.cloneTableStyle){\r\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\t\t\t\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\t\t\tif(column.component._column.visible){\r\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.component._column.definition.width){\r\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.component._column.parent){\r\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateGroupElement(row, setup, styles){\r\n\r\n\t\tvar rowEl = document.createElement(\"tr\"),\r\n\t\tcellEl = document.createElement(\"td\"),\r\n\t\tgroup = row.columns[0];\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\r\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t}else{\r\n\t\t\tif(setup.groupHeader === false){\r\n\t\t\t\tgroup.value = group.value;\r\n\t\t\t}else{\r\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcellEl.colSpan = group.width;\r\n\t\tcellEl.innerHTML = group.value;\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\r\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\r\n\r\n\t\tif(group.component.isVisible()){\r\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\r\n\r\n\t\trowEl.appendChild(cellEl);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateCalcElement(row, setup, styles){\r\n\t\tvar rowEl = this.genereateRowElement(row, setup, styles);\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\r\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateRowElement(row, setup, styles){\r\n\t\tvar rowEl = document.createElement(\"tr\");\r\n\r\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\r\n\r\n\t\trow.columns.forEach((col) => {\r\n\r\n\t\t\tif(col){\r\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\r\n\t\t\t\tcolumn = col.component._column,\r\n\t\t\t\tvalue = col.value;\r\n\r\n\t\t\t\tvar cellWrapper = {\r\n\t\t\t\t\tmodules:{},\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn cellEl;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\treturn row.component.getData();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn row.component;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetComponent:function(){\r\n\t\t\t\t\t\treturn cellWrapper;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\r\n\r\n\t\t\t\tclassNames.forEach(function(className) {\r\n\t\t\t\t\tcellEl.classList.add(className);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\r\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\t\tcase \"null\":\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value instanceof Node){\r\n\t\t\t\t\tcellEl.appendChild(value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcellEl.innerHTML = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(styles.firstCell){\r\n\t\t\t\t\tthis.mapElementStyles(styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\r\n\r\n\t\t\t\t\tif(column.definition.align){\r\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\r\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\r\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowEl.appendChild(cellEl);\r\n\r\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\r\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(setup.rowFormatter && this.config.formatCells !== false){\r\n\t\t\t\t\tsetup.rowFormatter(row.component);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn rowEl;\r\n\t}\r\n\r\n\tgenereateHTMLTable(list){\r\n\t\tvar holder = document.createElement(\"div\");\r\n\r\n\t\tholder.appendChild(this.genereateTableElement(list));\r\n\r\n\t\treturn holder.innerHTML;\r\n\t}\r\n\r\n\tgetHtml(visible, style, config, colVisProp){\r\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\r\n\r\n\t\treturn this.genereateHTMLTable(list);\r\n\t}\r\n\r\n\tmapElementStyles(from, to, props){\r\n\t\tif(this.cloneTableStyle && from && to){\r\n\r\n\t\t\tvar lookup = {\r\n\t\t\t\t\"background-color\" : \"backgroundColor\",\r\n\t\t\t\t\"color\" : \"fontColor\",\r\n\t\t\t\t\"width\" : \"width\",\r\n\t\t\t\t\"font-weight\" : \"fontWeight\",\r\n\t\t\t\t\"font-family\" : \"fontFamily\",\r\n\t\t\t\t\"font-size\" : \"fontSize\",\r\n\t\t\t\t\"text-align\" : \"textAlign\",\r\n\t\t\t\t\"border-top\" : \"borderTop\",\r\n\t\t\t\t\"border-left\" : \"borderLeft\",\r\n\t\t\t\t\"border-right\" : \"borderRight\",\r\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\r\n\t\t\t\t\"padding-top\" : \"paddingTop\",\r\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\r\n\t\t\t\t\"padding-right\" : \"paddingRight\",\r\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\r\n\t\t\t};\r\n\r\n\t\t\tif(window.getComputedStyle){\r\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\r\n\r\n\t\t\t\tprops.forEach(function(prop){\r\n\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nExport.moduleName = \"export\";\r\n\r\nexport default Export;\r\n","export default {\r\n\r\n\t//equal to\r\n\t\"=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal == filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than\r\n\t\"<\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal < filterVal ? true : false;\r\n\t},\r\n\r\n\t//less than or equal to\r\n\t\"<=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal <= filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than\r\n\t\">\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal > filterVal ? true : false;\r\n\t},\r\n\r\n\t//greater than or equal to\r\n\t\">=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal >= filterVal ? true : false;\r\n\t},\r\n\r\n\t//not equal to\r\n\t\"!=\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\treturn rowVal != filterVal ? true : false;\r\n\t},\r\n\r\n\t\"regex\":function(filterVal, rowVal, rowData, filterParams){\r\n\r\n\t\tif(typeof filterVal == \"string\"){\r\n\t\t\tfilterVal = new RegExp(filterVal);\r\n\t\t}\r\n\r\n\t\treturn filterVal.test(rowVal);\r\n\t},\r\n\r\n\t//contains the string\r\n\t\"like\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//contains the keywords\r\n\t\"keywords\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\r\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\r\n\t\tmatches = [];\r\n\r\n\t\tkeywords.forEach((keyword) =>{\r\n\t\t\tif(value.includes(keyword)){\r\n\t\t\t\tmatches.push(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\r\n\t},\r\n\r\n\t//starts with the string\r\n\t\"starts\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//ends with the string\r\n\t\"ends\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(filterVal === null || typeof filterVal === \"undefined\"){\r\n\t\t\treturn rowVal === filterVal ? true : false;\r\n\t\t}else{\r\n\t\t\tif(typeof rowVal !== 'undefined' && rowVal !== null){\r\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t//in array\r\n\t\"in\":function(filterVal, rowVal, rowData, filterParams){\r\n\t\tif(Array.isArray(filterVal)){\r\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFilters from './defaults/filters.js';\r\n\r\nclass Filter extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.filterList = []; //hold filter list\r\n\t\tthis.headerFilters = {}; //hold column filters\r\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\r\n\r\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.changed = false; //has filtering changed since last render\r\n\r\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\r\n\r\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\r\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\r\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\r\n\r\n\t\tthis.registerColumnOption(\"headerFilter\");\r\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\r\n\t\tthis.registerColumnOption(\"headerFilterParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\r\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\r\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\r\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\r\n\r\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\r\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\r\n\r\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\r\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\r\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\r\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\r\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tif(this.table.options.initialFilter){\r\n\t\t\tthis.setFilter(this.table.options.initialFilter);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.initialHeaderFilter){\r\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\r\n\r\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tremoteFilterParams(data, config, silent, params){\r\n\t\tparams.filter = this.getFilters(true, true);\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t//set standard filters\r\n\tuserSetFilter(field, type, value, params){\r\n\t\tthis.setFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//set standard filters\r\n\tuserRefreshFilter(){\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//add filter to array\r\n\tuserAddFilter(field, type, value, params){\r\n\t\tthis.addFilter(field, type, value, params);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\tuserSetHeaderFilterFocus(field){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterFocus(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetHeaderFilterValue(field) {\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn this.getHeaderFilterValue(column);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t}\r\n\t}\r\n\r\n\tuserSetHeaderFilterValue(field, value){\r\n\t\tvar column = this.table.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tthis.setHeaderFilterValue(column, value);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tuserRemoveFilter(field, type, value){\r\n\t\tthis.removeFilter(field, type, value);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear filters\r\n\tuserClearFilter(all){\r\n\t\tthis.clearFilter(all);\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tuserClearHeaderFilter(){\r\n\t\tthis.clearHeaderFilter();\r\n\t\tthis.refreshFilter();\r\n\t}\r\n\r\n\r\n\t//search for specific row components\r\n\tsearchRows(field, type, value){\r\n\t\treturn this.search(\"rows\", field, type, value);\r\n\t}\r\n\r\n\t//search for specific data\r\n\tsearchData(field, type, value){\r\n\t\treturn this.search(\"data\", field, type, value);\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnHeaderFilter(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerFilter){\r\n\r\n\t\t\tif(typeof def.headerFilterPlaceholder !== \"undefined\" && def.field){\r\n\t\t\t\tthis.module(\"localize\").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\r\n\t\t\t}\r\n\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//initialize column header filter\r\n\tinitializeColumn(column, value){\r\n\t\tvar self = this,\r\n\t\tfield = column.getField(),\r\n\t\tparams;\r\n\r\n\t\t//handle successfull value change\r\n\t\tfunction success(value){\r\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\r\n\t\t\ttype = \"\",\r\n\t\t\tfilterChangeCheck = \"\",\r\n\t\t\tfilterFunc;\r\n\r\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\r\n\r\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\r\n\r\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\r\n\t\t\t\t\tcolumn.modules.filter.value = value;\r\n\r\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\r\n\t\t\t\t\t\tcase \"string\":\r\n\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\r\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\r\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\r\n\r\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttype = filterFunc;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!filterFunc){\r\n\t\t\t\t\t\tswitch(filterType){\r\n\t\t\t\t\t\t\tcase \"partial\":\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\r\n\r\n\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\r\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"like\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\ttype = \"=\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type, params:params || {}};\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdelete self.headerFilters[field];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\r\n\r\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\r\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\r\n\r\n\t\t\t\t\tself.trackChanges();\r\n\t\t\t\t\tself.refreshFilter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.filter = {\r\n\t\t\tsuccess:success,\r\n\t\t\tattrType:false,\r\n\t\t\ttagType:false,\r\n\t\t\temptyFunc:false,\r\n\t\t};\r\n\r\n\t\tthis.generateHeaderFilterElement(column);\r\n\t}\r\n\r\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\r\n\t\tvar self = this,\r\n\t\tsuccess = column.modules.filter.success,\r\n\t\tfield = column.getField(),\r\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;\r\n\r\n\t\t//handle aborted edit\r\n\t\tfunction cancel(){}\r\n\r\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\r\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\r\n\t\t}\r\n\r\n\t\tif(field){\r\n\r\n\t\t\t//set empty value function\r\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\r\n\t\t\t\treturn !value && value !== \"0\" && value !== 0;\r\n\t\t\t};\r\n\r\n\t\t\tfilterElement = document.createElement(\"div\");\r\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\r\n\r\n\t\t\t//set column editor\r\n\t\t\tswitch(typeof column.definition.headerFilter){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\r\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\r\n\r\n\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\teditor = column.definition.headerFilter;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\r\n\t\t\t\t\teditor = column.modules.edit.editor;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\r\n\r\n\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\r\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\r\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(editor){\r\n\r\n\t\t\t\tcellWrapper = {\r\n\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetField:function(){\r\n\t\t\t\t\t\treturn column.definition.field;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\treturn filterElement;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tnormalizeHeight:function(){\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tparams = column.definition.headerFilterParams || {};\r\n\r\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\r\n\r\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);\r\n\r\n\t\t\t\tif(!editorElement){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!(editorElement instanceof Node)){\r\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//set Placeholder Text\r\n\t\t\t\tif(field){\r\n\t\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.langText(\"headerFilters|default\"));\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tself.langBind(\"headerFilters|default\", function(value){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"placeholder\", value);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//focus on element on click\r\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\teditorElement.focus();\r\n\t\t\t\t});\r\n\r\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\r\n\t\t\t\t\tvar left = this.table.columnManager.element.scrollLeft;\r\n\r\n\t\t\t\t\tif(left !== this.table.rowManager.element.scrollLeft){\r\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//live update filters as user types\r\n\t\t\t\ttypingTimer = false;\r\n\r\n\t\t\t\tsearchTrigger = function(e){\r\n\t\t\t\t\tif(typingTimer){\r\n\t\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttypingTimer = setTimeout(function(){\r\n\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\r\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\r\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\r\n\r\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\r\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\r\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\r\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\r\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\r\n\r\n\r\n\t\t\t\t\t//update number filtered columns on change\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\r\n\t\t\t\t\t\t\tsuccess(editorElement.value);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\r\n\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\r\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\r\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\r\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\r\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",function(e){\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilterElement.appendChild(editorElement);\r\n\r\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\r\n\r\n\t\t\t\tif(!reinitialize){\r\n\t\t\t\t\tself.headerFilterColumns.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\r\n\t\t}\r\n\t}\r\n\r\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\thideHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\r\n\tshowHeaderFilterElements(){\r\n\t\tthis.headerFilterColumns.forEach(function(column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//programatically set focus of header filter\r\n\tsetHeaderFilterFocus(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\tcolumn.modules.filter.headerElement.focus();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programmatically get value of header filter\r\n\tgetHeaderFilterValue(column){\r\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\treturn column.modules.filter.headerElement.value;\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t}\r\n\t}\r\n\r\n\t//programatically set value of header filter\r\n\tsetHeaderFilterValue(column, value){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\r\n\t\t\t\tcolumn.modules.filter.success(value);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treloadHeaderFilter(column){\r\n\t\tif (column){\r\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\r\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trefreshFilter(){\r\n\t\tif(this.table.options.filterMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\ttrackChanges(){\r\n\t\tthis.changed = true;\r\n\t\tthis.dispatch(\"filter-changed\");\r\n\t}\r\n\r\n\t//check if the filters has changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//set standard filters\r\n\tsetFilter(field, type, value, params){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tthis.addFilter(field);\r\n\t}\r\n\r\n\t//add filter to array\r\n\taddFilter(field, type, value, params){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tthis.filterList.push(filter);\r\n\t\t\t\tthis.changed = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.trackChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tfindFilter(filter){\r\n\t\tvar column;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\treturn this.findSubFilters(filter);\r\n\t\t}\r\n\r\n\t\tvar filterFunc = false;\r\n\r\n\t\tif(typeof filter.field == \"function\"){\r\n\t\t\tfilterFunc = function(data){\r\n\t\t\t\treturn filter.field(data, filter.type || {})// pass params to custom filter function\r\n\t\t\t};\r\n\t\t}else{\r\n\r\n\t\t\tif(Filter.filters[filter.type]){\r\n\r\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfilterFunc = function(data){\r\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfilter.func = filterFunc;\r\n\r\n\t\treturn filter.func ? filter : false;\r\n\t}\r\n\r\n\tfindSubFilters(filters){\r\n\t\tvar output = [];\r\n\r\n\t\tfilters.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\toutput.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : false;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetFilters(all, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tif(all){\r\n\t\t\toutput = this.getHeaderFilters();\r\n\t\t}\r\n\r\n\t\tif(ajax){\r\n\t\t\toutput.forEach(function(item){\r\n\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//filter to Object\r\n\tfiltersToArray(filterList, ajax){\r\n\t\tvar output = [];\r\n\r\n\t\tfilterList.forEach((filter) => {\r\n\t\t\tvar item;\r\n\r\n\t\t\tif(Array.isArray(filter)){\r\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\r\n\t\t\t}else{\r\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value}\r\n\r\n\t\t\t\tif(ajax){\r\n\t\t\t\t\tif(typeof item.type == \"function\"){\r\n\t\t\t\t\t\titem.type = \"function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get all filters\r\n\tgetHeaderFilters(){\r\n\t\tvar output = [];\r\n\r\n\t\tfor(var key in this.headerFilters){\r\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//remove filter from array\r\n\tremoveFilter(field, type, value){\r\n\t\tvar changed = false;\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tvar index = -1;\r\n\r\n\t\t\tif(typeof filter.field == \"object\"){\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter === element;\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.filterList.findIndex((element) => {\r\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.filterList.splice(index, 1);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear filters\r\n\tclearFilter(all){\r\n\t\tthis.filterList = [];\r\n\r\n\t\tif(all){\r\n\t\t\tthis.clearHeaderFilter();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//clear header filters\r\n\tclearHeaderFilter(){\r\n\t\tthis.headerFilters = {};\r\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\r\n\r\n\t\tthis.headerFilterColumns.forEach((column) => {\r\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\r\n\t\t\t\tdelete column.modules.filter.value;\r\n\t\t\t}\r\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\r\n\t\t\tthis.reloadHeaderFilter(column);\r\n\t\t});\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//search data and return matching rows\r\n\tsearch (searchType, field, type, value){\r\n\t\tvar activeRows = [],\r\n\t\tfilterList = [];\r\n\r\n\t\tif(!Array.isArray(field)){\r\n\t\t\tfield = [{field:field, type:type, value:value}];\r\n\t\t}\r\n\r\n\t\tfield.forEach((filter) => {\r\n\t\t\tfilter = this.findFilter(filter);\r\n\r\n\t\t\tif(filter){\r\n\t\t\t\tfilterList.push(filter);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\tvar match = true;\r\n\r\n\t\t\tfilterList.forEach((filter) => {\r\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter row array\r\n\tfilter(rowList, filters){\r\n\t\tvar activeRows = [],\r\n\t\tactiveRowComponents = [];\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\r\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters());\r\n\t\t}\r\n\r\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\r\n\r\n\t\t\trowList.forEach((row) => {\r\n\t\t\t\tif(this.filterRow(row)){\r\n\t\t\t\t\tactiveRows.push(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tactiveRows = rowList.slice(0);\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\r\n\r\n\t\t\tactiveRows.forEach((row) => {\r\n\t\t\t\tactiveRowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(), activeRowComponents);\r\n\t\t}\r\n\r\n\t\treturn activeRows;\r\n\t}\r\n\r\n\t//filter individual row\r\n\tfilterRow(row, filters){\r\n\t\tvar match = true,\r\n\t\tdata = row.getData();\r\n\r\n\t\tthis.filterList.forEach((filter) => {\r\n\t\t\tif(!this.filterRecurse(filter, data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tfor(var field in this.headerFilters){\r\n\t\t\tif(!this.headerFilters[field].func(data)){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tfilterRecurse(filter, data){\r\n\t\tvar match = false;\r\n\r\n\t\tif(Array.isArray(filter)){\r\n\t\t\tfilter.forEach((subFilter) => {\r\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\r\n\t\t\t\t\tmatch = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tmatch = filter.func(data);\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n}\r\n\r\nFilter.moduleName = \"filter\";\r\n\r\n//load defaults\r\nFilter.filters = defaultFilters;\r\n\r\nexport default Filter;","export default function(cell, formatterParams, onRendered){\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","import plaintext from './formatters/plaintext.js';\r\nimport html from './formatters/html.js';\r\nimport textarea from './formatters/textarea.js';\r\nimport money from './formatters/money.js';\r\nimport link from './formatters/link.js';\r\nimport image from './formatters/image.js';\r\nimport tickCross from './formatters/tickCross.js';\r\nimport datetime from './formatters/datetime.js';\r\nimport datetimediff from './formatters/datetimediff.js';\r\nimport lookup from './formatters/lookup.js';\r\nimport star from './formatters/star.js';\r\nimport traffic from './formatters/traffic.js';\r\nimport progress from './formatters/progress.js';\r\nimport color from './formatters/color.js';\r\nimport buttonTick from './formatters/buttonTick.js';\r\nimport buttonCross from './formatters/buttonCross.js';\r\nimport rownum from './formatters/rownum.js';\r\nimport handle from './formatters/handle.js';\r\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\r\nimport rowSelection from './formatters/rowSelection.js';\r\n\r\nexport default {\r\n\tplaintext:plaintext,\r\n\thtml:html,\r\n\ttextarea:textarea,\r\n\tmoney:money,\r\n\tlink:link,\r\n\timage:image,\r\n\ttickCross:tickCross,\r\n\tdatetime:datetime,\r\n\tdatetimediff:datetimediff,\r\n\tlookup:lookup,\r\n\tstar:star,\r\n\ttraffic:traffic,\r\n\tprogress:progress,\r\n\tcolor:color,\r\n\tbuttonTick:buttonTick,\r\n\tbuttonCross:buttonCross,\r\n\trownum:rownum,\r\n\thandle:handle,\r\n\tresponsiveCollapse:responsiveCollapse,\r\n\trowSelection:rowSelection,\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn cell.getValue();\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\r\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar floatVal = parseFloat(cell.getValue()),\r\n\tnumber, integer, decimal, rgx;\r\n\r\n\tvar decimalSym = formatterParams.decimal || \".\";\r\n\tvar thousandSym = formatterParams.thousand || \",\";\r\n\tvar symbol = formatterParams.symbol || \"\";\r\n\tvar after = !!formatterParams.symbolAfter;\r\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\r\n\r\n\tif(isNaN(floatVal)){\r\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\r\n\t}\r\n\r\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\r\n\tnumber = String(number).split(\".\");\r\n\r\n\tinteger = number[0];\r\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\r\n\r\n\trgx = /(\\d+)(\\d{3})/;\r\n\r\n\twhile (rgx.test(integer)){\r\n\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\r\n\t}\r\n\r\n\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\turlPrefix = formatterParams.urlPrefix || \"\",\r\n\tdownload = formatterParams.download,\r\n\tlabel = value,\r\n\tel = document.createElement(\"a\"),\r\n\tdata;\r\n\r\n\tif(formatterParams.labelField){\r\n\t\tdata = cell.getData();\r\n\t\tlabel = data[formatterParams.labelField];\r\n\t}\r\n\r\n\tif(formatterParams.label){\r\n\t\tswitch(typeof formatterParams.label){\r\n\t\t\tcase \"string\":\r\n\t\t\tlabel = formatterParams.label;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tlabel = formatterParams.label(cell);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(label){\r\n\t\tif(formatterParams.urlField){\r\n\t\t\tdata = cell.getData();\r\n\t\t\tvalue = data[formatterParams.urlField];\r\n\t\t}\r\n\r\n\t\tif(formatterParams.url){\r\n\t\t\tswitch(typeof formatterParams.url){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tvalue = formatterParams.url;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tvalue = formatterParams.url(cell);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.setAttribute(\"href\", urlPrefix + value);\r\n\r\n\t\tif(formatterParams.target){\r\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\r\n\t\t}\r\n\r\n\t\tif(formatterParams.download){\r\n\r\n\t\t\tif(typeof download == \"function\"){\r\n\t\t\t\tdownload = download(cell);\r\n\t\t\t}else{\r\n\t\t\t\tdownload = download === true ? \"\" : download;\r\n\t\t\t}\r\n\r\n\t\t\tel.setAttribute(\"download\", download);\r\n\t\t}\r\n\r\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\r\n\r\n\t\treturn el;\r\n\t}else{\r\n\t\treturn \" \";\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar el = document.createElement(\"img\"),\r\n\tsrc = cell.getValue();\r\n\r\n\tif(formatterParams.urlPrefix){\r\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\r\n\t}\r\n\r\n\tif(formatterParams.urlSuffix){\r\n\t\tsrc = src + formatterParams.urlSuffix;\r\n\t}\r\n\r\n\tel.setAttribute(\"src\", src);\r\n\r\n\tswitch(typeof formatterParams.height){\r\n\t\tcase \"number\":\r\n\t\tel.style.height = formatterParams.height + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.height = formatterParams.height;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tswitch(typeof formatterParams.width){\r\n\t\tcase \"number\":\r\n\t\tel.style.width = formatterParams.width + \"px\";\r\n\t\tbreak;\r\n\r\n\t\tcase \"string\":\r\n\t\tel.style.width = formatterParams.width;\r\n\t\tbreak;\r\n\t}\r\n\r\n\tel.addEventListener(\"load\", function(){\r\n\t\tcell.getRow().normalizeHeight();\r\n\t});\r\n\r\n\treturn el;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tempty = formatterParams.allowEmpty,\r\n\ttruthy = formatterParams.allowTruthy,\r\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\r\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\r\n\r\n\tif((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")){\r\n\t\telement.setAttribute(\"aria-checked\", true);\r\n\t\treturn tick || \"\";\r\n\t}else{\r\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\r\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\r\n\t\t\treturn \"\";\r\n\t\t}else{\r\n\t\t\telement.setAttribute(\"aria-checked\", false);\r\n\t\t\treturn cross || \"\";\r\n\t\t}\r\n\t}\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\r\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = (window.DateTime || luxon.DateTime).fromFormat(value, inputFormat);\r\n\r\n\t\tif(newDatetime.isValid){\r\n\r\n\t\t\tif(formatterParams.timezone){\r\n\t\t\t\tnewDatetime = newDatetime.shiftTimezone(formatterParams.timezone);\r\n\t\t\t}\r\n\r\n\t\t\treturn newDatetime.toFormat(outputFormat);\r\n\t\t}else{\r\n\r\n\t\t\tif(invalid === true){\r\n\t\t\t\treturn value;\r\n\t\t\t}else if(typeof invalid === \"function\"){\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t}else{\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\r\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\r\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\r\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\r\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\r\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\r\n\tvar value = cell.getValue();\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\tvar newDatetime = DT.fromFormat(value, inputFormat);\r\n\r\n\t\tif (newDatetime.isValid){\r\n\t\t\tif(humanize){\r\n\t\t\t\t// return moment.duration(newDatetime.diff(date)).humanize(suffix);\r\n\t\t\t}else{\r\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? \" \" + suffix : \"\");\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\tif (invalid === true) {\r\n\t\t\t\treturn value;\r\n\t\t\t} else if (typeof invalid === \"function\") {\r\n\t\t\t\treturn invalid(value);\r\n\t\t\t} else {\r\n\t\t\t\treturn invalid;\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\r\n\t}\r\n};","export default function (cell, formatterParams, onRendered) {\r\n\tvar value = cell.getValue();\r\n\r\n\tif (typeof formatterParams[value] === \"undefined\") {\r\n\t\tconsole.warn('Missing display value for ' + value);\r\n\t\treturn value;\r\n\t}\r\n\r\n\treturn formatterParams[value];\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = cell.getValue(),\r\n\telement = cell.getElement(),\r\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\r\n\tstars = document.createElement(\"span\"),\r\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\r\n\tstarActive = '',\r\n\tstarInactive = '';\r\n\r\n\t//style stars holder\r\n\tstars.style.verticalAlign = \"middle\";\r\n\r\n\t//style star\r\n\tstar.setAttribute(\"width\", \"14\");\r\n\tstar.setAttribute(\"height\", \"14\");\r\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\r\n\tstar.setAttribute(\"xml:space\", \"preserve\");\r\n\tstar.style.padding = \"0 1px\";\r\n\r\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\r\n\r\n\tvalue = Math.max(0, Math.min(value, maxStars));\r\n\r\n\tfor(var i=1;i<= maxStars;i++){\r\n\t\tvar nextStar = star.cloneNode(true);\r\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\r\n\r\n\t\tstars.appendChild(nextStar);\r\n\t}\r\n\r\n\telement.style.whiteSpace = \"nowrap\";\r\n\telement.style.overflow = \"hidden\";\r\n\telement.style.textOverflow = \"ellipsis\";\r\n\r\n\telement.setAttribute(\"aria-label\", value);\r\n\r\n\treturn stars;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\tel = document.createElement(\"span\"),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\r\n\tcolor = \"#666666\",\r\n\tpercent, percentValue;\r\n\r\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\r\n\t\treturn;\r\n\t}\r\n\r\n\tel.classList.add(\"tabulator-traffic-light\");\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set color\r\n\tswitch(typeof colors){\r\n\t\tcase \"string\":\r\n\t\tcolor = colors;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = colors(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(colors)){\r\n\t\t\tvar unit = 100 / colors.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, colors.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = colors[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tel.style.backgroundColor = color;\r\n\r\n\treturn el;\r\n};","import CellComponent from '../../../../core/cell/CellComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){ //progress bar\r\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\r\n\telement = cell.getElement(),\r\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\r\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\r\n\tlegendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\r\n\tpercent, percentValue, color, legend, legendColor, top, left, right, bottom;\r\n\r\n\t//make sure value is in range\r\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\r\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\r\n\r\n\t//workout percentage\r\n\tpercent = (max - min) / 100;\r\n\tpercentValue = Math.round((percentValue - min) / percent);\r\n\r\n\t//set bar color\r\n\tswitch(typeof formatterParams.color){\r\n\t\tcase \"string\":\r\n\t\tcolor = formatterParams.color;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tcolor = formatterParams.color(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.color)){\r\n\t\t\tvar unit = 100 / formatterParams.color.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tcolor = formatterParams.color[index];\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tdefault:\r\n\t\tcolor = \"#2DC214\";\r\n\t}\r\n\r\n\t//generate legend\r\n\tswitch(typeof formatterParams.legend){\r\n\t\tcase \"string\":\r\n\t\tlegend = formatterParams.legend;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegend = formatterParams.legend(value);\r\n\t\tbreak;\r\n\t\tcase \"boolean\":\r\n\t\tlegend = value;\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegend = false;\r\n\t}\r\n\r\n\t//set legend color\r\n\tswitch(typeof formatterParams.legendColor){\r\n\t\tcase \"string\":\r\n\t\tlegendColor = formatterParams.legendColor;\r\n\t\tbreak;\r\n\t\tcase \"function\":\r\n\t\tlegendColor = formatterParams.legendColor(value);\r\n\t\tbreak;\r\n\t\tcase \"object\":\r\n\t\tif(Array.isArray(formatterParams.legendColor)){\r\n\t\t\tvar unit = 100 / formatterParams.legendColor.length;\r\n\t\t\tvar index = Math.floor(percentValue / unit);\r\n\r\n\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\r\n\t\t\tindex = Math.max(index, 0);\r\n\t\t\tlegendColor = formatterParams.legendColor[index];\r\n\t\t}\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tlegendColor = \"#000\";\r\n\t}\r\n\r\n\telement.style.minWidth = \"30px\";\r\n\telement.style.position = \"relative\";\r\n\r\n\telement.setAttribute(\"aria-label\", percentValue);\r\n\r\n\tvar barEl = document.createElement(\"div\");\r\n\tbarEl.style.display = \"inline-block\";\r\n\tbarEl.style.position = \"absolute\";\r\n\tbarEl.style.width = percentValue + \"%\";\r\n\tbarEl.style.backgroundColor = color;\r\n\tbarEl.style.height = \"100%\";\r\n\r\n\tbarEl.setAttribute('data-max', max);\r\n\tbarEl.setAttribute('data-min', min);\r\n\r\n\tvar barContainer = document.createElement(\"div\");\r\n\tbarContainer.style.position = \"relative\";\r\n\tbarContainer.style.width = \"100%\";\r\n\tbarContainer.style.height = \"100%\";\r\n\r\n\tif(legend){\r\n\t\tvar legendEl = document.createElement(\"div\");\r\n\t\tlegendEl.style.position = \"absolute\";\r\n\t\tlegendEl.style.top = 0;\r\n\t\tlegendEl.style.left = 0;\r\n\t\tlegendEl.style.textAlign = legendAlign;\r\n\t\tlegendEl.style.width = \"100%\";\r\n\t\tlegendEl.style.color = legendColor;\r\n\t\tlegendEl.innerHTML = legend;\r\n\t}\r\n\r\n\tonRendered(function(){\r\n\r\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\r\n\t\tif(!(cell instanceof CellComponent)){\r\n\t\t\tvar holderEl = document.createElement(\"div\");\r\n\t\t\tholderEl.style.position = \"absolute\";\r\n\t\t\tholderEl.style.top = \"4px\";\r\n\t\t\tholderEl.style.bottom = \"4px\";\r\n\t\t\tholderEl.style.left = \"4px\";\r\n\t\t\tholderEl.style.right = \"4px\";\r\n\r\n\t\t\telement.appendChild(holderEl);\r\n\r\n\t\t\telement = holderEl;\r\n\t\t}\r\n\r\n\t\telement.appendChild(barContainer);\r\n\t\tbarContainer.appendChild(barEl);\r\n\r\n\t\tif(legend){\r\n\t\t\tbarContainer.appendChild(legendEl);\r\n\t\t}\r\n\t});\r\n\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\r\n\treturn \"\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn '';\r\n};","export default function(cell, formatterParams, onRendered){\r\n\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\treturn \"
\";\r\n};","export default function(cell, formatterParams, onRendered){\r\n\tvar open = false,\r\n\tel = document.createElement(\"div\"),\r\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\r\n\r\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\r\n\tel.innerHTML = \"+-\";\r\n\r\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\r\n\r\n\tfunction toggleList(isOpen){\r\n\t\tvar collapseEl = config.element;\r\n\r\n\t\tconfig.open = isOpen;\r\n\r\n\t\tif(collapseEl){\r\n\r\n\t\t\tif(config.open){\r\n\t\t\t\tel.classList.add(\"open\");\r\n\t\t\t\tcollapseEl.style.display = '';\r\n\t\t\t}else{\r\n\t\t\t\tel.classList.remove(\"open\");\r\n\t\t\t\tcollapseEl.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tel.addEventListener(\"click\", function(e){\r\n\t\te.stopImmediatePropagation();\r\n\t\ttoggleList(!config.open);\r\n\t});\r\n\r\n\ttoggleList(config.open);\r\n\r\n\treturn el;\r\n};","import RowComponent from '../../../../core/row/RowComponent.js';\r\n\r\nexport default function(cell, formatterParams, onRendered){\r\n\tvar checkbox = document.createElement(\"input\");\r\n\r\n\tcheckbox.type = 'checkbox';\r\n\r\n\tif(this.table.modExists(\"selectRow\", true)){\r\n\r\n\t\tcheckbox.addEventListener(\"click\", (e) => {\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tif(typeof cell.getRow == 'function'){\r\n\t\t\tvar row = cell.getRow();\r\n\r\n\t\t\tif(row instanceof RowComponent){\r\n\r\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\trow.toggleSelect();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\r\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\r\n\t\t\t}else{\r\n\t\t\t\tcheckbox = \"\";\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\r\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\r\n\t\t\t\t\tthis.table.deselectRow();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkbox;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultFormatters from './defaults/formatters.js';\r\n\r\nclass Format extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.registerColumnOption(\"formatter\");\r\n\t\tthis.registerColumnOption(\"formatterParams\");\r\n\r\n\t\tthis.registerColumnOption(\"formatterPrint\");\r\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\r\n\t\tthis.registerColumnOption(\"formatterClipboard\");\r\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\r\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\r\n\t\tthis.registerColumnOption(\"titleFormatter\");\r\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\r\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\r\n\t}\r\n\r\n\t//initialize column formatter\r\n\tinitializeColumn(column){\r\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\r\n\r\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\r\n\t\t}\r\n\r\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\r\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\r\n\t\t}\r\n\t}\r\n\r\n\tlookupFormatter(column, type){\r\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\r\n\t\tformatter = column.definition[\"formatter\" + type];\r\n\r\n\t\t//set column formatter\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tconfig.formatter = Format.formatters[formatter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tconfig.formatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconfig.formatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\tcellRendered(cell){\r\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\r\n\t\t\tcell.modules.format.renderedCallback();\r\n\t\t\tcell.modules.format.rendered = true;\r\n\t\t}\r\n\t}\r\n\r\n\t//return a formatted value for a column header\r\n\tformatHeader(column, title, el){\r\n\t\tvar formatter, params, onRendered, mockCell;\r\n\r\n\t\tif(column.definition.titleFormatter){\r\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\r\n\r\n\t\t\tonRendered = (callback) => {\r\n\t\t\t\tcolumn.titleFormatterRendered = callback;\r\n\t\t\t};\r\n\r\n\t\t\tmockCell = {\r\n\t\t\t\tgetValue:function(){\r\n\t\t\t\t\treturn title;\r\n\t\t\t\t},\r\n\t\t\t\tgetElement:function(){\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tparams = column.definition.titleFormatterParams || {};\r\n\r\n\t\t\tparams = typeof params === \"function\" ? params() : params;\r\n\r\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\r\n\t\t}else{\r\n\t\t\treturn title;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//return a formatted value for a cell\r\n\tformatValue(cell){\r\n\t\tvar component = cell.getComponent(),\r\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\r\n\r\n\t\tfunction onRendered(callback){\r\n\t\t\tif(!cell.modules.format){\r\n\t\t\t\tcell.modules.format = {};\r\n\t\t\t}\r\n\r\n\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\tcell.modules.format.rendered = false;\r\n\t\t}\r\n\r\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\r\n\t}\r\n\r\n\tformatExportValue(cell, type){\r\n\t\tvar formatter = cell.column.modules.format[type],\r\n\t\tparams;\r\n\r\n\t\tif(formatter){\r\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\r\n\r\n\t\t\tfunction onRendered(callback){\r\n\t\t\t\tif(!cell.modules.format){\r\n\t\t\t\t\tcell.modules.format = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcell.modules.format.renderedCallback = callback;\r\n\t\t\t\tcell.modules.format.rendered = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\r\n\r\n\t\t}else{\r\n\t\t\treturn this.formatValue(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tsanitizeHTML(value){\r\n\t\tif(value){\r\n\t\t\tvar entityMap = {\r\n\t\t\t\t'&': '&',\r\n\t\t\t\t'<': '<',\r\n\t\t\t\t'>': '>',\r\n\t\t\t\t'\"': '"',\r\n\t\t\t\t\"'\": ''',\r\n\t\t\t\t'/': '/',\r\n\t\t\t\t'`': '`',\r\n\t\t\t\t'=': '='\r\n\t\t\t};\r\n\r\n\t\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\r\n\t\t\t\treturn entityMap[s];\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\temptyToSpace(value){\r\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\r\n\t}\r\n\r\n\t//get formatter for cell\r\n\tgetFormatter(formatter){\r\n\t\tvar formatter;\r\n\r\n\t\tswitch(typeof formatter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Format.formatters[formatter]){\r\n\t\t\t\tformatter = Format.formatters[formatter]\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\r\n\t\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tformatter = formatter;\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tformatter = Format.formatters.plaintext;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn formatter;\r\n\t}\r\n}\r\n\r\nFormat.moduleName = \"format\";\r\n\r\n//load defaults\r\nFormat.formatters = defaultFormatters;\r\n\r\nexport default Format;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightPadding = 0;\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.active = false;\r\n\t\tthis.scrollEndTimer = false;\r\n\r\n\t\tthis.registerColumnOption(\"frozen\");\r\n\t}\r\n\r\n\t//reset initial state\r\n\treset(){\r\n\t\tthis.initializationMode = \"left\";\r\n\t\tthis.leftColumns = [];\r\n\t\tthis.rightColumns = [];\r\n\t\tthis.leftMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.rightMargin = 0;\r\n\t\tthis.active = false;\r\n\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = 0;\r\n\t\tthis.table.columnManager.element.style.paddingRight = 0;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"row-layout-before\", this.layoutRow.bind(this));\r\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\r\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tthis.layoutElement(cell.element, cell.column)\r\n\t}\r\n\r\n\t//initialize specific column\r\n\tinitializeColumn(column){\r\n\t\tvar config = {margin:0, edge:false};\r\n\r\n\t\tif(!column.isGroup){\r\n\r\n\t\t\tif(this.frozenCheck(column)){\r\n\r\n\t\t\t\tconfig.position = this.initializationMode;\r\n\r\n\t\t\t\tif(this.initializationMode == \"left\"){\r\n\t\t\t\t\tthis.leftColumns.push(column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.rightColumns.unshift(column);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.active = true;\r\n\r\n\t\t\t\tcolumn.modules.frozen = config;\r\n\t\t\t}else{\r\n\t\t\t\tthis.initializationMode = \"right\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfrozenCheck(column){\r\n\t\tvar frozen = false;\r\n\r\n\t\tif(column.parent.isGroup && column.definition.frozen){\r\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\r\n\t\t}\r\n\r\n\t\tif(column.parent.isGroup){\r\n\t\t\treturn this.frozenCheck(column.parent);\r\n\t\t}else{\r\n\t\t\treturn column.definition.frozen;\r\n\t\t}\r\n\r\n\t\treturn frozen;\r\n\t}\r\n\r\n\t//quick layout to smooth horizontal scrolling\r\n\tscrollHorizontal(){\r\n\t\tvar rows;\r\n\r\n\t\tif(this.active){\r\n\t\t\tclearTimeout(this.scrollEndTimer);\r\n\r\n\t\t\t//layout all rows after scroll is complete\r\n\t\t\tthis.scrollEndTimer = setTimeout(() => {\r\n\t\t\t\tthis.layout();\r\n\t\t\t}, 100);\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.layoutColumnPosition();\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate margins for rows\r\n\tcalcMargins(){\r\n\t\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\r\n\r\n\t\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\r\n\t\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\r\n\r\n\t\t//calculate right frozen columns\r\n\t\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\r\n\t}\r\n\r\n\t//layout calculation rows\r\n\tlayoutCalcRows(){\r\n\t\tif(this.table.modExists(\"columnCalcs\")){\r\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\r\n\t\t\t}\r\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\r\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//calculate column positions and layout headers\r\n\tlayoutColumnPosition(allCells){\r\n\r\n\t\tvar leftParents = [];\r\n\r\n\t\tthis.leftColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this._calcSpace(this.leftColumns, i) + this.table.columnManager.scrollLeft) + \"px\";\r\n\r\n\t\t\tif(i == this.leftColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\r\n\t\t\t\tif(!leftParents.includes(parentEl)){\r\n\t\t\t\t\tthis.layoutElement(parentEl, column);\r\n\t\t\t\t\tleftParents.push(parentEl);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column, i) => {\r\n\t\t\tcolumn.modules.frozen.margin = (this.rightPadding - this._calcSpace(this.rightColumns, i + 1)) + \"px\";\r\n\r\n\t\t\tif(i == this.rightColumns.length - 1){\r\n\t\t\t\tcolumn.modules.frozen.edge = true;\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.modules.frozen.edge = false;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif(column.parent.isGroup){\r\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\r\n\t\t\t}else{\r\n\t\t\t\tthis.layoutElement(column.getElement(), column);\r\n\t\t\t}\r\n\r\n\t\t\tif(allCells){\r\n\t\t\t\tcolumn.cells.forEach((cell) => {\r\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tgetColGroupParentElement(column){\r\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\r\n\t}\r\n\r\n\t//layout columns appropropriatly\r\n\tlayout(){\r\n\t\tvar rightMargin = 0;\r\n\r\n\t\tif(this.active){\r\n\r\n\t\t\t//calculate row padding\r\n\t\t\tthis.calcMargins();\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\"){\r\n\t\t\t\t\tthis.layoutRow(row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.layoutCalcRows();\r\n\r\n\t\t\t//calculate left columns\r\n\t\t\tthis.layoutColumnPosition(true);\r\n\r\n\t\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\trowEl.style.paddingLeft = this.leftMargin;\r\n\r\n\t\tthis.leftColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.rightColumns.forEach((column) => {\r\n\t\t\tvar cell = row.getCell(column);\r\n\r\n\t\t\tif(cell){\r\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tlayoutElement(element, column){\r\n\r\n\t\tif(column.modules.frozen){\r\n\t\t\telement.style.position = \"absolute\";\r\n\t\t\telement.style.left = column.modules.frozen.margin;\r\n\r\n\t\t\telement.classList.add(\"tabulator-frozen\");\r\n\r\n\t\t\tif(column.modules.frozen.edge){\r\n\t\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_calcSpace(columns, index){\r\n\t\tvar width = 0;\r\n\r\n\t\tfor (let i = 0; i < index; i++){\r\n\t\t\tif(columns[i].visible){\r\n\t\t\t\twidth += columns[i].getWidth();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn width;\r\n\t}\r\n}\r\n\r\nFrozenColumns.moduleName = \"frozenColumns\";\r\n\r\nexport default FrozenColumns;","import Module from '../../core/Module.js';\r\n\r\nclass FrozenRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.topElement = document.createElement(\"div\");\r\n\t\tthis.rows = [];\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.rows = [];\r\n\r\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\r\n\r\n\t\t// this.table.columnManager.element.append(this.topElement);\r\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\r\n\r\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\r\n\r\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\r\n\t}\r\n\r\n\tisRowFrozen(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\treturn index > -1;\r\n\t}\r\n\r\n\tisFrozen(){\r\n\t\treturn !!this.rows.length;\r\n\t}\r\n\r\n\t//filter frozen rows out of display data\r\n\tgetRows(rows){\r\n\t\tvar self = this,\r\n\t\tfrozen = [],\r\n\t\toutput = rows.slice(0);\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tvar index = output.indexOf(row);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\toutput.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tfreezeRow(row){\r\n\t\tif(!row.modules.frozen){\r\n\t\t\trow.modules.frozen = true;\r\n\t\t\tthis.topElement.appendChild(row.getElement());\r\n\t\t\trow.initialize();\r\n\t\t\trow.normalizeHeight();\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.rows.push(row);\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tthis.styleRows();\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tunfreezeRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(row.modules.frozen){\r\n\r\n\t\t\trow.modules.frozen = false;\r\n\r\n\t\t\tthis.detachRow(row);\r\n\r\n\t\t\tthis.table.rowManager.adjustTableSize();\r\n\r\n\t\t\tthis.refreshData(false, \"display\")\r\n\r\n\t\t\tif(this.rows.length){\r\n\t\t\t\tthis.styleRows();\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\r\n\t\t}\r\n\t}\r\n\r\n\tdetachRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar rowEl = row.getElement();\r\n\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRows(row){\r\n\t\tthis.rows.forEach((row, i) => {\r\n\t\t\tthis.table.rowManager.styleRow(row, i);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nFrozenRows.moduleName = \"frozenRows\";\r\n\r\nexport default FrozenRows;","//public group object\r\nclass GroupComponent {\r\n\tconstructor (group){\r\n\t\tthis._group = group;\r\n\t\tthis.type = \"GroupComponent\";\r\n\r\n\t\treturn new Proxy(this, {\r\n\t\t\tget: function(target, name, receiver) {\r\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\r\n\t\t\t\t\treturn target[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn target._group.table.componentFunctionBinder.handle(\"row\", target._group, name)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tgetKey(){\r\n\t\treturn this._group.key;\r\n\t}\r\n\r\n\tgetField(){\r\n\t\treturn this._group.field;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this._group.element;\r\n\t}\r\n\r\n\tgetRows(){\r\n\t\treturn this._group.getRows(true);\r\n\t}\r\n\r\n\tgetSubGroups(){\r\n\t\treturn this._group.getSubGroups(true);\r\n\t}\r\n\r\n\tgetParentGroup(){\r\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this._group.visible;\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis._group.show();\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis._group.hide();\r\n\t}\r\n\r\n\ttoggle(){\r\n\t\tthis._group.toggleVisibility();\r\n\t}\r\n\r\n\t_getSelf(){\r\n\t\treturn this._group;\r\n\t}\r\n\r\n\tgetTable(){\r\n\t\treturn this._group.groupManager.table;\r\n\t}\r\n}\r\n\r\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\r\nimport GroupComponent from './GroupComponent.js';\r\n\r\n//Group functions\r\nclass Group{\r\n\r\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\r\n\t\tthis.groupManager = groupManager;\r\n\t\tthis.parent = parent;\r\n\t\tthis.key = key;\r\n\t\tthis.level = level;\r\n\t\tthis.field = field;\r\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\r\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\r\n\t\tthis.type = \"group\"; //type of element\r\n\t\tthis.old = oldGroup;\r\n\t\tthis.rows = [];\r\n\t\tthis.groups = [];\r\n\t\tthis.groupList = [];\r\n\t\tthis.generator = generator;\r\n\t\tthis.elementContents = false;\r\n\t\tthis.height = 0;\r\n\t\tthis.outerHeight = 0;\r\n\t\tthis.initialized = false;\r\n\t\tthis.calcs = {};\r\n\t\tthis.initialized = false;\r\n\t\tthis.modules = {};\r\n\t\tthis.arrowElement = false;\r\n\r\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\r\n\r\n\t\tthis.component = null;\r\n\r\n\t\tthis.createElements();\r\n\t\tthis.addBindings();\r\n\r\n\t\tthis.createValueGroups();\r\n\t}\r\n\r\n\twipe(){\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tgroup.wipe();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.element = false;\r\n\t\t\tthis.arrowElement = false;\r\n\t\t\tthis.elementContents = false;\r\n\t\t}\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar arrow = document.createElement(\"div\");\r\n\t\tarrow.classList.add(\"tabulator-arrow\");\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-row\");\r\n\t\tthis.element.classList.add(\"tabulator-group\");\r\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\r\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\r\n\r\n\t\tthis.arrowElement = document.createElement(\"div\");\r\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\r\n\t\tthis.arrowElement.appendChild(arrow);\r\n\r\n\t\t//setup movable rows\r\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\r\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateValueGroups(){\r\n\t\tvar level = this.level + 1;\r\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\r\n\t\t\t\tthis._createGroup(value, level);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\taddBindings(){\r\n\t\tvar dblTap,\ttapHold, tap, toggleElement;\r\n\r\n\t\tif ((this.groupManager.table.options.groupContextMenu || this.groupManager.table.options.groupClickMenu) && this.groupManager.table.modExists(\"menu\")){\r\n\t\t\tthis.groupManager.table.modules.menu.initializeGroup.call(this.groupManager.table.modules.menu, this);\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTap){\r\n\t\t\ttap = false;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\ttap = true;\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(tap){\r\n\t\t\t\t\tthis.groupManager.table.options.groupTap(e, this.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttap = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupDblTap){\r\n\t\t\tdblTap = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tif(dblTap){\r\n\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\tdblTap = null;\r\n\r\n\t\t\t\t\tthis.groupManager.table.options.groupDblTap(e, this.getComponent());\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tdblTap = setTimeout(() => {\r\n\t\t\t\t\t\tclearTimeout(dblTap);\r\n\t\t\t\t\t\tdblTap = null;\r\n\t\t\t\t\t}, 300);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.groupManager.table.options.groupTapHold){\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tthis.element.addEventListener(\"touchstart\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\r\n\t\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\t\ttapHold = null;\r\n\t\t\t\t\ttap = false;\r\n\t\t\t\t\tthis.groupManager.table.options.groupTapHold(e, this.getComponent());\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t}, {passive: true});\r\n\r\n\t\t\tthis.element.addEventListener(\"touchend\", (e) => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.groupManager.table.options.groupToggleElement){\r\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\r\n\r\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\tthis.toggleVisibility();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_createGroup(groupID, level){\r\n\t\tvar groupKey = level + \"_\" + groupID;\r\n\t\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\t_addRowToGroup(row){\r\n\r\n\t\tvar level = this.level + 1;\r\n\r\n\t\tif(this.hasSubGroups){\r\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\r\n\t\t\tgroupKey = level + \"_\" + groupID;\r\n\r\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\r\n\t\t\t\tif(this.groups[groupKey]){\r\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(!this.groups[groupKey]){\r\n\t\t\t\t\tthis._createGroup(groupID, level);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_addRow(row){\r\n\t\tthis.rows.push(row);\r\n\t\trow.modules.group = this;\r\n\t}\r\n\r\n\tinsertRow(row, to, after){\r\n\t\tvar data = this.conformRowData({});\r\n\r\n\t\trow.updateData(data);\r\n\r\n\t\tvar toIndex = this.rows.indexOf(to);\r\n\r\n\t\tif(toIndex > -1){\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(after){\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trow.modules.group = this;\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.updateGroupRows(true);\r\n\t}\r\n\r\n\tscrollHeader(left){\r\n\t\tthis.arrowElement.style.marginLeft = left;\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\tchild.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tgetRowIndex(row){}\r\n\r\n\t//update row data to match grouping contraints\r\n\tconformRowData(data){\r\n\t\tif(this.field){\r\n\t\t\tdata[this.field] = this.key;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\r\n\t\t}\r\n\r\n\t\tif(this.parent){\r\n\t\t\tdata = this.parent.conformRowData(data);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tremoveRow(row){\r\n\t\tvar index = this.rows.indexOf(row);\r\n\t\tvar el = row.getElement();\r\n\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.rows.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.length){\r\n\t\t\tif(this.parent){\r\n\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t}else{\r\n\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}else{\r\n\r\n\t\t\tif(el.parentNode){\r\n\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.groupList.length){\r\n\t\t\t\tif(this.parent){\r\n\t\t\t\t\tthis.parent.removeGroup(this);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.groupManager.removeGroup(this);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetHeadersAndRows(noCalc){\r\n\t\tvar output = [];\r\n\r\n\t\toutput.push(this);\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput = output.concat(this.rows);\r\n\r\n\t\t\t\tif(!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\r\n\r\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.top){\r\n\t\t\t\t\t\t\tthis.calcs.top.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.top.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\r\n\t\t\t\t\t\tif(this.calcs.bottom){\r\n\t\t\t\t\t\t\tthis.calcs.bottom.detachElement();\r\n\t\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\r\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\r\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetData(visible, transform){\r\n\t\tvar output = [];\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(!visible || (visible && this.visible)){\r\n\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRowCount(){\r\n\t\tvar count = 0;\r\n\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\tcount += group.getRowCount();\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcount = this.rows.length;\r\n\t\t}\r\n\t\treturn count;\r\n\t}\r\n\r\n\ttoggleVisibility(){\r\n\t\tif(this.visible){\r\n\t\t\tthis.hide();\r\n\t\t}else{\r\n\t\t\tthis.show();\r\n\t\t}\r\n\t}\r\n\r\n\thide(){\r\n\t\tthis.visible = false;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\trow.detachElement();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\r\n\t}\r\n\r\n\tshow(){\r\n\t\tthis.visible = true;\r\n\r\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination){\r\n\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\r\n\t\t\tvar prev = this.getElement();\r\n\r\n\t\t\tif(this.groupList.length){\r\n\t\t\t\tthis.groupList.forEach((group) => {\r\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\r\n\r\n\t\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\t\trow.initialize();\r\n\t\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.rows.forEach((row) => {\r\n\t\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\r\n\t\t\t\t\trow.initialize();\r\n\t\t\t\t\tprev = rowEl;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\r\n\r\n\t\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\r\n\t\t}else{\r\n\t\t\tthis.groupManager.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\r\n\t}\r\n\r\n\t_visSet(){\r\n\t\tvar data = [];\r\n\r\n\t\tif(typeof this.visible == \"function\"){\r\n\r\n\t\t\tthis.rows.forEach(function(row){\r\n\t\t\t\tdata.push(row.getData());\r\n\t\t\t});\r\n\r\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\r\n\t\t}\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\t\tif(this.groupList.length){\r\n\t\t\tthis.groupList.forEach(function(group){\r\n\t\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\t\tif(result){\r\n\t\t\t\t\tmatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(this.rows.find(function(item){\r\n\t\t\t\treturn item === row;\r\n\t\t\t})){\r\n\t\t\t\tmatch = this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tgetSubGroups(component){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.groupList.forEach(function(child){\r\n\t\t\toutput.push(component ? child.getComponent() : child);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetRows(compoment){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\toutput.push(compoment ? row.getComponent() : row);\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgenerateGroupHeaderContents(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\r\n\r\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\r\n\r\n\t\tif(typeof this.elementContents === \"string\"){\r\n\t\t\tthis.element.innerHTML = this.elementContents;\r\n\t\t}else{\r\n\t\t\tthis.element.appendChild(this.elementContents);\r\n\t\t}\r\n\r\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\r\n\t}\r\n\r\n\tgetPath(path = []) {\r\n\t\tpath.unshift(this.key);\r\n\t\tif(this.parent) {\r\n\t\t\tthis.parent.getPath(path);\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\r\n\t////////////// Standard Row Functions //////////////\r\n\r\n\tgetElement(){\r\n\t\tthis.addBindingsd = false;\r\n\r\n\t\tthis._visSet();\r\n\r\n\t\tif(this.visible){\r\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\r\n\t\t}else{\r\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\r\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tthis.generateGroupHeaderContents();\r\n\r\n\t\t// this.addBindings();\r\n\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tdetachElement(){\r\n\t\tif (this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize the height of elements in the row\r\n\tnormalizeHeight(){\r\n\t\tthis.setHeight(this.element.clientHeight);\r\n\t}\r\n\r\n\tinitialize(force){\r\n\t\tif(!this.initialized || force){\r\n\t\t\tthis.normalizeHeight();\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\treinitialize(){\r\n\t\tthis.initialized = false;\r\n\t\tthis.height = 0;\r\n\r\n\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\tthis.initialize(true);\r\n\t\t}\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tif(this.height != height){\r\n\t\t\tthis.height = height;\r\n\t\t\tthis.outerHeight = this.element.offsetHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t//return rows outer height\r\n\tgetHeight(){\r\n\t\treturn this.outerHeight;\r\n\t}\r\n\r\n\tgetGroup(){\r\n\t\treturn this;\r\n\t}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n\r\n\t//////////////// Object Generation /////////////////\r\n\tgetComponent(){\r\n\t\tif(!this.component){\r\n\t\t\tthis.component = new GroupComponent(this);\r\n\t\t}\r\n\r\n\t\treturn this.component;\r\n\t}\r\n}\r\n\r\nexport default Group;","import Module from '../../core/Module.js';\r\n\r\nimport GroupComponent from './GroupComponent.js';\r\nimport Group from './Group.js';\r\n\r\nclass GroupRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\r\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\tthis.groupList = []; //ordered list of groups\r\n\t\tthis.allowedValues = false;\r\n\t\tthis.groups = {}; //hold row groups\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.displayHandler = this.getRows.bind(this);\r\n\r\n\t\t//register table options\r\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\r\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\r\n\t\tthis.registerTableOption(\"groupValues\", false);\r\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\r\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\r\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\r\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\r\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\r\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\r\n\r\n\t\t//register table functions\r\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\r\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\r\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\r\n\t}\r\n\r\n\t//initialize group configuration\r\n\tinitialize(){\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tvar groupBy = this.table.options.groupBy,\r\n\t\t\tstartOpen = this.table.options.groupStartOpen,\r\n\t\t\tgroupHeader = this.table.options.groupHeader;\r\n\r\n\t\t\tthis.allowedValues = this.table.options.groupValues;\r\n\r\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\r\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\r\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\r\n\r\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\r\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\r\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tthis.groupIDLookups = [];\r\n\r\n\t\t\tif(Array.isArray(groupBy) || groupBy){\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\r\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\r\n\r\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\r\n\r\n\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\tif(col.definition.topCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(col.definition.bottomCalc){\r\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!Array.isArray(groupBy)){\r\n\t\t\t\tgroupBy = [groupBy];\r\n\t\t\t}\r\n\r\n\t\t\tgroupBy.forEach((group, i) => {\r\n\t\t\t\tvar lookupFunc, column;\r\n\r\n\t\t\t\tif(typeof group == \"function\"){\r\n\t\t\t\t\tlookupFunc = group;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\r\n\r\n\t\t\t\t\tif(column){\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tlookupFunc = function(data){\r\n\t\t\t\t\t\t\treturn data[group];\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.groupIDLookups.push({\r\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\r\n\t\t\t\t\tfunc:lookupFunc,\r\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif(startOpen){\r\n\t\t\t\tif(!Array.isArray(startOpen)){\r\n\t\t\t\t\tstartOpen = [startOpen];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstartOpen.forEach((level) => {\r\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.startOpen = startOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(groupHeader){\r\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\r\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\r\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\r\n\r\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\trowSample(rows, prevValue){\r\n\t\tvar group = this.getGroups(false)[0];\r\n\r\n\t\tprevValue.push(group.getRows(false)[0]);\r\n\r\n\t\treturn prevValue;\r\n\t}\r\n\r\n\tvirtualRenderFill(){\r\n\t\tvar el = this.table.rowManager.tableElement;\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\trows = rows.filter((row) => {\r\n\t\t\treturn row.type !== \"group\";\r\n\t\t});\r\n\r\n\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\r\n\r\n\t\t// if(this.table.options.groupBy){\r\n\t\t// \tif(this.layoutMode() != \"fitDataFill\" && rowsCount == this.table.modules.groupRows.countGroups()){\r\n\t\t// \t\tel.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\r\n\trowAddingIndex(row, index, top){\r\n\t\tthis.assignRowToGroup(row);\r\n\r\n\t\tvar groupRows = row.modules.group.rows;\r\n\r\n\t\tif(groupRows.length > 1){\r\n\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\r\n\t\t\t\tif(top){\r\n\t\t\t\t\tif(groupRows[0] !== row){\r\n\t\t\t\t\t\tindex = groupRows[0];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\r\n\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\r\n\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"group-changed\");\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tsetGroupBy(groups){\r\n\t\tthis.table.options.groupBy = groups;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupValues(groupValues){\r\n\t\tthis.table.options.groupValues = groupValues;\r\n\t\tthis.initialize();\r\n\t\tthis.refreshData(false, \"display\");\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\tsetGroupStartOpen(values){\r\n\t\tthis.table.options.groupStartOpen = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tsetGroupHeader(values){\r\n\t\tthis.table.options.groupHeader = values;\r\n\t\tthis.initialize();\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\t\t\tthis.refreshData();\r\n\r\n\t\t\tthis.trackChanges();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\r\n\t\t}\r\n\t}\r\n\r\n\tuserGetGroups(values){\r\n\t\treturn this.getGroups(true);\r\n\t}\r\n\r\n\t// get grouped table data in the same format as getData()\r\n\tuserGetGroupedData(){\r\n\t\treturn this.table.options.groupBy ?\r\n\t\tthis.getGroupedData() : this.getData()\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////////\r\n\t///////// Component Functions /////////\r\n\t///////////////////////////////////////\r\n\r\n\trowGetGroup(row){\r\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\trowMoving(from, to, after){\r\n\t\tif(!after && to instanceof Group){\r\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\r\n\t\t}\r\n\r\n\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\r\n\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\r\n\r\n\t\tif(toGroup === fromGroup){\r\n\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\r\n\t\t}else{\r\n\t\t\tif(fromGroup){\r\n\t\t\t\tfromGroup.removeRow(from);\r\n\t\t\t}\r\n\r\n\t\t\ttoGroup.insertRow(from, to, after);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowDeleting(row){\r\n\t\t//remove from group\r\n\t\tif(row.modules.group){\r\n\t\t\trow.modules.group.removeRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trowsUpdated(row){\r\n\t\tthis.updateGroupRows(true);\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.reassignRowToGroup(cell.row);\r\n\t}\r\n\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//return appropriate rows with group headers\r\n\tgetRows(rows){\r\n\t\tif(this.groupIDLookups.length){\r\n\r\n\t\t\tif(!Object.keys(this.groups).length){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this.updateGroupRows();\r\n\r\n\t\t}else{\r\n\t\t\treturn rows.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups(component){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\tgetChildGroups(group){\r\n\t\tvar groupComponents = [];\r\n\r\n\t\tif(!group){\r\n\t\t\tgroup = this;\r\n\t\t}\r\n\r\n\t\tgroup.groupList.forEach((child) => {\r\n\t\t\tif(child.groupList.length){\r\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\r\n\t\t\t}else{\r\n\t\t\t\tgroupComponents.push(child);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupComponents;\r\n\t}\r\n\r\n\twipe(){\r\n\t\tthis.groupList.forEach(function(group){\r\n\t\t\tgroup.wipe();\r\n\t\t});\r\n\t}\r\n\r\n\tpullGroupListData(groupList) {\r\n\t\tvar groupListData = [];\r\n\r\n\t\tgroupList.forEach((group) => {\r\n\t\t\tvar groupHeader = {};\r\n\t\t\tgroupHeader.level = 0;\r\n\t\t\tgroupHeader.rowCount = 0;\r\n\t\t\tgroupHeader.headerContent = \"\";\r\n\t\t\tvar childData = [];\r\n\r\n\t\t\tif (group.hasSubGroups) {\r\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\r\n\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\t\t\t\tgroupListData = groupListData.concat(childData);\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tgroupHeader.level = group.level;\r\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\r\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\r\n\r\n\t\t\t\tgroupListData.push(groupHeader);\r\n\r\n\t\t\t\tgroup.getRows().forEach((row) => {\r\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn groupListData\r\n\t}\r\n\r\n\tgetGroupedData(){\r\n\r\n\t\treturn this.pullGroupListData(this.groupList);\r\n\t}\r\n\r\n\tgetRowGroup(row){\r\n\t\tvar match = false;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tvar result = group.getRowGroup(row);\r\n\r\n\t\t\tif(result){\r\n\t\t\t\tmatch = result;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn match;\r\n\t}\r\n\r\n\tcountGroups(){\r\n\t\treturn this.groupList.length;\r\n\t}\r\n\r\n\tgenerateGroups(rows){\r\n\t\tvar oldGroups = this.groups;\r\n\r\n\t\tthis.groups = {};\r\n\t\tthis.groupList =[];\r\n\r\n\t\tif(this.allowedValues && this.allowedValues[0]){\r\n\t\t\tthis.allowedValues[0].forEach((value) => {\r\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\r\n\t\t\t});\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcreateGroup(groupID, level, oldGroups){\r\n\t\tvar groupKey = level + \"_\" + groupID,\r\n\t\tgroup;\r\n\r\n\t\toldGroups = oldGroups || [];\r\n\r\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\r\n\r\n\t\tthis.groups[groupKey] = group;\r\n\t\tthis.groupList.push(group);\r\n\t}\r\n\r\n\tassignRowToExistingGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tgroupKey = \"0_\" + groupID;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tthis.groups[groupKey].addRow(row);\r\n\t\t}\r\n\t}\r\n\r\n\tassignRowToGroup(row, oldGroups){\r\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\r\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\r\n\r\n\t\tif(newGroupNeeded){\r\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\r\n\t\t}\r\n\r\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\r\n\r\n\t\treturn !newGroupNeeded;\r\n\t}\r\n\r\n\treassignRowToGroup(row){\r\n\t\tif(row.type === \"row\"){\r\n\t\t\tvar oldRowGroup = row.modules.group,\r\n\t\t\toldGroupPath = oldRowGroup.getPath(),\r\n\t\t\tnewGroupPath = this.getExpectedPath(row),\r\n\t\t\tsamePath = true;\r\n\r\n\t\t\t// figure out if new group path is the same as old group path\r\n\t\t\tvar samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\r\n\t\t\t\treturn element === newGroupPath[index];\r\n\t\t\t});\r\n\r\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\r\n\t\t\tif(!samePath) {\r\n\t\t\t\toldRowGroup.removeRow(row);\r\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\r\n\t\t\t\tthis.refreshData(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetExpectedPath(row) {\r\n\t\tvar groupPath = [], rowData = row.getData();\r\n\r\n\t\tthis.groupIDLookups.forEach((groupId) => {\r\n\t\t\tgroupPath.push(groupId.func(rowData));\r\n\t\t});\r\n\r\n\t\treturn groupPath;\r\n\t}\r\n\r\n\tupdateGroupRows(force){\r\n\t\tvar output = [],\r\n\t\toldRowCount;\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\toutput = output.concat(group.getHeadersAndRows());\r\n\t\t});\r\n\r\n\t\tif(force){\r\n\t\t\tthis.refreshData(true, this.displayHandler);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tscrollHeaders(left){\r\n\t\tif(this.table.options.renderHorizontal === \"virtual\"){\r\n\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\r\n\t\t}\r\n\r\n\t\tleft = left + \"px\";\r\n\r\n\t\tthis.groupList.forEach((group) => {\r\n\t\t\tgroup.scrollHeader(left);\r\n\t\t});\r\n\t}\r\n\r\n\tremoveGroup(group){\r\n\t\tvar groupKey = group.level + \"_\" + group.key,\r\n\t\tindex;\r\n\r\n\t\tif(this.groups[groupKey]){\r\n\t\t\tdelete this.groups[groupKey];\r\n\r\n\t\t\tindex = this.groupList.indexOf(group);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.groupList.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nGroupRows.moduleName = \"groupRows\";\r\n\r\nexport default GroupRows;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.oldValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowDelete: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultUndoers from './defaults/undoers.js';\r\nimport defaultRedoers from './defaults/redoers.js';\r\n\r\nclass History extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\r\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.history){\r\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\r\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\r\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\r\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\r\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\r\n\t}\r\n\r\n\trowMoved(from, to, after){\r\n\t\tthis.action(\"rowMove\", from, {posFrom:this.table.rowManager.getRowPosition(from), posTo:this.table.rowManager.getRowPosition(to), to:to, after:after});\r\n\t}\r\n\r\n\trowAdded(row, data, pos, index){\r\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tvar index, rows;\r\n\r\n\t\tif(this.table.options.groupBy){\r\n\r\n\t\t\trows = row.getComponent().getGroup().rows\r\n\t\t\tindex = rows.indexOf(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = rows[index-1];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\r\n\r\n\t\t\tif(index){\r\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.history.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\r\n\t}\r\n\r\n\tcellUpdated(cell){\r\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.history = [];\r\n\t\tthis.index = -1;\r\n\t}\r\n\r\n\taction(type, component, data){\r\n\t\tthis.history = this.history.slice(0, this.index + 1);\r\n\r\n\t\tthis.history.push({\r\n\t\t\ttype:type,\r\n\t\t\tcomponent:component,\r\n\t\t\tdata:data,\r\n\t\t});\r\n\r\n\t\tthis.index ++;\r\n\t}\r\n\r\n\tgetHistoryUndoSize(){\r\n\t\treturn this.index + 1;\r\n\t}\r\n\r\n\tgetHistoryRedoSize(){\r\n\t\treturn this.history.length - (this.index + 1);\r\n\t}\r\n\r\n\tclearComponentHistory(component){\r\n\t\tvar index = this.history.findIndex(function(item){\r\n\t\t\treturn item.component === component;\r\n\t\t});\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.history.splice(index, 1);\r\n\t\t\tif(index <= this.index){\r\n\t\t\t\tthis.index--;\r\n\t\t\t}\r\n\r\n\t\t\tthis.clearComponentHistory(component);\r\n\t\t}\r\n\t}\r\n\r\n\tundo(){\r\n\t\tif(this.index > -1){\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.undoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.index--;\r\n\r\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Undo Error - No more history to undo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tredo(){\r\n\t\tif(this.history.length-1 > this.index){\r\n\r\n\t\t\tthis.index++;\r\n\r\n\t\t\tlet action = this.history[this.index];\r\n\r\n\t\t\tHistory.redoers[action.type].call(this, action);\r\n\r\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"History Redo Error - No more history to redo\");\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//rebind rows to new element after deletion\r\n\t_rebindRow(oldRow, newRow){\r\n\t\tthis.history.forEach(function(action){\r\n\t\t\tif(action.component instanceof Row){\r\n\t\t\t\tif(action.component === oldRow){\r\n\t\t\t\t\taction.component = newRow;\r\n\t\t\t\t}\r\n\t\t\t}else if(action.component instanceof Cell){\r\n\t\t\t\tif(action.component.row === oldRow){\r\n\t\t\t\t\tvar field = action.component.column.getField();\r\n\r\n\t\t\t\t\tif(field){\r\n\t\t\t\t\t\taction.component = newRow.getCell(field);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nHistory.moduleName = \"history\";\r\n\r\n//load defaults\r\nHistory.undoers = defaultUndoers;\r\nHistory.redoers = defaultRedoers;\r\n\r\nexport default History;","import Module from '../../core/Module.js';\r\n\r\nclass HtmlTableImport extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.fieldIndex = [];\r\n\t\tthis.hasIndex = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"table-building\", this.tableElementCheck.bind(this));\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.element.tagName === \"TABLE\"){\r\n\t\t\tthis.parseTable();\r\n\t\t}\r\n\t}\r\n\r\n\tparseTable(){\r\n\t\tvar element = this.table.element,\r\n\t\toptions = this.table.options,\r\n\t\tcolumns = options.columns,\r\n\t\theaders = element.getElementsByTagName(\"th\"),\r\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\r\n\t\tdata = [],\r\n\t\tnewTable;\r\n\r\n\t\tthis.hasIndex = false;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImporting\");\r\n\r\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\r\n\r\n\t\t//check for tablator inline options\r\n\t\tthis._extractOptions(element, options);\r\n\r\n\t\tif(headers.length){\r\n\t\t\tthis._extractHeaders(headers, rows);\r\n\t\t}else{\r\n\t\t\tthis._generateBlankHeaders(headers, rows);\r\n\t\t}\r\n\r\n\t\t//iterate through table rows and build data set\r\n\t\tfor(var index = 0; index < rows.length; index++){\r\n\t\t\tvar row = rows[index],\r\n\t\t\tcells = row.getElementsByTagName(\"td\"),\r\n\t\t\titem = {};\r\n\r\n\t\t\t//create index if the dont exist in table\r\n\t\t\tif(!this.hasIndex){\r\n\t\t\t\titem[options.index] = index;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\tvar cell = cells[i];\r\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\r\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//add row data to item\r\n\t\t\tdata.push(item);\r\n\t\t}\r\n\r\n\t\t//create new element\r\n\t\tvar newElement = document.createElement(\"div\");\r\n\r\n\t\t//transfer attributes to new element\r\n\t\tvar attributes = element.attributes;\r\n\r\n\t\t// loop through attributes and apply them on div\r\n\r\n\t\tfor(var i in attributes){\r\n\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// replace table with div element\r\n\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\r\n\r\n\t\tthis.table.element = newElement;\r\n\t}\r\n\r\n\t//extract tabulator attribute options\r\n\t_extractOptions(element, options, defaultOptions){\r\n\t\tvar attributes = element.attributes;\r\n\t\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\r\n\t\tvar optionsList = {};\r\n\r\n\t\toptionsArr.forEach((item) => {\r\n\t\t\toptionsList[item.toLowerCase()] = item;\r\n\t\t});\r\n\r\n\t\tfor(var index in attributes){\r\n\t\t\tvar attrib = attributes[index];\r\n\t\t\tvar name;\r\n\r\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\r\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\r\n\r\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\r\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//get value of attribute\r\n\t_attribValue(value){\r\n\t\tif(value === \"true\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(value === \"false\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t//find column if it has already been defined\r\n\t_findCol(title){\r\n\t\tvar match = this.table.options.columns.find((column) => {\r\n\t\t\treturn column.title === title;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\t//extract column from headers\r\n\t_extractHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\texists = false,\r\n\t\t\tcol = this._findCol(header.textContent),\r\n\t\t\twidth, attributes;\r\n\r\n\t\t\tif(col){\r\n\t\t\t\texists = true;\r\n\t\t\t}else{\r\n\t\t\t\tcol = {title:header.textContent.trim()};\r\n\t\t\t}\r\n\r\n\t\t\tif(!col.field) {\r\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\r\n\t\t\t}\r\n\r\n\t\t\twidth = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width && !col.width)\t{\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\t//check for tablator inline options\r\n\t\t\tattributes = header.attributes;\r\n\r\n\t\t\t// //check for tablator inline options\r\n\t\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tif(col.field == this.table.options.index){\r\n\t\t\t\tthis.hasIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(!exists){\r\n\t\t\t\tthis.table.options.columns.push(col);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//generate blank headers\r\n\t_generateBlankHeaders(headers, rows){\r\n\t\tfor(var index = 0; index < headers.length; index++){\r\n\t\t\tvar header = headers[index],\r\n\t\t\tcol = {title:\"\", field:\"col\" + index};\r\n\r\n\t\t\tthis.fieldIndex[index] = col.field;\r\n\r\n\t\t\tvar width = header.getAttribute(\"width\");\r\n\r\n\t\t\tif(width){\r\n\t\t\t\tcol.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.options.columns.push(col);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nHtmlTableImport.moduleName = \"htmlTableImport\";\r\n\r\nexport default HtmlTableImport;","export default {\r\n\tcellEdit: function(action){\r\n\t\taction.component.setValueProcessData(action.data.newValue);\r\n\t},\r\n\r\n\trowAdd: function(action){\r\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\r\n\r\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\r\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\r\n\t\t}\r\n\r\n\t\tthis._rebindRow(action.component, newRow);\r\n\t},\r\n\r\n\trowDelete:function(action){\r\n\t\taction.component.deleteActual();\r\n\t},\r\n\r\n\trowMove: function(action){\r\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\r\n\t\tthis.table.rowManager.redraw();\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport Cell from '../../core/cell/Cell';\r\nimport Column from '../../core/column/Column';\r\n\r\nclass Interaction extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.eventMap = {\r\n\t\t\t//row events\r\n\t\t\trowClick:\"row-click\",\r\n\t\t\trowDblClick:\"row-dblclick\",\r\n\t\t\trowContext:\"row-contextmenu\",\r\n\t\t\trowMouseEnter:\"row-mouseenter\",\r\n\t\t\trowMouseLeave:\"row-mouseleave\",\r\n\t\t\trowMouseOver:\"row-mouseover\",\r\n\t\t\trowMouseOut:\"row-mouseout\",\r\n\t\t\trowMouseMove:\"row-mousemove\",\r\n\t\t\trowTap:\"row\",\r\n\t\t\trowDblTap:\"row\",\r\n\t\t\trowTapHold:\"row\",\r\n\r\n\t\t\t//cell events\r\n\t\t\tcellClick:\"cell-click\",\r\n\t\t\tcellDblClick:\"cell-dblclick\",\r\n\t\t\tcellContext:\"cell-contextmenu\",\r\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\r\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\r\n\t\t\tcellMouseOver:\"cell-mouseover\",\r\n\t\t\tcellMouseOut:\"cell-mouseout\",\r\n\t\t\tcellMouseMove:\"cell-mousemove\",\r\n\t\t\tcellTap:\"cell\",\r\n\t\t\tcellDblTap:\"cell\",\r\n\t\t\tcellTapHold:\"cell\",\r\n\r\n\t\t\t//column header events\r\n\t\t\theaderClick:\"column-click\",\r\n\t\t\theaderDblClick:\"column-dblclick\",\r\n\t\t\theaderContext:\"column-contextmenu\",\r\n\t\t\theaderMouseEnter:\"column-mouseenter\",\r\n\t\t\theaderMouseLeave:\"column-mouseleave\",\r\n\t\t\theaderMouseOver:\"column-mouseover\",\r\n\t\t\theaderMouseOut:\"column-mouseout\",\r\n\t\t\theaderMouseMove:\"column-mousemove\",\r\n\t\t\theaderTap:\"column\",\r\n\t\t\theaderDblTap:\"column\",\r\n\t\t\theaderTapHold:\"column\",\r\n\r\n\t\t\t//group header\r\n\t\t\tgroupClick:\"group-click\",\r\n\t\t\tgroupDblClick:\"group-dblclick\",\r\n\t\t\tgroupContext:\"group-contextmenu\",\r\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\r\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\r\n\t\t\tgroupMouseOver:\"group-mouseover\",\r\n\t\t\tgroupMouseOut:\"group-mouseout\",\r\n\t\t\tgroupMouseMove:\"group-mousemove\",\r\n\t\t\tgroupTap:\"group\",\r\n\t\t\tgroupDblTap:\"group\",\r\n\t\t\tgroupTapHold:\"group\",\r\n\t\t}\r\n\r\n\t\tthis.subscribers = {};\r\n\r\n\t\tthis.touchSubscribers = {};\r\n\r\n\t\tthis.columnSubscribers = {};\r\n\r\n\t\tthis.touchWatchers = {\r\n\t\t\trow:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcell:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t},\r\n\t\t\tcolumn:{\r\n\t\t\t\ttap:null,\r\n\t\t\t\ttapDbl:null,\r\n\t\t\t\ttapHold:null,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.registerColumnOption(\"headerClick\");\r\n\t\tthis.registerColumnOption(\"headerDblClick\");\r\n\t\tthis.registerColumnOption(\"headerContext\");\r\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\r\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\r\n\t\tthis.registerColumnOption(\"headerMouseOver\");\r\n\t\tthis.registerColumnOption(\"headerMouseOut\");\r\n\t\tthis.registerColumnOption(\"headerMouseMove\");\r\n\t\tthis.registerColumnOption(\"headerTap\");\r\n\t\tthis.registerColumnOption(\"headerDblTap\");\r\n\t\tthis.registerColumnOption(\"headerTapHold\");\r\n\r\n\t\tthis.registerColumnOption(\"cellClick\");\r\n\t\tthis.registerColumnOption(\"cellDblClick\");\r\n\t\tthis.registerColumnOption(\"cellContext\");\r\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\r\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\r\n\t\tthis.registerColumnOption(\"cellMouseOver\");\r\n\t\tthis.registerColumnOption(\"cellMouseOut\");\r\n\t\tthis.registerColumnOption(\"cellMouseMove\");\r\n\t\tthis.registerColumnOption(\"cellTap\");\r\n\t\tthis.registerColumnOption(\"cellDblTap\");\r\n\t\tthis.registerColumnOption(\"cellTapHold\");\r\n\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeExternalEvents();\r\n\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this))\r\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this))\r\n\t}\r\n\r\n\tcellContentsSelectionFixer(e, cell){\r\n\t\tif(this.table.modExists(\"edit\")){\r\n\t\t\tif (this.table.modules.edit.currentCell === this){\r\n\t\t\t\treturn; //prevent instant selection of editor content\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\ttry{\r\n\t\t\tif (document.selection) { // IE\r\n\t\t\t\tvar range = document.body.createTextRange();\r\n\t\t\t\trange.moveToElementText(this.element);\r\n\t\t\t\trange.select();\r\n\t\t\t} else if (window.getSelection) {\r\n\t\t\t\tvar range = document.createRange();\r\n\t\t\t\trange.selectNode(this.element);\r\n\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\twindow.getSelection().addRange(range);\r\n\t\t\t}\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tinitializeExternalEvents(){\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key))\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(key, added){\r\n\t\tvar index;\r\n\r\n\t\tif(added){\r\n\t\t\tif(!this.subscribers[key]){\r\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\r\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.subscribeTouchEvents(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.eventMap[key].includes(\"-\")){\r\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\r\n\t\t\t\t\tdelete this.subscribers[key];\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.unsubscribeTouchEvents(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tsubscribeTouchEvents(key){\r\n\t\tvar type = this.eventMap[key];\r\n\r\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\r\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\r\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\r\n\r\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\t\t}\r\n\r\n\t\tthis.subscribers[key] = true;\r\n\t}\r\n\r\n\tunsubscribeTouchEvents(key){\r\n\t\tvar notouch = true,\r\n\t\ttype = this.eventMap[key];\r\n\r\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\r\n\t\t\tdelete this.subscribers[key];\r\n\r\n\t\t\tfor(let i in this.eventMap){\r\n\t\t\t\tif(this.eventMap[i] === type){\r\n\t\t\t\t\tif(this.subscribers[i]){\r\n\t\t\t\t\t\tnotouch = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(notouch){\r\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\r\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\r\n\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\r\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tfor(let key in this.eventMap){\r\n\t\t\tif(def[key]){\r\n\t\t\t\tthis.subscriptionChanged(key, true);\r\n\r\n\t\t\t\tif(!this.columnSubscribers[key]){\r\n\t\t\t\t\tthis.columnSubscribers[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.columnSubscribers[key].push(column);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thandle(action, e, component){\r\n\t\tthis.dispatchEvent(action, e, component);\r\n\t}\r\n\r\n\thandleTouch(type, action, e, component){\r\n\t\tvar watchers = this.touchWatchers[type];\r\n\r\n\t\tif(type === \"column\"){\r\n\t\t\ttype = \"header\";\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase \"start\":\r\n\t\t\twatchers.tap = true;\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\r\n\t\t\twatchers.tapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\t\twatchers.tapHold = null;\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\r\n\t\t\t}, 1000);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"end\":\r\n\t\t\tif(watchers.tap){\r\n\r\n\t\t\t\twatchers.tap = null;\r\n\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\r\n\t\t\t}\r\n\r\n\t\t\tif(watchers.tapDbl){\r\n\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\twatchers.tapDbl = null;\r\n\r\n\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\r\n\t\t\t}else{\r\n\t\t\t\twatchers.tapDbl = setTimeout(() => {\r\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\r\n\t\t\t\t\twatchers.tapDbl = null;\r\n\t\t\t\t}, 300);\r\n\t\t\t}\r\n\r\n\t\t\tclearTimeout(watchers.tapHold);\r\n\t\t\twatchers.tapHold = null;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tdispatchEvent(action, e, component){\r\n\t\tvar componentObj = component.getComponent(),\r\n\t\tcallback;\r\n\r\n\t\tif(this.columnSubscribers[action]){\r\n\r\n\t\t\tif(component instanceof Cell){\r\n\t\t\t\tcallback = component.column.definition[action];\r\n\t\t\t}else if(component instanceof Column){\r\n\t\t\t\tcallback = component.definition[action];\r\n\t\t\t}\r\n\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback(e, componentObj);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(action, e, componentObj);\r\n\t}\r\n}\r\n\r\nInteraction.moduleName = \"interaction\";\r\n\r\nexport default Interaction;","export default {\r\n\tnavPrev:\"shift + 9\",\r\n\tnavNext:9,\r\n\tnavUp:38,\r\n\tnavDown:40,\r\n\tscrollPageUp:33,\r\n\tscrollPageDown:34,\r\n\tscrollToStart:36,\r\n\tscrollToEnd:35,\r\n\tundo:\"ctrl + 90\",\r\n\tredo:\"ctrl + 89\",\r\n\tcopyToClipboard:\"ctrl + 67\",\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultBindings from './defaults/bindings.js';\r\nimport defaultActions from './defaults/actions.js';\r\n\r\nclass Keybindings extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.watchKeys = null;\r\n\t\tthis.pressedKeys = null;\r\n\t\tthis.keyupBinding = false;\r\n\t\tthis.keydownBinding = false;\r\n\r\n\t\tthis.registerTableOption(\"keybindings\", []); //array for keybindings\r\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar bindings = this.table.options.keybindings,\r\n\t\tmergedBindings = {};\r\n\r\n\t\tthis.watchKeys = {};\r\n\t\tthis.pressedKeys = [];\r\n\r\n\t\tif(bindings !== false){\r\n\r\n\t\t\tfor(let key in Keybindings.bindings){\r\n\t\t\t\tmergedBindings[key] = Keybindings.bindings[key];\r\n\t\t\t}\r\n\r\n\t\t\tif(Object.keys(bindings).length){\r\n\r\n\t\t\t\tfor(let key in bindings){\r\n\t\t\t\t\tmergedBindings[key] = bindings[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.mapBindings(mergedBindings);\r\n\t\t\tthis.bindEvents();\r\n\t\t}\r\n\r\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t}\r\n\r\n\tmapBindings(bindings){\r\n\t\tfor(let key in bindings){\r\n\t\t\tif(Keybindings.actions[key]){\r\n\t\t\t\tif(bindings[key]){\r\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\r\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindings[key].forEach((binding) => {\r\n\t\t\t\t\t\tthis.mapBinding(key, binding);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapBinding(action, symbolsList){\r\n\t\tvar binding = {\r\n\t\t\taction: Keybindings.actions[action],\r\n\t\t\tkeys: [],\r\n\t\t\tctrl: false,\r\n\t\t\tshift: false,\r\n\t\t\tmeta: false,\r\n\t\t};\r\n\r\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\r\n\r\n\t\tsymbols.forEach((symbol) => {\r\n\t\t\tswitch(symbol){\r\n\t\t\t\tcase \"ctrl\":\r\n\t\t\t\tbinding.ctrl = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shift\":\r\n\t\t\t\tbinding.shift = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"meta\":\r\n\t\t\t\tbinding.meta = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tsymbol = parseInt(symbol);\r\n\t\t\t\tbinding.keys.push(symbol);\r\n\r\n\t\t\t\tif(!this.watchKeys[symbol]){\r\n\t\t\t\t\tthis.watchKeys[symbol] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.watchKeys[symbol].push(binding);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tbindEvents(){\r\n\t\tvar self = this;\r\n\r\n\t\tthis.keyupBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tself.pressedKeys.push(code);\r\n\r\n\t\t\t\tbindings.forEach(function(binding){\r\n\t\t\t\t\tself.checkBinding(e, binding);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.keydownBinding = function(e){\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tvar bindings = self.watchKeys[code];\r\n\r\n\t\t\tif(bindings){\r\n\r\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\r\n\r\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.keyupBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\r\n\t\t}\r\n\r\n\t\tif(this.keydownBinding){\r\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckBinding(e, binding){\r\n\t\tvar match = true;\r\n\r\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\r\n\t\t\tbinding.keys.forEach((key) => {\r\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\r\n\r\n\t\t\t\tif(index == -1){\r\n\t\t\t\t\tmatch = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tbinding.action.call(this, e);\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nKeybindings.moduleName = \"keybindings\";\r\n\r\n//load defaults\r\nKeybindings.bindings = defaultBindings;\r\nKeybindings.actions = defaultActions;\r\n\r\nexport default Keybindings;","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Menu extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.menuElements = [];\r\n\t\tthis.blurEvent = this.hideMenu.bind(this);\r\n\t\tthis.escEvent = this.escMenu.bind(this);\r\n\t\tthis.nestedMenuBlock = false;\r\n\t\tthis.positionReversedX = false;\r\n\r\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\r\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\r\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\r\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\r\n\r\n\t\tthis.registerColumnOption(\"headerContextMenu\");\r\n\t\tthis.registerColumnOption(\"headerMenu\");\r\n\t\tthis.registerColumnOption(\"contextMenu\");\r\n\t\tthis.registerColumnOption(\"clickMenu\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t}\r\n\r\n\tlayoutCell(cell){\r\n\t\tif(cell.column.definition.contextMenu || cell.column.definition.clickMenu){\r\n\t\t\tthis.initializeCell(cell);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.definition;\r\n\r\n\t\tif(def.headerContextMenu || def.headerClickMenu || def.headerMenu){\r\n\t\t\tthis.initializeColumnHeader(column);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeColumnHeader(column){\r\n\t\tvar headerMenuEl;\r\n\r\n\t\tif(column.definition.headerContextMenu){\r\n\t\t\tcolumn.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));\r\n\t\t\tthis.tapHold(column, column.definition.headerContextMenu);\r\n\t\t}\r\n\r\n\t\t// if(column.definition.headerClickMenu){\r\n\t\t// \tcolumn.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));\r\n\t\t// }\r\n\r\n\t\tif(column.definition.headerMenu){\r\n\r\n\t\t\theaderMenuEl = document.createElement(\"span\");\r\n\t\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\r\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\r\n\r\n\t\t\theaderMenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.LoadMenuEvent(column, column.definition.headerMenu, e);\r\n\t\t\t});\r\n\r\n\t\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\r\n\t\t}\r\n\t}\r\n\r\n\tLoadMenuEvent(component, menu, e){\r\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\r\n\r\n\t\t// if(component instanceof Cell){\r\n\t\t// \te.stopImmediatePropagation();\r\n\t\t// }\r\n\r\n\t\tthis.loadMenu(e, component, menu);\r\n\t}\r\n\r\n\ttapHold(component, menu){\r\n\t\tvar element = component.getElement(),\r\n\t\ttapHold = null,\r\n\t\tloaded = false;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\tloaded = false;\r\n\r\n\t\t\ttapHold = setTimeout(() => {\r\n\t\t\t\tclearTimeout(tapHold);\r\n\t\t\t\ttapHold = null;\r\n\t\t\t\tloaded = true;\r\n\r\n\t\t\t\tthis.LoadMenuEvent(component, menu, e);\r\n\t\t\t}, 1000);\r\n\r\n\t\t}, {passive: true});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tclearTimeout(tapHold);\r\n\t\t\ttapHold = null;\r\n\r\n\t\t\tif(loaded){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.contextMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));\r\n\t\t\tthis.tapHold(cell, cell.column.definition.contextMenu);\r\n\t\t}\r\n\r\n\t\tif(cell.column.definition.clickMenu){\r\n\t\t\tcell.getElement(true).addEventListener(\"click\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tif(this.table.options.rowContextMenu){\r\n\t\t\trow.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));\r\n\t\t\tthis.tapHold(row, this.table.options.rowContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.rowClickMenu){\r\n\t\t\trow.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroup (group){\r\n\t\tif(this.table.options.groupContextMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));\r\n\t\t\tthis.tapHold(group, this.table.options.groupContextMenu);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.groupClickMenu){\r\n\t\t\tgroup.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));\r\n\t\t}\r\n\t}\r\n\r\n\tloadMenu(e, component, menu, parentEl){\r\n\r\n\t\tvar touch = !(e instanceof MouseEvent);\r\n\r\n\t\tvar menuEl = document.createElement(\"div\");\r\n\t\tmenuEl.classList.add(\"tabulator-menu\");\r\n\r\n\t\tif(!touch){\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\t//abort if no menu set\r\n\t\tif(!menu || !menu.length){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tif(this.nestedMenuBlock){\r\n\t\t\t\t//abort if child menu already open\r\n\t\t\t\tif(this.isOpen()){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\r\n\t\t\t\t\tthis.nestedMenuBlock = false;\r\n\t\t\t\t}, 100)\r\n\t\t\t}\r\n\r\n\t\t\tthis.hideMenu();\r\n\t\t\tthis.menuElements = [];\r\n\t\t}\r\n\r\n\t\tmenu.forEach((item) => {\r\n\t\t\tvar itemEl = document.createElement(\"div\"),\r\n\t\t\tlabel = item.label,\r\n\t\t\tdisabled = item.disabled;\r\n\r\n\t\t\tif(item.separator){\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\r\n\t\t\t}else{\r\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\r\n\r\n\t\t\t\tif(typeof label == \"function\"){\r\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(label instanceof Node){\r\n\t\t\t\t\titemEl.appendChild(label);\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = label;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof disabled == \"function\"){\r\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(disabled){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\r\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tthis.hideOldSubMenus(menuEl);\r\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(item.action){\r\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(item.menu && item.menu.length){\r\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tmenuEl.appendChild(itemEl);\r\n\t\t});\r\n\r\n\t\tmenuEl.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.hideMenu();\r\n\t\t});\r\n\r\n\t\tthis.menuElements.push(menuEl);\r\n\t\tthis.positionMenu(menuEl, parentEl, touch, e);\r\n\t}\r\n\r\n\thideOldSubMenus(menuEl){\r\n\t\tvar index = this.menuElements.indexOf(menuEl);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tfor(let i = this.menuElements.length - 1; i > index; i--){\r\n\t\t\t\tvar el = this.menuElements[i];\r\n\r\n\t\t\t\tif(el.parentNode){\r\n\t\t\t\t\tel.parentNode.removeChild(el);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.menuElements.pop();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpositionMenu(element, parentEl, touch, e){\r\n\t\tvar docHeight = Math.max(document.body.offsetHeight, window.innerHeight),\r\n\t\tx, y, parentOffset;\r\n\r\n\t\tif(!parentEl){\r\n\t\t\tx = touch ? e.touches[0].pageX : e.pageX;\r\n\t\t\ty = touch ? e.touches[0].pageY : e.pageY;\r\n\r\n\t\t\tthis.positionReversedX = false;\r\n\t\t}else{\r\n\t\t\tparentOffset = Helpers.elOffset(parentEl);\r\n\t\t\tx = parentOffset.left + parentEl.offsetWidth;\r\n\t\t\ty = parentOffset.top - 1;\r\n\t\t}\r\n\r\n\t\telement.style.top = y + \"px\";\r\n\t\telement.style.left = x + \"px\";\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\r\n\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\r\n\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\r\n\t\t}, 100);\r\n\r\n\t\tdocument.body.appendChild(element);\r\n\r\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\r\n\t\tif((y + element.offsetHeight) >= docHeight){\r\n\t\t\telement.style.top = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.bottom = (docHeight - parentOffset.top - parentEl.offsetHeight - 1) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.bottom = (docHeight - y) + \"px\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\r\n\t\tif((x + element.offsetWidth) >= document.body.offsetWidth || this.positionReversedX){\r\n\t\t\telement.style.left = \"\";\r\n\r\n\t\t\tif(parentEl){\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - parentOffset.left) + \"px\";\r\n\t\t\t}else{\r\n\t\t\t\telement.style.right = (document.documentElement.offsetWidth - x) + \"px\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.positionReversedX = true;\r\n\t\t}\r\n\t}\r\n\r\n\tisOpen(){\r\n\t\treturn !!this.menuElements.length;\r\n\t}\r\n\r\n\tescMenu(e){\r\n\t\tif(e.keyCode == 27){\r\n\t\t\tthis.hideMenu();\r\n\t\t}\r\n\t}\r\n\r\n\thideMenu(){\r\n\t\tthis.menuElements.forEach((menuEl) => {\r\n\t\t\tif(menuEl.parentNode){\r\n\t\t\t\tmenuEl.parentNode.removeChild(menuEl);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\r\n\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\r\n\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\r\n\t\twindow.removeEventListener(\"resize\", this.blurEvent);\r\n\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\r\n\t}\r\n}\r\n\r\nMenu.moduleName = \"menu\";\r\n\r\nexport default Menu;","export default {\r\n\tkeyBlock:function(e){\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t},\r\n\tscrollPageUp:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos >= 0){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollPageDown:function(e){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\r\n\t\tscrollMax = rowManager.element.scrollHeight;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\tif(newPos <= scrollMax){\r\n\t\t\t\trowManager.element.scrollTop = newPos;\r\n\t\t\t}else{\r\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\r\n\t},\r\n\tscrollToStart:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tscrollToEnd:function(e){\r\n\t\tvar rowManager = this.table.rowManager;\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif(rowManager.displayRowsCount){\r\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\r\n\t\t}\r\n\r\n\t\tthis.table.element.focus();\r\n\t},\r\n\tnavPrev:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\r\n\t},\r\n\r\n\tnavNext:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\r\n\t},\r\n\r\n\tnavLeft:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\r\n\t},\r\n\r\n\tnavRight:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\r\n\t},\r\n\r\n\tnavUp:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\r\n\t},\r\n\r\n\tnavDown:function(e){\r\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\r\n\t},\r\n\r\n\tundo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.undo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tredo:function(e){\r\n\t\tvar cell = false;\r\n\t\tif(this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")){\r\n\r\n\t\t\tcell = this.table.modules.edit.currentCell;\r\n\r\n\t\t\tif(!cell){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.table.modules.history.redo();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcopyToClipboard:function(e){\r\n\t\tif(!this.table.modules.edit.currentCell){\r\n\t\t\tif(this.table.modExists(\"clipboard\", true)){\r\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating column header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving column\r\n\t\tthis.toCol = false; //destination column\r\n\t\tthis.toColAfter = false; //position of moving column relative to the desitnation column\r\n\t\tthis.startX = 0; //starting position within header element\r\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\r\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\r\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\r\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-col\");\r\n\t\tel.classList.add(\"tabulator-col-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\tcolEl;\r\n\r\n\t\tif(!column.modules.frozen){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tconfig.mousemove = function(e){\r\n\t\t\t\tif(column.parent === self.moving.parent){\r\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.element.scrollLeft) > (column.getWidth() / 2)){\r\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\r\n\t\t\t\t\t\t\tself.moveColumn(column, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\r\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\r\n\t\t\t\t\t\t\tself.moveColumn(column, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}.bind(self);\r\n\r\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tself.touchMove = false;\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, column);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tself.bindTouchEvents(column);\r\n\t\t}\r\n\r\n\t\tcolumn.modules.moveColumn = config;\r\n\t}\r\n\r\n\tbindTouchEvents(column){\r\n\t\tvar colEl = column.getElement(),\r\n\t\tstartXMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentCol, nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\r\n\r\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentCol = column;\r\n\t\t\t\tnextCol = column.nextColumn();\r\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\r\n\t\t\t\tprevCol = column.prevColumn();\r\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\r\n\t\t\t\tnextColWidthLast = 0;\r\n\t\t\t\tprevColWidthLast = 0;\r\n\t\t\t\tstartXMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, column);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\r\n\t\t\tvar halfCol, diff, moveToCol;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startXMove){\r\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\r\n\t\t\t\t\t\tmoveToCol = nextCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevCol && -diff - prevColWidthLast > prevColWidth){\r\n\t\t\t\t\t\tmoveToCol = prevCol;\r\n\r\n\t\t\t\t\t\tif(moveToCol !== column){\r\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\r\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\r\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToCol){\r\n\t\t\t\t\tcurrentCol = moveToCol;\r\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\r\n\t\t\t\t\tnextColWidthLast = nextColWidth;\r\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\r\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\r\n\t\t\t\t\tprevColWidthLast = prevColWidth;\r\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, {passive: true});\r\n\r\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, column){\r\n\t\tvar element = column.getElement();\r\n\r\n\t\tthis.moving = column;\r\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\r\n\r\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\telement.parentNode.removeChild(element);\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\r\n\r\n\t\tthis.hoverElement.style.left = \"0\";\r\n\t\tthis.hoverElement.style.bottom = \"0\";\r\n\r\n\t\tif(!this.touchMove){\r\n\t\t\tthis._bindMouseMove();\r\n\r\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\t\t}\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\r\n\t\t\tif(column.modules.moveColumn.mousemove){\r\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tmoveColumn(column, after){\r\n\t\tvar movingCells = this.moving.getCells();\r\n\r\n\t\tthis.toCol = column;\r\n\t\tthis.toColAfter = after;\r\n\r\n\t\tif(after){\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tcolumn.getCells().forEach(function(cell, i){\r\n\t\t\t\tvar cellEl = cell.getElement(true);\r\n\r\n\t\t\t\tif(cellEl.parentNode){\r\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toCol){\r\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toCol = false;\r\n\t\t\tthis.toColAfter = false;\r\n\r\n\t\t\tif(!this.touchMove){\r\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tvar columnHolder = this.table.columnManager.getElement(),\r\n\t\tscrollLeft = columnHolder.scrollLeft,\r\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\r\n\r\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\r\n\t\t\tif(!this.autoScrollTimeout){\r\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\r\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\r\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\r\n\t\t\t\t\tthis.autoScrollTimeout = false;\r\n\t\t\t\t}, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveColumns.moduleName = \"moveColumn\";\r\n\r\nexport default MoveColumns;\r\n","import Module from '../../core/Module.js';\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass MoveRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.placeholderElement = this.createPlaceholderElement();\r\n\t\tthis.hoverElement = false; //floating row header element\r\n\t\tthis.checkTimeout = false; //click check timeout holder\r\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\r\n\t\tthis.moving = false; //currently moving row\r\n\t\tthis.toRow = false; //destination row\r\n\t\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\r\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\r\n\t\tthis.startY = 0; //starting Y position within header element\r\n\t\tthis.startX = 0; //starting X position within header element\r\n\r\n\t\tthis.moveHover = this.moveHover.bind(this);\r\n\t\tthis.endMove = this.endMove.bind(this);\r\n\t\tthis.tableRowDropEvent = false;\r\n\r\n\t\tthis.touchMove = false;\r\n\r\n\t\tthis.connection = false;\r\n\t\tthis.connectionSelectorsTables = false;\r\n\t\tthis.connectionSelectorsElements = false;\r\n\t\tthis.connectionElements = [];\r\n\t\tthis.connections = [];\r\n\r\n\t\tthis.connectedTable = false;\r\n\t\tthis.connectedRow = false;\r\n\r\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\r\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\r\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\r\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\r\n\r\n\t\tthis.registerColumnOption(\"rowHandle\");\r\n\t}\r\n\r\n\tcreatePlaceholderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\tel.classList.add(\"tabulator-row-placeholder\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.movableRows){\r\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\r\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\r\n\r\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\r\n\r\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeGroupHeader(group){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(group, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\r\n\t\t\t\t\tvar rowEl = group.getElement();\r\n\t\t\t\t\tif(rowEl.previousSibling){\r\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\t\tself.moveRow(group, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\t\tgroup.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\tconfig = {},\r\n\t\trowEl;\r\n\r\n\t\t//inter table drag drop\r\n\t\tconfig.mouseup = function(e){\r\n\t\t\tself.tableRowDrop(e, row);\r\n\t\t}.bind(self);\r\n\r\n\t\t//same table drag drop\r\n\t\tconfig.mousemove = function(e){\r\n\t\t\tvar rowEl = row.getElement();\r\n\r\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\r\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\r\n\t\t\t\t\tself.moveRow(row, true);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\r\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\r\n\t\t\t\t\tself.moveRow(row, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}.bind(self);\r\n\r\n\r\n\t\tif(!this.hasHandle){\r\n\r\n\t\t\trowEl = row.getElement();\r\n\r\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(row, row.getElement());\r\n\t\t}\r\n\r\n\t\trow.modules.moveRow = config;\r\n\t}\r\n\r\n\tinitializeColumn(column){\r\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tthis.hasHandle = true;\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeCell(cell){\r\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\r\n\t\t\tvar self = this,\r\n\t\t\tcellEl = cell.getElement(true);\r\n\r\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\r\n\t\t\t\t\t\tself.startMove(e, cell.row);\r\n\t\t\t\t\t}, self.checkPeriod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\r\n\t\t\t\tif(e.which === 1){\r\n\t\t\t\t\tif(self.checkTimeout){\r\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\r\n\t\t}\r\n\t}\r\n\r\n\tbindTouchEvents(row, element){\r\n\t\tvar startYMove = false, //shifting center position of the cell\r\n\t\tdir = false,\r\n\t\tcurrentRow, nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\r\n\r\n\t\telement.addEventListener(\"touchstart\", (e) => {\r\n\t\t\tthis.checkTimeout = setTimeout(() => {\r\n\t\t\t\tthis.touchMove = true;\r\n\t\t\t\tcurrentRow = row;\r\n\t\t\t\tnextRow = row.nextRow();\r\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\r\n\t\t\t\tprevRow = row.prevRow();\r\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\r\n\t\t\t\tnextRowHeightLast = 0;\r\n\t\t\t\tprevRowHeightLast = 0;\r\n\t\t\t\tstartYMove = false;\r\n\r\n\t\t\t\tthis.startMove(e, row);\r\n\t\t\t}, this.checkPeriod);\r\n\t\t}, {passive: true});\r\n\t\tthis.moving, this.toRow, this.toRowAfter\r\n\t\telement.addEventListener(\"touchmove\", (e) => {\r\n\r\n\t\t\tvar halfCol, diff, moveToRow;\r\n\r\n\t\t\tif(this.moving){\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.moveHover(e);\r\n\r\n\t\t\t\tif(!startYMove){\r\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\r\n\r\n\t\t\t\tif(diff > 0){\r\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\r\n\t\t\t\t\t\tmoveToRow = nextRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(prevRow && -diff - prevRowHeightLast > prevRowHeight){\r\n\t\t\t\t\t\tmoveToRow = prevRow;\r\n\r\n\t\t\t\t\t\tif(moveToRow !== row){\r\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\r\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\r\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(moveToRow){\r\n\t\t\t\t\tcurrentRow = moveToRow;\r\n\t\t\t\t\tnextRow = moveToRow.nextRow();\r\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\r\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\r\n\t\t\t\t\tprevRow = moveToRow.prevRow();\r\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\r\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\telement.addEventListener(\"touchend\", (e) => {\r\n\t\t\tif(this.checkTimeout){\r\n\t\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t\t}\r\n\t\t\tif(this.moving){\r\n\t\t\t\tthis.endMove(e);\r\n\t\t\t\tthis.touchMove = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_bindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_unbindMouseMove(){\r\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\r\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstartMove(e, row){\r\n\t\tvar element = row.getElement();\r\n\r\n\t\tthis.setStartPosition(e, row);\r\n\r\n\t\tthis.moving = row;\r\n\r\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\t//create placeholder\r\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\r\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\r\n\r\n\t\tif(!this.connection){\r\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\r\n\t\t\telement.parentNode.removeChild(element);\r\n\t\t}else{\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\r\n\t\t\tthis.connectToTables(row);\r\n\t\t}\r\n\r\n\t\t//create hover element\r\n\t\tthis.hoverElement = element.cloneNode(true);\r\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\r\n\r\n\t\tif(this.connection){\r\n\t\t\tdocument.body.appendChild(this.hoverElement);\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\r\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\r\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\r\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\r\n\r\n\t\t\tthis.hoverElement.style.left = \"0\";\r\n\t\t\tthis.hoverElement.style.top = \"0\";\r\n\r\n\t\t\tthis._bindMouseMove();\r\n\t\t}\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\r\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\tthis.moveHover(e);\r\n\t}\r\n\r\n\tsetStartPosition(e, row){\r\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\r\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\r\n\t\telement, position;\r\n\r\n\t\telement = row.getElement();\r\n\t\tif(this.connection){\r\n\t\t\tposition = element.getBoundingClientRect();\r\n\r\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\r\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\r\n\t\t}else{\r\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\r\n\t\t}\r\n\t}\r\n\r\n\tendMove(e){\r\n\t\tif(!e || e.which === 1 || this.touchMove){\r\n\t\t\tthis._unbindMouseMove();\r\n\r\n\t\t\tif(!this.connection){\r\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\r\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tif(this.toRow){\r\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\r\n\t\t\t}\r\n\r\n\t\t\tthis.moving = false;\r\n\t\t\tthis.toRow = false;\r\n\t\t\tthis.toRowAfter = false;\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\r\n\r\n\t\t\tif(this.connection){\r\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\r\n\t\t\t\tthis.disconnectFromTables();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(row, after){\r\n\t\tthis.toRow = row;\r\n\t\tthis.toRowAfter = after;\r\n\t}\r\n\r\n\tmoveHover(e){\r\n\t\tif(this.connection){\r\n\t\t\tthis.moveHoverConnections.call(this, e);\r\n\t\t}else{\r\n\t\t\tthis.moveHoverTable.call(this, e);\r\n\t\t}\r\n\t}\r\n\r\n\tmoveHoverTable(e){\r\n\t\tvar rowHolder = this.table.rowManager.getElement(),\r\n\t\tscrollTop = rowHolder.scrollTop,\r\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop,\r\n\t\tscrollPos;\r\n\r\n\t\tthis.hoverElement.style.top = (yPos - this.startY) + \"px\";\r\n\t}\r\n\r\n\tmoveHoverConnections(e){\r\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\r\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\r\n\t}\r\n\r\n\telementRowDrop(e, element, row){\r\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\r\n\t}\r\n\r\n\t//establish connection with other tables\r\n\tconnectToTables(row){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\r\n\t\t\t\trow:row,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.connectionSelectorsElements){\r\n\r\n\t\t\tthis.connectionElements = [];\r\n\r\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\r\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\r\n\t\t\t}\r\n\r\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\r\n\t\t\t\tif(typeof query === \"string\"){\r\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.connectionElements.push(query);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\t\tvar dropEvent = (e) => {\r\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\r\n\t\t\t\t};\r\n\r\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\r\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\r\n\r\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//disconnect from other tables\r\n\tdisconnectFromTables(){\r\n\t\tvar connectionTables;\r\n\r\n\t\tif(this.connectionSelectorsTables){\r\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\r\n\r\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\r\n\t\t}\r\n\r\n\t\tthis.connectionElements.forEach((element) => {\r\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\r\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\r\n\t\t\tdelete element.tabulatorElementDropEvent;\r\n\t\t});\r\n\t}\r\n\r\n\t//accept incomming connection\r\n\tconnect(table, row){\r\n\t\tif(!this.connectedTable){\r\n\t\t\tthis.connectedTable = table;\r\n\t\t\tthis.connectedRow = row;\r\n\r\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\r\n\r\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\r\n\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//close incomming connection\r\n\tdisconnect(table){\r\n\t\tif(table === this.connectedTable){\r\n\t\t\tthis.connectedTable = false;\r\n\t\t\tthis.connectedRow = false;\r\n\r\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\r\n\r\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\r\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\r\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\")\r\n\t\t}\r\n\t}\r\n\r\n\tdropComplete(table, row, success){\r\n\t\tvar sender = false;\r\n\r\n\t\tif(success){\r\n\r\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\tsender = this.table.options.movableRowsSender;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(sender){\r\n\t\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table)\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.movableRowsSender){\r\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\r\n\t\t}\r\n\r\n\t\tthis.endMove();\r\n\t}\r\n\r\n\ttableRowDrop(e, row){\r\n\t\tvar receiver = false,\r\n\t\tsuccess = false;\r\n\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\r\n\t\t\tcase \"string\":\r\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treceiver = this.table.options.movableRowsReceiver;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(receiver){\r\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver)\r\n\t\t}\r\n\r\n\t\tif(success){\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\r\n\t\t}\r\n\r\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\r\n\t\t\trow:row,\r\n\t\t\tsuccess:success,\r\n\t\t});\r\n\t}\r\n\r\n\tcommsReceived(table, action, data){\r\n\t\tswitch(action){\r\n\t\t\tcase \"connect\":\r\n\t\t\treturn this.connect(table, data.row);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"disconnect\":\r\n\t\t\treturn this.disconnect(table);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"dropcomplete\":\r\n\t\t\treturn this.dropComplete(table, data.row, data.success);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nMoveRows.prototype.receivers = {\r\n\tinsert:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tadd:function(fromRow, toRow, fromTable){\r\n\t\tthis.table.addRow(fromRow.getData());\r\n\t\treturn true;\r\n\t},\r\n\r\n\tupdate:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\ttoRow.update(fromRow.getData());\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\treplace:function(fromRow, toRow, fromTable){\r\n\t\tif(toRow){\r\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\r\n\t\t\ttoRow.delete();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n};\r\n\r\nMoveRows.prototype.senders = {\r\n\tdelete:function(fromRow, toRow, toTable){\r\n\t\tfromRow.delete();\r\n\t}\r\n};\r\n\r\nMoveRows.moduleName = \"moveRow\";\r\n\r\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\r\n\r\nimport defaultMutators from './defaults/mutators.js';\r\n\r\nclass Mutator extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.registerColumnOption(\"mutator\");\r\n\t\tthis.registerColumnOption(\"mutatorParams\");\r\n\t\tthis.registerColumnOption(\"mutatorData\");\r\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\r\n\t\tthis.registerColumnOption(\"mutatorEdit\");\r\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\r\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\r\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\r\n\t}\r\n\r\n\trowDataChanged(row, tempData, updatedData){\r\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\r\n\t}\r\n\r\n\t//initialize column mutator\r\n\tinitializeColumn(column){\r\n\t\tvar match = false,\r\n\t\tconfig = {};\r\n\r\n\t\tthis.allowedTypes.forEach((type) => {\r\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\t\tmutator;\r\n\r\n\t\t\tif(column.definition[key]){\r\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\r\n\r\n\t\t\t\tif(mutator){\r\n\t\t\t\t\tmatch = true;\r\n\r\n\t\t\t\t\tconfig[key] = {\r\n\t\t\t\t\t\tmutator:mutator,\r\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(match){\r\n\t\t\tcolumn.modules.mutate = config;\r\n\t\t}\r\n\t}\r\n\r\n\tlookupMutator(value){\r\n\t\tvar mutator = false;\r\n\r\n\t\t//set column mutator\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Mutator.mutators[value]){\r\n\t\t\t\tmutator = Mutator.mutators[value];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tmutator = value;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn mutator;\r\n\t}\r\n\r\n\t//apply mutator to row\r\n\ttransformRow(data, type, updatedData){\r\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\r\n\t\tvalue;\r\n\r\n\t\tif(this.enabled){\r\n\r\n\t\t\tthis.table.columnManager.traverse((column) => {\r\n\t\t\t\tvar mutator, params, component;\r\n\r\n\t\t\t\tif(column.modules.mutate){\r\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\r\n\r\n\t\t\t\t\tif(mutator){\r\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\r\n\r\n\t\t\t\t\t\tif(type == \"data\" || typeof value !== \"undefined\"){\r\n\t\t\t\t\t\t\tcomponent = column.getComponent();\r\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\r\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//apply mutator to new cell value\r\n\ttransformCell(cell, value){\r\n\t\tif(cell.column.modules.mutate){\r\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\r\n\t\t\ttempData = {};\r\n\r\n\t\t\tif(mutator){\r\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\r\n\t\t\t\tcell.column.setFieldValue(tempData, value);\r\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tenable(){\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\tdisable(){\r\n\t\tthis.enabled = false;\r\n\t}\r\n}\r\n\r\nMutator.moduleName = \"mutator\";\r\n\r\n//load defaults\r\nMutator.mutators = defaultMutators;\r\n\r\nexport default Mutator;","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nclass Page extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"local\";\r\n\t\tthis.progressiveLoad = false;\r\n\r\n\t\tthis.size = 0;\r\n\t\tthis.page = 1;\r\n\t\tthis.count = 5;\r\n\t\tthis.max = 1;\r\n\r\n\t\tthis.displayIndex = 0; //index in display pipeline\r\n\r\n\t\tthis.initialLoad = true;\r\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\r\n\r\n\t\tthis.pageSizes = [];\r\n\r\n\t\tthis.dataReceivedNames = {}; //TODO - remove once pagimation update is complete\r\n\t\tthis.dataSentNames = {}; //TODO - remove once pagimation update is complete\r\n\r\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\r\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\r\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\r\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initail page to show on load\r\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\r\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\r\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\r\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\r\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\r\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\r\n\r\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\r\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\r\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\r\n\r\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\r\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\r\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\r\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\r\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\r\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\r\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\r\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.progressiveLoad){\r\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\r\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\r\n\r\n\t\t\tthis.createElements();\r\n\t\t\tthis.initializePaginator();\r\n\t\t}else if(this.table.options.progressiveLoad){\r\n\r\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\r\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\r\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\r\n\r\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad)\r\n\r\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\r\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowAddingPosition(row, top){\r\n\t\tvar rowManager = this.table.rowManager,\r\n\t\tdispRows = rowManager.getDisplayRows(),\r\n\t\tindex;\r\n\r\n\t\tif(top){\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[0];\r\n\t\t\t}else{\r\n\t\t\t\tif(rowManager.activeRows.length){\r\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.activeRows.length-1];\r\n\t\t\t\t\ttop = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(dispRows.length){\r\n\t\t\t\tindex = dispRows[dispRows.length - 1];\r\n\t\t\t\ttop = dispRows.length < this.size ? false : true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {index, top}\r\n\t}\r\n\r\n\tcalculatePageSizes(){\r\n\t\tvar testElRow, testElCell;\r\n\r\n\t\tif(this.table.options.paginationSize){\r\n\t\t\tthis.size = this.table.options.paginationSize;\r\n\t\t}else{\r\n\t\t\ttestElRow = document.createElement(\"div\");\r\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\r\n\t\t\ttestElRow.style.visibility = \"hidden\";\r\n\r\n\t\t\ttestElCell = document.createElement(\"div\");\r\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\r\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\r\n\r\n\t\t\ttestElRow.appendChild(testElCell);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\r\n\r\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\r\n\r\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialLoadComplete(){\r\n\t\tthis.initialLoad = false;\r\n\t}\r\n\r\n\tremotePageParams(data, config, silent, params){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\r\n\t\t\t\tthis.reset(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//configure request params\r\n\t\tparams.page = this.page;\r\n\r\n\t\t//set page size if defined\r\n\t\tif(this.size){\r\n\t\t\tparams.size = this.size;\r\n\t\t}\r\n\r\n\t\treturn params;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetPageToRow(row){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\trow = this.rowManager.findRow(row);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\treturn this.setPageToRow(row)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Promise.reject();\r\n\t}\r\n\r\n\tuserSetPageSize(size){\r\n\t\tif(this.table.options.pagination){\r\n\t\t\tthis.setPageSize(size);\r\n\t\t\treturn this.setPage(1);\r\n\t\t}else{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tscrollVertical(top, dir){\r\n\t\tvar element, diff, margin;\r\n\t\tif(!dir && !this.table.dataLoader.loading){\r\n\t\t\telement = this.table.rowManager.getElement();\r\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\r\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\r\n\r\n\t\t\tif(diff < margin){\r\n\t\t\t\tthis.nextPage();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trestOnRenderBefore(rows, renderInPosition){\r\n\t\tif(!renderInPosition){\r\n\t\t\tif(this.mode === \"local\"){\r\n\t\t\t\tthis.reset();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\trowsUpdated(){\r\n\t\tthis.refreshData(true, \"all\");\r\n\t}\r\n\r\n\tcreateElements(){\r\n\t\tvar button;\r\n\r\n\t\tthis.element = document.createElement(\"span\");\r\n\t\tthis.element.classList.add(\"tabulator-paginator\");\r\n\r\n\t\tthis.pagesElement = document.createElement(\"span\");\r\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\r\n\r\n\t\tbutton = document.createElement(\"button\");\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\t\tbutton.setAttribute(\"aria-label\", \"\");\r\n\t\tbutton.setAttribute(\"title\", \"\");\r\n\r\n\t\tthis.firstBut = button.cloneNode(true);\r\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\r\n\r\n\t\tthis.prevBut = button.cloneNode(true);\r\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\r\n\r\n\t\tthis.nextBut = button.cloneNode(true);\r\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\r\n\r\n\t\tthis.lastBut = button.cloneNode(true);\r\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\r\n\r\n\t\tif(this.table.options.paginationSizeSelector){\r\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\r\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\r\n\t\t}\r\n\t}\r\n\r\n\tgeneratePageSizeSelectList(){\r\n\t\tvar pageSizes = [];\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\r\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\r\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\r\n\t\t\t\tthis.pageSizes = pageSizes;\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes.unshift(this.size);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\r\n\t\t\t\t\tpageSizes = [];\r\n\r\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\r\n\t\t\t\t\t\tpageSizes.push(this.size * i);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.pageSizes = pageSizes;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpageSizes = this.pageSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\r\n\r\n\t\t\tpageSizes.forEach((item) => {\r\n\t\t\t\tvar itemEl = document.createElement(\"option\");\r\n\t\t\t\titemEl.value = item;\r\n\r\n\t\t\t\tif(item === true){\r\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\r\n\t\t\t\t\t\titemEl.innerHTML = value;\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\titemEl.innerHTML = item;\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\r\n\t\t\t});\r\n\r\n\t\t\tthis.pageSizeSelect.value = this.size;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup pageination\r\n\tinitializePaginator(hidden){\r\n\t\tvar pageSelectLabel;\r\n\r\n\t\tif(!hidden){\r\n\t\t\t//build pagination element\r\n\r\n\t\t\t//bind localizations\r\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\r\n\t\t\t\tthis.firstBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\r\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\r\n\t\t\t\tthis.prevBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\r\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\r\n\t\t\t\tthis.nextBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\r\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\r\n\t\t\t\tthis.lastBut.innerHTML = value;\r\n\t\t\t});\r\n\r\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\r\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\r\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\r\n\t\t\t});\r\n\r\n\t\t\t//click bindings\r\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(1)\r\n\t\t\t});\r\n\r\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.previousPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.nextPage()\r\n\t\t\t});\r\n\r\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.setPage(this.max)\r\n\t\t\t});\r\n\r\n\t\t\tif(this.table.options.paginationElement){\r\n\t\t\t\tthis.element = this.table.options.paginationElement;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.pageSizeSelect){\r\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\r\n\r\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\r\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\r\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\r\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\r\n\r\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\r\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\r\n\t\t\t\t\tthis.setPage(1)\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//append to DOM\r\n\t\t\tthis.element.appendChild(this.firstBut);\r\n\t\t\tthis.element.appendChild(this.prevBut);\r\n\t\t\tthis.element.appendChild(this.pagesElement);\r\n\t\t\tthis.element.appendChild(this.nextBut);\r\n\t\t\tthis.element.appendChild(this.lastBut);\r\n\r\n\t\t\tif(!this.table.options.paginationElement && !hidden){\r\n\t\t\t\tthis.table.footerManager.append(this.element, this);\r\n\t\t\t}\r\n\r\n\t\t\tthis.page = this.table.options.paginationInitialPage;\r\n\t\t\tthis.count = this.table.options.paginationButtonCount;\r\n\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\t//set default values\r\n\t\tthis.mode = this.table.options.paginationMode;\r\n\t}\r\n\r\n\tinitializeProgressive(mode){\r\n\t\tthis.initializePaginator(true);\r\n\t\tthis.mode = \"progressive_\" + mode;\r\n\t\tthis.progressiveLoad = true;\r\n\t}\r\n\r\n\ttrackChanges(){\r\n\t\tthis.dispatch(\"page-changed\");\r\n\t}\r\n\r\n\tsetDisplayIndex(index){\r\n\t\tthis.displayIndex = index;\r\n\t}\r\n\r\n\tgetDisplayIndex(){\r\n\t\treturn this.displayIndex;\r\n\t}\r\n\r\n\t//calculate maximum page from number of rows\r\n\tsetMaxRows(rowCount){\r\n\t\tif(!rowCount){\r\n\t\t\tthis.max = 1;\r\n\t\t}else{\r\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\r\n\t\t}\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t}\r\n\t}\r\n\r\n\t//reset to first page without triggering action\r\n\treset(force){\r\n\t\tif(!this.initialLoad){\r\n\t\t\tif(this.mode == \"local\" || force){\r\n\t\t\t\tthis.page = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set the maxmum page\r\n\tsetMaxPage(max){\r\n\r\n\t\tmax = parseInt(max);\r\n\r\n\t\tthis.max = max || 1;\r\n\r\n\t\tif(this.page > this.max){\r\n\t\t\tthis.page = this.max;\r\n\t\t\tthis.trigger();\r\n\t\t}\r\n\t}\r\n\r\n\t//set current page number\r\n\tsetPage(page){\r\n\t\tswitch(page){\r\n\t\t\tcase \"first\":\r\n\t\t\treturn this.setPage(1);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"prev\":\r\n\t\t\treturn this.previousPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"next\":\r\n\t\t\treturn this.nextPage();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"last\":\r\n\t\t\treturn this.setPage(this.max);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\r\n\t\tpage = parseInt(page);\r\n\r\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\r\n\t\t\tthis.page = page;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageToRow(row){\r\n\t\tvar rows = this.table.rowManager.getDisplayRows(this.displayIndex - 1);\r\n\t\tvar index = rows.indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\r\n\r\n\t\t\treturn this.setPage(page)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tsetPageSize(size){\r\n\t\tif(size !== true){\r\n\t\t\tsize = parseInt(size);\r\n\t\t}\r\n\r\n\t\tif(size > 0){\r\n\t\t\tthis.size = size;\r\n\t\t}\r\n\r\n\t\tif(this.pageSizeSelect){\r\n\t\t\t// this.pageSizeSelect.value = size;\r\n\t\t\tthis.generatePageSizeSelectList();\r\n\t\t}\r\n\r\n\t\tthis.trackChanges();\r\n\t}\r\n\r\n\t//setup the pagination buttons\r\n\t_setPageButtons(){\r\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\r\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\r\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\r\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\r\n\r\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\r\n\r\n\t\tif(this.page == 1){\r\n\t\t\tthis.firstBut.disabled = true;\r\n\t\t\tthis.prevBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.firstBut.disabled = false;\r\n\t\t\tthis.prevBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tif(this.page == this.max){\r\n\t\t\tthis.lastBut.disabled = true;\r\n\t\t\tthis.nextBut.disabled = true;\r\n\t\t}else{\r\n\t\t\tthis.lastBut.disabled = false;\r\n\t\t\tthis.nextBut.disabled = false;\r\n\t\t}\r\n\r\n\t\tfor(let i = min; i <= max; i++){\r\n\t\t\tif(i>0 && i <= this.max){\r\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.footerRedraw();\r\n\t}\r\n\r\n\t_generatePageButton(page){\r\n\t\tvar button = document.createElement(\"button\");\r\n\r\n\t\tbutton.classList.add(\"tabulator-page\");\r\n\t\tif(page == this.page){\r\n\t\t\tbutton.classList.add(\"active\");\r\n\t\t}\r\n\r\n\t\tbutton.setAttribute(\"type\", \"button\");\r\n\t\tbutton.setAttribute(\"role\", \"button\");\r\n\r\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\r\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\r\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\r\n\t\t});\r\n\r\n\t\tbutton.setAttribute(\"data-page\", page);\r\n\t\tbutton.textContent = page;\r\n\r\n\t\tbutton.addEventListener(\"click\", (e) => {\r\n\t\t\tthis.setPage(page)\r\n\t\t});\r\n\r\n\t\treturn button;\r\n\t}\r\n\r\n\t//previous page\r\n\tpreviousPage(){\r\n\t\tif(this.page > 1){\r\n\t\t\tthis.page--;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger()\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//next page\r\n\tnextPage(){\r\n\t\tif(this.page < this.max){\r\n\t\t\tthis.page++;\r\n\r\n\t\t\tthis.trackChanges();\r\n\r\n\t\t\treturn this.trigger();\r\n\r\n\t\t}else{\r\n\t\t\tif(!this.progressiveLoad){\r\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\r\n\t\t\t}\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t//return current page number\r\n\tgetPage(){\r\n\t\treturn this.page;\r\n\t}\r\n\r\n\t//return max page number\r\n\tgetPageMax(){\r\n\t\treturn this.max;\r\n\t}\r\n\r\n\tgetPageSize(size){\r\n\t\treturn this.size;\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//return appropriate rows for current page\r\n\tgetRows(data){\r\n\t\tvar output, start, end;\r\n\r\n\t\tif(this.mode == \"local\"){\r\n\t\t\toutput = [];\r\n\r\n\t\t\tthis.setMaxRows(data.length);\r\n\r\n\t\t\tif(this.size === true){\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tend = data.length;\r\n\t\t\t}else{\r\n\t\t\t\tstart = this.size * (this.page - 1);\r\n\t\t\t\tend = start + parseInt(this.size);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\tfor(let i = start; i < end; i++){\r\n\t\t\t\tif(data[i]){\r\n\t\t\t\t\toutput.push(data[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn output;\r\n\t\t}else{\r\n\t\t\tthis._setPageButtons();\r\n\r\n\t\t\treturn data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\ttrigger(){\r\n\t\tvar left;\r\n\r\n\t\tswitch(this.mode){\r\n\t\t\tcase \"local\":\r\n\t\t\tleft = this.table.rowManager.scrollLeft;\r\n\r\n\t\t\tthis.refreshData();\r\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\r\n\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\r\n\t\t\treturn Promise.resolve();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"remote\":\r\n\t\t\tthis.dataChanging = true;\r\n\t\t\treturn this.reloadData(null)\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.dataChanging = false;\r\n\t\t\t})\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"progressive_load\":\r\n\t\t\tcase \"progressive_scroll\":\r\n\t\t\treturn this.reloadData(null, true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\t_parseRemoteData(data){\r\n\t\tvar left, data, margin;\r\n\r\n\t\tif(typeof data.last_page === \"undefined\"){\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.last_page + \"' property\");\r\n\t\t}\r\n\r\n\t\tif(data.data){\r\n\t\t\tthis.max = parseInt(data.last_page) || 1;\r\n\r\n\t\t\tif(this.progressiveLoad){\r\n\t\t\t\tswitch(this.mode){\r\n\t\t\t\t\tcase \"progressive_load\":\r\n\r\n\t\t\t\t\tif(this.page == 1){\r\n\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.page < this.max){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"progressive_scroll\":\r\n\t\t\t\t\tdata = this.table.rowManager.getData().concat(data.data);\r\n\r\n\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\r\n\r\n\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\r\n\r\n\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.nextPage();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}else{\r\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\r\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\r\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.data + \"' property\");\r\n\t\t}\r\n\r\n\t\treturn data.data;\r\n\t}\r\n\r\n\t//handle the footer element being redrawn\r\n\tfooterRedraw(){\r\n\t\tvar footer = this.table.footerManager.element;\r\n\r\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t}else{\r\n\t\t\tthis.pagesElement.style.display = '';\r\n\r\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\r\n\t\t\t\tthis.pagesElement.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPage.moduleName = \"page\";\r\n\r\nexport default Page;","// read peristence information from storage\r\nexport default {\r\n\tlocal:function(id, type){\r\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t},\r\n\tcookie:function(id, type){\r\n\t\tvar cookie = document.cookie,\r\n\t\tkey = id + \"-\" + type,\r\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\r\n\t\tend, data;\r\n\r\n\t\t//if cookie exists, decode and load column data into tabulator\r\n\t\tif(cookiePos > -1){\r\n\t\t\tcookie = cookie.substr(cookiePos);\r\n\r\n\t\t\tend = cookie.indexOf(\";\");\r\n\r\n\t\t\tif(end > -1){\r\n\t\t\t\tcookie = cookie.substr(0, end);\r\n\t\t\t}\r\n\r\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\r\n\t\t}\r\n\r\n\t\treturn data ? JSON.parse(data) : false;\r\n\t}\r\n};","//write persistence information to storage\r\nexport default {\r\n\tlocal:function(id, type, data){\r\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\r\n\t},\r\n\tcookie:function(id, type, data){\r\n\t\tvar expireDate = new Date();\r\n\r\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\r\n\r\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultReaders from './defaults/readers.js';\r\nimport defaultWriters from './defaults/writers.js';\r\n\r\nclass Persistence extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.mode = \"\";\r\n\t\tthis.id = \"\";\r\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\r\n\t\tthis.defWatcherBlock = false;\r\n\t\tthis.config = {};\r\n\t\tthis.readFunc = false;\r\n\t\tthis.writeFunc = false;\r\n\r\n\t\tthis.registerTableOption(\"persistence\", false);\r\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\r\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\r\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\r\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\r\n\t}\r\n\r\n\t// Test for whether localStorage is available for use.\r\n\tlocalStorageTest() {\r\n\t\tvar testKey = \"_tabulator_test\";\r\n\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem( testKey, testKey);\r\n\t\t\twindow.localStorage.removeItem( testKey );\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup parameters\r\n\tinitialize(){\r\n\t\tif(this.table.options.persistence){\r\n\t\t\t//determine persistent layout storage type\r\n\t\t\tvar mode = this.table.options.persistenceMode,\r\n\t\t\tid = this.table.options.persistenceID,\r\n\t\t\tretreivedData;\r\n\r\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\r\n\r\n\t\t\tif(this.table.options.persistenceReaderFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\r\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\r\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.readers[this.mode]){\r\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.table.options.persistenceWriterFunc){\r\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\r\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\r\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(Persistence.writers[this.mode]){\r\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//set storage tag\r\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\r\n\r\n\t\t\tthis.config = {\r\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\r\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\r\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\r\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\r\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\r\n\t\t\t};\r\n\r\n\t\t\t//load pagination data if needed\r\n\t\t\tif(this.config.page){\r\n\t\t\t\tretreivedData = this.retreiveData(\"page\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\r\n\t\t\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\r\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//load group data if needed\r\n\t\t\tif(this.config.group){\r\n\t\t\t\tretreivedData = this.retreiveData(\"group\");\r\n\r\n\t\t\t\tif(retreivedData){\r\n\t\t\t\t\tif(typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\r\n\t\t\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\r\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\r\n\t\t\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.columns){\r\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\r\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\r\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\r\n\t\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\r\n\r\n\r\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\r\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\r\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\r\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\r\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\r\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\r\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\r\n\t}\r\n\r\n\teventSave(type){\r\n\t\tif(this.config[type]){\r\n\t\t\tthis.save(type);\r\n\t\t}\r\n\t}\r\n\r\n\ttableBuilt(){\r\n\t\tvar options = this.table.options,\r\n\t\tsorters, filters;\r\n\r\n\t\tif(this.config.sort){\r\n\t\t\tsorters = this.load(\"sort\");\r\n\r\n\t\t\tif(!sorters === false){\r\n\t\t\t\tthis.table.initialSort = sorters;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.config.filter){\r\n\t\t\tfilters = this.load(\"filter\");\r\n\r\n\t\t\tif(!filters === false){\r\n\t\t\t\tthis.table.initialFilter = filters;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif(force && this.config.columns){\r\n\t\t\tthis.save(\"columns\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tgetColumnLayout(){\r\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\r\n\t}\r\n\r\n\tsetColumnLayout(layout){\r\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout))\r\n\t\treturn true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumn(column){\r\n\t\tvar def, keys;\r\n\r\n\t\tif(this.config.columns){\r\n\t\t\tthis.defWatcherBlock = true;\r\n\r\n\t\t\tdef = column.getDefinition();\r\n\r\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\r\n\r\n\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\r\n\t\t\t\tvar value = def[key];\r\n\t\t\t\tif(props){\r\n\t\t\t\t\tObject.defineProperty(def, key, {\r\n\t\t\t\t\t\tset: function(newValue){\r\n\t\t\t\t\t\t\tvalue = newValue;\r\n\r\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\r\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif(props.set){\r\n\t\t\t\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tget:function(){\r\n\t\t\t\t\t\t\tif(props.get){\r\n\t\t\t\t\t\t\t\tprops.get();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.defWatcherBlock = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//load saved definitions\r\n\tload(type, current){\r\n\t\tvar data = this.retreiveData(type);\r\n\r\n\t\tif(current){\r\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//retreive data from memory\r\n\tretreiveData(type){\r\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\r\n\t}\r\n\r\n\t//merge old and new column definitions\r\n\tmergeDefinition(oldCols, newCols){\r\n\t\tvar output = [];\r\n\r\n\t\tnewCols = newCols || [];\r\n\r\n\t\tnewCols.forEach((column, to) => {\r\n\t\t\tvar from = this._findColumn(oldCols, column),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(from){\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(from);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\r\n\t\t\t\t\t\tfrom[key] = column[key];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(from.columns){\r\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\r\n\t\t\t\t}\r\n\r\n\t\t\t\toutput.push(from);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\toldCols.forEach((column, i) => {\r\n\t\t\tvar from = this._findColumn(newCols, column);\r\n\r\n\t\t\tif (!from) {\r\n\t\t\t\tif(output.length>i){\r\n\t\t\t\t\toutput.splice(i, 0, column);\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push(column);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//find matching columns\r\n\t_findColumn(columns, subject){\r\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\r\n\r\n\t\treturn columns.find(function(col){\r\n\t\t\tswitch(type){\r\n\t\t\t\tcase \"group\":\r\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"field\":\r\n\t\t\t\treturn col.field === subject.field;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"object\":\r\n\t\t\t\treturn col === subject;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//save data\r\n\tsave(type){\r\n\t\tvar data = {};\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"columns\":\r\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns())\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"filter\":\r\n\t\t\tdata = this.table.modules.filter.getFilters();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sort\":\r\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"group\":\r\n\t\t\tdata = this.getGroupConfig();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"page\":\r\n\t\t\tdata = this.getPageConfig();\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(this.writeFunc){\r\n\t\t\tthis.writeFunc(this.id, type, data);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//ensure sorters contain no function data\r\n\tvalidateSorters(data){\r\n\t\tdata.forEach(function(item){\r\n\t\t\titem.column = item.field;\r\n\t\t\tdelete item.field;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetGroupConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.group){\r\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\r\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\r\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\r\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetPageConfig(){\r\n\t\tvar data = {};\r\n\r\n\t\tif(this.config.page){\r\n\t\t\tif(this.config.page === true || this.config.page.size){\r\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.config.page === true || this.config.page.page){\r\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\r\n\t//parse columns for data to store\r\n\tparseColumns(columns){\r\n\t\tvar definitions = [],\r\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\tvar defStore = {},\r\n\t\t\tcolDef = column.getDefinition(),\r\n\t\t\tkeys;\r\n\r\n\t\t\tif(column.isGroup){\r\n\t\t\t\tdefStore.title = colDef.title;\r\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\r\n\t\t\t}else{\r\n\t\t\t\tdefStore.field = column.getField();\r\n\r\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\r\n\t\t\t\t\tkeys = Object.keys(colDef);\r\n\t\t\t\t\tkeys.push(\"width\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tkeys = this.config.columns;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkeys.forEach((key)=>{\r\n\t\t\t\t\tswitch(key){\r\n\t\t\t\t\t\tcase \"width\":\r\n\t\t\t\t\t\tdefStore.width = column.getWidth();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"visible\":\r\n\t\t\t\t\t\tdefStore.visible = column.visible;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\r\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdefinitions.push(defStore);\r\n\t\t});\r\n\r\n\t\treturn definitions;\r\n\t}\r\n}\r\n\r\nPersistence.moduleName = \"persistence\";\r\n\r\n//load defaults\r\nPersistence.readers = defaultReaders;\r\nPersistence.writers = defaultWriters;\r\n\r\nexport default Persistence;","import Module from '../../core/Module.js';\r\n\r\nclass Print extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = false;\r\n\t\tthis.manualBlock = false;\r\n\r\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\r\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\r\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\r\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\r\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\r\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\r\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\r\n\r\n\t\tthis.registerColumnOption(\"print\");\r\n\t\tthis.registerColumnOption(\"titlePrint\");\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.printAsHtml){\r\n\t\t\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\r\n\t\t\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\r\n\t\t}\r\n\r\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\treplaceTable(){\r\n\t\tif(!this.manualBlock){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\r\n\r\n\t\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\r\n\r\n\t\t\tthis.table.element.style.display = \"none\";\r\n\r\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\r\n\t\t}\r\n\t}\r\n\r\n\tcleanup(){\r\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\r\n\r\n\t\tif(this.element && this.element.parentNode){\r\n\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\tthis.table.element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprintFullscreen(visible, style, config){\r\n\t\tvar scrollX = window.scrollX,\r\n\t\tscrollY = window.scrollY,\r\n\t\theaderEl = document.createElement(\"div\"),\r\n\t\tfooterEl = document.createElement(\"div\"),\r\n\t\ttableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\r\n\t\theaderContent, footerContent;\r\n\r\n\t\tthis.manualBlock = true;\r\n\r\n\t\tthis.element = document.createElement(\"div\");\r\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\r\n\r\n\t\tif(this.table.options.printHeader){\r\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\r\n\r\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\r\n\r\n\t\t\tif(typeof headerContent == \"string\"){\r\n\t\t\t\theaderEl.innerHTML = headerContent;\r\n\t\t\t}else{\r\n\t\t\t\theaderEl.appendChild(headerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(headerEl);\r\n\t\t}\r\n\r\n\t\tthis.element.appendChild(tableEl);\r\n\r\n\t\tif(this.table.options.printFooter){\r\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\r\n\r\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\r\n\r\n\r\n\t\t\tif(typeof footerContent == \"string\"){\r\n\t\t\t\tfooterEl.innerHTML = footerContent;\r\n\t\t\t}else{\r\n\t\t\t\tfooterEl.appendChild(footerContent);\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.appendChild(footerEl);\r\n\t\t}\r\n\r\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\r\n\t\tdocument.body.appendChild(this.element);\r\n\r\n\t\tif(this.table.options.printFormatter){\r\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\r\n\t\t}\r\n\r\n\t\twindow.print();\r\n\r\n\t\tthis.cleanup();\r\n\r\n\t\twindow.scrollTo(scrollX, scrollY);\r\n\r\n\t\tthis.manualBlock = false;\r\n\t}\r\n}\r\n\r\nPrint.moduleName = \"print\";\r\n\r\nexport default Print;","import Module from '../../core/Module.js';\r\n\r\nclass ReactiveData extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.data = false;\r\n\t\tthis.blocked = false; //block reactivity while performing update\r\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\r\n\t\tthis.currentVersion = 0;\r\n\r\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.reactiveData){\r\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this));\r\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\r\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\r\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\twatchData(data){\r\n\t\tvar pushFunc, version;\r\n\r\n\t\tthis.currentVersion ++;\r\n\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tthis.unwatchData();\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t//override array push function\r\n\t\tthis.origFuncs.push = data.push;\r\n\r\n\t\tObject.defineProperty(this.data, \"push\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, false);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.push.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array unshift function\r\n\t\tthis.origFuncs.unshift = data.unshift;\r\n\r\n\t\tObject.defineProperty(this.data, \"unshift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tthis.table.rowManager.addRowActual(arg, true);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.unshift.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array shift function\r\n\t\tthis.origFuncs.shift = data.shift;\r\n\r\n\t\tObject.defineProperty(this.data, \"shift\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[0]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.shift.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//override array pop function\r\n\t\tthis.origFuncs.pop = data.pop;\r\n\r\n\t\tObject.defineProperty(this.data, \"pop\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tif(this.data.length){\r\n\t\t\t\t\t\trow = this.table.rowManager.getRowFromDataObject(this.data[this.data.length - 1]);\r\n\r\n\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\trow.deleteActual();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.origFuncs.pop.call(data);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t//override array splice function\r\n\t\tthis.origFuncs.splice = data.splice;\r\n\r\n\t\tObject.defineProperty(this.data, \"splice\", {\r\n\t\t\tenumerable: false,\r\n\t\t\tconfigurable: true,\r\n\t\t\tvalue: () => {\r\n\t\t\t\tvar args = Array.from(arguments),\r\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\r\n\t\t\t\tend = args[1],\r\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\r\n\t\t\t\tstartRow;\r\n\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\r\n\t\t\t\t\t//add new rows\r\n\t\t\t\t\tif(newRows){\r\n\t\t\t\t\t\tstartRow = data[start] ? this.table.rowManager.getRowFromDataObject(data[start]) : false;\r\n\r\n\t\t\t\t\t\tif(startRow){\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, startRow, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\r\n\r\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\r\n\t\t\t\t\t\t\t\tthis.table.rowManager.addRowActual(rowData, true, false, true);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//delete removed rows\r\n\t\t\t\t\tif(end !== 0){\r\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\r\n\r\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\r\n\t\t\t\t\t\t\tvar row = this.table.rowManager.getRowFromDataObject(rowData);\r\n\r\n\t\t\t\t\t\t\tif(row){\r\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(newRows || end !== 0){\r\n\t\t\t\t\t\tthis.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.origFuncs.splice.apply(data, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchData(){\r\n\t\tif(this.data !== false){\r\n\t\t\tfor(var key in this.origFuncs){\r\n\t\t\t\tObject.defineProperty(this.data, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable:true,\r\n\t\t\t\t\twritable:true,\r\n\t\t\t\t\tvalue: this.origFuncs.key,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tthis.blocked = true;\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tthis.watchKey(row, data, key);\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataTree){\r\n\t\t\tthis.watchTreeChildren(row);\r\n\t\t}\r\n\r\n\t\tthis.blocked = false;\r\n\t}\r\n\r\n\twatchTreeChildren (row){\r\n\t\tvar childField = row.getData()[this.table.options.dataTreeChildField],\r\n\t\torigFuncs = {};\r\n\r\n\t\tfunction rebuildTree(){\r\n\t\t\tthis.table.modules.dataTree.initializeRow(row);\r\n\t\t\tthis.table.modules.dataTree.layoutRow(row);\r\n\t\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\r\n\t\t}\r\n\r\n\t\tif(childField){\r\n\r\n\t\t\torigFuncs.push = childField.push;\r\n\r\n\t\t\tObject.defineProperty(childField, \"push\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.unshift = childField.unshift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"unshift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.shift = childField.shift;\r\n\r\n\t\t\tObject.defineProperty(childField, \"shift\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.shift.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.pop = childField.pop;\r\n\r\n\t\t\tObject.defineProperty(childField, \"pop\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.pop.call(childField);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\torigFuncs.splice = childField.splice;\r\n\r\n\t\t\tObject.defineProperty(childField, \"splice\", {\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tvalue: () => {\r\n\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\r\n\r\n\t\t\t\t\trebuildTree();\r\n\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchKey(row, data, key){\r\n\t\tvar props = Object.getOwnPropertyDescriptor(data, key),\r\n\t\tvalue = data[key],\r\n\t\tversion = this.currentVersion;\r\n\r\n\t\tObject.defineProperty(data, key, {\r\n\t\t\tset: (newValue) => {\r\n\t\t\t\tvalue = newValue;\r\n\t\t\t\tif(!this.blocked && version === this.currentVersion){\r\n\t\t\t\t\tvar update = {};\r\n\t\t\t\t\tupdate[key] = newValue;\r\n\t\t\t\t\trow.updateData(update);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(props.set){\r\n\t\t\t\t\tprops.set(newValue);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tget:() => {\r\n\r\n\t\t\t\tif(props.get){\r\n\t\t\t\t\tprops.get();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tunwatchRow(row){\r\n\t\tvar data = row.getData();\r\n\r\n\t\tfor(var key in data){\r\n\t\t\tObject.defineProperty(data, key, {\r\n\t\t\t\tvalue:data[key],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tblock(){\r\n\t\tthis.blocked = true;\r\n\t}\r\n\r\n\tunblock(){\r\n\t\tthis.blocked = false;\r\n\t}\r\n}\r\n\r\nReactiveData.moduleName = \"reactiveData\";\r\n\r\nexport default ReactiveData;\r\n\r\n\r\n\r\n","import Module from '../../core/Module.js';\r\n\r\nclass ResizeColumns extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startX = false;\r\n\t\tthis.startWidth = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerColumnOption(\"resizable\", true);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\t// if(this.table.options.resizableColumns){\r\n\t\t\tthis.subscribe(\"cell-layout\", this.layoutCellHandles.bind(this));\r\n\t\t\tthis.subscribe(\"column-init\", this.layoutColumnHeader.bind(this));\r\n\t\t// }\r\n\t}\r\n\r\n\tlayoutCellHandles(cell){\r\n\t\tif(cell.row.type === \"row\"){\r\n\t\t\tthis.initializeColumn(\"cell\", cell.column, cell.element);\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutColumnHeader(column){\r\n\t\tthis.initializeColumn(\"header\", column, column.element);\r\n\t}\r\n\r\n\tinitializeColumn(type, column, element){\r\n\t\tvar self = this,\r\n\t\tvariableHeight = false,\r\n\t\tmode = column.definition.resizable;\r\n\r\n\t\t//set column resize mode\r\n\t\tif(type === \"header\"){\r\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\r\n\t\t\tcolumn.modules.resize = {variableHeight:variableHeight};\r\n\t\t}\r\n\r\n\t\tif(mode === true || mode == type){\r\n\r\n\t\t\tvar handle = document.createElement('div');\r\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\r\n\r\n\r\n\t\t\tvar prevHandle = document.createElement('div');\r\n\t\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\r\n\r\n\t\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar handleDown = function(e){\r\n\t\t\t\tvar nearestColumn = column.getLastColumn();\r\n\r\n\t\t\t\tif(nearestColumn && self._checkResizability(nearestColumn)){\r\n\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\tself._mouseDown(e, nearestColumn, handle);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\t\t//reszie column on double click\r\n\t\t\thandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar col = column.getLastColumn();\r\n\r\n\t\t\t\tif(col && self._checkResizability(col)){\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\tcol.reinitializeWidth(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\tvar prevHandleDown = function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\tself.startColumn = column;\r\n\t\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\r\n\t\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, {passive: true});\r\n\r\n\t\t\t//resize column on double click\r\n\t\t\tprevHandle.addEventListener(\"dblclick\", function(e){\r\n\t\t\t\tvar nearestColumn, colIndex, prevColumn;\r\n\r\n\t\t\t\tnearestColumn = column.getFirstColumn();\r\n\r\n\t\t\t\tif(nearestColumn){\r\n\t\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\r\n\t\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\r\n\r\n\t\t\t\t\tif(prevColumn && self._checkResizability(prevColumn)){\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\tprevColumn.reinitializeWidth(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telement.appendChild(handle);\r\n\t\t\telement.appendChild(prevHandle);\r\n\t\t}\r\n\t}\r\n\r\n\t_checkResizability(column){\r\n\t\treturn column.definition.resizable;\r\n\t}\r\n\r\n\t_mouseDown(e, column, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\t// self.table.columnManager.tempScrollBlock();\r\n\r\n\t\t\tif(self.table.rtl){\r\n\t\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\r\n\t\t\t}\r\n\r\n\t\t\tself.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t//block editor from taking action while resizing is taking place\r\n\t\t\tif(self.startColumn.modules.edit){\r\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\r\n\t\t\t\tcolumn.checkCellHeights();\r\n\t\t\t}\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tself.dispatch(\"column-resized\", column);\r\n\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\tif(self.startColumn.modules.edit){\r\n\t\t\tself.startColumn.modules.edit.blocked = true;\r\n\t\t}\r\n\r\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\r\n\t\tself.startWidth = column.getWidth();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeColumns.moduleName = \"resizeColumns\";\r\n\r\nexport default ResizeColumns;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeRows extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.startColumn = false;\r\n\t\tthis.startY = false;\r\n\t\tthis.startHeight = false;\r\n\t\tthis.handle = null;\r\n\t\tthis.prevHandle = null;\r\n\r\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.resizableRows){\r\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\trowEl = row.getElement();\r\n\r\n\t\tvar handle = document.createElement('div');\r\n\t\thandle.className = \"tabulator-row-resize-handle\";\r\n\r\n\t\tvar prevHandle = document.createElement('div');\r\n\t\tprevHandle.className = \"tabulator-row-resize-handle prev\";\r\n\r\n\t\thandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar handleDown = function(e){\r\n\t\t\tself.startRow = row;\r\n\t\t\tself._mouseDown(e, row, handle);\r\n\t\t};\r\n\r\n\t\thandle.addEventListener(\"mousedown\", handleDown);\r\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\r\n\r\n\t\tprevHandle.addEventListener(\"click\", function(e){\r\n\t\t\te.stopPropagation();\r\n\t\t});\r\n\r\n\t\tvar prevHandleDown = function(e){\r\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\r\n\r\n\t\t\tif(prevRow){\r\n\t\t\t\tself.startRow = prevRow;\r\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tprevHandle.addEventListener(\"mousedown\",prevHandleDown);\r\n\t\tprevHandle.addEventListener(\"touchstart\",prevHandleDown, {passive: true});\r\n\r\n\t\trowEl.appendChild(handle);\r\n\t\trowEl.appendChild(prevHandle);\r\n\t}\r\n\r\n\t_mouseDown(e, row, handle){\r\n\t\tvar self = this;\r\n\r\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tfunction mouseMove(e){\r\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\r\n\t\t}\r\n\r\n\t\tfunction mouseUp(e){\r\n\r\n\t\t\t// //block editor from taking action while resizing is taking place\r\n\t\t\t// if(self.startColumn.modules.edit){\r\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\r\n\t\t\t// }\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\r\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\r\n\r\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\r\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\r\n\r\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\r\n\r\n\t\t\tthis.dispatchExternal(\"rowResized\", row.getComponent());\r\n\t\t}\r\n\r\n\t\te.stopPropagation(); //prevent resize from interfereing with movable columns\r\n\r\n\t\t//block editor from taking action while resizing is taking place\r\n\t\t// if(self.startColumn.modules.edit){\r\n\t\t// \tself.startColumn.modules.edit.blocked = true;\r\n\t\t// }\r\n\r\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\r\n\t\tself.startHeight = row.getHeight();\r\n\r\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\r\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\r\n\r\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\r\n\t\thandle.addEventListener(\"touchend\", mouseUp);\r\n\t}\r\n}\r\n\r\nResizeRows.moduleName = \"resizeRows\";\r\n\r\nexport default ResizeRows;","import Module from '../../core/Module.js';\r\n\r\nclass ResizeTable extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.binding = false;\r\n\t\tthis.observer = false;\r\n\t\tthis.containerObserver = false;\r\n\r\n\t\tthis.tableHeight = 0;\r\n\t\tthis.tableWidth = 0;\r\n\t\tthis.containerHeight = 0;\r\n\t\tthis.containerWidth = 0;\r\n\r\n\t\tthis.autoResize = false;\r\n\r\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.autoResize){\r\n\t\t\tvar table = this.table,\r\n\t\t\ttableStyle;\r\n\r\n\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\r\n\t\t\tif(table.element.parentNode){\r\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\r\n\r\n\t\t\t\tthis.autoResize = true;\r\n\r\n\t\t\t\tthis.observer = new ResizeObserver((entry) => {\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\r\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\r\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\r\n\r\n\t\t\t\t\t\t\tif(table.element.parentNode){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.observer.observe(table.element);\r\n\r\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\r\n\r\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\r\n\r\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\r\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile &&!table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\r\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\r\n\r\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\r\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\r\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\r\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\r\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\r\n\r\n\t\t\t}else{\r\n\t\t\t\tthis.binding = function(){\r\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && !table.modules.edit.currentCell)){\r\n\r\n\t\t\t\t\t\ttable.columnManager.renderer.rerenderColumns(true);\r\n\r\n\t\t\t\t\t\ttable.redraw();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\r\n\t\t\t}\r\n\r\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\r\n\t\t}\r\n\t}\r\n\r\n\ttableResized(){\r\n\t\tthis.table.rowManager.redraw();\r\n\t}\r\n\r\n\tclearBindings(){\r\n\t\tif(this.binding){\r\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\r\n\t\t}\r\n\r\n\t\tif(this.observer){\r\n\t\t\tthis.observer.unobserve(this.table.element);\r\n\t\t}\r\n\r\n\t\tif(this.containerObserver){\r\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nResizeTable.moduleName = \"resizeTable\";\r\n\r\nexport default ResizeTable;","import Module from '../../core/Module.js';\r\n\r\nclass ResponsiveLayout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.hiddenColumns = [];\r\n\t\tthis.mode = \"\";\r\n\t\tthis.index = 0;\r\n\t\tthis.collapseFormatter = [];\r\n\t\tthis.collapseStartOpen = true;\r\n\t\tthis.collapseHandleColumn = false;\r\n\r\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\r\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\r\n\r\n\t\tthis.registerColumnOption(\"responsive\");\r\n\t}\r\n\r\n\t//generate resposive columns list\r\n\tinitialize(){\r\n\t\tvar self = this,\r\n\t\tcolumns = [];\r\n\r\n\t\tif(this.table.options.responsiveLayout){\r\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\r\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\r\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\r\n\r\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\r\n\r\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\r\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttableRedraw(force){\r\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\r\n\t\t\tif(!force){\r\n\t\t\t\tthis.update();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeResponsivity(){\r\n\t\tvar columns = [];\r\n\r\n\t\tthis.mode = this.table.options.responsiveLayout;\r\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\r\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\r\n\t\tthis.hiddenColumns = [];\r\n\r\n\t\t//detemine level of responsivity for each column\r\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column, i){\r\n\t\t\tif(column.modules.responsive){\r\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\r\n\t\t\t\t\tcolumn.modules.responsive.index = i;\r\n\t\t\t\t\tcolumns.push(column);\r\n\r\n\t\t\t\t\tif(!column.visible && self.mode === \"collapse\"){\r\n\t\t\t\t\t\tself.hiddenColumns.push(column);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//sort list by responsivity\r\n\t\tcolumns = columns.reverse();\r\n\t\tcolumns = columns.sort(function(a, b){\r\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\r\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\r\n\t\t});\r\n\r\n\t\tthis.columns = columns;\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.generateCollapsedContent();\r\n\t\t}\r\n\r\n\t\t//assign collapse column\r\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\r\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\r\n\t\t\t\tthis.collapseHandleColumn = col;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.collapseHandleColumn){\r\n\t\t\tif(this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}else{\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//define layout information\r\n\tinitializeColumn(column){\r\n\t\tvar def = column.getDefinition();\r\n\r\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar el;\r\n\r\n\t\tif(row.type !== \"calc\"){\r\n\t\t\tel = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\r\n\r\n\t\t\trow.modules.responsiveLayout = {\r\n\t\t\t\telement:el,\r\n\t\t\t\topen:this.collapseStartOpen,\r\n\t\t\t};\r\n\r\n\t\t\tif(!this.collapseStartOpen){\r\n\t\t\t\tel.style.display = 'none';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\r\n\t\t\tthis.generateCollapsedRowContent(row);\r\n\t\t}\r\n\t}\r\n\r\n\t//update column visibility\r\n\tupdateColumnVisibility(column, responsiveToggle){\r\n\t\tif(!responsiveToggle && column.modules.responsive){\r\n\t\t\tcolumn.modules.responsive.visible = column.visible;\r\n\t\t\tthis.initialize();\r\n\t\t}\r\n\r\n\t\t//this.update();\r\n\t}\r\n\r\n\thideColumn(column){\r\n\t\tvar colCount = this.hiddenColumns.length;\r\n\r\n\t\tcolumn.hide(false, true);\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tthis.hiddenColumns.unshift(column);\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !colCount){\r\n\t\t\t\tthis.collapseHandleColumn.show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowColumn(column){\r\n\t\tvar index;\r\n\r\n\t\tcolumn.show(false, true);\r\n\t\t//set column width to prevent calculation loops on uninitialized columns\r\n\t\tcolumn.setWidth(column.getWidth());\r\n\r\n\t\tif(this.mode === \"collapse\"){\r\n\t\t\tindex = this.hiddenColumns.indexOf(column);\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateCollapsedContent();\r\n\r\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\r\n\t\t\t\tthis.collapseHandleColumn.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//redraw columns to fit space\r\n\tupdate(){\r\n\t\tvar self = this,\r\n\t\tworking = true;\r\n\r\n\t\twhile(working){\r\n\r\n\t\t\tlet width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\r\n\r\n\t\t\tlet diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\r\n\r\n\t\t\tif(diff < 0){\r\n\t\t\t\t//table is too wide\r\n\t\t\t\tlet column = self.columns[self.index];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tself.hideColumn(column);\r\n\t\t\t\t\tself.index ++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\t//table has spare space\r\n\t\t\t\tlet column = self.columns[self.index -1];\r\n\r\n\t\t\t\tif(column){\r\n\t\t\t\t\tif(diff > 0){\r\n\t\t\t\t\t\tif(diff >= column.getWidth()){\r\n\t\t\t\t\t\t\tself.showColumn(column);\r\n\t\t\t\t\t\t\tself.index --;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tworking = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tworking = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!self.table.rowManager.activeRowsCount){\r\n\t\t\t\tself.table.rowManager.renderEmptyScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedContent(){\r\n\t\tvar self = this,\r\n\t\trows = this.table.rowManager.getDisplayRows();\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tself.generateCollapsedRowContent(row);\r\n\t\t});\r\n\t}\r\n\r\n\tgenerateCollapsedRowContent(row){\r\n\t\tvar el, contents;\r\n\r\n\t\tif(row.modules.responsiveLayout){\r\n\t\t\tel = row.modules.responsiveLayout.element;\r\n\r\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\r\n\r\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\r\n\t\t\tif(contents){\r\n\t\t\t\tel.appendChild(contents);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateCollapsedRowData(row){\r\n\t\tvar self = this,\r\n\t\tdata = row.getData(),\r\n\t\toutput = [],\r\n\t\tmockCellComponent;\r\n\r\n\t\tthis.hiddenColumns.forEach(function(column){\r\n\t\t\tvar value = column.getFieldValue(data);\r\n\r\n\t\t\tif(column.definition.title && column.field){\r\n\t\t\t\tif(column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters){\r\n\r\n\t\t\t\t\tmockCellComponent = {\r\n\t\t\t\t\t\tvalue:false,\r\n\t\t\t\t\t\tdata:{},\r\n\t\t\t\t\t\tgetValue:function(){\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetData:function(){\r\n\t\t\t\t\t\t\treturn data;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetElement:function(){\r\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetRow:function(){\r\n\t\t\t\t\t\t\treturn row.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetColumn:function(){\r\n\t\t\t\t\t\t\treturn column.getComponent();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\toutput.push({\r\n\t\t\t\t\t\tfield: column.field,\r\n\t\t\t\t\t\ttitle: column.definition.title,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tformatCollapsedData(data){\r\n\t\tvar list = document.createElement(\"table\");\r\n\r\n\t\tdata.forEach(function(item){\r\n\t\t\tvar row = document.createElement(\"tr\");\r\n\t\t\tvar titleData = document.createElement(\"td\");\r\n\t\t\tvar valueData = document.createElement(\"td\");\r\n\t\t\tvar node_content;\r\n\r\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\r\n\t\t\ttitleData.appendChild(titleHighlight);\r\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\r\n\t\t\t\ttitleHighlight.innerText = text || item.title;\r\n\t\t\t});\r\n\r\n\t\t\tif(item.value instanceof Node){\r\n\t\t\t\tnode_content = document.createElement(\"div\");\r\n\t\t\t\tnode_content.appendChild(item.value);\r\n\t\t\t\tvalueData.appendChild(node_content);\r\n\t\t\t}else{\r\n\t\t\t\tvalueData.innerHTML = item.value;\r\n\t\t\t}\r\n\r\n\t\t\trow.appendChild(titleData);\r\n\t\t\trow.appendChild(valueData);\r\n\t\t\tlist.appendChild(row);\r\n\t\t}, this);\r\n\r\n\t\treturn Object.keys(data).length ? list : \"\";\r\n\t}\r\n}\r\n\r\nResponsiveLayout.moduleName = \"responsiveLayout\";\r\n\r\nexport default ResponsiveLayout;","import Module from '../../core/Module.js';\r\n\r\nclass SelectRow extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.selecting = false; //flag selecting in progress\r\n\t\tthis.lastClickedRow = false; //last clicked row\r\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\r\n\t\tthis.selectedRows = []; //hold selected rows\r\n\t\tthis.headerCheckboxElement = null; // hold header select element\r\n\r\n\t\tthis.registerTableOption(\"selectable\", \"highlight\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRangeMode\", \"drag\"); //highlight rows on hover\r\n\t\tthis.registerTableOption(\"selectableRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\r\n\t\tthis.registerTableOption(\"selectablePersistence\", true); // maintain selection when table view is updated\r\n\t\tthis.registerTableOption(\"selectableCheck\", function(data, row){return true;}); //check wheather row is selectable\r\n\r\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\r\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\r\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\r\n\r\n\t\t//register component functions\r\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tif(this.table.options.selectable !== false){\r\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\r\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\r\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\r\n\t\t\tthis.subscribe(\"rows-retrieve\", this.clearSelectionData.bind(this));\r\n\r\n\t\t\tif(this.table.options.selectable && this.table.options.selectablePersistence){\r\n\t\t\t\tthis.subscribe(\"data-refeshing\", this.deselectRows.bind(this));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trowRetrieve(type, prevValue){\r\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\r\n\t}\r\n\r\n\trowDeleted(row){\r\n\t\tthis._deselectRow(row, true);\r\n\t}\r\n\r\n\r\n\tclearSelectionData(silent){\r\n\t\tthis.selecting = false;\r\n\t\tthis.lastClickedRow = false;\r\n\t\tthis.selectPrev = [];\r\n\t\tthis.selectedRows = [];\r\n\r\n\t\tif(silent !== true){\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRow(row){\r\n\t\tvar self = this,\r\n\t\telement = row.getElement();\r\n\r\n\t\t// trigger end of row selection\r\n\t\tvar endSelect = function(){\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.selecting = false;\r\n\t\t\t}, 50);\r\n\r\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\r\n\t\t};\r\n\r\n\t\trow.modules.select = {selected:false};\r\n\r\n\t\t//set row selection class\r\n\t\tif(self.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\telement.classList.add(\"tabulator-selectable\");\r\n\t\t\telement.classList.remove(\"tabulator-unselectable\");\r\n\r\n\t\t\tif(self.table.options.selectable && self.table.options.selectable != \"highlight\"){\r\n\t\t\t\tif(self.table.options.selectableRangeMode === \"click\"){\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\r\n\r\n\t\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\r\n\t\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\r\n\r\n\t\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\t\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\r\n\r\n\t\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\r\n\t\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\r\n\r\n\t\t\t\t\t\t\tif(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\t\ttoggledRows.forEach(function(toggledRow){\r\n\t\t\t\t\t\t\t\t\tif(toggledRow !== self.lastClickedRow){\r\n\r\n\t\t\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true && !self.isRowSelected(row)){\r\n\t\t\t\t\t\t\t\t\t\t\tif(self.selectedRows.length < self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\r\n\t\t\t\t\t\t\t\tif(self.table.options.selectable !== true){\r\n\t\t\t\t\t\t\t\t\tif(toggledRows.length > self.table.options.selectable){\r\n\t\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tself.selectRows(toggledRows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if(e.ctrlKey || e.metaKey){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tself.deselectRows(undefined, true);\r\n\t\t\t\t\t\t\tself.selectRows(row);\r\n\t\t\t\t\t\t\tself.lastClickedRow = row;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\r\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(!self.selecting){\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\r\n\t\t\t\t\t\tif(e.shiftKey){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\r\n\t\t\t\t\t\t\tself.selecting = true;\r\n\r\n\t\t\t\t\t\t\tself.selectPrev = [];\r\n\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\r\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\r\n\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.toggleRow(row);\r\n\r\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\r\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\r\n\t\t\t\t\t\tif(self.selecting){\r\n\t\t\t\t\t\t\tself.table._clearSelection();\r\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\telement.classList.add(\"tabulator-unselectable\");\r\n\t\t\telement.classList.remove(\"tabulator-selectable\");\r\n\t\t}\r\n\t}\r\n\r\n\t//toggle row selection\r\n\ttoggleRow(row){\r\n\t\tif(this.table.options.selectableCheck.call(this.table, row.getComponent())){\r\n\t\t\tif(row.modules.select && row.modules.select.selected){\r\n\t\t\t\tthis._deselectRow(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//select a number of rows\r\n\tselectRows(rows){\r\n\t\tvar rowMatch;\r\n\r\n\t\tswitch(typeof rows){\r\n\t\t\tcase \"undefined\":\r\n\t\t\tthis.table.rowManager.rows.forEach((row) => {\r\n\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t});\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"string\":\r\n\r\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\r\n\r\n\t\t\tif(rowMatch){\r\n\t\t\t\tthis._selectRow(rowMatch, true, true);\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._rowSelectionChanged();\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach((row) => {\r\n\t\t\t\t\tthis._selectRow(row, true, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._rowSelectionChanged();\r\n\t\t\t}else{\r\n\t\t\t\tthis._selectRow(rows, false, true);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//select an individual row\r\n\t_selectRow(rowInfo, silent, force){\r\n\t\tvar index;\r\n\r\n\t\t//handle max row count\r\n\t\tif(!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force){\r\n\t\t\tif(this.selectedRows.length >= this.table.options.selectable){\r\n\t\t\t\tif(this.table.options.selectableRollingSelection){\r\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\r\n\r\n\t\tif(row){\r\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\r\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = true;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.selectedRows.push(row);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisRowSelected(row){\r\n\t\treturn this.selectedRows.indexOf(row) !== -1;\r\n\t}\r\n\r\n\t//deselect a number of rows\r\n\tdeselectRows(rows, silent){\r\n\t\tvar self = this,\r\n\t\trowCount;\r\n\r\n\t\tif(typeof rows == \"undefined\"){\r\n\r\n\t\t\trowCount = self.selectedRows.length;\r\n\r\n\t\t\tfor(let i = 0; i < rowCount; i++){\r\n\t\t\t\tself._deselectRow(self.selectedRows[0], true);\r\n\t\t\t}\r\n\r\n\t\t\tself._rowSelectionChanged(silent);\r\n\r\n\t\t}else{\r\n\t\t\tif(Array.isArray(rows)){\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tself._deselectRow(row, true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}else{\r\n\t\t\t\tself._deselectRow(rows, silent);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//deselect an individual row\r\n\t_deselectRow(rowInfo, silent){\r\n\t\tvar self = this,\r\n\t\trow = self.table.rowManager.findRow(rowInfo),\r\n\t\tindex;\r\n\r\n\t\tif(row){\r\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\r\n\t\t\t\treturn selectedRow == row;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\r\n\t\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\r\n\t\t\t\tif(!row.modules.select){\r\n\t\t\t\t\trow.modules.select = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\trow.modules.select.selected = false;\r\n\t\t\t\tif(row.modules.select.checkboxEl){\r\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\r\n\t\t\t\t}\r\n\t\t\t\tself.selectedRows.splice(index, 1);\r\n\r\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\r\n\t\t\t\t\tthis.childRowSelection(row, false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself._rowSelectionChanged(silent);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetSelectedData(){\r\n\t\tvar data = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\tdata.push(row.getData());\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tgetSelectedRows(){\r\n\r\n\t\tvar rows = [];\r\n\r\n\t\tthis.selectedRows.forEach(function(row){\r\n\t\t\trows.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t_rowSelectionChanged(silent){\r\n\t\tif(this.headerCheckboxElement){\r\n\t\t\tif(this.selectedRows.length === 0){\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\r\n\t\t\t\tthis.headerCheckboxElement.checked = true;\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\r\n\t\t\t\tthis.headerCheckboxElement.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(!silent){\r\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows());\r\n\t\t}\r\n\t}\r\n\r\n\tregisterRowSelectCheckbox (row, element) {\r\n\t\tif(!row._row.modules.select){\r\n\t\t\trow._row.modules.select = {};\r\n\t\t}\r\n\r\n\t\trow._row.modules.select.checkboxEl = element;\r\n\t}\r\n\r\n\tregisterHeaderSelectCheckbox (element) {\r\n\t\tthis.headerCheckboxElement = element;\r\n\t}\r\n\r\n\tchildRowSelection(row, select){\r\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\r\n\r\n\t\tif(select){\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._selectRow(child, true);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let child of children){\r\n\t\t\t\tthis._deselectRow(child, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nSelectRow.moduleName = \"selectRow\";\r\n\r\nexport default SelectRow;","//sort datetime\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar DT = window.DateTime || luxon.DateTime;\r\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\r\n\talignEmptyValues = params.alignEmptyValues,\r\n\temptyAlign = 0;\r\n\r\n\tif(typeof DT != \"undefined\"){\r\n\t\ta = DT.fromFormat(a, format);\r\n\t\tb = DT.fromFormat(b, format);\r\n\t\tif(!a.isValid){\r\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\r\n\t\t}else if(!b.isValid){\r\n\t\t\temptyAlign = 1;\r\n\t\t}else{\r\n\t\t\t//compare valid values\r\n\t\t\treturn a - b;\r\n\t\t}\r\n\r\n\t\t//fix empty values in position\r\n\t\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\t\temptyAlign *= -1;\r\n\t\t}\r\n\r\n\t\treturn emptyAlign;\r\n\r\n\t}else{\r\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\r\n\t}\r\n};","import datetime from './datetime.js';\r\n\r\n//sort date\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"dd/MM/yyyy\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort numbers\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar decimal = params.decimalSeparator;\r\n\tvar thousand = params.thousandSeparator;\r\n\tvar emptyAlign = 0;\r\n\r\n\ta = String(a);\r\n\tb = String(b);\r\n\r\n\tif(thousand){\r\n\t\ta = a.split(thousand).join(\"\");\r\n\t\tb = b.split(thousand).join(\"\");\r\n\t}\r\n\r\n\tif(decimal){\r\n\t\ta = a.split(decimal).join(\".\");\r\n\t\tb = b.split(decimal).join(\".\");\r\n\t}\r\n\r\n\ta = parseFloat(a);\r\n\tb = parseFloat(b);\r\n\r\n\t//handle non numeric values\r\n\tif(isNaN(a)){\r\n\t\temptyAlign = isNaN(b) ? 0 : -1;\r\n\t}else if(isNaN(b)){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\treturn a - b;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import number from './sorters/number.js';\r\nimport string from './sorters/string.js';\r\nimport date from './sorters/date.js';\r\nimport time from './sorters/time.js';\r\nimport datetime from './sorters/datetime.js';\r\nimport boolean from './sorters/boolean.js';\r\nimport array from './sorters/array.js';\r\nimport exists from './sorters/exists.js';\r\nimport alphanum from './sorters/alphanum.js';\r\n\r\nexport default {\r\n\tnumber:number,\r\n\tstring:string,\r\n\tdate:date,\r\n\ttime:time,\r\n\tdatetime:datetime,\r\n\tboolean:boolean,\r\n\tarray:array,\r\n\texists:exists,\r\n\talphanum:alphanum\r\n};","//sort strings\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\tvar locale;\r\n\r\n\t//handle empty values\r\n\tif(!a){\r\n\t\temptyAlign = !b ? 0 : -1;\r\n\t}else if(!b){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\t\t//compare valid values\r\n\t\tswitch(typeof params.locale){\r\n\t\t\tcase \"boolean\":\r\n\t\t\tif(params.locale){\r\n\t\t\t\tlocale = this.langLocale();\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t\tcase \"string\":\r\n\t\t\tlocale = params.locale;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","import datetime from './datetime.js';\r\n\r\n//sort times\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tif(!params.format){\r\n\t\tparams.format = \"HH:mm\";\r\n\t}\r\n\r\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\r\n};","//sort booleans\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\r\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\r\n\r\n\treturn el1 - el2;\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultSorters from './defaults/sorters.js';\r\n\r\nclass Sort extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t \tthis.sortList = []; //holder current sort\r\n\t \tthis.changed = false; //has the sort changed since last render\r\n\r\n\t \tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\r\n\r\n\t \tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\r\n\t \tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\r\n\t \tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\r\n\t \tthis.registerTableOption(\"headerSortElement\", \"
\"); //header sort element\r\n\r\n\t \tthis.registerColumnOption(\"sorter\");\r\n\t \tthis.registerColumnOption(\"sorterParams\");\r\n\r\n\t \tthis.registerColumnOption(\"headerSort\", true);\r\n\t \tthis.registerColumnOption(\"headerSortStartingDir\");\r\n\t \tthis.registerColumnOption(\"headerSortTristate\");\r\n\r\n\t }\r\n\r\n\t initialize(){\r\n\t \tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\r\n\t \tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\r\n\t \tthis.registerDataHandler(this.sort.bind(this), 20);\r\n\r\n\t \tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\r\n\t \tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\r\n\t \tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\r\n\r\n\t \tif(this.table.options.sortMode === \"remote\"){\r\n\t \t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\r\n\t \t}\r\n\t }\r\n\r\n\t tableBuilt(){\r\n\t \tif(this.table.options.initialSort){\r\n\t \t\tthis.setSort(this.table.options.initialSort);\r\n\t \t}\r\n\t }\r\n\r\n\t remoteSortParams(data, config, silent, params){\r\n\t \tvar sorters = this.getSort();\r\n\r\n\t \tsorters.forEach((item) => {\r\n\t \t\tdelete item.column;\r\n\t \t});\r\n\r\n\t \tparams.sort = sorters;\r\n\r\n\t \treturn params;\r\n\t }\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tuserSetSort(sortList, dir){\r\n\t\tthis.setSort(sortList, dir);\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\tclearSort(){\r\n\t\tthis.clear();\r\n\t\t// this.table.rowManager.sorterRefresh();\r\n\t\tthis.refreshSort();\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\t//initialize column header for sorting\r\n\tinitializeColumn(column){\r\n\t\tvar sorter = false,\r\n\t\tcolEl,\r\n\t\tarrowEl;\r\n\r\n\t\tswitch(typeof column.definition.sorter){\r\n\t\t\tcase \"string\":\r\n\t\t\tif(Sort.sorters[column.definition.sorter]){\r\n\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\tsorter = column.definition.sorter;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tcolumn.modules.sort = {\r\n\t\t\tsorter:sorter, dir:\"none\",\r\n\t\t\tparams:column.definition.sorterParams || {},\r\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\r\n\t\t\ttristate: column.definition.headerSortTristate,\r\n\t\t};\r\n\r\n\t\tif(column.definition.headerSort !== false){\r\n\r\n\t\t\tcolEl = column.getElement();\r\n\r\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\r\n\r\n\r\n\t\t\tarrowEl = document.createElement(\"div\");\r\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\r\n\r\n\t\t\tif(typeof this.table.options.headerSortElement == \"object\"){\r\n\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\r\n\t\t\t}else{\r\n\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\r\n\t\t\t}\r\n\r\n\t\t\t//create sorter arrow\r\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\r\n\r\n\t\t\tcolumn.modules.sort.element = arrowEl;\r\n\r\n\t\t\t//sort on click\r\n\t\t\tcolEl.addEventListener(\"click\", (e) => {\r\n\t\t\t\tvar dir = \"\",\r\n\t\t\t\tsorters=[],\r\n\t\t\t\tmatch = false;\r\n\r\n\t\t\t\tif(column.modules.sort){\r\n\t\t\t\t\tif(column.modules.sort.tristate){\r\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\r\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tdir = \"none\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tswitch(column.modules.sort.dir){\r\n\t\t\t\t\t\t\tcase \"asc\":\r\n\t\t\t\t\t\t\tdir = \"desc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase \"desc\":\r\n\t\t\t\t\t\t\tdir = \"asc\";\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\r\n\t\t\t\t\t\tsorters = this.getSort();\r\n\r\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\r\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif(match > -1){\r\n\t\t\t\t\t\t\tsorters[match].dir = dir;\r\n\r\n\t\t\t\t\t\t\tif(match != sorters.length -1){\r\n\t\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\r\n\t\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\t\tsorters.push(match);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(dir != \"none\"){\r\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//add to existing sort\r\n\t\t\t\t\t\tthis.setSort(sorters);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(dir == \"none\"){\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t//sort by column only\r\n\t\t\t\t\t\t\tthis.setSort(column, dir);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\r\n\t\t\t\t\tthis.refreshSort();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trefreshSort(){\r\n\t\tif(this.table.options.sortMode === \"remote\"){\r\n\t\t\tthis.reloadData();\r\n\t\t}else{\r\n\t\t\tthis.refreshData()\r\n\t\t}\r\n\r\n\t\t//TODO - Persist left position of row manager\r\n\t\t// left = this.scrollLeft;\r\n\t\t// this.scrollHorizontal(left);\r\n\t}\r\n\r\n\t//check if the sorters have changed since last use\r\n\thasChanged(){\r\n\t\tvar changed = this.changed;\r\n\t\tthis.changed = false;\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t//return current sorters\r\n\tgetSort(){\r\n\t\tvar self = this,\r\n\t\tsorters = [];\r\n\r\n\t\tself.sortList.forEach(function(item){\r\n\t\t\tif(item.column){\r\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn sorters;\r\n\t}\r\n\r\n\t//change sort list and trigger sort\r\n\tsetSort(sortList, dir){\r\n\t\tvar self = this,\r\n\t\tnewSortList = [];\r\n\r\n\t\tif(!Array.isArray(sortList)){\r\n\t\t\tsortList = [{column: sortList, dir:dir}];\r\n\t\t}\r\n\r\n\t\tsortList.forEach(function(item){\r\n\t\t\tvar column;\r\n\r\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\titem.column = column;\r\n\t\t\t\tnewSortList.push(item);\r\n\t\t\t\tself.changed = true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tself.sortList = newSortList;\r\n\r\n\t\tthis.dispatch(\"sort-changed\");\r\n\t}\r\n\r\n\t//clear sorters\r\n\tclear(){\r\n\t\tthis.setSort([]);\r\n\t}\r\n\r\n\t//find appropriate sorter for column\r\n\tfindSorter(column){\r\n\t\tvar row = this.table.rowManager.activeRows[0],\r\n\t\tsorter = \"string\",\r\n\t\tfield, value;\r\n\r\n\t\tif(row){\r\n\t\t\trow = row.getData();\r\n\t\t\tfield = column.getField();\r\n\r\n\t\t\tif(field){\r\n\r\n\t\t\t\tvalue = column.getFieldValue(row);\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Sort.sorters[sorter];\r\n\t}\r\n\r\n\t//work through sort list sorting data\r\n\tsort(data){\r\n\t\tvar self = this,\r\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\r\n\t\tsortListActual = [],\r\n\t\trowComponents = [],\r\n\t\tlastSort;\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorting\")){\r\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\r\n\t\t}\r\n\r\n\t\tself.clearColumnHeaders();\r\n\r\n\t\tif(this.table.options.sortMode !== \"remote\"){\r\n\r\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tvar sortObj = item.column.modules.sort;\r\n\r\n\t\t\t\tif(item.column && sortObj){\r\n\r\n\t\t\t\t\t//if no sorter has been defined, take a guess\r\n\t\t\t\t\tif(!sortObj.sorter){\r\n\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\r\n\r\n\t\t\t\t\tsortListActual.push(item);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\r\n\t\t\t//sort data\r\n\t\t\tif (sortListActual.length) {\r\n\t\t\t\tself._sortItems(data, sortListActual);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tsortList.forEach(function(item, i){\r\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataSorted\")){\r\n\t\t\tdata.forEach((row) => {\r\n\t\t\t\trowComponents.push(row.getComponent());\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t//clear sort arrows on columns\r\n\tclearColumnHeaders(){\r\n\t\tthis.table.columnManager.getRealColumns().forEach(function(column){\r\n\t\t\tif(column.modules.sort){\r\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\r\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//set the column header sort direction\r\n\tsetColumnHeader(column, dir){\r\n\t\tcolumn.modules.sort.dir = dir;\r\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\r\n\t}\r\n\r\n\t//sort each item in sort list\r\n\t_sortItems(data, sortList){\r\n\t\tvar sorterCount = sortList.length - 1;\r\n\r\n\t\tdata.sort((a, b) => {\r\n\t\t\tvar result;\r\n\r\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\r\n\t\t\t\tlet sortItem = sortList[i];\r\n\r\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\r\n\r\n\t\t\t\tif(result !== 0){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t});\r\n\t}\r\n\r\n\t//process individual rows for a sort function on active data\r\n\t_sortRow(a, b, column, dir, params){\r\n\t\tvar el1Comp, el2Comp, colComp;\r\n\r\n\t\t//switch elements depending on search direction\r\n\t\tvar el1 = dir == \"asc\" ? a : b;\r\n\t\tvar el2 = dir == \"asc\" ? b : a;\r\n\r\n\t\ta = column.getFieldValue(el1.getData());\r\n\t\tb = column.getFieldValue(el2.getData());\r\n\r\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\r\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\r\n\r\n\t\tel1Comp = el1.getComponent();\r\n\t\tel2Comp = el2.getComponent();\r\n\r\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\r\n\t}\r\n}\r\n\r\nSort.moduleName = \"sort\";\r\n\r\n//load defaults\r\nSort.sorters = defaultSorters;\r\n\r\nexport default Sort;","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = 0;\r\n\tvar el2 = 0;\r\n\tvar type = params.type || \"length\";\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\tfunction calc(value){\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"length\":\r\n\t\t\treturn value.length;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"sum\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"max\":\r\n\t\t\treturn Math.max.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"min\":\r\n\t\t\treturn Math.min.apply(null, value) ;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"avg\":\r\n\t\t\treturn value.reduce(function(c, d){\r\n\t\t\t\treturn c + d;\r\n\t\t\t}) / value.length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t//handle non array values\r\n\tif(!Array.isArray(a)){\r\n\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\r\n\t}else if(!Array.isArray(b)){\r\n\t\talignEmptyValues = 1;\r\n\t}else{\r\n\r\n\t\t//compare valid values\r\n\t\tel1 = a ? calc(a) : 0;\r\n\t\tel2 = b ? calc(b) : 0;\r\n\r\n\t\treturn el1 - el2;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","//sort if element contains any data\r\nexport default function(a, b, aRow, bRow, column, dir, params){\r\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\r\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\r\n\r\n\treturn el1 - el2;\r\n};","//sort alpha numeric strings\r\nexport default function(as, bs, aRow, bRow, column, dir, params){\r\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\r\n\tvar alignEmptyValues = params.alignEmptyValues;\r\n\tvar emptyAlign = 0;\r\n\r\n\t//handle empty values\r\n\tif(!as && as!== 0){\r\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\r\n\t}else if(!bs && bs!== 0){\r\n\t\temptyAlign = 1;\r\n\t}else{\r\n\r\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\r\n\t\ta = String(as).toLowerCase();\r\n\t\tb = String(bs).toLowerCase();\r\n\t\tif(a === b) return 0;\r\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\r\n\t\ta = a.match(rx);\r\n\t\tb = b.match(rx);\r\n\t\tL = a.length > b.length ? b.length : a.length;\r\n\t\twhile(i < L){\r\n\t\t\ta1= a[i];\r\n\t\t\tb1= b[i++];\r\n\t\t\tif(a1 !== b1){\r\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\r\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\r\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\r\n\t\t\t\t\treturn a1 - b1;\r\n\t\t\t\t}\r\n\t\t\t\telse return a1 > b1 ? 1 : -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn a.length > b.length;\r\n\t}\r\n\r\n\t//fix empty values in position\r\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\r\n\t\temptyAlign *= -1;\r\n\t}\r\n\r\n\treturn emptyAlign;\r\n};","export default {\r\n\t//is integer\r\n\tinteger: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n\t},\r\n\r\n\t//is float\r\n\tfloat: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvalue = Number(value);\r\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\r\n\t},\r\n\r\n\t//must be a number\r\n\tnumeric: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn !isNaN(value);\r\n\t},\r\n\r\n\t//must be a string\r\n\tstring: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn isNaN(value);\r\n\t},\r\n\r\n\t//maximum value\r\n\tmax: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) <= parameters;\r\n\t},\r\n\r\n\t//minimum value\r\n\tmin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn parseFloat(value) >= parameters;\r\n\t},\r\n\r\n\t//starts with value\r\n\tstarts: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\t//ends with value\r\n\tends: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\r\n\t},\r\n\r\n\r\n\t//minimum string length\r\n\tminLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length >= parameters;\r\n\t},\r\n\r\n\t//maximum string length\r\n\tmaxLength: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn String(value).length <= parameters;\r\n\t},\r\n\r\n\t//in provided value list\r\n\tin: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(typeof parameters == \"string\"){\r\n\t\t\tparameters = parameters.split(\"|\");\r\n\t\t}\r\n\r\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\r\n\t},\r\n\r\n\t//must match provided regex\r\n\tregex: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar reg = new RegExp(parameters);\r\n\r\n\t\treturn reg.test(value);\r\n\t},\r\n\r\n\t//value must be unique in this column\r\n\tunique: function(cell, value, parameters){\r\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar unique = true;\r\n\r\n\t\tvar cellData = cell.getData();\r\n\t\tvar column = cell.getColumn()._getSelf();\r\n\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar data = row.getData();\r\n\r\n\t\t\tif(data !== cellData){\r\n\t\t\t\tif(value == column.getFieldValue(data)){\r\n\t\t\t\t\tunique = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn unique;\r\n\t},\r\n\r\n\t//must have a value\r\n\trequired:function(cell, value, parameters){\r\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultValidators from './defaults/validators.js';\r\n\r\nclass Validate extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.invalidCells = [];\r\n\r\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\r\n\r\n\t\tthis.registerColumnOption(\"validator\");\r\n\r\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\r\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\r\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\r\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\r\n\r\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\r\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\r\n\t}\r\n\r\n\r\n\tinitialize(){\r\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\r\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Cell Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\tcellIsValid(cell){\r\n\t\treturn cell.modules.validate ? !cell.modules.validate.invalid : true;\r\n\t}\r\n\r\n\tcellValidate(cell){\r\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Column Functions ////////\r\n\t///////////////////////////////////\r\n\r\n\tcolumnValidate(column){\r\n\t\tvar invalid = [];\r\n\r\n\t\tcolumn.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t////////// Row Functions //////////\r\n\t///////////////////////////////////\r\n\r\n\trowValidate(row){\r\n\t\tvar invalid = [];\r\n\r\n\t\trow.cells.forEach(function(cell){\r\n\t\t\tif(!this.cellValidate(cell)){\r\n\t\t\t\tinvalid.push(cell.getComponent());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn invalid.length ? invalid : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Table Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\r\n\tuserClearCellValidation(cells){\r\n\t\tif(!cells){\r\n\t\t\tcells = this.getInvalidCells();\r\n\t\t}\r\n\r\n\t\tif(!Array.isArray(cells)){\r\n\t\t\tcells = [cells];\r\n\t\t}\r\n\r\n\t\tcells.forEach((cell) => {\r\n\t\t\tthis.clearValidation(cell._getSelf());\r\n\t\t});\r\n\t}\r\n\r\n\tuserValidate(cells){\r\n\t\tvar output = [];\r\n\r\n\t\t//clear row data\r\n\t\tthis.table.rowManager.rows.forEach(function(row){\r\n\t\t\tvar valid = row.validate();\r\n\r\n\t\t\tif(valid !== true){\r\n\t\t\t\toutput = output.concat(valid);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output.length ? output : true;\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t///////// Internal Logic //////////\r\n\t///////////////////////////////////\r\n\r\n\tinitializeColumnCheck(column){\r\n\t\tif(typeof column.definition.validator !== \"undefined\"){\r\n\t\t\tthis.initializeColumn(column);\r\n\t\t}\r\n\t}\r\n\r\n\t//validate\r\n\tinitializeColumn(column){\r\n\t\tvar self = this,\r\n\t\tconfig = [],\r\n\t\tvalidator;\r\n\r\n\t\tif(column.definition.validator){\r\n\r\n\t\t\tif(Array.isArray(column.definition.validator)){\r\n\t\t\t\tcolumn.definition.validator.forEach(function(item){\r\n\t\t\t\t\tvalidator = self._extractValidator(item);\r\n\r\n\t\t\t\t\tif(validator){\r\n\t\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}else{\r\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\r\n\r\n\t\t\t\tif(validator){\r\n\t\t\t\t\tconfig.push(validator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.validate = config.length ? config : false;\r\n\t\t}\r\n\t}\r\n\r\n\t_extractValidator(value){\r\n\t\tvar type, params, pos;\r\n\r\n\t\tswitch(typeof value){\r\n\t\t\tcase \"string\":\r\n\t\t\tpos = value.indexOf(':');\r\n\r\n\t\t\tif(pos > -1){\r\n\t\t\t\ttype = value.substring(0,pos);\r\n\t\t\t\tparams = value.substring(pos+1);\r\n\t\t\t}else{\r\n\t\t\t\ttype = value;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._buildValidator(type, params);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"function\":\r\n\t\t\treturn this._buildValidator(value);\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"object\":\r\n\t\t\treturn this._buildValidator(value.type, value.parameters);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t_buildValidator(type, params){\r\n\r\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\r\n\r\n\t\tif(!func){\r\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\treturn {\r\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\r\n\t\t\t\tfunc:func,\r\n\t\t\t\tparams:params,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(validators, cell, value){\r\n\t\tvar self = this,\r\n\t\tvalid = [],\r\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\tif(validators){\r\n\t\t\tvalidators.forEach(function(item){\r\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\r\n\t\t\t\t\tvalid.push({\r\n\t\t\t\t\t\ttype:item.type,\r\n\t\t\t\t\t\tparameters:item.params\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalid = valid.length ? valid : true;\r\n\r\n\t\tif(!cell.modules.validate){\r\n\t\t\tcell.modules.validate = {};\r\n\t\t}\r\n\r\n\t\tif(valid === true){\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcell.modules.validate.invalid = true;\r\n\r\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\r\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\r\n\t\t\t}\r\n\r\n\t\t\tif(invalidIndex == -1){\r\n\t\t\t\tthis.invalidCells.push(cell);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tgetInvalidCells(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.invalidCells.forEach((cell) => {\r\n\t\t\toutput.push(cell.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tclearValidation(cell){\r\n\t\tvar invalidIndex;\r\n\r\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\r\n\r\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\r\n\t\t\tcell.modules.validate.invalid = false;\r\n\r\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\r\n\r\n\t\t\tif(invalidIndex > -1){\r\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nValidate.moduleName = \"validate\";\r\n\r\n//load defaults\r\nValidate.validators = defaultValidators;\r\n\r\nexport default Validate;","export default {\r\n\r\n\tdebugEventsExternal:false, //flag to console log events\r\n\tdebugEventsInternal:false, //flag to console log events\r\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\r\n\r\n\theight:false, //height of tabulator\r\n\tminHeight:false, //minimum height of tabulator\r\n\tmaxHeight:false, //maximum height of tabulator\r\n\r\n\tcolumnMaxWidth:false, //minimum global width for a column\r\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\r\n\r\n\tcolumns:[],//store for colum header info\r\n\tcolumnDefaults:{}, //store column default props\r\n\r\n\tdata:false, //default starting data\r\n\r\n\tautoColumns:false, //build columns from data row structure\r\n\tautoColumnsDefinitions:false,\r\n\r\n\tnestedFieldSeparator:\".\", //seperatpr for nested data\r\n\r\n\ttooltipGenerationMode:\"load\", //when to generate tooltips\r\n\r\n\tfooterElement:false, //hold footer element\r\n\r\n\tindex:\"id\", //filed for row index\r\n\r\n\ttextDirection:\"auto\",\r\n\r\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\r\n\r\n\theaderVisible:true, //hide header\r\n\r\n\trenderVertical:\"virtual\",\r\n\trenderHorizontal:\"basic\",\r\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\r\n\r\n\tscrollToRowPosition:\"top\",\r\n\tscrollToRowIfVisible:true,\r\n\r\n\tscrollToColumnPosition:\"left\",\r\n\tscrollToColumnIfVisible:true,\r\n\r\n\trowFormatter:false,\r\n\trowFormatterPrint:null,\r\n\trowFormatterClipboard:null,\r\n\trowFormatterHtmlOutput:null,\r\n\r\n\tplaceholder:false,\r\n\r\n\tdataLoader:true,\r\n\tdataLoaderLoading:false,\r\n\tdataLoaderError:false,\r\n\r\n\tdataSendParams:{},\r\n\r\n\tdataReceiveParams:{},\r\n}","export default class OptionsList {\r\n\tconstructor(table, msgType){\r\n\t\tthis.table = table;\r\n\t\tthis.msgType = msgType;\r\n\t\tthis.registeredDefaults = {};\r\n\t}\r\n\r\n\tregister(option, value){\r\n\t\tthis.registeredDefaults[option] = value;\r\n\t}\r\n\r\n\tgenerate(defaultOptions, userOptions = {}){\r\n\t\tvar output = Object.assign({}, this.registeredDefaults);\r\n\r\n\t\tObject.assign(output, defaultOptions);\r\n\r\n\t\tif(userOptions.debugInvalidOptions !== false || this.table.options.debugInvalidOptions){\r\n\t\t\tfor (var key in userOptions){\r\n\t\t\t\tif(!output.hasOwnProperty(key)){\r\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var key in output){\r\n\t\t\tif(key in userOptions){\r\n\t\t\t\toutput[key] = userOptions[key];\r\n\t\t\t}else{\r\n\t\t\t\tif(Array.isArray(output[key])){\r\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\r\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\r\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\r\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\r\n\t\t\t\t\tdelete output[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from '../tools/Helpers.js';\r\n\r\nexport default class Renderer extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.elementVertical = table.rowManager.element;\r\n\t\tthis.elementHorizontal = table.columnManager.element;\r\n\t\tthis.tableElement = table.rowManager.tableElement;\r\n\r\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determin how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the contianer without resizing it)\r\n\t}\r\n\r\n\r\n\t///////////////////////////////////\r\n\t/////// Internal Bindings /////////\r\n\t///////////////////////////////////\r\n\r\n\tinitialize(){\r\n\t\t//initialize core functionality\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\t//clear down existing rows layout\r\n\t}\r\n\r\n\tclearColumns(){\r\n\t\t//clear down existing columns layout\r\n\t}\r\n\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\t//resize columns to fit data\r\n\t}\r\n\r\n\r\n\trenderRows(){\r\n\t\t//render rows from a clean slate\r\n\t}\r\n\r\n\trenderColumns(){\r\n\t\t//render columns from a clean slate\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\t// rerender rows and keep position\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\t//rerender columns\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\t//render the cells in a row\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\t//rerender the cells in a row\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\t//handle horizontal scrolling\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\t//handle vertical scolling\r\n\t}\r\n\r\n\tresize(){\r\n\t\t//container has rezied, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\t//scroll to a specific row\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\t//determin weather the row is nearest the top or bottom of the table, retur true for top or false for bottom\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\t//return the visible rows\r\n\t\treturn [];\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t//////// Helper Functions /////////\r\n\t///////////////////////////////////\r\n\r\n\trows(){\r\n\t\treturn this.table.rowManager.getDisplayRows();\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t///////////////////////////////////\r\n\t/////// External Triggers /////////\r\n\t/////// (DO NOT OVERRIDE) /////////\r\n\t///////////////////////////////////\r\n\r\n\tclear(){\r\n\t\t//clear down existing layout\r\n\t\tthis.clearRows();\r\n\t\tthis.clearColumns();\r\n\t}\r\n\r\n\trender(){\r\n\t\t//render from a clean slate\r\n\t\tthis.renderRows();\r\n\t\tthis.renderColumns();\r\n\t}\r\n\r\n\trerender(callback){\r\n\t\t// rerender and keep position\r\n\t\tthis.rerenderRows();\r\n\t\tthis.rerenderColumns();\r\n\t}\r\n\r\n\tscrollToRowPosition(row, position, ifVisible){\r\n\t\tvar rowIndex = this.rows().indexOf(row),\r\n\t\trowEl = row.getElement(),\r\n\t\toffset = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif(rowIndex > -1){\r\n\r\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check row visibility\r\n\t\t\t\tif(!ifVisible){\r\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\r\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\r\n\r\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(position === \"nearest\"){\r\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scroll to row\r\n\t\t\t\tthis.scrollToRow(row);\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"bottom\":\r\n\r\n\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresolve();\r\n\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\r\n\t\t\t\treject(\"Scroll Error - Row not visible\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\trow.cells.forEach((cell) => {\r\n\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\tcell.cellRendered();\r\n\t\t});\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tcolumns.forEach(function(column){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t});\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomHorizontal extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.leftCol = 0;\r\n\t\tthis.rightCol = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\r\n\t\tthis.fitDataColAvg = 0;\r\n\r\n\t\tthis.window = 200; //pixel margin to make column visible before it is shown on screen\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tthis.columns = [];\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.compatabilityCheck();\r\n\t}\r\n\r\n\tcompatabilityCheck(){\r\n\t\tvar columns = this.options(\"columns\"),\r\n\t\tfrozen = false,\r\n\t\tok = true;\r\n\r\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with fitDataTable layout mode\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"responsiveLayout\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with responsive columns\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(this.options(\"rtl\")){\r\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not currently compatible with RTL text direction\");\r\n\t\t\tok = false;\r\n\t\t}\r\n\r\n\t\tif(columns){\r\n\t\t\tfrozen = columns.find((col) => {\r\n\t\t\t\treturn col.frozen;\r\n\t\t\t});\r\n\r\n\t\t\tif(frozen){\r\n\t\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with frozen columns\");\r\n\t\t\t\tok = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if(!ok){\r\n\t\t// \toptions.virtualDomHoz = false;\r\n\t\t// }\r\n\r\n\t\treturn ok;\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\trenderColumns(row, force){\r\n\t\tthis.dataChange();\r\n\t}\r\n\r\n\tscrollColumns(left, dir){\r\n\t\tif(this.scrollLeft != left){\r\n\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.window));\r\n\t\t}\r\n\t}\r\n\r\n\trerenderColumns(update, blockRedraw){\r\n\t\tvar old = {\r\n\t\t\tcols:this.columns,\r\n\t\t\tleftCol:this.leftCol,\r\n\t\t\trightCol:this.rightCol,\r\n\t\t};\r\n\r\n\t\tif(update && !this.initialized){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.clear();\r\n\r\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\r\n\r\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.window;\r\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\tvar colPos = 0;\r\n\r\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\tvar config = {};\r\n\r\n\t\t\tif(column.visible){\r\n\t\t\t\tvar width = column.getWidth();\r\n\r\n\t\t\t\tconfig.leftPos = colPos;\r\n\t\t\t\tconfig.rightPos = colPos + width;\r\n\r\n\t\t\t\tconfig.width = width;\r\n\r\n\t\t\t\tif (this.options(\"layout\") === \"fitData\") {\r\n\t\t\t\t\tconfig.fitDataCheck = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\r\n\t \t\t//column is visible\r\n\r\n\t \t\tif(this.leftCol == -1){\r\n\t \t\t\tthis.leftCol = this.columns.length;\r\n\t \t\t\tthis.vDomPadLeft = colPos;\r\n\t \t\t}\r\n\r\n\t \t\tthis.rightCol = this.columns.length;\r\n\t \t}else{\r\n\t \t\t// column is hidden\r\n\t \t\tif(this.leftCol !== -1){\r\n\t \t\t\tthis.vDomPadRight += width;\r\n\t \t\t}\r\n\t \t}\r\n\r\n\t \tthis.columns.push(column);\r\n\r\n\t \tcolumn.modules.vdomHoz = config;\r\n\r\n\t \tcolPos += width;\r\n\t }\r\n\t });\r\n\r\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tif(!update || this.reinitChanged(old)){\r\n\t\t\t\tthis.renitializeRows();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\r\n\t}\r\n\r\n\trenderRowCells(row){\r\n\t\tif(this.initialized){\r\n\t\t\tthis.initializeRow(row);\r\n\t\t}else{\r\n\t\t\trow.cells.forEach((cell) => {\r\n\t\t\t\trow.element.appendChild(cell.getElement());\r\n\t\t\t\tcell.cellRendered();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\trerenderRowCells(row, force){\r\n\t\tthis.reinitializeRow(row, force);\r\n\t}\r\n\r\n\treinitializeColumnWidths(columns){\r\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\tthis.columns[i].reinitializeWidth();\r\n\t\t}\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\tdeinitialize(){\r\n\t\tthis.initialized = false;\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.columns = [];\r\n\r\n\t\tthis.leftCol = -1;\r\n\t\tthis.rightCol = 0;\r\n\r\n\t\tthis.vDomScrollPosLeft = 0;\r\n\t\tthis.vDomScrollPosRight = 0;\r\n\t\tthis.vDomPadLeft = 0;\r\n\t\tthis.vDomPadRight = 0;\r\n\t}\r\n\r\n\tdataChange(){\r\n\t\tvar change = false,\r\n\t\tcollsWidth = 0,\r\n\t\tcolEnd = 0,\r\n\t\tgroup, row, rowEl;\r\n\r\n\t\tif(this.options(\"layout\") === \"fitData\"){\r\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\r\n\t\t\t\tif(!column.definition.width && column.visible){\r\n\t\t\t\t\tchange = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(change){\r\n\t\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\r\n\r\n\t\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.window;\r\n\r\n\t\t\t\t\tvar row = this.chain(\"rows-sample\", [1], [], () => {\r\n\t\t\t\t\t\treturn this.table.rowManager.getDisplayRows()[0];\r\n\t\t\t\t\t})[0];\r\n\r\n\t\t\t\t\tif(row){\r\n\r\n\t\t\t\t\t\trowEl = row.getElement();\r\n\r\n\t\t\t\t\t\trow.generateCells();\r\n\r\n\t\t\t\t\t\tthis.tableElement.appendChild(rowEl);\r\n\r\n\t\t\t\t\t\tfor(var colEnd = 0; colEnd < row.cells.length; colEnd++){\r\n\t\t\t\t\t\t\tlet cell = row.cells[colEnd];\r\n\t\t\t\t\t\t\trowEl.appendChild(cell.getElement());\r\n\r\n\t\t\t\t\t\t\tcell.column.reinitializeWidth();\r\n\r\n\t\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\r\n\r\n\t\t\t\t\t\t\tif(collsWidth > this.vDomScrollPosRight){\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\r\n\t\t\t\t\t\tthis.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\r\n\r\n\t\t\t\t\t\tfor(colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++){\r\n\t\t\t\t\t\t\tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t\tthis.rerenderColumns(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitChanged(old){\r\n\t\tvar match = true;\r\n\r\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\told.cols.forEach((col, i) => {\r\n\t\t\tif(col !== this.columns[i]){\r\n\t\t\t\tmatch = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn !match;\r\n\t}\r\n\r\n\trenitializeRows(){\r\n\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\t\trows.forEach((row) => {\r\n\t\t\tthis.reinitializeRow(row, true);\r\n\t\t});\r\n\t}\r\n\r\n\tscroll(diff){\r\n\t\tthis.vDomScrollPosLeft += diff;\r\n\t\tthis.vDomScrollPosRight += diff;\r\n\r\n\t\tif(diff > (this.elementVertical.clientWidth * .8)){\r\n\t\t\tthis.rerenderColumns();\r\n\t\t}else{\r\n\t\t\tif(diff > 0){\r\n\t\t\t\t//scroll right\r\n\t\t\t\tthis.addColRight();\r\n\t\t\t\tthis.removeColLeft();\r\n\t\t\t}else{\r\n\t\t\t\t//scroll left\r\n\t\t\t\tthis.addColLeft();\r\n\t\t\t\tthis.removeColRight();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcolPositionAdjust (start, end, diff){\r\n\t\tfor(let i = start; i < end; i++){\r\n\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\r\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\r\n\t\t}\r\n\t}\r\n\r\n\taddColRight(){\r\n\t\tvar column = this.columns[this.rightCol + 1],\r\n\t\trows, newWidth, widthDiff;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tthis.rightCol++;\r\n\r\n\t\t\tif(this.rightCol >= (this.columns.length - 1)){\r\n\t\t\t\tthis.vDomPadRight = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadRight -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.addColRight();\r\n\t\t}\r\n\t}\r\n\r\n\taddColLeft(){\r\n\t\tvar column = this.columns[this.leftCol - 1],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\r\n\t\t\tvar rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().prepend(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.fitDataColActualWidthCheck(column);\r\n\r\n\t\t\tif(!this.leftCol){\r\n\t\t\t\tthis.vDomPadLeft = 0;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomPadLeft -= column.getWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol--;\r\n\r\n\t\t\tthis.addColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColRight(column){\r\n\t\tvar column = this.columns[this.rightCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\tcolumn.modules.vdomHoz.visible = false;\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadRight += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\r\n\r\n\t\t\tthis.rightCol --;\r\n\r\n\t\t\tthis.removeColRight();\r\n\t\t}\r\n\t}\r\n\r\n\tremoveColLeft(){\r\n\t\tvar column = this.columns[this.leftCol],\r\n\t\trows;\r\n\r\n\t\tif(column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\r\n\r\n\t\t\trows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\trows.forEach((row) => {\r\n\t\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\t\tvar cell = row.getCell(column);\r\n\t\t\t\t\tif(cell.parentNode){\r\n\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.vDomPadLeft += column.getWidth();\r\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\r\n\r\n\t\t\tthis.leftCol ++;\r\n\r\n\t\t\tthis.removeColLeft();\r\n\t\t}\r\n\t}\r\n\r\n\tfitDataColActualWidthCheck(column){\r\n\t\tvar newWidth, widthDiff;\r\n\r\n\t\tif(column.modules.vdomHoz.fitDataCheck){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\r\n\t\t\tnewWidth = column.getWidth();\r\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\r\n\r\n\t\t\tif(widthDiff){\r\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\r\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\r\n\t\t\t\tthis.colPositionAdjust(this.rightCol + 2, this.columns.length, widthDiff);\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\r\n\t\t}\r\n\t};\r\n\r\n\tinitializeRow(row){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\trow.modules.vdomHoz = {\r\n\t\t\t\tleftCol:this.leftCol,\r\n\t\t\t\trightCol:this.rightCol,\r\n\t\t\t};\r\n\r\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\r\n\t\t\t\tlet column = this.columns[i];\r\n\r\n\t\t\t\tif(column && column.visible){\r\n\t\t\t\t\tlet cell = row.getCell(column);\r\n\r\n\t\t\t\t\trow.getElement().appendChild(cell.getElement());\r\n\t\t\t\t\tcell.cellRendered();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treinitializeRow(row, force){\r\n\t\tif(row.type !== \"group\"){\r\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\r\n\t\t\t\tvar rowEl = row.getElement();\r\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\r\n\r\n\t\t\t\tthis.initializeRow(row);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Column from './column/Column.js';\r\nimport ColumnComponent from './column/ColumnComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\r\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\r\n\r\nexport default class ColumnManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.blockHozScrollEvent = false;\r\n\t\tthis.headersElement = null;\r\n\t\tthis.element = null ; //containing element\r\n\t\tthis.columns = []; // column definition object\r\n\t\tthis.columnsByIndex = []; //columns by index\r\n\t\tthis.columnsByField = {}; //columns by field\r\n\t\tthis.scrollLeft = 0;\r\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\");\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t////////////// Setup Functions /////////////////\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\tthis.headersElement = this.createHeadersElement();\r\n\t\tthis.element = this.createHeaderElement();\r\n\r\n\t\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\r\n\r\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\r\n\t\t\t\"basic\": RendererBasicHorizontal,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderHorizontal;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderHorizontal);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tcreateHeadersElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-headers\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateHeaderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-header\");\r\n\r\n\t\tif(!this.table.options.headerVisible){\r\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\r\n\t\t}\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return header containing element\r\n\tgetHeadersElement(){\r\n\t\treturn this.headersElement;\r\n\t}\r\n\r\n\t//scroll horizontally to match table body\r\n\tscrollHorizontal(left){\r\n\t\tvar hozAdjust = 0,\r\n\t\tscrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\r\n\r\n\t\t// this.tempScrollBlock();\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\t//adjust for vertical scrollbar moving table when present\r\n\t\tif(left > scrollWidth){\r\n\t\t\thozAdjust = left - scrollWidth;\r\n\t\t\tthis.element.style.marginLeft = (-(hozAdjust)) + \"px\";\r\n\t\t}else{\r\n\t\t\tthis.element.style.marginLeft = 0;\r\n\t\t}\r\n\r\n\t\tthis.scrollLeft = left;\r\n\r\n\t\tthis.renderer.scrollColumns(left);\r\n\t}\r\n\r\n\t///////////// Column Setup Functions /////////////\r\n\tgenerateColumnsFromRowData(data){\r\n\t\tvar cols = [],\r\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\r\n\t\trow, sorter;\r\n\r\n\t\tif(data && data.length){\r\n\r\n\t\t\trow = data[0];\r\n\r\n\t\t\tfor(var key in row){\r\n\t\t\t\tlet col = {\r\n\t\t\t\t\tfield:key,\r\n\t\t\t\t\ttitle:key,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet value = row[key];\r\n\r\n\t\t\t\tswitch(typeof value){\r\n\t\t\t\t\tcase \"undefined\":\r\n\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\tsorter = \"boolean\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(value)){\r\n\t\t\t\t\t\tsorter = \"array\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\r\n\t\t\t\t\t\tsorter = \"number\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\r\n\t\t\t\t\t\t\tsorter = \"alphanum\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tsorter = \"string\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcol.sorter = sorter;\r\n\r\n\t\t\t\tcols.push(col);\r\n\t\t\t}\r\n\r\n\t\t\tif(definitions){\r\n\r\n\t\t\t\tswitch(typeof definitions){\r\n\t\t\t\t\tcase \"function\":\r\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"object\":\r\n\t\t\t\t\tif(Array.isArray(definitions)){\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tvar match = definitions.find((def) => {\r\n\t\t\t\t\t\t\t\treturn def.field === col.field;\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tif(match){\r\n\t\t\t\t\t\t\t\tObject.assign(col, match);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcols.forEach((col) => {\r\n\t\t\t\t\t\t\tif(definitions[col.field]){\r\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tthis.table.options.columns = cols;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setColumns(this.table.options.columns);\r\n\t\t}\r\n\t}\r\n\r\n\tsetColumns(cols, row){\r\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\r\n\r\n\t\tthis.columns = [];\r\n\t\tthis.columnsByIndex = [];\r\n\t\tthis.columnsByField = {};\r\n\r\n\t\tthis.dispatch(\"columns-loading\");\r\n\r\n\t\tcols.forEach((def, i) => {\r\n\t\t\tthis._addColumn(def);\r\n\t\t});\r\n\r\n\t\tthis._reIndexColumns();\r\n\r\n\t\tthis.dispatch(\"columns-loaded\");\r\n\r\n\t\tthis.renderer.rerenderColumns(false, true);\r\n\r\n\t\tthis.redraw(true);\r\n\t}\r\n\r\n\t_addColumn(definition, before, nextToColumn){\r\n\t\tvar column = new Column(definition, this),\r\n\t\tcolEl = column.getElement(),\r\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\r\n\r\n\t\tif(nextToColumn && index > -1){\r\n\r\n\t\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\r\n\t\t\tvar nextEl = nextToColumn.getElement();\r\n\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\r\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tif(before){\r\n\t\t\t\tthis.columns.unshift(column);\r\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\r\n\t\t\t}else{\r\n\t\t\t\tthis.columns.push(column);\r\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\r\n\t\t\t}\r\n\r\n\t\t\tcolumn.columnRendered();\r\n\t\t}\r\n\r\n\t\treturn column;\r\n\t}\r\n\r\n\tregisterColumnField(col){\r\n\t\tif(col.definition.field){\r\n\t\t\tthis.columnsByField[col.definition.field] = col;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterColumnPosition(col){\r\n\t\tthis.columnsByIndex.push(col);\r\n\t}\r\n\r\n\t_reIndexColumns(){\r\n\t\tthis.columnsByIndex = [];\r\n\r\n\t\tthis.columns.forEach(function(column){\r\n\t\t\tcolumn.reRegisterPosition();\r\n\t\t});\r\n\t}\r\n\r\n\t//ensure column headers take up the correct amount of space in column groups\r\n\t_verticalAlignHeaders(){\r\n\t\tvar minHeight = 0;\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tvar height;\r\n\r\n\t\t\tcolumn.clearVerticalAlign();\r\n\r\n\t\t\theight = column.getHeight();\r\n\r\n\t\t\tif(height > minHeight){\r\n\t\t\t\tminHeight = height;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\r\n\t\t});\r\n\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\t//////////////// Column Details /////////////////\r\n\tfindColumn(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\r\n\t\t\tif(subject instanceof Column){\r\n\t\t\t\t//subject is column element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof ColumnComponent){\r\n\t\t\t\t//subject is public column component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the column header\r\n\t\t\t\tlet match = this.columns.find((column) => {\r\n\t\t\t\t\treturn column.element === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the field name of the column\r\n\t\t\treturn this.columnsByField[subject] || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetColumnByField(field){\r\n\t\treturn this.columnsByField[field];\r\n\t}\r\n\r\n\tgetColumnsByFieldRoot(root){\r\n\t\tvar matches = [];\r\n\r\n\t\tObject.keys(this.columnsByField).forEach((field) => {\r\n\t\t\tvar fieldRoot = field.split(\".\")[0];\r\n\t\t\tif(fieldRoot === root){\r\n\t\t\t\tmatches.push(this.columnsByField[field]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matches;\r\n\t}\r\n\r\n\tgetColumnByIndex(index){\r\n\t\treturn this.columnsByIndex[index];\r\n\t}\r\n\r\n\tgetFirstVisibileColumn(index){\r\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn col.visible;\r\n\t\t});\r\n\r\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\r\n\t}\r\n\r\n\tgetColumns(){\r\n\t\treturn this.columns;\r\n\t}\r\n\r\n\tfindColumnIndex(column){\r\n\t\treturn this.columnsByIndex.findIndex((col) => {\r\n\t\t\treturn column === col;\r\n\t\t});\r\n\t}\r\n\r\n\t//return all columns that are not groups\r\n\tgetRealColumns(){\r\n\t\treturn this.columnsByIndex;\r\n\t}\r\n\r\n\t//travers across columns and call action\r\n\ttraverse(callback){\r\n\t\tthis.columnsByIndex.forEach((column,i) =>{\r\n\t\t\tcallback(column, i);\r\n\t\t});\r\n\t}\r\n\r\n\t//get defintions of actual columns\r\n\tgetDefinitions(active){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(!active || (active && column.visible)){\r\n\t\t\t\toutput.push(column.getDefinition());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\t//get full nested definition tree\r\n\tgetDefinitionTree(){\r\n\t\tvar output = [];\r\n\r\n\t\tthis.columns.forEach((column) => {\r\n\t\t\toutput.push(column.getDefinition(true));\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(structured){\r\n\t\tvar output = [],\r\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\r\n\r\n\t\tcolumns.forEach((column) => {\r\n\t\t\toutput.push(column.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetWidth(){\r\n\t\tvar width = 0;\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tif(column.visible){\r\n\t\t\t\twidth += column.getWidth();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn width;\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tthis.moveColumnActual(from, to, after);\r\n\r\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\r\n\r\n\t\tif(after){\r\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.table.rowManager.reinitialize();\r\n\t}\r\n\r\n\tmoveColumnActual(from, to, after){\r\n\t\tif(from.parent.isGroup){\r\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\r\n\t\t}else{\r\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\r\n\t\t}\r\n\r\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\r\n\r\n\t\tthis.renderer.rerenderColumns(true);\r\n\r\n\t\tthis.dispatch(\"column-moved\", from, to, after);\r\n\r\n\t\tif(this.subscribedExternal(\"columnMoved\")){\r\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\r\n\t\t}\r\n\t}\r\n\r\n\t_moveColumnInArray(columns, from, to, after, updateRows){\r\n\t\tvar\tfromIndex = columns.indexOf(from),\r\n\t\ttoIndex, rows = [];\r\n\r\n\t\tif (fromIndex > -1) {\r\n\r\n\t\t\tcolumns.splice(fromIndex, 1);\r\n\r\n\t\t\ttoIndex = columns.indexOf(to);\r\n\r\n\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\tif(after){\r\n\t\t\t\t\ttoIndex = toIndex+1;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\ttoIndex = fromIndex;\r\n\t\t\t}\r\n\r\n\t\t\tcolumns.splice(toIndex, 0, from);\r\n\r\n\t\t\tif(updateRows){\r\n\r\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\r\n\r\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\r\n\r\n\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\tif(row.cells.length){\r\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\r\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToColumn(column, position, ifVisible){\r\n\t\tvar left = 0,\r\n\t\toffset = 0,\r\n\t\tadjust = 0,\r\n\t\tcolEl = column.getElement();\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\r\n\t\t\tif(typeof position === \"undefined\"){\r\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof ifVisible === \"undefined\"){\r\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\r\n\t\t\t}\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\t//align to correct position\r\n\t\t\t\tswitch(position){\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\tadjust = -this.element.clientWidth / 2;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//check column visibility\r\n\t\t\t\tif(!ifVisible){\r\n\r\n\t\t\t\t\toffset = colEl.offsetLeft;\r\n\r\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//calculate scroll position\r\n\t\t\t\tleft = colEl.offsetLeft + adjust;\r\n\r\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\r\n\r\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\r\n\t\t\t\treject(\"Scroll Error - Column not visible\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t//////////////// Cell Management /////////////////\r\n\tgenerateCells(row){\r\n\t\tvar cells = [];\r\n\r\n\t\tthis.columnsByIndex.forEach((column) => {\r\n\t\t\tcells.push(column.generateCell(row));\r\n\t\t});\r\n\r\n\t\treturn cells;\r\n\t}\r\n\r\n\t//////////////// Column Management /////////////////\r\n\tgetFlexBaseWidth(){\r\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\r\n\t\tfixedWidth = 0;\r\n\r\n\t\t//adjust for vertical scrollbar if present\r\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t\t}\r\n\r\n\t\tthis.columnsByIndex.forEach(function(column){\r\n\t\t\tvar width, minWidth, colWidth;\r\n\r\n\t\t\tif(column.visible){\r\n\r\n\t\t\t\twidth = column.definition.width || 0;\r\n\r\n\t\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\t\tif(typeof(width) == \"string\"){\r\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcolWidth = width;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn fixedWidth;\r\n\t}\r\n\r\n\taddColumn(definition, before, nextToColumn){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\r\n\r\n\t\t\tthis._reIndexColumns();\r\n\r\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\r\n\r\n\t\t\tthis.redraw(true);\r\n\r\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\r\n\t\t\t\tcolumn.reinitializeWidth();\r\n\t\t\t}\r\n\r\n\t\t\tthis._verticalAlignHeaders();\r\n\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\r\n\t\t\tthis.renderer.rerenderColumns();\r\n\r\n\t\t\tresolve(column);\r\n\t\t});\r\n\t}\r\n\r\n\t//remove column from system\r\n\tderegisterColumn(column){\r\n\t\tvar field = column.getField(),\r\n\t\tindex;\r\n\r\n\t\t//remove from field list\r\n\t\tif(field){\r\n\t\t\tdelete this.columnsByField[field];\r\n\t\t}\r\n\r\n\t\t//remove from index list\r\n\t\tindex = this.columnsByIndex.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columnsByIndex.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t//remove from column list\r\n\t\tindex = this.columns.indexOf(column);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis.columns.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tthis._verticalAlignHeaders();\r\n\r\n\t\tthis.redraw();\r\n\t}\r\n\r\n\t//redraw columns\r\n\tredraw(force){\r\n\t\tif(force){\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tthis._verticalAlignHeaders();\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.resetScroll();\r\n\t\t\tthis.table.rowManager.reinitialize();\r\n\t\t}\r\n\r\n\t\tif(!this.confirm(\"table-redrawing\", force)){\r\n\t\t\tthis.layoutRefresh();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-redraw\", force);\r\n\r\n\t\tthis.table.footerManager.redraw();\r\n\t}\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class BaiscVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\t}\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.scrollTop = 0;\r\n\t\telement.scrollLeft = 0;\r\n\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tvar element = this.tableElement,\r\n\t\tonlyGroupHeaders = true;\r\n\r\n\t\tthis.rows().forEach((row, index) => {\r\n\t\t\tthis.styleRow(row, index);\r\n\t\t\telement.appendChild(row.getElement());\r\n\t\t\trow.initialize(true);\r\n\r\n\t\t\tif(row.type !== \"group\"){\r\n\t\t\t\tonlyGroupHeaders = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(onlyGroupHeaders){\r\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}else{\r\n\t\t\telement.style.minWidth = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\trerenderRows(callback){\r\n\t\tthis.render();\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\r\n\r\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\treturn this.rows();\r\n\t}\r\n\r\n}","import Renderer from '../Renderer.js';\r\nimport Helpers from '../../tools/Helpers.js';\r\n\r\nexport default class VirtualDomVertical extends Renderer{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.verticalFillMode = \"fill\";\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\r\n\r\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\r\n\t\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\r\n\r\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\r\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\r\n\r\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\r\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\r\n\r\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\r\n\r\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\r\n\r\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\r\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\r\n\r\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t///////// Public Functions ///////////\r\n\t//////////////////////////////////////\r\n\r\n\tclearRows(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\t// element.children.detach();\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\telement.style.paddingTop = \"\";\r\n\t\telement.style.paddingBottom = \"\";\r\n\t\telement.style.minWidth = \"\";\r\n\t\telement.style.minHeight = \"\";\r\n\t\telement.style.display = \"\";\r\n\t\telement.style.visibility = \"\";\r\n\r\n\t\tthis.elementVertical.scrollTop = 0;\r\n\t\tthis.elementVertical.scrollLeft = 0;\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.vDomTop = 0;\r\n\t\tthis.vDomBottom = 0;\r\n\t\tthis.vDomTopPad = 0;\r\n\t\tthis.vDomBottomPad = 0;\r\n\t\tthis.vDomScrollPosTop = 0;\r\n\t\tthis.vDomScrollPosBottom = 0;\r\n\t}\r\n\r\n\trenderRows(){\r\n\t\tthis._virtualRenderFill();\r\n\t}\r\n\r\n\trerenderRows(callback){\r\n\t\tvar scrollTop = this.elementVertical.scrollTop;\r\n\t\tvar topRow = false;\r\n\t\tvar topOffset = false;\r\n\r\n\t\tvar left = this.table.rowManager.scrollLeft;\r\n\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\r\n\t\t\tif(rows[i]){\r\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\r\n\r\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\r\n\t\t\t\t\ttopOffset = diff;\r\n\t\t\t\t\ttopRow = i;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(callback){\r\n\t\t\tcallback();\r\n\t\t}\r\n\r\n\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\r\n\r\n\t\tthis.scrollColumns(left);\r\n\t}\r\n\r\n\tscrollColumns(left){\r\n\t\tthis.table.rowManager.scrollHorizontal(left);\r\n\t}\r\n\r\n\tscrollRows(top, dir){\r\n\t\tvar topDiff = top - this.vDomScrollPosTop;\r\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\r\n\t\tvar margin = this.vDomWindowBuffer * 2;\r\n\t\tvar rows = this.rows();\r\n\r\n\t\tthis.scrollTop = top;\r\n\r\n\t\tif(-topDiff > margin || bottomDiff > margin){\r\n\t\t\t//if big scroll redraw table;\r\n\t\t\tvar left = this.table.rowManager.scrollLeft;\r\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\r\n\t\t\tthis.scrollColumns(left);\r\n\t\t}else{\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\t//scrolling up\r\n\t\t\t\tif(topDiff < 0){\r\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(bottomDiff < 0){\r\n\t\t\t\t\t//hide bottom row if needed\r\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\r\n\t\t\t\tif(bottomDiff >= 0){\r\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//scrolling down\r\n\t\t\t\tif(topDiff >= 0){\r\n\t\t\t\t\t//hide top row if needed\r\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\r\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tresize(){\r\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\r\n\t}\r\n\r\n\tscrollToRowNearestTop(row){\r\n\t\tvar rowIndex = this.rows().indexOf(row);\r\n\r\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\r\n\t}\r\n\r\n\tscrollToRow(row){\r\n\t\tvar index = this.rows().indexOf(row);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tthis._virtualRenderFill(index, true);\r\n\t\t}\r\n\t}\r\n\r\n\tvisibleRows(includingBuffer){\r\n\t\tvar topEdge = this.elementVertical.scrollTop,\r\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\r\n\t\ttopFound = false,\r\n\t\ttopRow = 0,\r\n\t\tbottomRow = 0,\r\n\t\trows = this.rows();\r\n\r\n\t\tif(includingBuffer){\r\n\t\t\ttopRow = this.vDomTop;\r\n\t\t\tbottomRow = this.vDomBottom;\r\n\t\t}else{\r\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\r\n\t\t\t\tif(rows[i]){\r\n\t\t\t\t\tif(!topFound){\r\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\r\n\t\t\t\t\t\t\ttopRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\ttopFound = true;\r\n\r\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\r\n\t\t\t\t\t\t\tbottomRow = i;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rows.slice(topRow, bottomRow + 1);\r\n\t}\r\n\r\n\t//////////////////////////////////////\r\n\t//////// Internal Rendering //////////\r\n\t//////////////////////////////////////\r\n\r\n\t//full virtual render\r\n\t_virtualRenderFill(position, forceMove, offset){\r\n\t\tvar\telement = this.tableElement,\r\n\t\tholder = this.elementVertical,\r\n\t\ttopPad = 0,\r\n\t\trowsHeight = 0,\r\n\t\theightOccupied = 0,\r\n\t\ttopPadHeight = 0,\r\n\t\ti = 0,\r\n\t\trows = this.rows(),\r\n\t\trowsCount = rows.length,\r\n\t\tcontainerHeight = this.elementVertical.clientHeight;\r\n\r\n\t\tposition = position || 0;\r\n\r\n\t\toffset = offset || 0;\r\n\r\n\t\tif(!position){\r\n\t\t\tthis.clear();\r\n\t\t}else{\r\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t\t//check if position is too close to bottom of table\r\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\r\n\r\n\t\t\tif(heightOccupied < containerHeight){\r\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\r\n\t\t\t\tif(position < 0){\r\n\t\t\t\t\tposition = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//calculate initial pad\r\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\r\n\t\t\tposition -= topPad;\r\n\t\t}\r\n\r\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\r\n\t\t\tthis.vDomTop = position;\r\n\r\n\t\t\tthis.vDomBottom = position -1;\r\n\r\n\t\t\twhile ((rowsHeight <= containerHeight + this.vDomWindowBuffer || i < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1){\r\n\t\t\t\tvar index = this.vDomBottom + 1,\r\n\t\t\t\trow = rows[index],\r\n\t\t\t\trowHeight = 0;\r\n\r\n\t\t\t\tthis.styleRow(row, index);\r\n\r\n\t\t\t\telement.appendChild(row.getElement());\r\n\r\n\t\t\t\trow.initialize();\r\n\r\n\t\t\t\tif(!row.heightInitialized){\r\n\t\t\t\t\trow.normalizeHeight(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trowHeight = row.getHeight();\r\n\r\n\t\t\t\tif(i < topPad){\r\n\t\t\t\t\ttopPadHeight += rowHeight;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trowsHeight += rowHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.vDomBottom ++;\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif(!position){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t\t//adjust rowheight to match average of rendered elements\r\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\r\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\r\n\r\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\r\n\t\t\t}else{\r\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\r\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\r\n\t\t\t}\r\n\r\n\t\t\telement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\telement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\r\n\t\t\tif(forceMove){\r\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\r\n\r\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\r\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.offsetWidth && forceMove){\r\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\r\n\t\t\t}\r\n\r\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\r\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\r\n\r\n\t\t\tholder.scrollTop = this.scrollTop;\r\n\r\n\t\t\tthis.dispatch(\"render-virtual-fill\");\r\n\t\t}\r\n\t}\r\n\r\n\t_addTopRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomTop -1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tif(this.vDomTop){\r\n\t\t\t\tlet row = rows[index],\r\n\t\t\t\trowHeight, initialized;\r\n\r\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\r\n\r\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\t\tthis.vDomTop--;\r\n\t\t\t\t\t\tindex--;\r\n\t\t\t\t\t\ti++;\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomTopPad < 0){\r\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif(index < 1){\r\n\t\t\t\tthis.vDomTopPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeTopRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomTop],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomTop++;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomTopPad += paddingAdjust;\r\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\r\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\r\n\t\t}\r\n\t}\r\n\r\n\t_addBottomRow(rows, fillableSpace){\r\n\t\tvar table = this.tableElement,\r\n\t\taddedRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\tindex = this.vDomBottom + 1,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[index],\r\n\t\t\trowHeight, initialized;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\t\t\t\tinitialized = row.initialized;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\r\n\t\t\t\t\tthis.styleRow(row, index);\r\n\t\t\t\t\ttable.appendChild(row.getElement());\r\n\r\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\r\n\t\t\t\t\t\taddedRows.push(row);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trow.initialize();\r\n\r\n\t\t\t\t\tif(!initialized){\r\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\r\n\r\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\r\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tthis.vDomBottom++;\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of addedRows){\r\n\t\t\trow.clearCellHeight();\r\n\t\t}\r\n\r\n\t\tthis._quickNormalizeRowHeight(addedRows);\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -1){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom += paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_removeBottomRow(rows, fillableSpace){\r\n\t\tvar removableRows = [],\r\n\t\tpaddingAdjust = 0,\r\n\t\ti = 0;\r\n\r\n\t\twhile(true){\r\n\t\t\tlet row = rows[this.vDomBottom],\r\n\t\t\trowHeight, diff;\r\n\r\n\t\t\tif(row && i < this.vDomMaxRenderChain){\r\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\r\n\r\n\t\t\t\tif(fillableSpace >= rowHeight){\r\n\t\t\t\t\tthis.vDomBottom --;\r\n\r\n\t\t\t\t\tfillableSpace -= rowHeight;\r\n\t\t\t\t\tpaddingAdjust += rowHeight;\r\n\r\n\t\t\t\t\tremovableRows.push(row);\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let row of removableRows){\r\n\t\t\tlet rowEl = row.getElement();\r\n\r\n\t\t\tif(rowEl.parentNode){\r\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(paddingAdjust){\r\n\t\t\tthis.vDomBottomPad += paddingAdjust;\r\n\r\n\t\t\tif(this.vDomBottomPad < 0){\r\n\t\t\t\tthis.vDomBottomPad = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\r\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\r\n\t\t}\r\n\t}\r\n\r\n\t_quickNormalizeRowHeight(rows){\r\n\t\tfor(let row of rows){\r\n\t\t\trow.calcHeight();\r\n\t\t}\r\n\r\n\t\tfor(let row of rows){\r\n\t\t\trow.setCellHeight();\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\nimport Row from './row/Row.js';\r\nimport RowComponent from './row/RowComponent.js';\r\nimport Helpers from './tools/Helpers.js';\r\n\r\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\r\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\r\n\r\nexport default class RowManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.element = this.createHolderElement(); //containing element\r\n\t\tthis.tableElement = this.createTableElement(); //table element\r\n\t\tthis.heightFixer = this.createTableElement(); //table element\r\n\r\n\t\tthis.firstRender = false; //handle first render\r\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\r\n\t\tthis.fixedHeight = false; //current rendering mode\r\n\r\n\t\tthis.rows = []; //hold row data objects\r\n\t\tthis.activeRowsPipeline = []; //hold caluclation of active rows\r\n\t\tthis.activeRows = []; //rows currently available to on display in the table\r\n\t\tthis.activeRowsCount = 0; //count of active rows\r\n\r\n\t\tthis.displayRows = []; //rows currently on display in the table\r\n\t\tthis.displayRowsCount = 0; //count of display rows\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.rowNumColumn = false; //hold column component for row number column\r\n\r\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing\r\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\r\n\t\tthis.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed\r\n\r\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\r\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\r\n\r\n\t\tthis.renderer = null;\r\n\t}\r\n\r\n\t//////////////// Setup Functions /////////////////\r\n\r\n\tcreateHolderElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-tableholder\");\r\n\t\tel.setAttribute(\"tabindex\", 0);\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateTableElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-table\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\t//return containing element\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\t//return table element\r\n\tgetTableElement(){\r\n\t\treturn this.tableElement;\r\n\t}\r\n\r\n\t//return position of row in table\r\n\tgetRowPosition(row, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows.indexOf(row);\r\n\t\t}else{\r\n\t\t\treturn this.rows.indexOf(row);\r\n\t\t}\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.initializeRenderer();\r\n\r\n\t\t//initialize manager\r\n\t\tthis.element.appendChild(this.tableElement);\r\n\r\n\t\tthis.firstRender = true;\r\n\r\n\t\t//scroll header along with table body\r\n\t\tthis.element.addEventListener(\"scroll\", () => {\r\n\t\t\tvar left = this.element.scrollLeft,\r\n\t\t\tleftDir = this.scrollLeft > left,\r\n\t\t\ttop = this.element.scrollTop,\r\n\t\t\ttopDir = this.scrollTop > top;\r\n\r\n\t\t\t//handle horizontal scrolling\r\n\t\t\tif(this.scrollLeft != left){\r\n\t\t\t\tthis.scrollLeft = left;\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\r\n\t\t\t}\r\n\r\n\t\t\t//handle verical scrolling\r\n\t\t\tif(this.scrollTop != top){\r\n\t\t\t\tthis.scrollTop = top;\r\n\r\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\r\n\r\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\r\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t////////////////// Row Manipulation //////////////////\r\n\tfindRow(subject){\r\n\t\tif(typeof subject == \"object\"){\r\n\t\t\tif(subject instanceof Row){\r\n\t\t\t\t//subject is row element\r\n\t\t\t\treturn subject;\r\n\t\t\t}else if(subject instanceof RowComponent){\r\n\t\t\t\t//subject is public row component\r\n\t\t\t\treturn subject._getSelf() || false;\r\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\r\n\t\t\t\t//subject is a HTML element of the row\r\n\t\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\t\treturn row.getElement() === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn match || false;\r\n\t\t\t}\r\n\t\t}else if(typeof subject == \"undefined\" || subject === null){\r\n\t\t\treturn false;\r\n\t\t}else{\r\n\t\t\t//subject should be treated as the index of the row\r\n\t\t\tlet match = this.rows.find((row) => {\r\n\t\t\t\treturn row.data[this.table.options.index] == subject;\r\n\t\t\t});\r\n\r\n\t\t\treturn match || false;\r\n\t\t}\r\n\r\n\t\t//catch all for any other type of input\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetRowFromDataObject(data){\r\n\t\tvar match = this.rows.find((row) => {\r\n\t\t\treturn row.data === data;\r\n\t\t});\r\n\r\n\t\treturn match || false;\r\n\t}\r\n\r\n\tgetRowFromPosition(position, active){\r\n\t\tif(active){\r\n\t\t\treturn this.activeRows[position];\r\n\t\t}else{\r\n\t\t\treturn this.rows[position];\r\n\t\t}\r\n\t}\r\n\r\n\tscrollToRow(row, position, ifVisible){\r\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\tsetData(data, renderInPosition, columnsChanged){\r\n\t\treturn new Promise((resolve, reject)=>{\r\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\r\n\t\t\t\tif(this.table.options.pagination){\r\n\t\t\t\t\tthis._setDataActual(data, true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.reRenderInPosition(() => {\r\n\t\t\t\t\t\tthis._setDataActual(data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged){\r\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\r\n\t\t\t\t}\r\n\t\t\t\tthis.resetScroll();\r\n\r\n\t\t\t\tthis._setDataActual(data);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n\r\n\t_setDataActual(data, renderInPosition){\r\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\r\n\r\n\t\tthis._wipeElements();\r\n\r\n\t\tif(Array.isArray(data)){\r\n\t\t\tthis.dispatch(\"data-processing\", data);\r\n\r\n\t\t\tdata.forEach((def, i) => {\r\n\t\t\t\tif(def && typeof def === \"object\"){\r\n\t\t\t\t\tvar row = new Row(def, this);\r\n\t\t\t\t\tthis.rows.push(row);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\r\n\r\n\t\t\tthis.dispatch(\"data-processed\", data);\r\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\r\n\t\t}\r\n\t}\r\n\r\n\t_wipeElements(){\r\n\t\tthis.dispatch(\"rows-wipe\");\r\n\r\n\t\tthis.rows.forEach((row) => {\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rows = [];\r\n\t\tthis.activeRows = [];\r\n\t\tthis.activeRowsPipeline = [];\r\n\t\tthis.activeRowsCount = 0;\r\n\t\tthis.displayRows = [];\r\n\t\tthis.displayRowsCount = 0;\r\n\r\n\t\tthis.adjustTableSize();\r\n\t}\r\n\r\n\tdeleteRow(row, blockRedraw){\r\n\t\tvar allIndex = this.rows.indexOf(row),\r\n\t\tactiveIndex = this.activeRows.indexOf(row);\r\n\r\n\t\tif(activeIndex > -1){\r\n\t\t\tthis.activeRows.splice(activeIndex, 1);\r\n\t\t}\r\n\r\n\t\tif(allIndex > -1){\r\n\t\t\tthis.rows.splice(allIndex, 1);\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tvar displayIndex = rows.indexOf(row);\r\n\r\n\t\t\tif(displayIndex > -1){\r\n\t\t\t\trows.splice(displayIndex, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\r\n\t\t}\r\n\t}\r\n\r\n\taddRow(data, pos, index, blockRedraw){\r\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\r\n\r\n\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\t//add multiple rows\r\n\taddRows(data, pos, index){\r\n\t\tvar length = 0,\r\n\t\trows = [];\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tpos = this.findAddRowPos(pos);\r\n\r\n\t\t\tif(!Array.isArray(data)){\r\n\t\t\t\tdata = [data];\r\n\t\t\t}\r\n\r\n\t\t\tlength = data.length - 1;\r\n\r\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\r\n\t\t\t\tdata.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tdata.forEach((item, i) => {\r\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\r\n\t\t\t\trows.push(row);\r\n\t\t\t\tthis.dispatch(\"row-added\", row, data, pos, index);\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRenderInPosition();\r\n\r\n\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\tif(rows.length){\r\n\t\t\t\tthis._clearPlaceholder();\r\n\t\t\t}\r\n\r\n\t\t\tresolve(rows);\r\n\t\t});\r\n\t}\r\n\r\n\tfindAddRowPos(pos){\r\n\t\tif(typeof pos === \"undefined\"){\r\n\t\t\tpos = this.table.options.addRowPos;\r\n\t\t}\r\n\r\n\t\tif(pos === \"pos\"){\r\n\t\t\tpos = true;\r\n\t\t}\r\n\r\n\t\tif(pos === \"bottom\"){\r\n\t\t\tpos = false;\r\n\t\t}\r\n\r\n\t\treturn pos;\r\n\t}\r\n\r\n\taddRowActual(data, pos, index, blockRedraw){\r\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\r\n\t\ttop = this.findAddRowPos(pos),\r\n\t\tallIndex = -1,\r\n\t\tactiveIndex, chainResult;\r\n\r\n\t\tif(!index){\r\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\r\n\r\n\t\t\tindex = chainResult.index;\r\n\t\t\ttop = chainResult.top;\r\n\t\t}\r\n\r\n\t\tif(typeof index !== \"undefined\"){\r\n\t\t\tindex = this.findRow(index);\r\n\t\t}\r\n\r\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\r\n\r\n\t\tif(index){\r\n\t\t\tallIndex = this.rows.indexOf(index);\r\n\t\t}\r\n\r\n\t\tif(index && allIndex > -1){\r\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\r\n\r\n\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\tvar displayIndex = rows.indexOf(index);\r\n\r\n\t\t\t\tif(displayIndex > -1){\r\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(activeIndex > -1){\r\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\r\n\t\t\t}\r\n\r\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\r\n\r\n\t\t}else{\r\n\r\n\t\t\tif(top){\r\n\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.unshift(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.unshift(row);\r\n\t\t\t\tthis.rows.unshift(row);\r\n\t\t\t}else{\r\n\t\t\t\tthis.displayRowIterator(function(rows){\r\n\t\t\t\t\trows.push(row);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.activeRows.push(row);\r\n\t\t\t\tthis.rows.push(row);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setActiveRows(this.activeRows);\r\n\r\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\r\n\r\n\t\tif(this.subscribedExternal(\"dataChanged\")){\r\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\r\n\t\t}\r\n\r\n\t\tif(!blockRedraw){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t}\r\n\r\n\t\treturn row;\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tthis.dispatch(\"row-move\", from, to, after);\r\n\r\n\t\tthis.moveRowActual(from, to, after);\r\n\r\n\t\tthis.regenerateRowNumbers();\r\n\r\n\t\tthis.dispatch(\"row-moved\", from, to, after);\r\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\r\n\t}\r\n\r\n\tmoveRowActual(from, to, after){\r\n\t\tthis.moveRowInArray(this.rows, from, to, after);\r\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\r\n\r\n\t\tthis.displayRowIterator((rows) => {\r\n\t\t\tthis.moveRowInArray(rows, from, to, after);\r\n\t\t});\r\n\r\n\t\tthis.dispatch(\"row-moving\", from, to, after);\r\n\t}\r\n\r\n\tmoveRowInArray(rows, from, to, after){\r\n\t\tvar\tfromIndex, toIndex, start, end;\r\n\r\n\t\tif(from !== to){\r\n\r\n\t\t\tfromIndex = rows.indexOf(from);\r\n\r\n\t\t\tif (fromIndex > -1) {\r\n\r\n\t\t\t\trows.splice(fromIndex, 1);\r\n\r\n\t\t\t\ttoIndex = rows.indexOf(to);\r\n\r\n\t\t\t\tif (toIndex > -1) {\r\n\r\n\t\t\t\t\tif(after){\r\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\trows.splice(fromIndex, 0, from);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//restyle rows\r\n\t\t\tif(rows === this.getDisplayRows()){\r\n\r\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\r\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\r\n\r\n\t\t\t\tfor(let i = start; i <= end; i++){\r\n\t\t\t\t\tif(rows[i]){\r\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearData(){\r\n\t\tthis.setData([]);\r\n\t}\r\n\r\n\tgetRowIndex(row){\r\n\t\treturn this.findRowIndex(row, this.rows);\r\n\t}\r\n\r\n\tgetDisplayRowIndex(row){\r\n\t\tvar index = this.getDisplayRows().indexOf(row);\r\n\t\treturn index > -1 ? index : false;\r\n\t}\r\n\r\n\tnextDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tnextRow = false;\r\n\r\n\r\n\t\tif(index !== false && index < this.displayRowsCount -1){\r\n\t\t\tnextRow = this.getDisplayRows()[index+1];\r\n\t\t}\r\n\r\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\r\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn nextRow;\r\n\t}\r\n\r\n\tprevDisplayRow(row, rowOnly){\r\n\t\tvar index = this.getDisplayRowIndex(row),\r\n\t\tprevRow = false;\r\n\r\n\t\tif(index){\r\n\t\t\tprevRow = this.getDisplayRows()[index-1];\r\n\t\t}\r\n\r\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\r\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\r\n\t\t}\r\n\r\n\t\treturn prevRow;\r\n\t}\r\n\r\n\tfindRowIndex(row, list){\r\n\t\tvar rowIndex;\r\n\r\n\t\trow = this.findRow(row);\r\n\r\n\t\tif(row){\r\n\t\t\trowIndex = list.indexOf(row);\r\n\r\n\t\t\tif(rowIndex > -1){\r\n\t\t\t\treturn rowIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(active, transform){\r\n\t\tvar output = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\tif(row.type == \"row\"){\r\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetComponents(active){\r\n\t\tvar\toutput = [],\r\n\t\trows = this.getRows(active);\r\n\r\n\t\trows.forEach(function(row){\r\n\t\t\toutput.push(row.getComponent());\r\n\t\t});\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDataCount(active){\r\n\t\tvar rows = this.getRows(active);\r\n\r\n\t\treturn rows.length;\r\n\t}\r\n\r\n\tscrollHorizontal(left){\r\n\t\tthis.scrollLeft = left;\r\n\t\tthis.element.scrollLeft = left;\r\n\r\n\t\tthis.dispatch(\"scroll-horizontal\", left);\r\n\t}\r\n\r\n\tregisterDataPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.dataPipeline.push({handler, priority})\r\n\t\t\tthis.dataPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\tregisterDisplayPipelineHandler(handler, priority){\r\n\t\tif(typeof priority !== \"undefined\"){\r\n\t\t\tthis.displayPipeline.push({handler, priority})\r\n\t\t\tthis.displayPipeline.sort((a, b) => {\r\n\t\t\t\treturn a.priority - b.priority;\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\")\r\n\t\t}\r\n\t}\r\n\r\n\t//set active data set\r\n\trefreshActiveData(handler, skipStage, renderInPosition){\r\n\t\tvar table = this.table,\r\n\t\tstage = \"\",\r\n\t\tindex = 0,\r\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"],\r\n\t\tdisplayIndex;\r\n\r\n\r\n\t\tif(typeof handler === \"function\"){\r\n\t\t\tindex = this.dataPipeline.findIndex((item) => {\r\n\t\t\t\treturn item.handler === handler;\r\n\t\t\t});\r\n\r\n\t\t\tif(index > -1){\r\n\t\t\t\tstage = \"dataPipeline\";\r\n\r\n\t\t\t\tif(skipStage){\r\n\t\t\t\t\tif(index == this.dataPipeline.length - 1){\r\n\t\t\t\t\t\tstage = \"display\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\r\n\t\t\t\t\treturn item.handler === handler;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tstage = \"displayPipeline\";\r\n\r\n\t\t\t\t\tif(skipStage){\r\n\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\r\n\t\t\t\t\t\t\tstage = \"end\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler)\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tstage = handler || \"all\";\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\r\n\t\t\t\tthis.redrawBlockRestoreConfig = {\r\n\t\t\t\t\thandler: handler,\r\n\t\t\t\t\tskipStage: skipStage,\r\n\t\t\t\t\trenderInPosition: renderInPosition,\r\n\t\t\t\t\tstage:stage,\r\n\t\t\t\t\tindex:index,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}else{\r\n\t\t\tthis.dispatch(\"data-refeshing\");\r\n\r\n\t\t\tif(!handler){\r\n\t\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\r\n\t\t\t}\r\n\r\n\t\t\t//cascade through data refresh stages\r\n\t\t\tswitch(stage){\r\n\t\t\t\tcase \"all\":\r\n\t\t\t\t//handle case where alldata needs refreshing\r\n\r\n\t\t\t\tcase \"dataPipeline\":\r\n\r\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\r\n\r\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\r\n\r\n\t\t\t\tthis.regenerateRowNumbers();\r\n\r\n\t\t\t\tcase \"display\":\r\n\t\t\t\tindex = 0;\r\n\t\t\t\tthis.resetDisplayRows();\r\n\r\n\t\t\t\tcase \"displayPipeline\":\r\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\r\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\r\n\r\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcase \"end\":\r\n\t\t\t\t//case to handle scenario when trying to skip past end stage\r\n\t\t\t}\r\n\r\n\t\t\tif(Helpers.elVisible(this.element)){\r\n\t\t\t\tif(renderInPosition){\r\n\t\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tif(!handler){\r\n\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.renderTable();\r\n\r\n\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\r\n\t\t\t\t\t\tthis.table.columnManager.redraw(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"data-refeshed\");\r\n\t\t}\r\n\t}\r\n\r\n\t//regenerate row numbers for row number formatter if in use\r\n\tregenerateRowNumbers(){\r\n\t\tif(this.rowNumColumn){\r\n\t\t\tthis.activeRows.forEach((row) => {\r\n\t\t\t\tvar cell = row.getCell(this.rowNumColumn);\r\n\r\n\t\t\t\tif(cell){\r\n\t\t\t\t\tcell._generateContents();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsetActiveRows(activeRows){\r\n\t\tthis.activeRows = activeRows;\r\n\t\tthis.activeRowsCount = this.activeRows.length;\r\n\t}\r\n\r\n\t//reset display rows array\r\n\tresetDisplayRows(){\r\n\t\tthis.displayRows = [];\r\n\r\n\t\tthis.displayRows.push(this.activeRows.slice(0));\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[0].length;\r\n\t}\r\n\r\n\tgetNextDisplayIndex(){\r\n\t\treturn this.displayRows.length;\r\n\t}\r\n\r\n\t//set display row pipeline data\r\n\tsetDisplayRows(displayRows, index){\r\n\r\n\t\tvar output = true;\r\n\r\n\t\tif(index && typeof this.displayRows[index] != \"undefined\"){\r\n\t\t\tthis.displayRows[index] = displayRows;\r\n\t\t\toutput = true;\r\n\t\t}else{\r\n\t\t\tthis.displayRows.push(displayRows)\r\n\t\t\toutput = index = this.displayRows.length -1;\r\n\t\t}\r\n\r\n\t\tif(index == this.displayRows.length -1){\r\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tgetDisplayRows(index){\r\n\t\tif(typeof index == \"undefined\"){\r\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\r\n\t\t}else{\r\n\t\t\treturn this.displayRows[index] || [];\r\n\t\t}\r\n\t}\r\n\r\n\tgetVisibleRows(viewable){\r\n\t\treturn this.renderer.visibleRows(!viewable);\r\n\t}\r\n\r\n\t//repeat action accross display rows\r\n\tdisplayRowIterator(callback){\r\n\t\tthis.activeRowsPipeline.forEach(callback);\r\n\t\tthis.displayRows.forEach(callback);\r\n\r\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\r\n\t}\r\n\r\n\t//return only actual rows (not group headers etc)\r\n\tgetRows(type){\r\n\t\tvar rows;\r\n\r\n\t\tswitch(type){\r\n\t\t\tcase \"active\":\r\n\t\t\trows = this.activeRows;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"display\":\r\n\t\t\trows = this.table.rowManager.getDisplayRows();\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"visible\":\r\n\t\t\trows = this.getVisibleRows(true);\r\n\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\r\n\t\t}\r\n\r\n\t\treturn rows;\r\n\t}\r\n\r\n\t///////////////// Table Rendering /////////////////\r\n\t//trigger rerender of table in current position\r\n\treRenderInPosition(callback){\r\n\t\tif(this.redrawBlock){\r\n\t\t\tif(callback){\r\n\t\t\t\tcallback();\r\n\t\t\t}else{\r\n\t\t\t\tthis.redrawBlockRederInPosition = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderer.rerenderRows(callback);\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRenderer(){\r\n\t\tvar renderClass;\r\n\r\n\t\tvar renderers = {\r\n\t\t\t\"virtual\": RendererVirtualDomVertical,\r\n\t\t\t\"basic\": RendererBasicVertical,\r\n\t\t};\r\n\r\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\r\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\r\n\t\t}else{\r\n\t\t\trenderClass = this.table.options.renderVertical;\r\n\t\t}\r\n\r\n\t\tif(renderClass){\r\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\r\n\t\t\tthis.renderer.initialize();\r\n\r\n\t\t\tif((this.table.element.clientHeight || this.table.options.height)){\r\n\t\t\t\tthis.fixedHeight = true;\r\n\t\t\t}else{\r\n\t\t\t\tthis.fixedHeight = false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Unable to find matching renderer:\", table.options.renderVertical);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRenderMode(){\r\n\t\treturn this.renderMode;\r\n\t}\r\n\r\n\trenderTable(){\r\n\r\n\t\tthis.dispatchExternal(\"renderStarted\");\r\n\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.displayRowsCount){\r\n\t\t\tthis._clearTable();\r\n\t\t\tthis.renderer.renderRows();\r\n\r\n\t\t\tif(this.firstRender){\r\n\t\t\t\tthis.firstRender = false;\r\n\t\t\t\tthis.layoutRefresh();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderEmptyScroll();\r\n\t\t}\r\n\r\n\t\tif(!this.fixedHeight){\r\n\t\t\tthis.adjustTableSize();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"table-layout\");\r\n\r\n\t\tif(!this.displayRowsCount){\r\n\t\t\tthis._showPlaceholder();\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"renderComplete\");\r\n\t}\r\n\r\n\t//show scrollbars on empty table div\r\n\trenderEmptyScroll(){\r\n\t\tif(this.table.options.placeholder){\r\n\t\t\tthis.tableElement.style.display = \"none\";\r\n\t\t}else{\r\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\r\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\r\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearTable(){\r\n\t\tvar element = this.tableElement;\r\n\r\n\t\tthis._clearPlaceholder();\r\n\r\n\t\tthis.scrollTop = 0;\r\n\t\tthis.scrollLeft = 0;\r\n\r\n\t\tthis.renderer.clearRows();\r\n\t}\r\n\r\n\t_showPlaceholder(){\r\n\t\tif(this.table.options.placeholder){\r\n\r\n\t\t\tthis.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\r\n\r\n\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\tthis.table.options.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t_clearPlaceholder(){\r\n\t\tif(this.table.options.placeholder && this.table.options.placeholder.parentNode){\r\n\t\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\r\n\t\t}\r\n\t}\r\n\r\n\tstyleRow(row, index){\r\n\t\tvar rowEl = row.getElement();\r\n\r\n\t\tif(index % 2){\r\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\r\n\t\t}else{\r\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\r\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\r\n\t\t}\r\n\t}\r\n\r\n\t//normalize height of active rows\r\n\tnormalizeHeight(){\r\n\t\tthis.activeRows.forEach(function(row){\r\n\t\t\trow.normalizeHeight();\r\n\t\t});\r\n\t}\r\n\r\n\t//adjust the height of the table holder to fit in the Tabulator element\r\n\tadjustTableSize(){\r\n\t\tvar initialHeight = this.element.clientHeight,\r\n\t\tmodExists;\r\n\r\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\r\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\r\n\r\n\t\t\tif(this.fixedHeight){\r\n\t\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\r\n\t\t\t}else{\r\n\t\t\t\tthis.element.style.height = \"\";\r\n\t\t\t\tthis.element.style.height = (this.table.element.clientHeight - otherHeight) + \"px\";\r\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\r\n\t\t\t}\r\n\r\n\t\t\tthis.renderer.resize();\r\n\r\n\t\t\t//check if the table has changed size when dealing with variable height tables\r\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\r\n\t\t\t\tif(this.subscribed(\"table-resize\")){\r\n\t\t\t\t\tthis.dispatch(\"table-resize\");\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.redraw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//renitialize all rows\r\n\treinitialize(){\r\n\t\tthis.rows.forEach(function(row){\r\n\t\t\trow.reinitialize(true);\r\n\t\t});\r\n\t}\r\n\r\n\t//prevent table from being redrawn\r\n\tblockRedraw (){\r\n\t\tthis.redrawBlock = true;\r\n\t\tthis.redrawBlockRestoreConfig = false;\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw (){\r\n\t\tthis.redrawBlock = false;\r\n\r\n\t\tif(this.redrawBlockRestoreConfig){\r\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition)\r\n\r\n\t\t\tthis.redrawBlockRestoreConfig = false;\r\n\t\t}else{\r\n\t\t\tif(this.redrawBlockRederInPosition){\r\n\t\t\t\tthis.reRenderInPosition();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.redrawBlockRederInPosition = false;\r\n\t}\r\n\r\n\t//redraw table\r\n\tredraw (force){\r\n\t\tvar pos = 0,\r\n\t\tleft = this.scrollLeft;\r\n\r\n\t\tthis.adjustTableSize();\r\n\r\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\r\n\r\n\t\tif(!force){\r\n\t\t\tthis.reRenderInPosition();\r\n\t\t\tthis.scrollHorizontal(left);\r\n\r\n\t\t\tif(!this.displayRowsCount){\r\n\t\t\t\tif(this.table.options.placeholder){\r\n\t\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.renderTable();\r\n\t\t}\r\n\t}\r\n\r\n\tresetScroll(){\r\n\t\tthis.element.scrollLeft = 0;\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tif(this.table.browser === \"ie\"){\r\n\t\t\tvar event = document.createEvent(\"Event\");\r\n\t\t\tevent.initEvent(\"scroll\", false, true);\r\n\t\t\tthis.element.dispatchEvent(event);\r\n\t\t}else{\r\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from './CoreFeature.js';\r\n\r\nexport default class FooterManager extends CoreFeature{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.active = false;\r\n\t\tthis.element = this.createElement(); //containing element\r\n\t\tthis.external = false;\r\n\t\tthis.links = [];\r\n\r\n\t\tthis.initializeElement();\r\n\t}\r\n\r\n\tinitialize(){\r\n\r\n\t}\r\n\r\n\tcreateElement (){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-footer\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(this.table.options.footerElement){\r\n\r\n\t\t\tswitch(typeof this.table.options.footerElement){\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\r\n\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.external = true;\r\n\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\tthis.element = this.table.options.footerElement;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tappend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.appendChild(element);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tprepend(element, parent){\r\n\t\tthis.activate(parent);\r\n\r\n\t\tthis.element.insertBefore(element, this.element.firstChild);\r\n\t\tthis.table.rowManager.adjustTableSize();\r\n\t}\r\n\r\n\tremove(element){\r\n\t\telement.parentNode.removeChild(element);\r\n\t\tthis.deactivate();\r\n\t}\r\n\r\n\tdeactivate(force){\r\n\t\tif(!this.element.firstChild || force){\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\r\n\t\t\t}\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(parent){\r\n\t\tif(!this.active){\r\n\t\t\tthis.active = true;\r\n\t\t\tif(!this.external){\r\n\t\t\t\tthis.table.element.appendChild(this.getElement());\r\n\t\t\t\tthis.table.element.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(parent){\r\n\t\t\tthis.links.push(parent);\r\n\t\t}\r\n\t}\r\n\r\n\tredraw(){\r\n\t\tthis.links.forEach(function(link){\r\n\t\t\tlink.footerRedraw();\r\n\t\t});\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\nimport Helpers from './Helpers.js';\r\n\r\nexport default class InteractionManager extends CoreFeature {\r\n\r\n\tconstructor (table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.el = this.table.element;\r\n\r\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\r\n\r\n\t\tthis.previousTargets = {};\r\n\r\n\t\tthis.listeners = [\r\n\t\t\"click\",\r\n\t\t\"dblclick\",\r\n\t\t\"contextmenu\",\r\n\t\t\"mouseenter\",\r\n\t\t\"mouseleave\",\r\n\t\t\"mouseover\",\r\n\t\t\"mouseout\",\r\n\t\t\"mousemove\",\r\n\t\t\"touchstart\",\r\n\t\t\"touchend\",\r\n\t\t];\r\n\r\n\t\tthis.componentMap = {\r\n\t\t\t\"tabulator-cell\":\"cell\",\r\n\t\t\t\"tabulator-row\":\"row\",\r\n\t\t\t\"tabulator-group\":\"group\",\r\n\t\t\t\"tabulator-col\":\"column\",\r\n\t\t};\r\n\r\n\t\tthis.buildListenerMap();\r\n\t\tthis.bindSubscriptionWatchers();\r\n\t}\r\n\r\n\tbuildListenerMap(){\r\n\t\tvar listenerMap = {};\r\n\r\n\t\tthis.listeners.forEach((listener) => {\r\n\t\t\tlistenerMap[listener] = {\r\n\t\t\t\thandler:null,\r\n\t\t\t\tcomponents:[],\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tthis.listeners = listenerMap;\r\n\t}\r\n\r\n\tbindSubscriptionWatchers(){\r\n\t\tvar listeners = Object.keys(this.listeners),\r\n\t\tcomponents = Object.values(this.componentMap);\r\n\r\n\t\tfor(let comp of components){\r\n\t\t\tfor(let listener of listeners){\r\n\t\t\t\tlet key = comp + \"-\" + listener;\r\n\r\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsubscriptionChanged(component, key, added){\r\n\t\tvar listener = this.listeners[key].components,\r\n\t\tindex = listener.indexOf(component),\r\n\t\tchanged = false;\r\n\r\n\t\tif(added){\r\n\t\t\tif(index === -1){\r\n\t\t\t\tlistener.push(component);\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tlistener.splice(index, 1);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.updateEventListeners();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventListeners(){\r\n\t\tfor(let key in this.listeners){\r\n\t\t\tlet listener = this.listeners[key];\r\n\r\n\t\t\tif(listener.components.length){\r\n\t\t\t\tif(!listener.handler){\r\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\r\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler)\r\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(listener.handler){\r\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler)\r\n\t\t\t\t\tlistener.handler = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttrack(type, e){\r\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\r\n\t\tvar targets = this.findTargets(path);\r\n\t\ttargets = this.bindComponents(type, targets);\r\n\t\tthis.triggerEvents(type, e, targets);\r\n\t}\r\n\r\n\tfindTargets(path){\r\n\t\tvar targets = {};\r\n\r\n\t\tlet componentMap = Object.keys(this.componentMap);\r\n\r\n\t\tfor (let el of path) {\r\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\r\n\r\n\t\t\tlet abort = classList.filter((item) => {\r\n\t\t\t\treturn this.abortClasses.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tif(abort.length){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet elTargets = classList.filter((item) => {\r\n\t\t\t\treturn componentMap.includes(item);\r\n\t\t\t})\r\n\r\n\t\t\tfor (let target of elTargets) {\r\n\t\t\t\ttargets[this.componentMap[target]] = el;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(targets.group && targets.group === targets.row){\r\n\t\t\tdelete targets.row;\r\n\t\t}\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\tbindComponents(type, targets){\r\n\t\t//ensure row component is looked up before cell\r\n\t\tvar keys = Object.keys(targets).reverse(),\r\n\t\tlistener = this.listeners[type],\r\n\t\ttargetMatches = {};\r\n\r\n\t\tfor(let key of keys){\r\n\t\t\tlet component;\r\n\t\t\tlet target = targets[key];\r\n\t\t\tlet previousTarget = this.previousTargets[key];\r\n\r\n\t\t\tif(previousTarget && previousTarget.target === target){\r\n\t\t\t\tcomponent = previousTarget.component;\r\n\t\t\t}else{\r\n\t\t\t\tswitch(key){\r\n\t\t\t\t\tcase \"row\":\r\n\t\t\t\t\tcase \"group\":\r\n\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows();\r\n\r\n\t\t\t\t\t\tcomponent = rows.find((row) => {\r\n\t\t\t\t\t\t\treturn row.getElement() === target;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"column\":\r\n\t\t\t\t\tif(listener.components.includes(\"column\")){\r\n\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\r\n\t\t\t\t\tcase \"cell\":\r\n\t\t\t\t\tif(listener.components.includes(\"cell\")){\r\n\t\t\t\t\t\tcomponent = targets[\"row\"].findCell(target);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(component){\r\n\t\t\t\ttargets[key] = component;\r\n\t\t\t\ttargetMatches[key] = {\r\n\t\t\t\t\ttarget:target,\r\n\t\t\t\t\tcomponent:component,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.previousTargets = targetMatches;\r\n\r\n\t\treturn targets;\r\n\t}\r\n\r\n\ttriggerEvents(type, e, targets){\r\n\t\tvar listener = this.listeners[type];\r\n\r\n\t\tfor(let key in targets){\r\n\t\t\tif(targets[key] && listener.components.includes(key)){\r\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","export default class ComponentFuctionBinder{\r\n\r\n\tconstructor(table){\r\n\t\tthis.table = table;\r\n\r\n\t\tthis.bindings = {};\r\n\t}\r\n\r\n\tbind(type, funcName, handler){\r\n\t\tif(!this.bindings[type]){\r\n\t\t\tthis.bindings[type] = {};\r\n\t\t}\r\n\r\n\t\tif(this.bindings[type][funcName]){\r\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, hanlder)\r\n\t\t}else{\r\n\t\t\tthis.bindings[type][funcName] = handler;\r\n\t\t}\r\n\t}\r\n\r\n\thandle(type, component, name){\r\n\t\tif(this.bindings[type] && this.bindings[type][name]){\r\n\t\t\treturn this.bindings[type][name].bind(null, component);\r\n\t\t}else{\r\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\r\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import CoreFeature from '../CoreFeature.js';\r\n\r\nexport default class DataLoader extends CoreFeature{\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.loaderElement = this.createLoaderElement(); //loader message div\r\n\t\tthis.msgElement = this.createMsgElement(); //message element\r\n\t\tthis.loadingElement = null;\r\n\t\tthis.errorElement = null;\r\n\r\n\t\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\r\n\t\tthis.loading = false;\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tvar template;\r\n\r\n\t\tthis.loaderElement.appendChild(this.msgElement);\r\n\r\n\t\tif(this.table.options.dataLoaderLoading){\r\n\t\t\tif(typeof this.table.options.dataLoaderLoading == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderLoading.trim();\r\n\t\t\t\tthis.loadingElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.loadingElement = this.table.options.dataLoaderLoading;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.table.options.dataLoaderError){\r\n\t\t\tif(typeof this.table.options.dataLoaderError == \"string\"){\r\n\t\t\t\ttemplate = document.createElement('template');\r\n\t\t\t\ttemplate.innerHTML = this.table.options.dataLoaderError.trim();\r\n\t\t\t\tthis.errorElement = template.firstElementChild;\r\n\t\t\t}else{\r\n\t\t\t\tthis.errorElement = this.table.options.dataLoaderError;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcreateLoaderElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-loader\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tcreateMsgElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\r\n\t\tel.classList.add(\"tabulator-loader-msg\");\r\n\t\tel.setAttribute(\"role\", \"alert\");\r\n\r\n\t\treturn el;\r\n\t}\r\n\r\n\tload(data, params, config, replace, silent){\r\n\t\tvar requestNo = ++this.requestOrder;\r\n\r\n\t\tthis.dispatchExternal(\"dataLoading\", data);\r\n\r\n\t\t//parse json data to array\r\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(this.confirm(\"data-loading\", data, params, config, silent)){\r\n\t\t\tthis.loading = true;\r\n\r\n\t\t\tif(!silent){\r\n\t\t\t\tthis.showLoader();\r\n\t\t\t}\r\n\r\n\t\t\t//get params for request\r\n\t\t\tvar params = this.chain(\"data-params\", [data, config, silent], params || {}, {});\r\n\r\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\r\n\r\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], Promise.resolve([]));\r\n\r\n\t\t\treturn result.then((response) => {\r\n\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\r\n\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\r\n\r\n\t\t\t\tif(requestNo == this.requestOrder){\r\n\t\t\t\t\tthis.hideLoader();\r\n\r\n\t\t\t\t\tif(rowData !== false){\r\n\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, !replace);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\r\n\t\t\t\t}\r\n\t\t\t}).catch((error) => {\r\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\r\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\r\n\r\n\t\t\t\tif(!silent){\r\n\t\t\t\t\tthis.showError();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.hideLoader();\r\n\t\t\t\t}, 3000);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\r\n\r\n\t\t\tif(!data){\r\n\t\t\t\tdata = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.rowManager.setData(data, replace, !replace);\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\tmapParams(params, map){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in params){\r\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tobjectInvert(obj){\r\n\t\tvar output = {};\r\n\r\n\t\tfor(let key in obj){\r\n\t\t\toutput[obj[key]] = key;\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tblockActiveLoad(){\r\n\t\tthis.requestOrder++;\r\n\t}\r\n\r\n\tshowLoader(){\r\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\r\n\r\n\t\tif(shouldLoad){\r\n\t\t\tthis.hideLoader();\r\n\r\n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\r\n\t\t\tthis.msgElement.classList.remove(\"tabulator-error\");\r\n\t\t\tthis.msgElement.classList.add(\"tabulator-loading\");\r\n\r\n\t\t\tif(this.loadingElement){\r\n\t\t\t\tthis.msgElement.appendChild(this.loadingElement);\r\n\t\t\t}else{\r\n\t\t\t\tthis.msgElement.innerHTML = this.langText(\"data|loading\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n\r\n\tshowError(){\r\n\t\tthis.hideLoader();\r\n\r\n\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\r\n\t\tthis.msgElement.classList.remove(\"tabulator-loading\");\r\n\t\tthis.msgElement.classList.add(\"tabulator-error\");\r\n\r\n\t\tif(this.errorElement){\r\n\t\t\tthis.msgElement.appendChild(this.errorElement);\r\n\t\t}else{\r\n\t\t\tthis.msgElement.innerHTML = this.langText(\"data|error\");\r\n\t\t}\r\n\r\n\t\tthis.table.element.appendChild(this.loaderElement);\r\n\t}\r\n\r\n\r\n\thideLoader(){\r\n\t\tif(this.loaderElement.parentNode){\r\n\t\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\r\n\t\t}\r\n\t}\r\n}","export default class ExternalEventBus {\r\n\r\n\tconstructor(optionsList, debug){\r\n\t\tthis.events = {};\r\n\t\tthis.optionsList = optionsList || {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push(callback);\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tdelete this.events[key];\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift(),\r\n\t\tresult;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((callback, i) => {\r\n\t\t\t\tlet callResult = callback.apply(this, args);\r\n\r\n\t\t\t\tif(!i){\r\n\t\t\t\t\tresult = callResult;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"ExternalEvent:\" + args[0];\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments)\r\n\t}\r\n}","export default class InternalEventBus {\r\n\r\n\tconstructor(debug){\r\n\t\tthis.events = {};\r\n\t\tthis.subscriptionNotifiers = {};\r\n\r\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\r\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\r\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\r\n\t\tthis.debug = debug;\r\n\t}\r\n\r\n\tsubscriptionChange(key, callback){\r\n\t\tif(!this.subscriptionNotifiers[key]){\r\n\t\t\tthis.subscriptionNotifiers[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.subscriptionNotifiers[key].push(callback);\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis._notifiySubscriptionChange(key, true);\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribe(key, callback, priority = 10000){\r\n\t\tif(!this.events[key]){\r\n\t\t\tthis.events[key] = [];\r\n\t\t}\r\n\r\n\t\tthis.events[key].push({callback, priority});\r\n\r\n\t\tthis.events[key].sort((a, b) => {\r\n\t\t\treturn a.priority - b.priority;\r\n\t\t});\r\n\r\n\t\tthis._notifiySubscriptionChange(key, true);\r\n\t}\r\n\r\n\tunsubscribe(key, callback){\r\n\t\tvar index;\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tif(callback){\r\n\t\t\t\tindex = this.events[key].findIndex((item) => {\r\n\t\t\t\t\treturn item.callback === callback;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(index > -1){\r\n\t\t\t\t\tthis.events[key].splice(index, 1);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._notifiySubscriptionChange(key, false);\r\n\t}\r\n\r\n\tsubscribed(key){\r\n\t\treturn this.events[key] && this.events[key].length;\r\n\t}\r\n\r\n\t_chain(key, args, initialValue, fallback){\r\n\t\tvar value = initialValue;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t}else{\r\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\r\n\t\t}\r\n\t}\r\n\r\n\t_confirm(key, args){\r\n\t\tvar confirmed = false;\r\n\r\n\t\tif(!Array.isArray(args)){\r\n\t\t\targs = [args];\r\n\t\t}\r\n\r\n\t\tif(this.subscribed(key)){\r\n\t\t\tthis.events[key].forEach((subscriber, i) => {\r\n\t\t\t\tif(subscriber.callback.apply(this, args)){\r\n\t\t\t\t\tconfirmed = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn confirmed;\r\n\t}\r\n\r\n\t_notifiySubscriptionChange(key, subscribed){\r\n\t\tvar notifiers = this.subscriptionNotifiers[key];\r\n\r\n\t\tif(notifiers){\r\n\t\t\tnotifiers.forEach((callback)=>{\r\n\t\t\t\tcallback(subscribed);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_dispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tif(this.events[key]){\r\n\t\t\tthis.events[key].forEach((subscriber) => {\r\n\t\t\t\tlet callResult = subscriber.callback.apply(this, args);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t_debugDispatch(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._dispatch(...arguments);\r\n\t}\r\n\r\n\t_debugChain(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._chain(...arguments);\r\n\t}\r\n\r\n\t_debugConfirm(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args[0];\r\n\r\n\t\targs[0] = \"InternalEvent:\" + key;\r\n\r\n\t\tif(this.debug === true || this.debug.includes(key)){\r\n\t\t\tconsole.log(...args);\r\n\t\t}\r\n\r\n\t\treturn this._confirm(...arguments);\r\n\t}\r\n}","import Tabulator from '../Tabulator.js';\r\n\r\nclass TableRegistry {\r\n\r\n\tstatic register(table){\r\n\t\tTableRegistry.tables.push(table);\r\n\t}\r\n\r\n\tstatic deregister(table){\r\n\t\tvar index = TableRegistry.tables.indexOf(table);\r\n\r\n\t\tif(index > -1){\r\n\t\t\tTableRegistry.tables.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lookupTable(query, silent){\r\n\t\tvar results = [],\r\n\t\tmatches, match;\r\n\r\n\t\tif(typeof query === \"string\"){\r\n\t\t\tmatches = document.querySelectorAll(query);\r\n\r\n\t\t\tif(matches.length){\r\n\t\t\t\tfor(var i = 0; i < matches.length; i++){\r\n\t\t\t\t\tmatch = TableRegistry.matchElement(matches[i]);\r\n\r\n\t\t\t\t\tif(match){\r\n\t\t\t\t\t\tresults.push(match);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\r\n\t\t\tmatch = TableRegistry.matchElement(query);\r\n\r\n\t\t\tif(match){\r\n\t\t\t\tresults.push(match);\r\n\t\t\t}\r\n\t\t}else if(Array.isArray(query)){\r\n\t\t\tquery.forEach(function(item){\r\n\t\t\t\tresults = results.concat(TableRegistry.lookupTable(item));\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tif(!silent){\r\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tstatic matchElement(element){\r\n\t\treturn TableRegistry.tables.find(function(table){\r\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nTableRegistry.tables = [];\r\n\r\nexport default TableRegistry;","//resize columns to fit data they contain\r\nexport default function(columns){\r\n\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","//resize columns to fit data the contain and stretch last column to fill table\r\nexport default function(columns){\r\n\tvar colsWidth = 0,\r\n\ttableWidth = this.table.rowManager.element.clientWidth,\r\n\tgap = 0,\r\n\tlastCol = false;\r\n\r\n\tcolumns.forEach((column, i) => {\r\n\t\tif(!column.widthFixed){\r\n\t\t\tcolumn.reinitializeWidth();\r\n\t\t}\r\n\r\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\r\n\t\t\tlastCol = column;\r\n\t\t}\r\n\r\n\t\tif(column.visible){\r\n\t\t\tcolsWidth += column.getWidth();\r\n\t\t}\r\n\t});\r\n\r\n\tif(lastCol){\r\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\r\n\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tlastCol.setWidth(0);\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\r\n\t\tif(gap > 0){\r\n\t\t\tlastCol.setWidth(gap);\r\n\t\t}else{\r\n\t\t\tlastCol.reinitializeWidth();\r\n\t\t}\r\n\t}else{\r\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\t\tthis.table.modules.responsiveLayout.update();\r\n\t\t}\r\n\t}\r\n};","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\r\nexport default function(columns){\r\n\tcolumns.forEach(function(column){\r\n\t\tcolumn.reinitializeWidth();\r\n\t});\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport defaultModes from './defaults/modes.js';\r\n\r\nclass Layout extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table, \"layout\");\r\n\r\n\t\tthis.mode = null;\r\n\r\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\r\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\r\n\r\n\t\tthis.registerColumnOption(\"widthGrow\");\r\n\t\tthis.registerColumnOption(\"widthShrink\");\r\n\t}\r\n\r\n\t//initialize layout system\r\n\tinitialize(){\r\n\t\tvar layout = this.table.options.layout;\r\n\r\n\t\tif(Layout.modes[layout]){\r\n\t\t\tthis.mode = layout;\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\r\n\t\t\tthis.mode = 'fitData';\r\n\t\t}\r\n\r\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\r\n\t}\r\n\r\n\tgetMode(){\r\n\t\treturn this.mode;\r\n\t}\r\n\r\n\t//trigger table layout\r\n\tlayout(){\r\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\r\n\r\n\t\tthis.dispatch(\"layout-refreshed\")\r\n\t}\r\n}\r\n\r\nLayout.moduleName = \"layout\";\r\n\r\n//load defaults\r\nLayout.modes = defaultModes;\r\n\r\nexport default Layout;","//resize columns to fit\r\nexport default function(columns){\r\n\tvar totalWidth = this.table.element.clientWidth; //table element width\r\n\tvar fixedWidth = 0; //total width of columns with a defined width\r\n\tvar flexWidth = 0; //total width available to flexible columns\r\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\r\n\tvar flexColWidth = 0; //desired width of flexible columns\r\n\tvar flexColumns = []; //array of flexible width columns\r\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\r\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\r\n\tvar overflowWidth = 0; //horizontal overflow width\r\n\tvar gapFill=0; //number of pixels to be added to final column to close and half pixel gaps\r\n\r\n\tfunction calcWidth(width){\r\n\t\tvar colWidth;\r\n\r\n\t\tif(typeof(width) == \"string\"){\r\n\t\t\tif(width.indexOf(\"%\") > -1){\r\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\r\n\t\t\t}else{\r\n\t\t\t\tcolWidth = parseInt(width);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tcolWidth = width;\r\n\t\t}\r\n\r\n\t\treturn colWidth;\r\n\t}\r\n\r\n\t//ensure columns resize to take up the correct amount of space\r\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\r\n\r\n\t\tvar oversizeCols = [],\r\n\t\toversizeSpace = 0,\r\n\t\tremainingSpace = 0,\r\n\t\tnextColWidth = 0,\r\n\t\tremainingFlexGrowUnits = flexGrowUnits,\r\n\t\tgap = 0,\r\n\t\tchangeUnits = 0,\r\n\t\tundersizeCols = [];\r\n\r\n\t\tfunction calcGrow(col){\r\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\r\n\t\t}\r\n\r\n\t\tfunction calcShrink(col){\r\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)))\r\n\t\t}\r\n\r\n\t\tcolumns.forEach(function(col, i){\r\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\r\n\t\t\tif(col.column.minWidth >= width){\r\n\t\t\t\toversizeCols.push(col);\r\n\t\t\t}else{\r\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\r\n\t\t\t\t\tcol.width = col.column.maxWidth;\r\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\r\n\r\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\r\n\t\t\t\t\tif(remainingFlexGrowUnits){\r\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tundersizeCols.push(col);\r\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(oversizeCols.length){\r\n\t\t\toversizeCols.forEach(function(col){\r\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\r\n\t\t\t\tcol.width = col.column.minWidth;\r\n\t\t\t});\r\n\r\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\r\n\r\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\r\n\r\n\t\t\tgap = remainingSpace - (nextColWidth * changeUnits);\r\n\r\n\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\r\n\t\t}else{\r\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\r\n\r\n\t\t\tundersizeCols.forEach(function(column){\r\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn gap;\r\n\t}\r\n\r\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\r\n\t\tthis.table.modules.responsiveLayout.update();\r\n\t}\r\n\r\n\t//adjust for vertical scrollbar if present\r\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\r\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\r\n\t}\r\n\r\n\tcolumns.forEach(function(column){\r\n\t\tvar width, minWidth, colWidth;\r\n\r\n\t\tif(column.visible){\r\n\r\n\t\t\twidth = column.definition.width;\r\n\t\t\tminWidth = parseInt(column.minWidth);\r\n\r\n\t\t\tif(width){\r\n\r\n\t\t\t\tcolWidth = calcWidth(width);\r\n\r\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\r\n\r\n\t\t\t\tif(column.definition.widthShrink){\r\n\t\t\t\t\tfixedShrinkColumns.push({\r\n\t\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\r\n\t\t\t\t\t});\r\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\t\t\t\tflexColumns.push({\r\n\t\t\t\t\tcolumn:column,\r\n\t\t\t\t\twidth:0,\r\n\t\t\t\t});\r\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t//calculate available space\r\n\tflexWidth = totalWidth - fixedWidth;\r\n\r\n\t//calculate correct column size\r\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits)\r\n\r\n\t//generate column widths\r\n\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\r\n\r\n\t//increase width of last column to account for rounding errors\r\n\tif(flexColumns.length && gapFill > 0){\r\n\t\tflexColumns[flexColumns.length-1].width += + gapFill;\r\n\t}\r\n\r\n\t//caculate space for columns to be shrunk into\r\n\tflexColumns.forEach(function(col){\r\n\t\tflexWidth -= col.width;\r\n\t});\r\n\r\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\r\n\r\n\t//shrink oversize columns if there is no available space\r\n\tif(overflowWidth > 0 && flexShrinkUnits){\r\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\r\n\t}\r\n\r\n\t//decrease width of last column to account for rounding errors\r\n\tif(fixedShrinkColumns.length){\r\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\r\n\t}\r\n\r\n\tflexColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n\r\n\tfixedShrinkColumns.forEach(function(col){\r\n\t\tcol.column.setWidth(col.width);\r\n\t});\r\n};","import fitData from './modes/fitData.js';\r\nimport fitDataGeneral from './modes/fitDataGeneral.js';\r\nimport fitDataStretch from './modes/fitDataStretch.js';\r\nimport fitColumns from './modes/fitColumns.js';\r\n\r\nexport default {\r\n\tfitData:fitData,\r\n\tfitDataFill:fitDataGeneral,\r\n\tfitDataTable:fitDataGeneral,\r\n\tfitDataStretch:fitDataStretch,\r\n\tfitColumns:fitColumns ,\r\n};","export default {\r\n\t\"default\":{ //hold default locale text\r\n\t\t\"groups\":{\r\n\t\t\t\"item\":\"item\",\r\n\t\t\t\"items\":\"items\",\r\n\t\t},\r\n\t\t\"columns\":{\r\n\t\t},\r\n\t\t\"data\":{\r\n\t\t\t\"loading\":\"Loading\",\r\n\t\t\t\"error\":\"Error\",\r\n\t\t},\r\n\t\t\"pagination\":{\r\n\t\t\t\"page_size\":\"Page Size\",\r\n\t\t\t\"page_title\":\"Show Page\",\r\n\t\t\t\"first\":\"First\",\r\n\t\t\t\"first_title\":\"First Page\",\r\n\t\t\t\"last\":\"Last\",\r\n\t\t\t\"last_title\":\"Last Page\",\r\n\t\t\t\"prev\":\"Prev\",\r\n\t\t\t\"prev_title\":\"Prev Page\",\r\n\t\t\t\"next\":\"Next\",\r\n\t\t\t\"next_title\":\"Next Page\",\r\n\t\t\t\"all\":\"All\",\r\n\t\t},\r\n\t\t\"headerFilters\":{\r\n\t\t\t\"default\":\"filter column...\",\r\n\t\t\t\"columns\":{}\r\n\t\t}\r\n\t},\r\n};","import Module from '../../core/Module.js';\r\n\r\nimport Helpers from '../../core/tools/Helpers.js';\r\n\r\nimport defaultLangs from './defaults/langs.js';\r\n\r\nclass Localize extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\r\n\t\tthis.locale = \"default\"; //current locale\r\n\t\tthis.lang = false; //current language\r\n\t\tthis.bindings = {}; //update events to call when locale is changed\r\n\t\tthis.langList = {};\r\n\r\n\t\tthis.registerTableOption(\"locale\", false); //current system language\r\n\t\tthis.registerTableOption(\"langs\", {});\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\r\n\r\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\r\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\r\n\t\t}\r\n\r\n\t\tfor(let locale in this.table.options.langs){\r\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\r\n\t\t}\r\n\r\n\t\tthis.setLocale(this.table.options.locale);\r\n\r\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\r\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\r\n\t}\r\n\r\n\t//set header placehoder\r\n\tsetHeaderFilterPlaceholder(placeholder){\r\n\t\tthis.langList.default.headerFilters.default = placeholder;\r\n\t}\r\n\r\n\t//set header filter placeholder by column\r\n\tsetHeaderFilterColumnPlaceholder(column, placeholder){\r\n\t\tthis.langList.default.headerFilters.columns[column] = placeholder;\r\n\r\n\t\tif(this.lang && !this.lang.headerFilters.columns[column]){\r\n\t\t\tthis.lang.headerFilters.columns[column] = placeholder;\r\n\t\t}\r\n\t}\r\n\r\n\t//setup a lang description object\r\n\tinstallLang(locale, lang){\r\n\t\tif(this.langList[locale]){\r\n\t\t\tthis._setLangProp(this.langList[locale], lang);\r\n\t\t}else{\r\n\t\t\tthis.langList[locale] = lang;\r\n\t\t}\r\n\t}\r\n\r\n\t_setLangProp(lang, values){\r\n\t\tfor(let key in values){\r\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\r\n\t\t\t\tthis._setLangProp(lang[key], values[key])\r\n\t\t\t}else{\r\n\t\t\t\tlang[key] = values[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//set current locale\r\n\tsetLocale(desiredLocale){\r\n\t\tdesiredLocale = desiredLocale || \"default\";\r\n\r\n\t\t//fill in any matching languge values\r\n\t\tfunction traverseLang(trans, path){\r\n\t\t\tfor(var prop in trans){\r\n\t\t\t\tif(typeof trans[prop] == \"object\"){\r\n\t\t\t\t\tif(!path[prop]){\r\n\t\t\t\t\t\tpath[prop] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpath[prop] = trans[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//determing correct locale to load\r\n\t\tif(desiredLocale === true && navigator.language){\r\n\t\t\t//get local from system\r\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\r\n\t\t}\r\n\r\n\t\tif(desiredLocale){\r\n\t\t\t//if locale is not set, check for matching top level locale else use default\r\n\t\t\tif(!this.langList[desiredLocale]){\r\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\r\n\r\n\t\t\t\tif(this.langList[prefix]){\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\r\n\t\t\t\t\tdesiredLocale = prefix;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\r\n\t\t\t\t\tdesiredLocale = \"default\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.locale = desiredLocale;\r\n\r\n\t\t//load default lang template\r\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\r\n\r\n\t\tif(desiredLocale != \"default\"){\r\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\r\n\t\t}\r\n\r\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\r\n\r\n\t\tthis._executeBindings();\r\n\t}\r\n\r\n\t//get current locale\r\n\tgetLocale(locale){\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\t//get lang object for given local or current if none provided\r\n\tgetLang(locale){\r\n\t\treturn locale ? this.langList[locale] : this.lang;\r\n\t}\r\n\r\n\t//get text for current locale\r\n\tgetText(path, value){\r\n\t\tvar path = value ? path + \"|\" + value : path,\r\n\t\tpathArray = path.split(\"|\"),\r\n\t\ttext = this._getLangElement(pathArray, this.locale);\r\n\r\n\t\t// if(text === false){\r\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\r\n\t\t// }\r\n\r\n\t\treturn text || \"\";\r\n\t}\r\n\r\n\t//traverse langs object and find localized copy\r\n\t_getLangElement(path, locale){\r\n\t\tvar root = this.lang;\r\n\r\n\t\tpath.forEach(function(level){\r\n\t\t\tvar rootPath;\r\n\r\n\t\t\tif(root){\r\n\t\t\t\trootPath = root[level];\r\n\r\n\t\t\t\tif(typeof rootPath != \"undefined\"){\r\n\t\t\t\t\troot = rootPath;\r\n\t\t\t\t}else{\r\n\t\t\t\t\troot = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn root;\r\n\t}\r\n\r\n\t//set update binding\r\n\tbind(path, callback){\r\n\t\tif(!this.bindings[path]){\r\n\t\t\tthis.bindings[path] = [];\r\n\t\t}\r\n\r\n\t\tthis.bindings[path].push(callback);\r\n\r\n\t\tcallback(this.getText(path), this.lang);\r\n\t}\r\n\r\n\t//itterate through bindings and trigger updates\r\n\t_executeBindings(){\r\n\t\tfor(let path in this.bindings){\r\n\t\t\tthis.bindings[path].forEach((binding) => {\r\n\t\t\t\tbinding(this.getText(path), this.lang);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\nLocalize.moduleName = \"localize\";\r\n\r\n//load defaults\r\nLocalize.langs = defaultLangs;\r\n\r\nexport default Localize;","import Module from '../../core/Module.js';\r\nimport TableRegistry from '../../core/tools/TableRegistry.js';\r\n\r\nclass Comms extends Module{\r\n\r\n\tconstructor(table){\r\n\t\tsuper(table);\r\n\t}\r\n\r\n\tinitialize(){\r\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\r\n\t}\r\n\r\n\tgetConnections(selectors){\r\n\t\tvar connections = [],\r\n\t\tconnection;\r\n\r\n\t\tconnection = TableRegistry.lookupTable(selectors);\r\n\r\n\t\tconnection.forEach((con) =>{\r\n\t\t\tif(this.table !== con){\r\n\t\t\t\tconnections.push(con);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn connections;\r\n\t}\r\n\r\n\tsend(selectors, module, action, data){\r\n\t\tvar connections = this.getConnections(selectors);\r\n\r\n\t\tconnections.forEach((connection) => {\r\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\r\n\t\t});\r\n\r\n\t\tif(!connections.length && selectors){\r\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\r\n\t\t}\r\n\t}\r\n\r\n\treceive(table, module, action, data){\r\n\t\tif(this.table.modExists(module)){\r\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nComms.moduleName = \"comms\";\r\n\r\nexport default Comms;","import * as coreModules from '../modules/core.js';\r\nimport TableRegistry from './TableRegistry.js';\r\n\r\nexport default class ModuleBinder {\r\n\r\n\tconstructor(tabulator, modules){\r\n\t\tthis.bindStaticFuctionality(tabulator);\r\n\t\tthis.bindModules(tabulator, coreModules, true);\r\n\r\n\t\tif(modules){\r\n\t\t\tthis.bindModules(tabulator, modules);\r\n\t\t}\r\n\t}\r\n\r\n\tbindStaticFuctionality(tabulator){\r\n\t\ttabulator.moduleBindings = {};\r\n\r\n\t\ttabulator.extendModule = function(name, property, values){\r\n\t\t\tif(tabulator.moduleBindings[name]){\r\n\t\t\t\tvar source = tabulator.moduleBindings[name].prototype[property];\r\n\r\n\t\t\t\tif(source){\r\n\t\t\t\t\tif(typeof values == \"object\"){\r\n\t\t\t\t\t\tfor(let key in values){\r\n\t\t\t\t\t\t\tsource[key] = values[key];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttabulator.registerModule = function(modules){\r\n\t\t\tif(!Array.isArray(modules)){\r\n\t\t\t\tmodules = [modules];\r\n\t\t\t}\r\n\r\n\t\t\tmodules.forEach((mod) => {\r\n\t\t\t\ttabulator.registerModuleBinding(mod)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModuleBinding = function(mod){\r\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\r\n\t\t};\r\n\r\n\t\ttabulator.findTable = function(query){\r\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\r\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\r\n\t\t}\r\n\r\n\t\t//ensure that module are bound to instantiated function\r\n\t\ttabulator.prototype.bindModules = function(){\r\n\t\t\tthis.modules = {};\r\n\r\n\t\t\tfor(var name in tabulator.moduleBindings){\r\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\r\n\r\n\t\t\t\tthis.modules[name] = new mod(this);\r\n\r\n\t\t\t\tif(mod.prototype.moduleCore){\r\n\t\t\t\t\tthis.modulesCore[name] = this.modules[name];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.modulesRegular[name] = this.modules[name];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tbindModules(tabulator, modules, core){\r\n\t\tvar mods = Object.values(modules);\r\n\r\n\t\tif(core){\r\n\t\t\tmods.forEach((mod) => {\r\n\t\t\t\tmod.prototype.moduleCore = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\ttabulator.registerModule(mods);\r\n\t}\r\n}","'use strict';\r\n\r\nimport defaultOptions from './defaults/options.js';\r\n\r\nimport ColumnManager from './ColumnManager.js';\r\nimport RowManager from './RowManager.js';\r\nimport FooterManager from './FooterManager.js';\r\n\r\nimport InteractionMonitor from './tools/InteractionMonitor.js';\r\nimport ComponentFuctionBinder from './tools/ComponentFuctionBinder.js';\r\nimport DataLoader from './tools/DataLoader.js';\r\n\r\nimport ExternalEventBus from './tools/ExternalEventBus.js';\r\nimport InternalEventBus from './tools/InternalEventBus.js';\r\n\r\nimport TableRegistry from './tools/TableRegistry.js';\r\nimport ModuleBinder from './tools/ModuleBinder.js';\r\n\r\nimport OptionsList from './tools/OptionsList.js';\r\n\r\nclass Tabulator {\r\n\r\n\tconstructor(element, options){\r\n\r\n\t\tthis.options = {};\r\n\r\n\t\tthis.columnManager = null; // hold Column Manager\r\n\t\tthis.rowManager = null; //hold Row Manager\r\n\t\tthis.footerManager = null; //holder Footer Manager\r\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\r\n\t\tthis.externalEvents = null; //handle external event messaging\r\n\t\tthis.eventBus = null; //handle internal event messaging\r\n\t\tthis.interactionMonitor = false; //track user interaction\r\n\t\tthis.browser = \"\"; //hold current browser type\r\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\r\n\t\tthis.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence\r\n\t\tthis.rtl = false; //check if the table is in RTL mode\r\n\r\n\t\tthis.componentFunctionBinder = new ComponentFuctionBinder(this); //bind component functions\r\n\t\tthis.dataLoader = false; //bind component functions\r\n\r\n\t\tthis.modules = {}; //hold all modules bound to this table\r\n\t\tthis.modulesCore = {}; //hold core modules bound to this table (for initialization purposes)\r\n\t\tthis.modulesRegular = {}; //hold regular modules bound to this table (for initialization purposes)\r\n\r\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\r\n\r\n\t\tthis.initialized = false;\r\n\r\n\t\tif(this.initializeElement(element)){\r\n\r\n\t\t\tthis.initialzeCoreSystems(options);\r\n\r\n\t\t\t//delay table creation to allow event bindings immediatly after the constructor\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._create();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tTableRegistry.register(this); //register table for inderdevice communication\r\n\t}\r\n\r\n\tinitializeElement(element){\r\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\r\n\t\t\tthis.element = element;\r\n\t\t\treturn true;\r\n\t\t}else if(typeof element === \"string\"){\r\n\t\t\tthis.element = document.querySelector(element);\r\n\r\n\t\t\tif(this.element){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tinitialzeCoreSystems(options){\r\n\t\tthis.columnManager = new ColumnManager(this);\r\n\t\tthis.rowManager = new RowManager(this);\r\n\t\tthis.footerManager = new FooterManager(this);\r\n\t\tthis.dataLoader = new DataLoader(this);\r\n\r\n\t\tthis.bindModules();\r\n\r\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options)\r\n\r\n\t\tthis._clearObjectPointers();\r\n\r\n\t\tthis._mapDepricatedFunctionality();\r\n\r\n\t\tthis.externalEvents = new ExternalEventBus(this.options, this.options.debugEventsExternal);\r\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\r\n\r\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\r\n\r\n\t\tthis.dataLoader.initialize();\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\t\tthis.footerManager.initialize();\r\n\t}\r\n\r\n\trtlCheck(){\r\n\t\tvar style = window.getComputedStyle(this.element);\r\n\r\n\t\tswitch(this.options.textDirection){\r\n\t\t\tcase\"auto\":\r\n\t\t\tif(style.direction !== \"rtl\"){\r\n\t\t\t\tbreak;\r\n\t\t\t};\r\n\r\n\t\t\tcase \"rtl\":\r\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\r\n\t\t\tthis.rtl = true;\r\n\t\t\tbreak;\r\n\r\n\t\t\tcase \"ltr\":\r\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\r\n\r\n\t\t\tdefault:\r\n\t\t\tthis.rtl = false;\r\n\t\t}\r\n\t}\r\n\r\n\t//convert depricated functionality to new functions\r\n\t_mapDepricatedFunctionality(){\r\n\t\t//all previously deprecated functionality removed in the 5.0 release\r\n\t}\r\n\r\n\t_clearSelection(){\r\n\r\n\t\tthis.element.classList.add(\"tabulator-block-select\");\r\n\r\n\t\tif (window.getSelection) {\r\n\t\t if (window.getSelection().empty) { // Chrome\r\n\t\t \twindow.getSelection().empty();\r\n\t\t } else if (window.getSelection().removeAllRanges) { // Firefox\r\n\t\t \twindow.getSelection().removeAllRanges();\r\n\t\t }\r\n\t\t} else if (document.selection) { // IE?\r\n\t\t\tdocument.selection.empty();\r\n\t\t}\r\n\r\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\r\n\t}\r\n\r\n\t//concreate table\r\n\t_create(){\r\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\r\n\t\tthis.eventBus.dispatch(\"table-building\");\r\n\r\n\t\tthis.rtlCheck();\r\n\r\n\t\tthis._buildElement();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\t}\r\n\r\n\t//clear pointers to objects in default config object\r\n\t_clearObjectPointers(){\r\n\t\tthis.options.columns = this.options.columns.slice(0);\r\n\r\n\t\tif(this.options.data && !this.options.reactiveData){\r\n\t\t\tthis.options.data = this.options.data.slice(0);\r\n\t\t}\r\n\t}\r\n\r\n\t//build tabulator element\r\n\t_buildElement(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\r\n\r\n\t\telement.classList.add(\"tabulator\");\r\n\t\telement.setAttribute(\"role\", \"grid\");\r\n\r\n\t\t//empty element\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\r\n\t\t//set table height\r\n\t\tif(options.height){\r\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\r\n\t\t\telement.style.height = options.height;\r\n\t\t}\r\n\r\n\t\t//set table min height\r\n\t\tif(options.minHeight !== false){\r\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\r\n\t\t\telement.style.minHeight = options.minHeight;\r\n\t\t}\r\n\r\n\t\t//set table maxHeight\r\n\t\tif(options.maxHeight !== false){\r\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\r\n\t\t\telement.style.maxHeight = options.maxHeight;\r\n\t\t}\r\n\r\n\t\tthis.columnManager.initialize();\r\n\t\tthis.rowManager.initialize();\r\n\r\n\t\tthis._detectBrowser();\r\n\r\n\t\t//initialize core modules\r\n\t\tfor (let key in this.modulesCore){\r\n\t\t\tlet mod = this.modulesCore[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\t//configure placeholder element\r\n\t\tif(typeof options.placeholder == \"string\"){\r\n\r\n\t\t\tvar el = document.createElement(\"div\");\r\n\t\t\tel.classList.add(\"tabulator-placeholder\");\r\n\r\n\t\t\tvar span = document.createElement(\"span\");\r\n\t\t\tspan.innerHTML = options.placeholder;\r\n\r\n\t\t\tel.appendChild(span);\r\n\r\n\t\t\toptions.placeholder = el;\r\n\t\t}\r\n\r\n\t\t//build table elements\r\n\t\telement.appendChild(this.columnManager.getElement());\r\n\t\telement.appendChild(this.rowManager.getElement());\r\n\r\n\t\tif(options.footerElement){\r\n\t\t\tthis.footerManager.activate();\r\n\t\t}\r\n\r\n\t\tif(options.autoColumns && this.options.data){\r\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\r\n\t\t}\r\n\r\n\t\t//initialize regular modules\r\n\t\tfor (let key in this.modulesRegular){\r\n\t\t\tlet mod = this.modulesRegular[key];\r\n\r\n\t\t\tmod.initialize();\r\n\t\t}\r\n\r\n\t\tthis.columnManager.setColumns(options.columns);\r\n\r\n\t\tthis.eventBus.dispatch(\"table-built\");\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_loadInitialData(){\r\n\t\tthis.dataLoader.load(this.options.data);\r\n\t}\r\n\r\n\t//deconstructor\r\n\tdestroy(){\r\n\t\tvar element = this.element;\r\n\r\n\t\tTableRegistry.deregister(this); //deregister table from inderdevice communication\r\n\r\n\t\tthis.eventBus.dispatch(\"table-destroy\");\r\n\r\n\t\t//clear row data\r\n\t\tthis.rowManager.rows.forEach(function(row){\r\n\t\t\trow.wipe();\r\n\t\t});\r\n\r\n\t\tthis.rowManager.rows = [];\r\n\t\tthis.rowManager.activeRows = [];\r\n\t\tthis.rowManager.displayRows = [];\r\n\r\n\t\t//clear DOM\r\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\r\n\t\telement.classList.remove(\"tabulator\");\r\n\t}\r\n\r\n\t_detectBrowser(){\r\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\r\n\r\n\t\tif(ua.indexOf(\"Trident\") > -1){\r\n\t\t\tthis.browser = \"ie\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\r\n\t\t\tthis.browser = \"edge\";\r\n\t\t\tthis.browserSlow = true;\r\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\r\n\t\t\tthis.browser = \"firefox\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}else{\r\n\t\t\tthis.browser = \"other\";\r\n\t\t\tthis.browserSlow = false;\r\n\t\t}\r\n\r\n\t\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(ua.substr(0,4));\r\n\t}\r\n\r\n\t////////////////// Data Handling //////////////////\r\n\t//block table redrawing\r\n\tblockRedraw(){\r\n\t\treturn this.rowManager.blockRedraw();\r\n\t}\r\n\r\n\t//restore table redrawing\r\n\trestoreRedraw(){\r\n\t\treturn this.rowManager.restoreRedraw();\r\n\t}\r\n\r\n\t//local data from local file\r\n\tsetDataFromLocalFile(extensions){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.type = \"file\";\r\n\t\t\tinput.accept = extensions || \".json,application/json\";\r\n\r\n\t\t\tinput.addEventListener(\"change\", (e) => {\r\n\t\t\t\tvar file = input.files[0],\r\n\t\t\t\treader = new FileReader(),\r\n\t\t\t\tdata;\r\n\r\n\t\t\t\treader.readAsText(file);\r\n\r\n\t\t\t\treader.onload = (e) => {\r\n\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tdata = JSON.parse(reader.result);\r\n\t\t\t\t\t} catch(e) {\r\n\t\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\r\n\t\t\t\t\t\treject(e);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.setData(data)\r\n\t\t\t\t\t.then((data) => {\r\n\t\t\t\t\t\tresolve(data);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\tresolve(err);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\treader.onerror = (e) => {\r\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\r\n\t\t\t\t\treject();\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tinput.click();\r\n\t\t});\r\n\t}\r\n\r\n\t//load data\r\n\tsetData(data, params, config){\r\n\t\tif(this.initialized){\r\n\t\t\treturn this.dataLoader.load(data, params, config, false);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setData failed - table not yet initialized. To set initial data please use the 'data' property in the table constructor.\")\r\n\t\t}\r\n\t}\r\n\r\n\t//clear data\r\n\tclearData(){\r\n\t\tthis.dataLoader.blockActiveLoad();\r\n\t\tthis.rowManager.clearData();\r\n\t}\r\n\r\n\t//get table data array\r\n\tgetData(active){\r\n\t\treturn this.rowManager.getData(active);\r\n\t}\r\n\r\n\t//get table data array count\r\n\tgetDataCount(active){\r\n\t\treturn this.rowManager.getDataCount(active);\r\n\t}\r\n\r\n\t//replace data, keeping table in position with same sort\r\n\treplaceData(data, params, config){\r\n\t\treturn this.dataLoader.load(data, params, config, true, true);\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateData(data){\r\n\t\tvar responses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\taddData(data, pos, index){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\r\n\t\t\t\t.then((rows) => {\r\n\t\t\t\t\tvar output = [];\r\n\r\n\t\t\t\t\trows.forEach(function(row){\r\n\t\t\t\t\t\toutput.push(row.getComponent());\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tresolve(output);\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//update table data\r\n\tupdateOrAddData(data){\r\n\t\tvar rows = [],\r\n\t\tresponses = 0;\r\n\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.dataLoader.blockActiveLoad();\r\n\r\n\t\t\tif(typeof data === \"string\"){\r\n\t\t\t\tdata = JSON.parse(data);\r\n\t\t\t}\r\n\r\n\t\t\tif(data){\r\n\t\t\t\tdata.forEach((item) => {\r\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\r\n\r\n\t\t\t\t\tresponses++;\r\n\r\n\t\t\t\t\tif(row){\r\n\t\t\t\t\t\trow.updateData(item)\r\n\t\t\t\t\t\t.then(()=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(row.getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.rowManager.addRows(item)\r\n\t\t\t\t\t\t.then((newRows)=>{\r\n\t\t\t\t\t\t\tresponses--;\r\n\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\r\n\r\n\t\t\t\t\t\t\tif(!responses){\r\n\t\t\t\t\t\t\t\tresolve(rows);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\r\n\t\t\t\treject(\"Update Error - No data provided\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRow(index){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//get row object\r\n\tgetRowFromPosition(position, active){\r\n\t\tvar row = this.rowManager.getRowFromPosition(position, active);\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t//delete row from table\r\n\tdeleteRow(index){\r\n\t\tvar foundRows = [];\r\n\r\n\t\tif(!Array.isArray(index)){\r\n\t\t\tindex = [index];\r\n\t\t}\r\n\r\n\t\t//find matching rows\r\n\t\tfor(let item of index){\r\n\t\t\tlet row = this.rowManager.findRow(item, true);\r\n\r\n\t\t\tif(row){\r\n\t\t\t\tfoundRows.push(row);\r\n\t\t\t}else{\r\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\r\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\")\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//sort rows into correct order to ensure smooth delete from table\r\n\t\tfoundRows.sort((a, b) => {\r\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\r\n\t\t});\r\n\r\n\t\t//delete rows\r\n\t\tfoundRows.forEach((row) =>{\r\n\t\t\trow.delete()\r\n\t\t});\r\n\r\n\t\tthis.rowManager.reRenderInPosition();\r\n\r\n\t\treturn Promise.resolve();\r\n\t}\r\n\r\n\t//add row to table\r\n\taddRow(data, pos, index){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\treturn this.rowManager.addRows(data, pos, index)\r\n\t\t.then((rows)=>{\r\n\t\t\treturn rows[0].getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\t//update a row if it exitsts otherwise create it\r\n\tupdateOrAddRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\treturn row.getComponent();\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn this.rowManager.addRows(data)\r\n\t\t\t.then((rows)=>{\r\n\t\t\t\treturn rows[0].getComponent();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//update row data\r\n\tupdateRow(index, data){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\r\n\t\tif(row){\r\n\t\t\treturn row.updateData(data)\r\n\t\t\t.then(()=>{\r\n\t\t\t\tresolve(row.getComponent());\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to row in DOM\r\n\tscrollToRow(index, position, ifVisible){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\r\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\r\n\t\t}\r\n\t}\r\n\r\n\tmoveRow(from, to, after){\r\n\t\tvar fromRow = this.rowManager.findRow(from);\r\n\r\n\t\tif(fromRow){\r\n\t\t\tfromRow.moveToRow(to, after);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\tgetRows(active){\r\n\t\treturn this.rowManager.getComponents(active);\r\n\t}\r\n\r\n\t//get position of row in table\r\n\tgetRowPosition(index, active){\r\n\t\tvar row = this.rowManager.findRow(index);\r\n\r\n\t\tif(row){\r\n\t\t\treturn this.rowManager.getRowPosition(row, active);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/////////////// Column Functions ///////////////\r\n\tsetColumns(definition){\r\n\t\tthis.columnManager.setColumns(definition);\r\n\t}\r\n\r\n\tgetColumns(structured){\r\n\t\treturn this.columnManager.getComponents(structured);\r\n\t}\r\n\r\n\tgetColumn(field){\r\n\t\tvar col = this.columnManager.findColumn(field);\r\n\r\n\t\tif(col){\r\n\t\t\treturn col.getComponent();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetColumnDefinitions(){\r\n\t\treturn this.columnManager.getDefinitionTree();\r\n\t}\r\n\r\n\tshowColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.show();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\thideColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tcolumn.hide();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\tif(column.visible){\r\n\t\t\t\tcolumn.hide();\r\n\t\t\t}else{\r\n\t\t\t\tcolumn.show();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\taddColumn(definition, before, field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\treturn this.columnManager.addColumn(definition, before, column)\r\n\t\t.then((column) => {\r\n\t\t\treturn column.getComponent();\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteColumn(field){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.delete();\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateColumnDefinition(field, definition){\r\n\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\tif(column){\r\n\t\t\treturn column.updateDefinition(definition)\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\r\n\t\t\treturn Promise.reject();\r\n\t\t}\r\n\t}\r\n\r\n\tmoveColumn(from, to, after){\r\n\t\tvar fromColumn = this.columnManager.findColumn(from);\r\n\t\tvar toColumn = this.columnManager.findColumn(to);\r\n\r\n\t\tif(fromColumn){\r\n\t\t\tif(toColumn){\r\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\r\n\t\t}\r\n\t}\r\n\r\n\t//scroll to column in DOM\r\n\tscrollToColumn(field, position, ifVisible){\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tvar column = this.columnManager.findColumn(field);\r\n\r\n\t\t\tif(column){\r\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible)\r\n\t\t\t}else{\r\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\r\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//////////// General Public Functions ////////////\r\n\t//redraw list without updating data\r\n\tredraw(force){\r\n\t\tthis.columnManager.redraw(force);\r\n\t\tthis.rowManager.redraw(force);\r\n\t}\r\n\r\n\tsetHeight(height){\r\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\r\n\t\tthis.element.style.height = this.options.height;\r\n\t\tthis.rowManager.initializeRenderer();\r\n\t\tthis.rowManager.redraw();\r\n\t}\r\n\r\n\t//////////////////// Event Bus ///////////////////\r\n\r\n\ton(key, callback){\r\n\t\tthis.externalEvents.subscribe(key, callback);\r\n\t}\r\n\r\n\toff(key, callback){\r\n\t\tthis.externalEvents.unsubscribe(key, callback);\r\n\t}\r\n\r\n\tdispatchEvent(){\r\n\t\tvar args = Array.from(arguments),\r\n\t\tkey = args.shift();\r\n\r\n\t\tthis.externalEvents.dispatch(...arguments)\r\n\t}\r\n\r\n\t////////////// Extension Management //////////////\r\n\tmodExists(plugin, required){\r\n\t\tif(this.modules[plugin]){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\t\t\tif(required){\r\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tmodule(key){\r\n\t\tvar mod = this.modules[key];\r\n\r\n\t\tif(!mod){\r\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\r\n\t\t}\r\n\r\n\t\treturn mod;\r\n\t}\r\n}\r\n\r\n//default setup options\r\nTabulator.defaultOptions = defaultOptions;\r\n\r\n//bind modules and static functionality\r\nnew ModuleBinder(Tabulator);\r\n\r\nexport default Tabulator;","export default class PseudoRow {\r\n\r\n\tconstructor (type){\r\n\t\tthis.type = type;\r\n\t\tthis.element = this._createElement();\r\n\t}\r\n\r\n\t_createElement(){\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tel.classList.add(\"tabulator-row\");\r\n\t\treturn el;\r\n\t}\r\n\r\n\tgetElement(){\r\n\t\treturn this.element;\r\n\t}\r\n\r\n\tgetComponent(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetData(){\r\n\t\treturn {};\r\n\t}\r\n\r\n\tgetHeight(){\r\n\t\treturn this.element.outerHeight;\r\n\t}\r\n\r\n\tinitialize(){}\r\n\r\n\treinitialize(){}\r\n\r\n\tnormalizeHeight(){}\r\n\r\n\tgenerateCells(){}\r\n\r\n\treinitializeHeight(){}\r\n\r\n\tcalcHeight(){}\r\n\r\n\tsetCellHeight(){}\r\n\r\n\tclearCellHeight(){}\r\n}"],"names":["CoreFeature","[object Object]","table","this","data","silent","dataLoader","load","undefined","modules","localize","getText","arguments","bind","getLocale","comms","getConnections","send","layout","getMode","eventBus","subscribe","unsubscribe","key","subscribed","subscriptionChange","dispatch","chain","confirm","externalEvents","value","options","module","Module","name","super","_handler","optionsList","register","columnManager","func","console","warn","component","handler","componentFunctionBinder","priority","rowManager","registerDataPipelineHandler","registerDisplayPipelineHandler","renderInPosition","refreshActiveData","Helpers","el","offsetWidth","offsetHeight","box","getBoundingClientRect","top","window","pageYOffset","document","documentElement","clientTop","left","pageXOffset","clientLeft","obj","clone","Object","assign","Array","isArray","i","Date","deepClone","Accessor","allowedTypes","registerColumnOption","initializeColumn","transformRow","column","match","config","forEach","type","accessor","charAt","toUpperCase","slice","definition","lookupAccessor","params","accessors","row","rowComponent","getComponent","traverse","colCompnent","getFieldValue","setFieldValue","moduleName","generateParamsList","prefix","output","item","concat","push","serializeParams","encoded","encodeURIComponent","join","json","headers","Content-Type","body","url","JSON","stringify","form","FormData","append","Ajax","urlGenerator","loaderPromise","registerTableOption","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxParams","setParams","ajaxConfig","setConfig","ajaxURL","setUrl","registerTableFunction","getUrl","requestDataCheck","requestData","previousData","sendRequest","update","_loadDefaultConfig","method","force","defaultConfig","call","then","keys","length","toLowerCase","includes","contentType","Promise","resolve","reject","ajaxContentType","Accept","mode","location","origin","credentials","fetch","response","ok","catch","error","status","statusText","pasteParser","pasteAction","customSelection","rowRange","plain","html","list","setData","e","element","setPasteParser","clipboardPasteParser","blocked","col","rowData","getSelection","range","selectNodeContents","sel","removeAllRanges","selection","textRange","moveToElementText","action","parser","dispatchExternal","valid","clipboardData","getData","Clipboard","pasteActions","clipboard","headerFindSuccess","columns","columnMap","rows","transform","cells","mutate","initialValue","oldValue","height","width","className","field","vertAlign","bottom","middle","hozAlign","right","center","tooltip","_generateContents","minWidth","maxWidth","_column","hide","to","result","title","visible","cssClass","variableHeight","headerTooltip","headerVertical","headerHozAlign","parent","contentElement","titleHolderElement","titleElement","groupElement","isGroup","fieldStructure","widthStyled","maxWidthStyled","minWidthStyled","newCol","Column$1","def","checkColumnVisibility","classList","setAttribute","defaults","nestedFieldSeparator","_getNestedData","_getFlatData","langBind","_buildGroupHeader","tap","clearTimeout","dblTap","addEventListener","tapHold","show","stopPropagation","appendChild","contents","textAlign","structure","dataObj","alignment","style","paddingTop","clientHeight","childWidth","Math","heightInitialized","offsetParent","cell","clearCellHeight","cellCount","deregisterColumn","Cell$1","index","fitToData","target","heightStyled","manualHeight","outerHeight","created","generateCells","initialized","minHeight","maxHeight","max","calcHeight","newRowData","tempData","findCell","subject","detatchModules","deleteCells","precision","values","toString","Number","topCalcs","botCalcs","genColumn","topElement","botElement","topRow","botRow","botInitialized","rowsUpdated","recalcActiveRows","recalcRowGroup","groupBy","topCalcParams","topCalc","bottomCalc","botCalc","generateRow","rowsToData","calcs","group","generateRowData","dataTree","getElement","modExists","formatter","pos","columnCalcs","subGroups","ColumnCalcs","indent","collapseEl","expandEl","elementField","startOpen","displayIndex","registerComponentFunction","toggleRow","dataTreeBranchElement","branchEl","dummyEl","firstChild","dataTreeCollapseElement","createElement","dataTreeExpandElement","rowDelete","childArray","children","open","controlEl","insertBefore","marginRight","paddingRight","oldControl","replaceChild","getChildren","child","childRow","create","reinitialize","refreshData","collapseRow","childIndex","findChildIndex","unshift","layoutRow","Row$1","RowComponent","HTMLElement","DataTree","csv","fileContents","pdf","fontStyle","fontSize","cellPadding","content","colSpan","jspdf","autoTableParams","autoTable","doc","xlsx","sheetName","workbook","merges","XLSX","worksheet","Sheets","setFileContents","sheets","sheetOnly","ArrayBuffer","downloadFunc","mime","filename","blob","navigator","maskLetter","maskWildcard","mask","fillSymbols","Download","downloaders","defaultDownloaders","defaultEditors","input","editorParams","keyCode","onChange","cancel","textarea","getValue","vertNav","cellValue","scrollHeight","display","padding","getRow","focus","normalizeHeight","stopImmediatePropagation","removeEventListener","select","cellEl","initialDisplayValue","listEl","multiselect","dataItems","currentItem","displayItems","currentItems","blurable","searchWord","label","itemParams","dataList","displayList","b","tabIndex","innerHTML","toggleItem","chooseItem","elementAttributes","setTimeout","setItem","indexOf","unsetItem","readOnly","unsetItems","setCurrentItem","cancelItem","preventDefault","character","searchWordTimeout","scrollTovalue","chooseItems","parseItems","autocomplete","uniqueColumnValues","sortValuesList","searchingPlaceholder","fillListIfNotEmpty","matches","searchEl","listItemFormatter","removeChild","items","success","add","filterList","genUniqueColumnValues","parentNode","showList","star","maxStars","size","getElementsByTagName","val","starHolder","starsHolder","parseInt","changeValue","mouseDrag","min","percent","handle","position","bar","mouseDragWidth","updateValue","onRendered","indetermValue","indetermState","tristate","indeterminate","checked","setValue","currentCell","mouseClick","invalidEdit","editors","navigatePrev","navigateLeft","clearEdited","initializeColumnCheck","rowDeleteCheck","cancelEdit","addRow","newRow","findNextEditableCell","findPrevEditableCell","edit","editor","validate","cellRendered","button","recursionBlock","rowEl","offsetTop","scrollTop","scrollLeft","offsetLeft","cellEditor","allowEdit","self","edited","rendered","Node","editedCells","Edit","ExportRow","ExportColumn","cloneTableStyle","columnHeaders","maxDepth","groupData","subGroupData","columnVisCheck","headerDepth","header","rowGroups","exportCols","headerEl","bodyEl","rowFormatter","colVisProp","groupHeader","styles","oddRow","evenRow","firstGroup","setup","mapElementStyles","getField","getColumn","firstCell","_row","format","holder","background-color","color","font-weight","font-family","font-size","text-align","border-top","border-left","border-right","border-bottom","padding-top","padding-left","fromStyle","getComputedStyle","props","Export","defaultFilters","rowVal","RegExp","String","filterVal","headerFilters","headerFilterColumns","prevHeaderFilterChangeCheck","userSetFilter","userRefreshFilter","getHeaderFilters","initializeColumnHeaderFilter","showHeaderFilterElements","tableBuilt","remoteFilterParams","headerFilter","filterFunc","refreshFilter","filterElement","headerFilterParams","editorElement","headerFilterLiveFilterDelay","headerFilterLiveFilter","filter","filters","Filter","all","ajax","findIndex","trackChanges","subscribedExternal","filterMode","activeRows","plaintext","emptyToSpace","sanitizeHTML","money","number","floatVal","parseFloat","decimalSym","symbolAfter","toFixed","decimal","rgx","link","urlPrefix","labelField","formatterParams","urlField","image","src","tickCross","truthy","allowTruthy","datetime","DT","DateTime","luxon","newDatetime","timezone","datetimediff","inputFormat","invalid","suffix","lookup","stars","traffic","colors","isNaN","percentValue","progress","legendColor","legendAlign","legend","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","checkbox","toggleSelect","formatterPrint","print","formatterClipboard","lookupFormatter","htmlOutput","entityMap","&","<",">","\"","'","=","formatters","Format","leftColumns","rightColumns","leftMargin","rightMargin","initializationMode","layoutCell","frozenCheck","active","calcMargins","layoutColumnPosition","_calcSpace","topInitialized","frozen","leftParents","edge","FrozenColumns","getRows","initialize","adjustTableSize","detachRow","FrozenRows","receiver","_group","getSubGroups","toggleVisibility","Group","groupManager","level","hasSubGroups","old","groups","groupList","generator","elementContents","arrowElement","arrow","groupID","groupKey","splice","updateGroupRows","groupValues","count","getHeadersAndRows","prev","compoment","path","remove","childNodes","groupIDLookups","headerGenerator","allowedValues","displayHandler","setGroupValues","initializeTopRow","lookupFunc","getColumnByField","getGroups","groupStartOpen","after","groupComponents","rowCount","childData","groupListData","pullGroupListData","createGroup","assignRowToExistingGroup","oldGroups","newGroupPath","renderer","GroupRows","History","history","Cell","_rebindRow","redoers","HtmlTableImport","fieldIndex","_generateBlankHeaders","attributes","newElement","attrib","exists","getAttribute","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseMove","rowTap","rowDblTap","rowTapHold","cellClick","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseMove","cellTap","cellDblTap","cellTapHold","headerClick","headerDblClick","headerContext","headerMouseEnter","headerMouseLeave","headerMouseMove","headerTap","headerDblTap","headerTapHold","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","subscribers","touchSubscribers","touchWatchers","tapDbl","added","eventMap","subscribeTouchEvents","subscriptionChanged","watchers","callback","Interaction","Keybindings","watchKeys","actions","meta","binding","bindings","navPrev","navNext","navUp","navDown","scrollPageUp","scrollPageDown","undo","scrollToRow","getDisplayRows","Menu","menuElements","blurEvent","escEvent","nestedMenuBlock","menu","passive","LoadMenuEvent","rowClickMenu","isOpen","hideMenu","itemEl","hideOldSubMenus","menuEl","pop","touch","parentOffset","x","y","pageY","MoveColumns","placeholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","startX","autoScrollMargin","autoScrollTimeout","touches","colEl","nextColWidthLast","nextCol","prevCol","prevColWidth","startXMove","moveToCol","moveColumn","nextColWidth","pageX","Helpers$1","toColAfter","_unbindMouseMove","xPos","MoveRows","toRow","toRowAfter","hasHandle","moveHover","endMove","tableRowDropEvent","touchMove","connection","connectionSelectorsTables","connectionElements","connections","connectedTable","connectedRow","movableRowsConnectedTables","connectionSelectorsElements","mousemove","nextSibling","moveRow","tableRowDrop","which","rowHandle","prevRow","nextRowHeight","nextRow","diff","startYMove","moveToRow","nextRowHeightLast","setStartPosition","whiteSpace","yPos","connectionTables","commsConnections","prototype","fromRow","delete","Mutator","enabled","mutator","Page","initialLoad","dataChanging","pageSizes","dataReceivedNames","dataSentNames","setMaxPage","initialLoadComplete","registerDisplayHandler","createElements","dispRows","paginationSize","testElRow","testElCell","reset","setPageToRow","nextPage","firstBut","nextBut","paginationSizeSelector","pageSelectLabel","prevBut","setPage","previousPage","paginationElement","pageSizeSelect","pagesElement","progressiveLoad","page","rightSize","disabled","lastBut","start","end","scrollHorizontal","margin","cookie","localStorage","expireDate","setDate","Persistence","id","defWatcherBlock","persistence","readers","readFunc","persistenceWriterFunc","retreiveData","retreivedData","sort","sorters","initialSort","get","mergeDefinition","current","oldCols","from","find","parseColumns","validateSorters","writeFunc","definitions","getWidth","defStore","defaultReaders","Print","manualBlock","scrollY","tableEl","printHeader","headerContent","footerContent","scrollX","ReactiveData","origFuncs","currentVersion","version","defineProperty","childField","configurable","apply","shift","getOwnPropertyDescriptor","ResizeColumns","prevHandle","_mouseDown","nearestColumn","colIndex","rtl","setWidth","mouseUp","startColumn","ResizeRows","initializeRow","handleDown","observer","autoResize","containerHeight","containerWidth","floor","tableHeight","rerenderColumns","browserMobile","ResizeTable","ResponsiveLayout","hiddenColumns","collapseStartOpen","responsiveLayout","a","collapseHandleColumn","generateCollapsedRowContent","colCount","working","titleHighlight","text","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","isRowSelected","_deselectRow","selectable","shiftKey","rowIdx","fromRowIdx","toggledRow","deselectRows","toggledRows","_rowSelectionChanged","_selectRow","rowInfo","selectedRows","datetime$1","emptyAlign","decimalSeparator","thousandSeparator","string","langLocale","boolean","d","c","calc","alignEmptyValues","aRow","bs","as","rd","b1","sortList","setSort","sorter","dir","startingDir","columnHeaderSortMulti","rowComponents","sortMode","sortObj","_sortItems","el1Comp","el2","Sort","integer","isFinite","float","parameters","ends","Validate","clearValidation","_getSelf","_buildValidator","validators","invalidIndex","invalidCells","ResizeTableModule","ResponsiveLayoutModule","SelectRowModule","ValidateModule","ifVisible","rowIndex","elementVertical","VirtualDomHorizontal","rightCol","vDomScrollPosRight","vDomPadLeft","clear","fitDataCheck","vdomHoz","reinitChanged","columnsByIndex","change","colEnd","layoutRefresh","reinitializeRow","removeColRight","getCell","paddingLeft","widthDiff","newWidth","ColumnManager","blockHozScrollEvent","renderClass","renderers","headersElement","nextToColumn","before","parentIndex","nextEl","_verticalAlignHeaders","toIndex","updateRows","fromIndex","adjust","reinitializeWidth","BaiscVertical","VirtualDomVertical","vDomRowHeight","vDomTop","vDomScrollPosBottom","vDomBottomPad","paddingBottom","_addBottomRow","bottomDiff","topPad","heightOccupied","vDomWindowBuffer","fillableSpace","getHeight","vDomScrollPosTop","removableRows","vDomBottom","RowManager","tableElement","heightFixer","createTableElement","firstRender","renderMode","displayRows","displayRowsCount","rowNumColumn","initializeRenderer","activeIndex","displayRowIterator","regenerateRowNumbers","blockRedraw","_clearPlaceholder","setActiveRows","moveRowActual","findRowIndex","skipStage","stage","dataPipeline","reRenderInPosition","basic","fixedHeight","renderEmptyScroll","_showPlaceholder","placeholder","otherHeight","redrawBlock","redrawBlockRestoreConfig","renderTable","links","InteractionManager","tabulator-col","listener","comp","components","changed","findTargets","triggerEvents","targets","previousTargets","funcName","msgElement","dataLoaderLoading","template","loadingElement","requestOrder","errorElement","subscriptionNotifiers","debug","args","events","_notifiySubscriptionChange","confirmed","notifiers","_confirm","TableRegistry","results","lastCol","flexGrowUnits","remainingSpace","changeUnits","calcShrink","remainingFlexGrowUnits","shrinkCols","oversizeCols","oversizeSpace","freeSpace","fixedWidth","fixedShrinkColumns","flexColWidth","flexColumns","Layout","Localize","lang","_setLangProp","langList","desiredLocale","locale","trans","root","rootPath","loading","page_size","first","first_title","last","Comms","con","coreModules","tabulator","registerModule","modulesCore","Tabulator","footerManager","interactionMonitor","browserSlow","ComponentFuctionBinder","bindModules","_clearObjectPointers","debugEventsInternal","rtlCheck","extensions","accept","onload","parse","responses","findRow","foundRows","addRows","findColumn","plugin","debugEventsExternal","debugInvalidOptions","columnMaxWidth","columnDefaults","autoColumns","addRowPos","headerVisible","renderHorizontal","renderVerticalBuffer","scrollToRowPosition","scrollToColumnIfVisible","rowFormatterClipboard","ModuleBinder"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f37476447..ae25bc8fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "tabulator-tables", - "version": "5.0.0", + "version": "5.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index f7b8ce15f..cb440ae53 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tabulator-tables", - "version": "5.0.0", + "version": "5.0.1", "description": "Interactive table generation JavaScript library", "style": "dist/css/tabulator.css", "main": "dist/js/tabulator.js",