From 515bdf85bf797ccbcce64a3fb2f963be0316e40e Mon Sep 17 00:00:00 2001 From: Oli Folkerd Date: Sun, 24 Oct 2021 16:47:28 +0100 Subject: [PATCH] update version to 5.0.5 --- bower.json | 2 +- build/rollup.js | 2 +- dist/css/tabulator_bootstrap3.min.css | 2 +- dist/css/tabulator_bootstrap3.min.css.map | 2 +- dist/css/tabulator_bulma.min.css | 2 +- dist/css/tabulator_bulma.min.css.map | 2 +- dist/css/tabulator_semanticui.min.css | 2 +- dist/css/tabulator_semanticui.min.css.map | 2 +- dist/js/tabulator.js | 292 +++++++++++++--------- dist/js/tabulator.js.map | 2 +- dist/js/tabulator.min.js | 4 +- dist/js/tabulator.min.js.map | 2 +- dist/js/tabulator_esm.js | 2 +- dist/js/tabulator_esm.min.js | 4 +- dist/js/tabulator_esm.min.js.map | 2 +- package-lock.json | 2 +- package.json | 2 +- 17 files changed, 198 insertions(+), 130 deletions(-) diff --git a/bower.json b/bower.json index 8cefbba77..bfe6ff402 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "tabulator", "main": "dist/js/tabulator.js", - "version": "5.0.4", + "version": "5.0.5", "description": "Interactive table generation JavaScript library", "keywords": [ "table", diff --git a/build/rollup.js b/build/rollup.js index f2202be02..ead4aa573 100644 --- a/build/rollup.js +++ b/build/rollup.js @@ -1,5 +1,5 @@ import Bundler from "./Bundler.js"; -var bundler = new Bundler("5.0.4", process.env.TARGET); +var bundler = new Bundler("5.0.5", process.env.TARGET); module.exports = bundler.bundle(); diff --git a/dist/css/tabulator_bootstrap3.min.css b/dist/css/tabulator_bootstrap3.min.css index 89dac69b1..c35f4e2dc 100644 --- a/dist/css/tabulator_bootstrap3.min.css +++ b/dist/css/tabulator_bootstrap3.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;border:1px solid #ddd;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translatez(0);-moz-transform:translatez(0);-ms-transform:translatez(0);-o-transform:translatez(0);transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #ddd;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #ddd;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ececec!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #ddd;background-color:#e6e6e6;text-align:right;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#f3f3f3!important;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #ddd;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #ddd;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#f9f9f9}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#f9f9f9}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator{background-color:#fff;margin-bottom:20px;border:none}.tabulator .tabulator-header{border-bottom:2px solid #ddd;background-color:#fff;color:inherit}.tabulator .tabulator-header .tabulator-col{background-color:#fff;border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:8px}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{width:100%;border-bottom:1px solid #ddd}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer{border-top:2px solid #ddd;background:inherit}.tabulator .tabulator-footer .tabulator-calcs-holder{border-bottom:1px solid #ddd;border-top:1px solid #ddd}.tabulator .tabulator-footer .tabulator-paginator{color:inherit}.tabulator.table-striped .tabulator-row:nth-child(2n){background-color:#f9f9f9}.tabulator.table-bordered{border:1px solid #ddd}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #ddd}.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content{padding:5px}.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row{min-height:24px}.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:5px}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success{background:#dff0d8!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info{background:#d9edf7!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{background:#fcf8e3!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger{background:#f2dede!important}.tabulator-row{min-height:30px;border-bottom:1px solid #ddd}.tabulator-row.tabulator-row-even{background-color:transparent}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5!important}.tabulator-row .tabulator-cell{padding:8px;border-right:none}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-item,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border:none}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666}.tabulator-print-table .tabulator-data-tree-control{border:1px solid #333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333} +.tabulator{position:relative;border:1px solid #ddd;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translatez(0);-moz-transform:translatez(0);-ms-transform:translatez(0);-o-transform:translatez(0);transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #ddd;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #ddd;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ececec!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #ddd;background-color:#e6e6e6;text-align:right;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#f3f3f3!important;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #ddd;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #ddd;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#f9f9f9}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#f9f9f9}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px}.tabulator{background-color:#fff;margin-bottom:20px;border:none}.tabulator .tabulator-header{border-bottom:2px solid #ddd;background-color:#fff;color:inherit}.tabulator .tabulator-header .tabulator-col{background-color:#fff;border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:8px}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{width:100%;border-bottom:1px solid #ddd}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer{border-top:2px solid #ddd;background:inherit}.tabulator .tabulator-footer .tabulator-calcs-holder{border-bottom:1px solid #ddd;border-top:1px solid #ddd}.tabulator .tabulator-footer .tabulator-paginator{color:inherit}.tabulator.table-striped .tabulator-row:nth-child(2n){background-color:#f9f9f9}.tabulator.table-bordered{border:1px solid #ddd}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #ddd}.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content{padding:5px}.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row{min-height:24px}.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:5px}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success{background:#dff0d8!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info{background:#d9edf7!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{background:#fcf8e3!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger{background:#f2dede!important}.tabulator-row{min-height:30px;border-bottom:1px solid #ddd}.tabulator-row.tabulator-row-even{background-color:transparent}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5!important}.tabulator-row.tabulator-selected{background-color:#9abcea!important}.tabulator-row.tabulator-selected:hover{background-color:#769bcc!important;cursor:pointer}.tabulator-row .tabulator-cell{padding:8px;border-right:none}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-item,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border:none}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666}.tabulator-print-table .tabulator-data-tree-control{border:1px solid #333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333} /*# sourceMappingURL=tabulator_bootstrap3.min.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator_bootstrap3.min.css.map b/dist/css/tabulator_bootstrap3.min.css.map index 49c7d121c..9fadb45dd 100644 --- a/dist/css/tabulator_bootstrap3.min.css.map +++ b/dist/css/tabulator_bootstrap3.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["tabulator_bootstrap3.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap3.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #ddd;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translatez(0);\n -moz-transform: translatez(0);\n -ms-transform: translatez(0);\n -o-transform: translatez(0);\n transform: translatez(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #ddd;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #ddd;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: #e6e6e6; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n border-top: 1px solid #ddd;\n background-color: #e6e6e6;\n text-align: right;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -5px -10px 5px -10px;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; }\n .tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-menu {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n margin-bottom: 20px;\n border: none; }\n .tabulator .tabulator-header {\n border-bottom: 2px solid #ddd;\n background-color: #fff;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #fff;\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n border-top: 2px solid #ddd;\n background: inherit; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator.table-striped .tabulator-row:nth-child(even) {\n background-color: #f9f9f9; }\n .tabulator.table-bordered {\n border: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #ddd; }\n .tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 24px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success {\n background: #dff0d8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info {\n background: #d9edf7 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning {\n background: #fcf8e3 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger {\n background: #f2dede !important; }\n\n.tabulator-row {\n min-height: 30px;\n border-bottom: 1px solid #ddd; }\n .tabulator-row.tabulator-row-even {\n background-color: transparent; }\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; }\n .tabulator-row .tabulator-cell {\n padding: 8px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border: none; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n .tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n"]} \ No newline at end of file +{"version":3,"sources":["tabulator_bootstrap3.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap3.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #ddd;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translatez(0);\n -moz-transform: translatez(0);\n -ms-transform: translatez(0);\n -o-transform: translatez(0);\n transform: translatez(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #ddd;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #ddd;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: #e6e6e6; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n border-top: 1px solid #ddd;\n background-color: #e6e6e6;\n text-align: right;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -5px -10px 5px -10px;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; }\n .tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-menu {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n margin-bottom: 20px;\n border: none; }\n .tabulator .tabulator-header {\n border-bottom: 2px solid #ddd;\n background-color: #fff;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #fff;\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n border-top: 2px solid #ddd;\n background: inherit; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator.table-striped .tabulator-row:nth-child(even) {\n background-color: #f9f9f9; }\n .tabulator.table-bordered {\n border: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #ddd; }\n .tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 24px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success {\n background: #dff0d8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info {\n background: #d9edf7 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning {\n background: #fcf8e3 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger {\n background: #f2dede !important; }\n\n.tabulator-row {\n min-height: 30px;\n border-bottom: 1px solid #ddd; }\n .tabulator-row.tabulator-row-even {\n background-color: transparent; }\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; }\n .tabulator-row .tabulator-cell {\n padding: 8px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border: none; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n .tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n"]} \ No newline at end of file diff --git a/dist/css/tabulator_bulma.min.css b/dist/css/tabulator_bulma.min.css index 69b1c3974..fb37885f9 100644 --- a/dist/css/tabulator_bulma.min.css +++ b/dist/css/tabulator_bulma.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;border:1px solid #999;background-color:#fff;font-size:16px;text-align:left;overflow:hidden;-webkit-transform:translatez(0);-moz-transform:translatez(0);-ms-transform:translatez(0);-o-transform:translatez(0);transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:transparent;color:#363636;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background:transparent;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:transparent;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:transparent}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter{color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter{color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #363636;color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:rgba(13,13,13,0)!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:rgba(13,13,13,0)!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:transparent;white-space:nowrap;overflow:visible;color:#363636}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ededed!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:transparent;text-align:right;color:#363636;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:rgba(13,13,13,0)!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:rgba(13,13,13,0)!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#363636;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #dbdbdb;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;background-color:transparent}.tabulator-row.tabulator-row-even{background-color:#fafafa}.tabulator-row.tabulator-selectable:hover{background-color:#fafafa;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#00d1b2}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #363636;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#363636}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:transparent;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #363636;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #363636;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:transparent;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fafafa}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#aaa;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:transparent;border:1px solid #aaa;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#363636}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:transparent;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid rgba(0,0,0,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:transparent;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#363636;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:6px 4px 4px;color:#363636;font-weight:700}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{border-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #363636;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #363636;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #363636;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#363636}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator{border:none}.tabulator .tabulator-header{border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-header .tabulator-col{border-right:none}.tabulator .tabulator-header .tabulator-col.tabulator-moving{border:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:.5em .75em}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:0}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{border:1px solid #dbdbdb}.tabulator .tabulator-header .tabulator-calcs-holder{border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer{padding:.5em .75em;border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-5px -10px 10px;border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer .tabulator-page{margin:0 .1875em;padding:calc(.375em - 1px) .75em;border:1px solid #dbdbdb;font-size:16px}.tabulator .tabulator-footer .tabulator-page.active{border-color:#4a4a4a;color:#363636;font-weight:700}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;border-color:#b5b5b5;background:inherit;color:inherit}.tabulator.is-striped .tabulator-row:nth-child(2n){background-color:#fafafa}.tabulator.is-bordered{border:1px solid #dbdbdb}.tabulator.is-bordered .tabulator-header .tabulator-col,.tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dbdbdb}.tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content,.tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.25em .5em}.tabulator-row{min-height:22px}.tabulator-row.tabulator-row-even{background-color:inherit}.tabulator-row.tabulator-selected:hover{background-color:#009e86}.tabulator-row .tabulator-cell{padding:.5em .75em;border:solid #dbdbdb;border-width:0 0 1px}.tabulator-print-table .tabulator-print-table-group,.tabulator-row.tabulator-group{border-bottom:1px solid #999;border-right:none;border-top:1px solid #999;color:#363636}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box} +.tabulator{position:relative;border:1px solid #999;background-color:#fff;font-size:16px;text-align:left;overflow:hidden;-webkit-transform:translatez(0);-moz-transform:translatez(0);-ms-transform:translatez(0);-o-transform:translatez(0);transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:transparent;color:#363636;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background:transparent;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:transparent;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:transparent}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter{color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter{color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #363636;color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:rgba(13,13,13,0)!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:rgba(13,13,13,0)!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:transparent;white-space:nowrap;overflow:visible;color:#363636}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ededed!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:transparent;text-align:right;color:#363636;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:rgba(13,13,13,0)!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:rgba(13,13,13,0)!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#363636;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #dbdbdb;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;background-color:transparent}.tabulator-row.tabulator-row-even{background-color:#fafafa}.tabulator-row.tabulator-selectable:hover{background-color:#fafafa;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#00d1b2}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #363636;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#363636}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:transparent;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #363636;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #363636;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:transparent;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fafafa}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#aaa;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:transparent;border:1px solid #aaa;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#363636}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:transparent;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid rgba(0,0,0,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:transparent;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#363636;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:6px 4px 4px;color:#363636;font-weight:700}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{border-right:1px solid #aaa;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #363636;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #363636;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #363636;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#363636}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator{border:none}.tabulator .tabulator-header{border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-header .tabulator-col{border-right:none}.tabulator .tabulator-header .tabulator-col.tabulator-moving{border:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:.5em .75em}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:0}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{border:1px solid #dbdbdb}.tabulator .tabulator-header .tabulator-calcs-holder{border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer{padding:.5em .75em;border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-5px -10px 10px;border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer .tabulator-page{margin:0 .1875em;padding:calc(.375em - 1px) .75em;border:1px solid #dbdbdb;font-size:16px}.tabulator .tabulator-footer .tabulator-page.active{border-color:#4a4a4a;color:#363636;font-weight:700}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;border-color:#b5b5b5;background:inherit;color:inherit}.tabulator.is-striped .tabulator-row:nth-child(2n){background-color:#fafafa}.tabulator.is-bordered{border:1px solid #dbdbdb}.tabulator.is-bordered .tabulator-header .tabulator-col,.tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dbdbdb}.tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content,.tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.25em .5em}.tabulator-row{min-height:22px}.tabulator-row.tabulator-row-even{background-color:inherit}.tabulator-row.tabulator-selected{background-color:#00d1b2!important}.tabulator-row.tabulator-selected:hover{background-color:#009e86!important}.tabulator-row .tabulator-cell{padding:.5em .75em;border:solid #dbdbdb;border-width:0 0 1px}.tabulator-print-table .tabulator-print-table-group,.tabulator-row.tabulator-group{border-bottom:1px solid #999;border-right:none;border-top:1px solid #999;color:#363636}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box} /*# sourceMappingURL=tabulator_bulma.min.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator_bulma.min.css.map b/dist/css/tabulator_bulma.min.css.map index af419e6bd..8a4c8c9e5 100644 --- a/dist/css/tabulator_bulma.min.css.map +++ b/dist/css/tabulator_bulma.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["tabulator_bulma.scss"],"names":[],"mappings":"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","file":"tabulator_bulma.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: white;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translatez(0);\n -moz-transform: translatez(0);\n -ms-transform: translatez(0);\n -o-transform: translatez(0);\n transform: translatez(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n border-right: 1px solid #aaa;\n background: transparent;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: rgba(0, 0, 0, 0);\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0); }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #363636;\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n min-width: 600%;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: transparent;\n white-space: nowrap;\n overflow: visible;\n color: #363636; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ededed !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n border-top: 1px solid #999;\n background-color: transparent;\n text-align: right;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -5px -10px 5px -10px;\n text-align: left;\n background: rgba(13, 13, 13, 0) !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: #363636;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; }\n .tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: transparent; }\n .tabulator-row.tabulator-row-even {\n background-color: #fafafa; }\n .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-menu {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: transparent;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fafafa; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: transparent;\n border: 1px solid #aaa;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #363636; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #363636;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #363636;\n font-weight: bold; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n\n.tabulator {\n border: none; }\n .tabulator .tabulator-header {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n border: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.75em; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n border: 1px solid #dbdbdb; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -5px -10px 10px -10px;\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0 0.1875em;\n padding: calc(0.375em - 1px) 0.75em;\n border: 1px solid #dbdbdb;\n font-size: 16px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #4a4a4a;\n color: #363636;\n font-weight: bold; }\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n border-color: #b5b5b5;\n background: inherit;\n color: inherit; }\n .tabulator.is-striped .tabulator-row:nth-child(even) {\n background-color: #fafafa; }\n .tabulator.is-bordered {\n border: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.25em 0.5em; }\n .tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.25em 0.5em; }\n\n.tabulator-row {\n min-height: 22px; }\n .tabulator-row.tabulator-row-even {\n background-color: inherit; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #009e86; }\n .tabulator-row .tabulator-cell {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px; }\n .tabulator-row.tabulator-group {\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n"]} \ No newline at end of file +{"version":3,"sources":["tabulator_bulma.scss"],"names":[],"mappings":"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","file":"tabulator_bulma.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: white;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translatez(0);\n -moz-transform: translatez(0);\n -ms-transform: translatez(0);\n -o-transform: translatez(0);\n transform: translatez(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n border-right: 1px solid #aaa;\n background: transparent;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: rgba(0, 0, 0, 0);\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0); }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #363636;\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n min-width: 600%;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: transparent;\n white-space: nowrap;\n overflow: visible;\n color: #363636; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ededed !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n border-top: 1px solid #999;\n background-color: transparent;\n text-align: right;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -5px -10px 5px -10px;\n text-align: left;\n background: rgba(13, 13, 13, 0) !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: #363636;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; }\n .tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: transparent; }\n .tabulator-row.tabulator-row-even {\n background-color: #fafafa; }\n .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-menu {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: transparent;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fafafa; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: transparent;\n border: 1px solid #aaa;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #363636; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #363636;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #363636;\n font-weight: bold; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n\n.tabulator {\n border: none; }\n .tabulator .tabulator-header {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n border: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.75em; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n border: 1px solid #dbdbdb; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -5px -10px 10px -10px;\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0 0.1875em;\n padding: calc(0.375em - 1px) 0.75em;\n border: 1px solid #dbdbdb;\n font-size: 16px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #4a4a4a;\n color: #363636;\n font-weight: bold; }\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n border-color: #b5b5b5;\n background: inherit;\n color: inherit; }\n .tabulator.is-striped .tabulator-row:nth-child(even) {\n background-color: #fafafa; }\n .tabulator.is-bordered {\n border: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.25em 0.5em; }\n .tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.25em 0.5em; }\n\n.tabulator-row {\n min-height: 22px; }\n .tabulator-row.tabulator-row-even {\n background-color: inherit; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2 !important; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #009e86 !important; }\n .tabulator-row .tabulator-cell {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px; }\n .tabulator-row.tabulator-group {\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n"]} \ No newline at end of file diff --git a/dist/css/tabulator_semanticui.min.css b/dist/css/tabulator_semanticui.min.css index 738628498..ad3e5234f 100644 --- a/dist/css/tabulator_semanticui.min.css +++ b/dist/css/tabulator_semanticui.min.css @@ -1,2 +1,2 @@ -.tabulator{position:relative;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translatez(0);-moz-transform:translatez(0);-ms-transform:translatez(0);-o-transform:translatez(0);transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #ddd;background:#f9fafb;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#dae1e7;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#dae1e7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#e2e2e2!important}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #db2828}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#db2828}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{width:100%;margin:1em 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571rem;color:rgba(0,0,0,.87)}.tabulator .tabulator-header{border-bottom:1px solid rgba(34,36,38,.1);box-shadow:none;color:rgba(0,0,0,.87);font-style:none;font-weight:700;text-transform:none}.tabulator .tabulator-header,.tabulator .tabulator-header .tabulator-col{border-right:none;background-color:#f9fafb}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:.92857em .78571em}.tabulator .tabulator-tableholder .tabulator-table{background-color:transparent}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{padding:.78571em;border-top:1px solid rgba(34,36,38,.15);box-shadow:none;background:#f9fafb;text-align:right;color:rgba(0,0,0,.87);font-style:normal;font-weight:400;text-transform:none}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-.78571em -.78571em .78571em;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-.78571em;border-bottom:none}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive{box-shadow:inset 0 0 0 #a3c293;background:#fcfff5!important;color:#21ba45!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover{background:#f7ffe6!important;color:#13ae38!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover{background:#ffe7e7!important;color:#d41616!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover{background:#ffe7e7!important;color:#d12323!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{box-shadow:inset 0 0 0 #c9ba9b;background:#fffaf3!important;color:#f2c037!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover{background:#fff4e4!important;color:#f1bb29!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover{background:#f7ffe6!important;color:#13ae38!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{pointer-events:none;color:rgba(0,0,0,.2)}.tabulator.inverted{background:#333;color:hsla(0,0%,100%,.9);border:none}.tabulator.inverted .tabulator-header{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.9)}.tabulator.inverted .tabulator-header,.tabulator.inverted .tabulator-header .tabulator-col{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row{color:hsla(0,0%,100%,.9);border:none}.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-footer{background:#fff}.tabulator.striped .tabulator-tableholder .tabulator-table .tabulator-row:nth-child(2n){background-color:rgba(0,0,0,.05)!important}.tabulator.celled{border:1px solid rgba(34,36,38,.15)}.tabulator.celled .tabulator-header .tabulator-col,.tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid rgba(34,36,38,.1)}.tabulator[class*="single line"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:none}.tabulator.red{border-top:.2em solid #db2828}.tabulator.inverted.red{background-color:#db2828!important;color:#fff!important}.tabulator.orange{border-top:.2em solid #f2711c}.tabulator.inverted.orange{background-color:#f2711c!important;color:#fff!important}.tabulator.yellow{border-top:.2em solid #fbbd08}.tabulator.inverted.yellow{background-color:#fbbd08!important;color:#fff!important}.tabulator.olive{border-top:.2em solid #b5cc18}.tabulator.inverted.olive{background-color:#b5cc18!important;color:#fff!important}.tabulator.green{border-top:.2em solid #21ba45}.tabulator.inverted.green{background-color:#21ba45!important;color:#fff!important}.tabulator.teal{border-top:.2em solid #00b5ad}.tabulator.inverted.teal{background-color:#00b5ad!important;color:#fff!important}.tabulator.blue{border-top:.2em solid #2185d0}.tabulator.inverted.blue{background-color:#2185d0!important;color:#fff!important}.tabulator.violet{border-top:.2em solid #6435c9}.tabulator.inverted.violet{background-color:#6435c9!important;color:#fff!important}.tabulator.purple{border-top:.2em solid #a333c8}.tabulator.inverted.purple{background-color:#a333c8!important;color:#fff!important}.tabulator.pink{border-top:.2em solid #e03997}.tabulator.inverted.pink{background-color:#e03997!important;color:#fff!important}.tabulator.brown{border-top:.2em solid #a5673f}.tabulator.inverted.brown{background-color:#a5673f!important;color:#fff!important}.tabulator.grey{border-top:.2em solid #767676}.tabulator.inverted.grey{background-color:#767676!important;color:#fff!important}.tabulator.black{border-top:.2em solid #1b1c1d}.tabulator.inverted.black{background-color:#1b1c1d!important;color:#fff!important}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content{padding:1em}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:20px}.tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:1em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content{padding:1.5em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:26px}.tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:1.5em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content{padding:.5em .7em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:12px}.tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.5em .7em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content{padding:.4em .6em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:10px}.tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.4em .6em}.tabulator-row{border-bottom:1px solid rgba(34,36,38,.1)}.tabulator-row.tabulator-row-even{background-color:transparent}.tabulator-row.tabulator-selectable:hover{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.tabulator-row.tabulator-moving{pointer-events:none!important}.tabulator-row .tabulator-cell{padding:.78571em;border-right:none;vertical-align:middle}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{color:#fff}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-menu{background:#fff}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#f9fafb}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666} +.tabulator{position:relative;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translatez(0);-moz-transform:translatez(0);-ms-transform:translatez(0);-o-transform:translatez(0);transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #ddd;background:#f9fafb;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#dae1e7;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#dae1e7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#e2e2e2!important}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #db2828}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#db2828}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:"";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{width:100%;margin:1em 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571rem;color:rgba(0,0,0,.87)}.tabulator .tabulator-header{border-bottom:1px solid rgba(34,36,38,.1);box-shadow:none;color:rgba(0,0,0,.87);font-style:none;font-weight:700;text-transform:none}.tabulator .tabulator-header,.tabulator .tabulator-header .tabulator-col{border-right:none;background-color:#f9fafb}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:.92857em .78571em}.tabulator .tabulator-tableholder .tabulator-table{background-color:transparent}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{padding:.78571em;border-top:1px solid rgba(34,36,38,.15);box-shadow:none;background:#f9fafb;text-align:right;color:rgba(0,0,0,.87);font-style:normal;font-weight:400;text-transform:none}.tabulator .tabulator-footer .tabulator-calcs-holder{margin:-.78571em -.78571em .78571em;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-.78571em;border-bottom:none}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive{box-shadow:inset 0 0 0 #a3c293;background:#fcfff5!important;color:#21ba45!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover{background:#f7ffe6!important;color:#13ae38!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover{background:#ffe7e7!important;color:#d41616!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover{background:#ffe7e7!important;color:#d12323!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{box-shadow:inset 0 0 0 #c9ba9b;background:#fffaf3!important;color:#f2c037!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover{background:#fff4e4!important;color:#f1bb29!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover{background:#f7ffe6!important;color:#13ae38!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active{pointer-events:none;color:rgba(0,0,0,.2)}.tabulator.inverted{background:#333;color:hsla(0,0%,100%,.9);border:none}.tabulator.inverted .tabulator-header{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.9)}.tabulator.inverted .tabulator-header,.tabulator.inverted .tabulator-header .tabulator-col{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row{color:hsla(0,0%,100%,.9);border:none}.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-footer{background:#fff}.tabulator.striped .tabulator-row:nth-child(2n){background-color:rgba(0,0,0,.05)}.tabulator.celled{border:1px solid rgba(34,36,38,.15)}.tabulator.celled .tabulator-header .tabulator-col,.tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid rgba(34,36,38,.1)}.tabulator[class*="single line"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:none}.tabulator.red{border-top:.2em solid #db2828}.tabulator.inverted.red{background-color:#db2828!important;color:#fff!important}.tabulator.orange{border-top:.2em solid #f2711c}.tabulator.inverted.orange{background-color:#f2711c!important;color:#fff!important}.tabulator.yellow{border-top:.2em solid #fbbd08}.tabulator.inverted.yellow{background-color:#fbbd08!important;color:#fff!important}.tabulator.olive{border-top:.2em solid #b5cc18}.tabulator.inverted.olive{background-color:#b5cc18!important;color:#fff!important}.tabulator.green{border-top:.2em solid #21ba45}.tabulator.inverted.green{background-color:#21ba45!important;color:#fff!important}.tabulator.teal{border-top:.2em solid #00b5ad}.tabulator.inverted.teal{background-color:#00b5ad!important;color:#fff!important}.tabulator.blue{border-top:.2em solid #2185d0}.tabulator.inverted.blue{background-color:#2185d0!important;color:#fff!important}.tabulator.violet{border-top:.2em solid #6435c9}.tabulator.inverted.violet{background-color:#6435c9!important;color:#fff!important}.tabulator.purple{border-top:.2em solid #a333c8}.tabulator.inverted.purple{background-color:#a333c8!important;color:#fff!important}.tabulator.pink{border-top:.2em solid #e03997}.tabulator.inverted.pink{background-color:#e03997!important;color:#fff!important}.tabulator.brown{border-top:.2em solid #a5673f}.tabulator.inverted.brown{background-color:#a5673f!important;color:#fff!important}.tabulator.grey{border-top:.2em solid #767676}.tabulator.inverted.grey{background-color:#767676!important;color:#fff!important}.tabulator.black{border-top:.2em solid #1b1c1d}.tabulator.inverted.black{background-color:#1b1c1d!important;color:#fff!important}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content{padding:1em}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:20px}.tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:1em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content{padding:1.5em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:26px}.tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:1.5em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content{padding:.5em .7em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:12px}.tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.5em .7em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content{padding:.4em .6em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:10px}.tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.4em .6em}.tabulator-row{border-bottom:1px solid rgba(34,36,38,.1)}.tabulator-row.tabulator-row-even{background-color:transparent}.tabulator-row.tabulator-selectable:hover{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.tabulator-row.tabulator-selected{background-color:#9abcea!important}.tabulator-row.tabulator-selected:hover{background-color:#769bcc!important;cursor:pointer}.tabulator-row.tabulator-moving{pointer-events:none!important}.tabulator-row .tabulator-cell{padding:.78571em;border-right:none;vertical-align:middle}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{color:#fff}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-menu{background:#fff}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#f9fafb}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666} /*# sourceMappingURL=tabulator_semanticui.min.css.map */ \ No newline at end of file diff --git a/dist/css/tabulator_semanticui.min.css.map b/dist/css/tabulator_semanticui.min.css.map index 3d0a4dbae..5150de505 100644 --- a/dist/css/tabulator_semanticui.min.css.map +++ b/dist/css/tabulator_semanticui.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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","file":"tabulator_semanticui.min.css","sourcesContent":["/*******************************\r\n Site Settings\r\n*******************************/\n/*-------------------\r\n Fonts\r\n--------------------*/\n/*-------------------\r\n Base Sizes\r\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\r\n Exact Pixel Values\r\n--------------------*/\n/*\r\n These are used to specify exact pixel values in em\r\n for things like borders that remain constantly\r\n sized as emSize adjusts\r\n\r\n Since there are many more sizes than names for sizes,\r\n these are named by their original pixel values.\r\n\r\n*/\n/*-------------------\r\n Border Radius\r\n--------------------*/\n/* See Power-user section below\r\n for explanation of $px variables\r\n*/\n/*-------------------\r\n Site Colors\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\r\n Alpha Colors\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*--------------\r\n Page Heading\r\n---------------*/\n/*-------------------\r\n Page\r\n--------------------*/\n/*--------------\r\n Form Input\r\n---------------*/\n/* This adjusts the default form input across all elements */\n/* Input Text Color */\n/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */\n/*-------------------\r\n Focused Input\r\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\r\n Sizes\r\n--------------------*/\n/*\r\n Sizes are all expressed in terms of 14px/em (default em)\r\n This ensures these \"ratios\" remain constant despite changes in EM\r\n*/\n/*-------------------\r\n Paragraph\r\n--------------------*/\n/*-------------------\r\n Links\r\n--------------------*/\n/*-------------------\r\n Highlighted Text\r\n--------------------*/\n/*-------------------\r\n Em Sizes\r\n--------------------*/\n/*\r\n This rounds $size values to the closest pixel then expresses that value in (r)em.\r\n This ensures all size values round to exact pixels\r\n*/\n/* em */\n/* rem */\n/*-------------------\r\n Loader\r\n--------------------*/\n/*-------------------\r\n Grid\r\n--------------------*/\n/*-------------------\r\n Transitions\r\n--------------------*/\n/*-------------------\r\n Breakpoints\r\n--------------------*/\n/* Columns */\n/*******************************\r\n Power-User\r\n*******************************/\n/*-------------------\r\n Emotive Colors\r\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\r\n Paths\r\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\r\n Icons\r\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\r\n Neutral Text\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*-------------------\r\n Borders\r\n--------------------*/\n/*-------------------\r\n Accents\r\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\r\n Derived Values\r\n--------------------*/\n/* Loaders Position Offset */\n/* Rendered Scrollbar Width */\n/* Maximum Single Character Glyph Width, aka Capital \"W\" */\n/* Used to match floats with text */\n/* Header Spacing */\n/* Minimum Mobile Width */\n/* Positive / Negative Dupes */\n/* Responsive */\n/*******************************\r\n States\r\n*******************************/\n/*-------------------\r\n Disabled\r\n--------------------*/\n/*-------------------\r\n Hover\r\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Focus\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Down (:active)\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Active\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\r\n Table\r\n*******************************/\n/*-------------------\r\n Element\r\n--------------------*/\n/*--------------\r\n Parts\r\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\r\n Types\r\n--------------------*/\n/* Definition */\n/*--------------\r\n Couplings\r\n---------------*/\n/*--------------\r\n States\r\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\r\n Types\r\n---------------*/\n/* Attached */\n/* Striped */\n/* Selectable */\n/* Sortable */\n/* Colors */\n/* Inverted */\n/* Basic */\n/* Padded */\n/* Compact */\n/* Sizes */\n.tabulator {\n position: relative;\n border: 1px solid rgba(34, 36, 38, 0.15);\n background-color: #FFFFFF;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translatez(0);\n -moz-transform: translatez(0);\n -ms-transform: translatez(0);\n -o-transform: translatez(0);\n transform: translatez(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #F9FAFB;\n color: rgba(0, 0, 0, 0.87);\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n border-right: 1px solid #ddd;\n background: #F9FAFB;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #dae1e7;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: #dae1e7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n border-top: 1px solid #999;\n background-color: #fff;\n text-align: right;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -5px -10px 5px -10px;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; }\n .tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #DB2828; }\n .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-menu {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n width: 100%;\n margin: 1em 0em;\n border: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n border-radius: 0.28571rem;\n color: rgba(0, 0, 0, 0.87);\n /* Red */\n /* Orange */\n /* Yellow */\n /* Olive */\n /* Green */\n /* Teal */\n /* Blue */\n /* Violet */\n /* Purple */\n /* Pink */\n /* Brown */\n /* Grey */\n /* Black */ }\n .tabulator .tabulator-header {\n border-right: none;\n border-bottom: 1px solid rgba(34, 36, 38, 0.1);\n background-color: #F9FAFB;\n box-shadow: none;\n color: rgba(0, 0, 0, 0.87);\n font-style: none;\n font-weight: bold;\n text-transform: none; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #F9FAFB; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.92857em 0.78571em; }\n .tabulator .tabulator-tableholder .tabulator-table {\n background-color: transparent; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 0.78571em 0.78571em;\n border-top: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n background: #F9FAFB;\n text-align: right;\n color: rgba(0, 0, 0, 0.87);\n font-style: normal;\n font-weight: normal;\n text-transform: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -0.78571em -0.78571em 0.78571em -0.78571em;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -0.78571em;\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive {\n box-shadow: 0px 0px 0px #A3C293 inset;\n background: #FCFFF5 !important;\n color: #21BA45 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover {\n background: #ffe7e7 !important;\n color: #d41616 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover {\n background: #ffe7e7 !important;\n color: #d12323 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning {\n box-shadow: 0px 0px 0px #C9BA9B inset;\n background: #FFFAF3 !important;\n color: #F2C037 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover {\n background: #fff4e4 !important;\n color: #f1bb29 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); }\n .tabulator.inverted {\n background: #333333;\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-header {\n background-color: rgba(0, 0, 0, 0.15);\n border-color: rgba(255, 255, 255, 0.1) !important;\n color: rgba(255, 255, 255, 0.9); }\n .tabulator.inverted .tabulator-header .tabulator-col {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row {\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-footer {\n background: #FFFFFF; }\n .tabulator.striped .tabulator-tableholder .tabulator-table .tabulator-row:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.05) !important; }\n .tabulator.celled {\n border: 1px solid rgba(34, 36, 38, 0.15); }\n .tabulator.celled .tabulator-header .tabulator-col {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator[class*=\"single line\"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: none; }\n .tabulator.red {\n border-top: 0.2em solid #DB2828; }\n .tabulator.inverted.red {\n background-color: #DB2828 !important;\n color: #FFFFFF !important; }\n .tabulator.orange {\n border-top: 0.2em solid #F2711C; }\n .tabulator.inverted.orange {\n background-color: #F2711C !important;\n color: #FFFFFF !important; }\n .tabulator.yellow {\n border-top: 0.2em solid #FBBD08; }\n .tabulator.inverted.yellow {\n background-color: #FBBD08 !important;\n color: #FFFFFF !important; }\n .tabulator.olive {\n border-top: 0.2em solid #B5CC18; }\n .tabulator.inverted.olive {\n background-color: #B5CC18 !important;\n color: #FFFFFF !important; }\n .tabulator.green {\n border-top: 0.2em solid #21BA45; }\n .tabulator.inverted.green {\n background-color: #21BA45 !important;\n color: #FFFFFF !important; }\n .tabulator.teal {\n border-top: 0.2em solid #00B5AD; }\n .tabulator.inverted.teal {\n background-color: #00B5AD !important;\n color: #FFFFFF !important; }\n .tabulator.blue {\n border-top: 0.2em solid #2185D0; }\n .tabulator.inverted.blue {\n background-color: #2185D0 !important;\n color: #FFFFFF !important; }\n .tabulator.violet {\n border-top: 0.2em solid #6435C9; }\n .tabulator.inverted.violet {\n background-color: #6435C9 !important;\n color: #FFFFFF !important; }\n .tabulator.purple {\n border-top: 0.2em solid #A333C8; }\n .tabulator.inverted.purple {\n background-color: #A333C8 !important;\n color: #FFFFFF !important; }\n .tabulator.pink {\n border-top: 0.2em solid #E03997; }\n .tabulator.inverted.pink {\n background-color: #E03997 !important;\n color: #FFFFFF !important; }\n .tabulator.brown {\n border-top: 0.2em solid #A5673F; }\n .tabulator.inverted.brown {\n background-color: #A5673F !important;\n color: #FFFFFF !important; }\n .tabulator.grey {\n border-top: 0.2em solid #767676; }\n .tabulator.inverted.grey {\n background-color: #767676 !important;\n color: #FFFFFF !important; }\n .tabulator.black {\n border-top: 0.2em solid #1B1C1D; }\n .tabulator.inverted.black {\n background-color: #1B1C1D !important;\n color: #FFFFFF !important; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1em 1em; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 20px; }\n .tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1em 1em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1.5em 1.5em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 26px; }\n .tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1.5em 1.5em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.7em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 12px; }\n .tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.5em 0.7em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.4em 0.6em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 10px; }\n .tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.4em 0.6em; }\n\n.tabulator-row {\n border-bottom: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator-row.tabulator-row-even {\n background-color: transparent; }\n .tabulator-row.tabulator-selectable:hover {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 0.78571em 0.78571em;\n border-right: none;\n vertical-align: middle; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n color: #fff; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-menu {\n background: #FFFFFF; }\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n background: #F9FAFB; }\n\n.tabulator-edit-select-list {\n background: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n"]} \ No newline at end of file +{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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","file":"tabulator_semanticui.min.css","sourcesContent":["/*******************************\r\n Site Settings\r\n*******************************/\n/*-------------------\r\n Fonts\r\n--------------------*/\n/*-------------------\r\n Base Sizes\r\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\r\n Exact Pixel Values\r\n--------------------*/\n/*\r\n These are used to specify exact pixel values in em\r\n for things like borders that remain constantly\r\n sized as emSize adjusts\r\n\r\n Since there are many more sizes than names for sizes,\r\n these are named by their original pixel values.\r\n\r\n*/\n/*-------------------\r\n Border Radius\r\n--------------------*/\n/* See Power-user section below\r\n for explanation of $px variables\r\n*/\n/*-------------------\r\n Site Colors\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\r\n Alpha Colors\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*--------------\r\n Page Heading\r\n---------------*/\n/*-------------------\r\n Page\r\n--------------------*/\n/*--------------\r\n Form Input\r\n---------------*/\n/* This adjusts the default form input across all elements */\n/* Input Text Color */\n/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */\n/*-------------------\r\n Focused Input\r\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\r\n Sizes\r\n--------------------*/\n/*\r\n Sizes are all expressed in terms of 14px/em (default em)\r\n This ensures these \"ratios\" remain constant despite changes in EM\r\n*/\n/*-------------------\r\n Paragraph\r\n--------------------*/\n/*-------------------\r\n Links\r\n--------------------*/\n/*-------------------\r\n Highlighted Text\r\n--------------------*/\n/*-------------------\r\n Em Sizes\r\n--------------------*/\n/*\r\n This rounds $size values to the closest pixel then expresses that value in (r)em.\r\n This ensures all size values round to exact pixels\r\n*/\n/* em */\n/* rem */\n/*-------------------\r\n Loader\r\n--------------------*/\n/*-------------------\r\n Grid\r\n--------------------*/\n/*-------------------\r\n Transitions\r\n--------------------*/\n/*-------------------\r\n Breakpoints\r\n--------------------*/\n/* Columns */\n/*******************************\r\n Power-User\r\n*******************************/\n/*-------------------\r\n Emotive Colors\r\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\r\n Paths\r\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\r\n Icons\r\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\r\n Neutral Text\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*-------------------\r\n Borders\r\n--------------------*/\n/*-------------------\r\n Accents\r\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\r\n Derived Values\r\n--------------------*/\n/* Loaders Position Offset */\n/* Rendered Scrollbar Width */\n/* Maximum Single Character Glyph Width, aka Capital \"W\" */\n/* Used to match floats with text */\n/* Header Spacing */\n/* Minimum Mobile Width */\n/* Positive / Negative Dupes */\n/* Responsive */\n/*******************************\r\n States\r\n*******************************/\n/*-------------------\r\n Disabled\r\n--------------------*/\n/*-------------------\r\n Hover\r\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Focus\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Down (:active)\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Active\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\r\n Table\r\n*******************************/\n/*-------------------\r\n Element\r\n--------------------*/\n/*--------------\r\n Parts\r\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\r\n Types\r\n--------------------*/\n/* Definition */\n/*--------------\r\n Couplings\r\n---------------*/\n/*--------------\r\n States\r\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\r\n Types\r\n---------------*/\n/* Attached */\n/* Striped */\n/* Selectable */\n/* Sortable */\n/* Colors */\n/* Inverted */\n/* Basic */\n/* Padded */\n/* Compact */\n/* Sizes */\n.tabulator {\n position: relative;\n border: 1px solid rgba(34, 36, 38, 0.15);\n background-color: #FFFFFF;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translatez(0);\n -moz-transform: translatez(0);\n -ms-transform: translatez(0);\n -o-transform: translatez(0);\n transform: translatez(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #F9FAFB;\n color: rgba(0, 0, 0, 0.87);\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n border-right: 1px solid #ddd;\n background: #F9FAFB;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #dae1e7;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: #dae1e7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n min-width: 600%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%;\n min-width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n border-top: 1px solid #999;\n background-color: #fff;\n text-align: right;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -5px -10px 5px -10px;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; }\n .tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px; }\n .tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto; }\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; }\n .tabulator .tabulator-loader {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; }\n .tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #DB2828; }\n .tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-menu {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n .tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle {\n position: absolute;\n left: 0;\n right: auto; }\n .tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {\n right: 0;\n left: auto; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n width: 100%;\n margin: 1em 0em;\n border: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n border-radius: 0.28571rem;\n color: rgba(0, 0, 0, 0.87);\n /* Red */\n /* Orange */\n /* Yellow */\n /* Olive */\n /* Green */\n /* Teal */\n /* Blue */\n /* Violet */\n /* Purple */\n /* Pink */\n /* Brown */\n /* Grey */\n /* Black */ }\n .tabulator .tabulator-header {\n border-right: none;\n border-bottom: 1px solid rgba(34, 36, 38, 0.1);\n background-color: #F9FAFB;\n box-shadow: none;\n color: rgba(0, 0, 0, 0.87);\n font-style: none;\n font-weight: bold;\n text-transform: none; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #F9FAFB; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.92857em 0.78571em; }\n .tabulator .tabulator-tableholder .tabulator-table {\n background-color: transparent; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 0.78571em 0.78571em;\n border-top: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n background: #F9FAFB;\n text-align: right;\n color: rgba(0, 0, 0, 0.87);\n font-style: normal;\n font-weight: normal;\n text-transform: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -0.78571em -0.78571em 0.78571em -0.78571em;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -0.78571em;\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive {\n box-shadow: 0px 0px 0px #A3C293 inset;\n background: #FCFFF5 !important;\n color: #21BA45 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover {\n background: #ffe7e7 !important;\n color: #d41616 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover {\n background: #ffe7e7 !important;\n color: #d12323 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning {\n box-shadow: 0px 0px 0px #C9BA9B inset;\n background: #FFFAF3 !important;\n color: #F2C037 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover {\n background: #fff4e4 !important;\n color: #f1bb29 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); }\n .tabulator.inverted {\n background: #333333;\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-header {\n background-color: rgba(0, 0, 0, 0.15);\n border-color: rgba(255, 255, 255, 0.1) !important;\n color: rgba(255, 255, 255, 0.9); }\n .tabulator.inverted .tabulator-header .tabulator-col {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row {\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-footer {\n background: #FFFFFF; }\n .tabulator.striped .tabulator-row:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.05); }\n .tabulator.celled {\n border: 1px solid rgba(34, 36, 38, 0.15); }\n .tabulator.celled .tabulator-header .tabulator-col {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator[class*=\"single line\"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: none; }\n .tabulator.red {\n border-top: 0.2em solid #DB2828; }\n .tabulator.inverted.red {\n background-color: #DB2828 !important;\n color: #FFFFFF !important; }\n .tabulator.orange {\n border-top: 0.2em solid #F2711C; }\n .tabulator.inverted.orange {\n background-color: #F2711C !important;\n color: #FFFFFF !important; }\n .tabulator.yellow {\n border-top: 0.2em solid #FBBD08; }\n .tabulator.inverted.yellow {\n background-color: #FBBD08 !important;\n color: #FFFFFF !important; }\n .tabulator.olive {\n border-top: 0.2em solid #B5CC18; }\n .tabulator.inverted.olive {\n background-color: #B5CC18 !important;\n color: #FFFFFF !important; }\n .tabulator.green {\n border-top: 0.2em solid #21BA45; }\n .tabulator.inverted.green {\n background-color: #21BA45 !important;\n color: #FFFFFF !important; }\n .tabulator.teal {\n border-top: 0.2em solid #00B5AD; }\n .tabulator.inverted.teal {\n background-color: #00B5AD !important;\n color: #FFFFFF !important; }\n .tabulator.blue {\n border-top: 0.2em solid #2185D0; }\n .tabulator.inverted.blue {\n background-color: #2185D0 !important;\n color: #FFFFFF !important; }\n .tabulator.violet {\n border-top: 0.2em solid #6435C9; }\n .tabulator.inverted.violet {\n background-color: #6435C9 !important;\n color: #FFFFFF !important; }\n .tabulator.purple {\n border-top: 0.2em solid #A333C8; }\n .tabulator.inverted.purple {\n background-color: #A333C8 !important;\n color: #FFFFFF !important; }\n .tabulator.pink {\n border-top: 0.2em solid #E03997; }\n .tabulator.inverted.pink {\n background-color: #E03997 !important;\n color: #FFFFFF !important; }\n .tabulator.brown {\n border-top: 0.2em solid #A5673F; }\n .tabulator.inverted.brown {\n background-color: #A5673F !important;\n color: #FFFFFF !important; }\n .tabulator.grey {\n border-top: 0.2em solid #767676; }\n .tabulator.inverted.grey {\n background-color: #767676 !important;\n color: #FFFFFF !important; }\n .tabulator.black {\n border-top: 0.2em solid #1B1C1D; }\n .tabulator.inverted.black {\n background-color: #1B1C1D !important;\n color: #FFFFFF !important; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1em 1em; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 20px; }\n .tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1em 1em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1.5em 1.5em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 26px; }\n .tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1.5em 1.5em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.7em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 12px; }\n .tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.5em 0.7em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.4em 0.6em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 10px; }\n .tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.4em 0.6em; }\n\n.tabulator-row {\n border-bottom: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator-row.tabulator-row-even {\n background-color: transparent; }\n .tabulator-row.tabulator-selectable:hover {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 0.78571em 0.78571em;\n border-right: none;\n vertical-align: middle; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n color: #fff; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-menu {\n background: #FFFFFF; }\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n background: #F9FAFB; }\n\n.tabulator-edit-select-list {\n background: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n"]} \ No newline at end of file diff --git a/dist/js/tabulator.js b/dist/js/tabulator.js index 720a2f731..6d0d9e0df 100644 --- a/dist/js/tabulator.js +++ b/dist/js/tabulator.js @@ -1,4 +1,4 @@ -/* Tabulator v5.0.4 (c) Oliver Folkerd 2021 */ +/* Tabulator v5.0.5 (c) Oliver Folkerd 2021 */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -1786,8 +1786,7 @@ this.reinitializeWidth(); } - this.table.columnManager._verticalAlignHeaders(); - + this.table.columnManager.verticalAlignHeaders(); this.dispatch("column-show", this, responsiveToggle); if (!silent) { @@ -1810,8 +1809,7 @@ if (this.visible) { this.visible = false; this.element.style.display = "none"; - - this.table.columnManager._verticalAlignHeaders(); + this.table.columnManager.verticalAlignHeaders(); if (this.parent.isGroup) { this.parent.checkColumnVisibility(); @@ -2144,7 +2142,7 @@ Column$1.defaultOptionList = defaultOptions$1; - var Helpers$1 = /*#__PURE__*/function () { + var Helpers = /*#__PURE__*/function () { function Helpers() { _classCallCheck(this, Helpers); } @@ -2414,8 +2412,8 @@ if (!ifVisible) { - if (Helpers$1.elVisible(rowEl)) { - offset = Helpers$1.elOffset(rowEl).top - Helpers$1.elOffset(_this2.elementVertical).top; + if (Helpers.elVisible(rowEl)) { + offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(_this2.elementVertical).top; if (offset > 0 && offset < _this2.elementVertical.clientHeight - rowEl.offsetHeight) { return false; @@ -3032,6 +3030,7 @@ value: function createHeadersElement() { var el = document.createElement("div"); el.classList.add("tabulator-headers"); + el.setAttribute("role", "row"); return el; } }, { @@ -3039,6 +3038,7 @@ value: function createHeaderElement() { var el = document.createElement("div"); el.classList.add("tabulator-header"); + el.setAttribute("role", "rowgroup"); if (!this.table.options.headerVisible) { el.classList.add("tabulator-header-hidden"); @@ -3216,10 +3216,9 @@ this.columns.push(column); this.headersElement.appendChild(column.getElement()); } - - column.columnRendered(); } + column.columnRendered(); return column; } }, { @@ -3244,8 +3243,8 @@ } //ensure column headers take up the correct amount of space in column groups }, { - key: "_verticalAlignHeaders", - value: function _verticalAlignHeaders() { + key: "verticalAlignHeaders", + value: function verticalAlignHeaders() { var _this3 = this; var minHeight = 0; @@ -3401,8 +3400,7 @@ to.element.parentNode.insertBefore(to.element, from.element); } - this._verticalAlignHeaders(); - + this.verticalAlignHeaders(); this.table.rowManager.reinitialize(); } }, { @@ -3573,7 +3571,7 @@ column.reinitializeWidth(); } - _this6._verticalAlignHeaders(); + _this6.verticalAlignHeaders(); _this6.table.rowManager.reinitialize(); @@ -3607,19 +3605,18 @@ this.columns.splice(index, 1); } - this._verticalAlignHeaders(); - + this.verticalAlignHeaders(); this.redraw(); } //redraw columns }, { key: "redraw", value: function redraw(force) { - if (force) { - if (Helpers$1.elVisible(this.element)) { - this._verticalAlignHeaders(); - } + if (Helpers.elVisible(this.element)) { + this.verticalAlignHeaders(); + } + if (force) { this.table.rowManager.resetScroll(); this.table.rowManager.reinitialize(); } @@ -3993,7 +3990,7 @@ value: function updateData(updatedData) { var _this2 = this; - var visible = this.element && Helpers$1.elVisible(this.element), + var visible = this.element && Helpers.elVisible(this.element), tempData = {}, newRowData; return new Promise(function (resolve, reject) { @@ -4277,14 +4274,14 @@ }, { key: "scrollToRowNearestTop", value: function scrollToRowNearestTop(row) { - var rowTop = Helpers$1.elOffset(row.getElement()).top; + var rowTop = Helpers.elOffset(row.getElement()).top; return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop)); } }, { key: "scrollToRow", value: function scrollToRow(row) { var rowEl = row.getElement(); - this.elementVertical.scrollTop = Helpers$1.elOffset(rowEl).top - Helpers$1.elOffset(this.elementVertical).top + this.elementVertical.scrollTop; + this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop; } }, { key: "visibleRows", @@ -4564,7 +4561,7 @@ position -= topPad; } - if (rowsCount && Helpers$1.elVisible(this.elementVertical)) { + if (rowsCount && Helpers.elVisible(this.elementVertical)) { this.vDomTop = position; this.vDomBottom = position - 1; @@ -4960,6 +4957,7 @@ var el = document.createElement("div"); el.classList.add("tabulator-tableholder"); el.setAttribute("tabindex", 0); + el.setAttribute("role", "rowgroup"); return el; } }, { @@ -4967,6 +4965,7 @@ value: function createTableElement() { var el = document.createElement("div"); el.classList.add("tabulator-table"); + el.setAttribute("role", "rowgroup"); return el; } //return containing element @@ -5226,7 +5225,7 @@ _this6.dispatch("row-added", row, data, pos, index); }); - _this6.reRenderInPosition(); + _this6.refreshActiveData(false, false, true); _this6.regenerateRowNumbers(); @@ -5606,7 +5605,7 @@ } - if (Helpers$1.elVisible(this.element)) { + if (Helpers.elVisible(this.element)) { if (renderInPosition) { this.reRenderInPosition(); } else { @@ -5781,9 +5780,9 @@ this.dispatchExternal("renderStarted"); this.element.scrollTop = 0; - if (this.displayRowsCount) { - this._clearTable(); + this._clearTable(); + if (this.displayRowsCount) { this.renderer.renderRows(); if (this.firstRender) { @@ -7418,7 +7417,7 @@ _createClass(Localize, [{ key: "initialize", value: function initialize() { - this.langList = Helpers$1.deepClone(Localize.langs); + this.langList = Helpers.deepClone(Localize.langs); if (this.table.options.columnDefaults.headerFilterPlaceholder !== false) { this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder); @@ -7513,7 +7512,7 @@ this.locale = desiredLocale; //load default lang template - this.lang = Helpers$1.deepClone(this.langList["default"] || {}); + this.lang = Helpers.deepClone(this.langList["default"] || {}); if (desiredLocale != "default") { traverseLang(this.langList[desiredLocale], this.lang); @@ -7791,6 +7790,8 @@ this.rtl = false; //check if the table is in RTL mode + this.originalElement = null; //hold original table element if it has been replaced + this.componentFunctionBinder = new ComponentFuctionBinder(this); //bind component functions this.dataLoader = false; //bind component functions @@ -7856,29 +7857,6 @@ this.columnManager.initialize(); this.rowManager.initialize(); this.footerManager.initialize(); - } - }, { - key: "rtlCheck", - value: function rtlCheck() { - var style = window.getComputedStyle(this.element); - - switch (this.options.textDirection) { - case "auto": - if (style.direction !== "rtl") { - break; - } - - case "rtl": - this.element.classList.add("tabulator-rtl"); - this.rtl = true; - break; - - case "ltr": - this.element.classList.add("tabulator-ltr"); - - default: - this.rtl = false; - } } //convert depricated functionality to new functions }, { @@ -7911,14 +7889,40 @@ value: function _create() { this.externalEvents.dispatch("tableBuilding"); this.eventBus.dispatch("table-building"); - this.rtlCheck(); + + this._rtlCheck(); this._buildElement(); + this._initializeTable(); + this._loadInitialData(); this.initialized = true; this.externalEvents.dispatch("tableBuilt"); + } + }, { + key: "_rtlCheck", + value: function _rtlCheck() { + var style = window.getComputedStyle(this.element); + + switch (this.options.textDirection) { + case "auto": + if (style.direction !== "rtl") { + break; + } + + case "rtl": + this.element.classList.add("tabulator-rtl"); + this.rtl = true; + break; + + case "ltr": + this.element.classList.add("tabulator-ltr"); + + default: + this.rtl = false; + } } //clear pointers to objects in default config object }, { @@ -7935,7 +7939,26 @@ key: "_buildElement", value: function _buildElement() { var element = this.element, - options = this.options; + options = this.options, + newElement; + + if (element.tagName === "TABLE") { + this.originalElement = this.element; + newElement = document.createElement("div"); //transfer attributes to new element + + var attributes = element.attributes; // loop through attributes and apply them on div + + for (var i in attributes) { + if (_typeof(attributes[i]) == "object") { + newElement.setAttribute(attributes[i].name, attributes[i].value); + } + } // replace table with div element + + + element.parentNode.replaceChild(newElement, element); + this.element = element = newElement; + } + element.classList.add("tabulator"); element.setAttribute("role", "grid"); //empty element @@ -7960,7 +7983,13 @@ options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px"; element.style.maxHeight = options.maxHeight; } + } //initialize core systems and modules + }, { + key: "_initializeTable", + value: function _initializeTable() { + var element = this.element, + options = this.options; this.columnManager.initialize(); this.rowManager.initialize(); @@ -8728,7 +8757,7 @@ var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), rowComponent = row.getComponent(); //clone data object with deep copy to isolate internal data from returned result - var data = Helpers$1.deepClone(row.data || {}); + var data = Helpers.deepClone(row.data || {}); this.table.columnManager.traverse(function (column) { var value, accessor, params, colCompnent; @@ -8889,6 +8918,28 @@ }); } + function generateParamsList$1(data, prefix) { + var output = []; + prefix = prefix || ""; + + if (Array.isArray(data)) { + data.forEach(function (item, i) { + output = output.concat(generateParamsList$1(item, prefix ? prefix + "[" + i + "]" : i)); + }); + } else if (_typeof(data) === "object") { + for (var key in data) { + output = output.concat(generateParamsList$1(data[key], prefix ? prefix + "[" + key + "]" : key)); + } + } else { + output.push({ + key: prefix, + value: data + }); + } + + return output; + } + var defaultContentTypeFormatters = { "json": { headers: { @@ -8901,7 +8952,7 @@ "form": { headers: {}, body: function body(url, config, params) { - var output = this.generateParamsList(params), + var output = generateParamsList$1(params), form = new FormData(); output.forEach(function (item) { form.append(item.key, item.value); @@ -10747,7 +10798,7 @@ key: "checkForRestyle", value: function checkForRestyle(cell) { if (!cell.row.cells.indexOf(cell)) { - cell.row.reinitialize(); + this.layoutRow(cell.row); } } }, { @@ -12047,7 +12098,7 @@ parseItems(editorParams.values || [], initialDisplayValue); } - var offset = Helpers$1.elOffset(cellEl); + var offset = Helpers.elOffset(cellEl); listEl.style.minWidth = cellEl.offsetWidth + "px"; listEl.style.top = offset.top + cellEl.offsetHeight + "px"; listEl.style.left = offset.left + "px"; @@ -12503,7 +12554,7 @@ listEl.removeChild(listEl.firstChild); } - var offset = Helpers$1.elOffset(cellEl); + var offset = Helpers.elOffset(cellEl); listEl.style.minWidth = cellEl.offsetWidth + "px"; listEl.style.top = offset.top + cellEl.offsetHeight + "px"; listEl.style.left = offset.left + "px"; @@ -12810,9 +12861,11 @@ //draggable progress bar function progress (cell, onRendered, success, cancel, editorParams) { + var _element$getElementsB, _element$getElementsB2; + var element = cell.getElement(), - max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max, - min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min, + max = typeof editorParams.max === "undefined" ? ((_element$getElementsB = element.getElementsByTagName("div")[0]) === null || _element$getElementsB === void 0 ? void 0 : _element$getElementsB.getAttribute("max")) || 100 : editorParams.max, + min = typeof editorParams.min === "undefined" ? ((_element$getElementsB2 = element.getElementsByTagName("div")[0]) === null || _element$getElementsB2 === void 0 ? void 0 : _element$getElementsB2.getAttribute("min")) || 0 : editorParams.min, percent = (max - min) / 100, value = cell.getValue() || 0, handle = document.createElement("div"), @@ -13205,7 +13258,7 @@ nextCell = this.findNextEditableCell(prevRow, prevRow.cells.length); if (nextCell) { - nextCell.edit(); + nextCell.getComponent().edit(); return true; } } @@ -13237,7 +13290,7 @@ nextCell = this.findNextEditableCell(nextRow, -1); if (nextCell) { - nextCell.edit(); + nextCell.getComponent().edit(); return true; } } @@ -13262,7 +13315,7 @@ nextCell = this.findPrevEditableCell(cell.row, index); if (nextCell) { - nextCell.edit(); + nextCell.getComponent().edit(); return true; } } @@ -13285,7 +13338,7 @@ nextCell = this.findNextEditableCell(cell.row, index); if (nextCell) { - nextCell.edit(); + nextCell.getComponent().edit(); return true; } } @@ -13308,7 +13361,7 @@ nextRow = this.table.rowManager.prevDisplayRow(cell.row, true); if (nextRow) { - nextRow.cells[index].edit(); + nextRow.cells[index].getComponent().edit(); return true; } } @@ -13331,7 +13384,7 @@ nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); if (nextRow) { - nextRow.cells[index].edit(); + nextRow.cells[index].getComponent().edit(); return true; } } @@ -16414,29 +16467,52 @@ if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) { this.layoutRow(this.table.modules.columnCalcs.botRow); } + + if (this.table.modExists("groupRows")) { + this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()); + } } + } + }, { + key: "layoutGroupCalcs", + value: function layoutGroupCalcs(groups) { + var _this3 = this; + + groups.forEach(function (group) { + if (group.calcs.top) { + _this3.layoutRow(group.calcs.top); + } + + if (group.calcs.bottom) { + _this3.layoutRow(group.calcs.bottom); + } + + if (group.groupList && group.groupList.length) { + _this3.layoutGroupCalcs(group.groupList && group.groupList); + } + }); } //calculate column positions and layout headers }, { key: "layoutColumnPosition", value: function layoutColumnPosition(allCells) { - var _this3 = this; + var _this4 = this; var leftParents = []; this.leftColumns.forEach(function (column, i) { - column.modules.frozen.margin = _this3._calcSpace(_this3.leftColumns, i) + _this3.table.columnManager.scrollLeft + "px"; + column.modules.frozen.margin = _this4._calcSpace(_this4.leftColumns, i) + _this4.table.columnManager.scrollLeft + "px"; - if (i == _this3.leftColumns.length - 1) { + if (i == _this4.leftColumns.length - 1) { column.modules.frozen.edge = true; } else { column.modules.frozen.edge = false; } if (column.parent.isGroup) { - var parentEl = _this3.getColGroupParentElement(column); + var parentEl = _this4.getColGroupParentElement(column); if (!leftParents.includes(parentEl)) { - _this3.layoutElement(parentEl, column); + _this4.layoutElement(parentEl, column); leftParents.push(parentEl); } @@ -16445,33 +16521,33 @@ parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position); } } else { - _this3.layoutElement(column.getElement(), column); + _this4.layoutElement(column.getElement(), column); } if (allCells) { column.cells.forEach(function (cell) { - _this3.layoutElement(cell.getElement(true), column); + _this4.layoutElement(cell.getElement(true), column); }); } }); this.rightColumns.forEach(function (column, i) { - column.modules.frozen.margin = _this3.rightPadding - _this3._calcSpace(_this3.rightColumns, i + 1) + "px"; + column.modules.frozen.margin = _this4.rightPadding - _this4._calcSpace(_this4.rightColumns, i + 1) + "px"; - if (i == _this3.rightColumns.length - 1) { + if (i == _this4.rightColumns.length - 1) { column.modules.frozen.edge = true; } else { column.modules.frozen.edge = false; } if (column.parent.isGroup) { - _this3.layoutElement(_this3.getColGroupParentElement(column), column); + _this4.layoutElement(_this4.getColGroupParentElement(column), column); } else { - _this3.layoutElement(column.getElement(), column); + _this4.layoutElement(column.getElement(), column); } if (allCells) { column.cells.forEach(function (cell) { - _this3.layoutElement(cell.getElement(true), column); + _this4.layoutElement(cell.getElement(true), column); }); } }); @@ -16485,14 +16561,14 @@ }, { key: "layout", value: function layout() { - var _this4 = this; + var _this5 = this; if (this.active) { //calculate row padding this.calcMargins(); this.table.rowManager.getDisplayRows().forEach(function (row) { if (row.type === "row") { - _this4.layoutRow(row); + _this5.layoutRow(row); } }); this.layoutCalcRows(); //calculate left columns @@ -16504,7 +16580,7 @@ }, { key: "layoutRow", value: function layoutRow(row) { - var _this5 = this; + var _this6 = this; var rowEl = row.getElement(); rowEl.style.paddingLeft = this.leftMargin; @@ -16512,14 +16588,14 @@ var cell = row.getCell(column); if (cell) { - _this5.layoutElement(cell.getElement(true), column); + _this6.layoutElement(cell.getElement(true), column); } }); this.rightColumns.forEach(function (column) { var cell = row.getCell(column); if (cell) { - _this5.layoutElement(cell.getElement(true), column); + _this6.layoutElement(cell.getElement(true), column); } }); } @@ -17363,7 +17439,7 @@ this.initialized = false; this.height = 0; - if (Helpers$1.elVisible(this.element)) { + if (Helpers.elVisible(this.element)) { this.initialize(true); } } @@ -18013,6 +18089,7 @@ var defaultUndoers = { cellEdit: function cellEdit(action) { action.component.setValueProcessData(action.data.oldValue); + action.component.cellRendered(); }, rowAdd: function rowAdd(action) { action.component.deleteActual(); @@ -18035,6 +18112,7 @@ var defaultRedoers = { cellEdit: function cellEdit(action) { action.component.setValueProcessData(action.data.newValue); + action.component.cellRendered(); }, rowAdd: function rowAdd(action) { var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); @@ -18266,19 +18344,19 @@ _createClass(HtmlTableImport, [{ key: "initialize", value: function initialize() { - this.subscribe("table-building", this.tableElementCheck.bind(this)); + this.tableElementCheck(); } }, { key: "tableElementCheck", value: function tableElementCheck() { - if (this.table.element.tagName === "TABLE") { + if (this.table.originalElement && this.table.originalElement.tagName === "TABLE") { this.parseTable(); } } }, { key: "parseTable", value: function parseTable() { - var element = this.table.element, + var element = this.table.originalElement, options = this.table.options, columns = options.columns, headers = element.getElementsByTagName("th"), @@ -18316,24 +18394,10 @@ data.push(item); - } //create new element - - - var newElement = document.createElement("div"); //transfer attributes to new element - - var attributes = element.attributes; // loop through attributes and apply them on div - - for (var i in attributes) { - if (_typeof(attributes[i]) == "object") { - newElement.setAttribute(attributes[i].name, attributes[i].value); - } - } // replace table with div element - + } - element.parentNode.replaceChild(newElement, element); options.data = data; this.dispatchExternal("htmlImported"); - this.table.element = newElement; } //extract tabulator attribute options }, { @@ -19385,7 +19449,7 @@ y = touch ? e.touches[0].pageY : e.pageY; this.positionReversedX = false; } else { - parentOffset = Helpers$1.elOffset(parentEl); + parentOffset = Helpers.elOffset(parentEl); x = parentOffset.left + parentEl.offsetWidth; y = parentOffset.top - 1; } @@ -19525,7 +19589,7 @@ config.mousemove = function (e) { if (column.parent === self.moving.parent) { - if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers$1.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) { + if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) { if (self.toCol !== column || !self.toColAfter) { colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling); self.moveColumn(column, true); @@ -19652,7 +19716,7 @@ value: function startMove(e, column) { var element = column.getElement(); this.moving = column; - this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers$1.elOffset(element).left; + this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left; this.table.element.classList.add("tabulator-block-select"); //create placeholder this.placeholderElement.style.width = column.getWidth() + "px"; @@ -19750,7 +19814,7 @@ var columnHolder = this.table.columnManager.getElement(), scrollLeft = columnHolder.scrollLeft, - xPos = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers$1.elOffset(columnHolder).left + scrollLeft, + xPos = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left + scrollLeft, scrollPos; this.hoverElement.style.left = xPos - this.startX + "px"; @@ -19874,7 +19938,7 @@ config.mousemove = function (e) { - if (e.pageY - Helpers$1.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) { + if (e.pageY - Helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) { if (self.toRow !== group || !self.toRowAfter) { var rowEl = group.getElement(); rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); @@ -19909,7 +19973,7 @@ config.mousemove = function (e) { var rowEl = row.getElement(); - if (e.pageY - Helpers$1.elOffset(rowEl).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) { + if (e.pageY - Helpers.elOffset(rowEl).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) { if (self.toRow !== row || !self.toRowAfter) { rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); self.moveRow(row, true); @@ -23115,6 +23179,10 @@ if (column.definition.title && column.field) { if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) { + var onRendered = function onRendered(callback) { + callback(); + }; + mockCellComponent = { value: false, data: {}, @@ -23137,7 +23205,7 @@ output.push({ field: column.field, title: column.definition.title, - value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params) + value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered) }); } else { output.push({ diff --git a/dist/js/tabulator.js.map b/dist/js/tabulator.js.map index 973847fa7..5ce57851e 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, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\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\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\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\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\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\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 && this.table.initialized){\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\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\t\tthis.initializeElement();\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(){\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\", rowData);\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(table, optionsList, debug){\r\n\t\tthis.table = table;\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.table, 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][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, 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\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\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 && options.data){\r\n\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}\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\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\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((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\tdeinitializeHeight(){}\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\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\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\r\n\t\tthis.generatePageSizeSelectList();\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\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 self = this,\r\n\t\tpushFunc, 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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.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 self.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: function(){\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(!self.blocked && version === self.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] ? self.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\tself.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\tself.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 = self.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\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.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","list","objectProto","__proto__","arrayProto","Array","isArray","subject","match","copy","findIndex","item","unshift","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","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","columnRendered","getHeight","adjustTableSize","_getSelf","HTMLElement","root","matches","fieldRoot","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","deinitializeHeight","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","addRow","_clearPlaceholder","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","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","registerModule","mod","registerModuleBinding","findTable","prototype","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","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","Date","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","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","hidden","pageSelectLabel","paginationElement","paginationInitialPage","paginationButtonCount","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, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\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\t\tel.setAttribute(\"role\", \"row\");\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\t\tel.setAttribute(\"role\", \"rowgroup\");\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\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\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\t\t}\r\n\r\n\t\tcolumn.columnRendered();\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\tverticalAlignHeaders(){\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(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\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\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\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\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\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\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\t\tel.setAttribute(\"role\", \"rowgroup\");\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\t\tel.setAttribute(\"role\", \"rowgroup\");\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 && this.table.initialized){\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\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.refreshActiveData(false, false, true);\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\t\tthis.dispatchExternal(\"renderStarted\");\r\n\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tthis._clearTable();\r\n\r\n\t\tif(this.displayRowsCount){\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\t\tthis.initializeElement();\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(){\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\", rowData);\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(table, optionsList, debug){\r\n\t\tthis.table = table;\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.table, 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][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\t\tthis.originalElement = null; //hold original table element if it has been replaced\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, 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\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._initializeTable();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_rtlCheck(){\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//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\t\tnewElement;\r\n\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\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\t}\r\n\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\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\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 && options.data){\r\n\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}\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\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\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((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};","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\nexport 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\r\n\t\t\tvar output = 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\tthis.layoutRow(cell.row);\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\nimport Helpers from '../../core/tools/Helpers.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.getComponent().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.getComponent().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.getComponent().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.getComponent().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].getComponent().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].getComponent().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\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\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\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\tdeinitializeHeight(){}\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\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\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\taction.component.cellRendered();\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\taction.component.cellRendered();\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.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.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.originalElement,\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\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\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\r\n\t\tthis.generatePageSizeSelectList();\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\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 self = this,\r\n\t\tpushFunc, 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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.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 self.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: function(){\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(!self.blocked && version === self.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] ? self.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\tself.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\tself.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 = self.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\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.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\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\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, onRendered)\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","list","objectProto","__proto__","arrayProto","Array","isArray","subject","match","copy","findIndex","item","unshift","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","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","columnRendered","getHeight","adjustTableSize","_getSelf","HTMLElement","root","matches","fieldRoot","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","deinitializeHeight","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","addRow","_clearPlaceholder","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","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","registerModule","mod","registerModuleBinding","findTable","prototype","moduleCore","modulesCore","modulesRegular","core","mods","interactionMonitor","browserSlow","browserMobile","rtl","originalElement","initialzeCoreSystems","_create","_clearObjectPointers","_mapDepricatedFunctionality","InteractionMonitor","getSelection","empty","removeAllRanges","selection","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","getComputedStyle","direction","reactiveData","newElement","tagName","attributes","replaceChild","_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","getKey","range","internal","sel","textRange","createRange","selectNodeContents","toString","addRange","createTextRange","moveToElementText","select","execCommand","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","mutator","valid","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","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","Date","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","layoutGroupCalcs","groupList","allCells","leftParents","parentEl","getColGroupParentElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","toggleVisibility","groupManager","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","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","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","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","hidden","pageSelectLabel","paginationElement","paginationInitialPage","paginationButtonCount","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 408c2879c..5e32583f8 100644 --- a/dist/js/tabulator.min.js +++ b/dist/js/tabulator.min.js @@ -1,3 +1,3 @@ -/* Tabulator v5.0.4 (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,i){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a={}.__proto__,r=[].__proto__;i||(i=Object.assign(Array.isArray(t)?[]:{},t));var s=function(){var s=t[l],u=void 0,c=void 0;null==s||"object"!==e(s)||s.__proto__!==a&&s.__proto__!==r||((u=o.findIndex((function(e){return e.subject===s})))>-1?i[l]=o[u].copy:(c=Object.assign(Array.isArray(s)?[]:{},s),o.unshift({subject:s,copy:c}),i[l]=n.deepClone(s,c,o)))};for(var l in t)s();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:"deinitializeHeight",value:function(){this.heightInitialized=!1}},{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.initialized&&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(t){Array.isArray(t)||"object"!=e(t)||(t=r.mapParams(t,r.objectInvert(r.table.options.dataReceiveParams)));var i=r.chain("data-loaded",t,null,t);s==r.requestOrder?(r.hideLoader(),!1!==i&&(r.dispatchExternal("dataLoaded",i),r.table.rowManager.setData(i,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,o){t(this,e),this.table=i,this.events={},this.optionsList=n||{},this.subscriptionNotifiers={},this.dispatch=o?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=o}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.table,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][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 H(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,this.options,this.options.debugEventsExternal),this.eventBus=new _(this.options.debugEventsInternal),this.interactionMonitor=new P(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,this.externalEvents.dispatch("tableBuilt")}},{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&&t.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modulesRegular){this.modulesRegular[a].initialize()}this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built")}},{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.initialized?this.columnManager.setColumns(e):console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.")}},{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=this,i=!1,n={};this.allowedTypes.forEach((function(o){var a,r="accessor"+(o.charAt(0).toUpperCase()+o.slice(1));e.definition[r]&&(a=t.lookupAccessor(e.definition[r]))&&(i=!0,n[r]={accessor:a,params:e.definition[r+"Params"]||{}})})),i&&(e.modules.accessor=n)}},{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)),H()}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)),H()}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 H(){var e=[];b.forEach((function(t){e.push(t.label)})),d.value=e.join(", "),!1===s.currentCell&&F(!0)}function P(){z(),o()}function z(){m.parentNode&&m.parentNode.removeChild(m),s.table.rowManager.element.removeEventListener("scroll",P)}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():P())})),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",P)}),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?(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()}},He=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);He.moduleName="persistence",He.readers=Se,He.writers=Fe;var Pe=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);Pe.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=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 n=Array.from(arguments);return i.blocked||t!==i.currentVersion||n.forEach((function(e){i.table.rowManager.addRowActual(e,!1)})),i.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var n=Array.from(arguments);return i.blocked||t!==i.currentVersion||n.forEach((function(e){i.table.rowManager.addRowActual(e,!0)})),i.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var n;return i.blocked||t!==i.currentVersion||i.data.length&&(n=i.table.rowManager.getRowFromDataObject(i.data[0]))&&n.deleteActual(),i.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var n;return i.blocked||t!==i.currentVersion||i.data.length&&(n=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&n.deleteActual(),i.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var n,o=Array.from(arguments),a=o[0]<0?e.length+o[0]:o[0],r=o[1],s=!!o[2]&&o.slice(2);if(!i.blocked&&t===i.currentVersion){if(s&&((n=!!e[a]&&i.table.rowManager.getRowFromDataObject(e[a]))?s.forEach((function(e){i.table.rowManager.addRowActual(e,!0,n,!0)})):(s=s.slice().reverse()).forEach((function(e){i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(a,void 0===o[1]?o[1]:a+r);l.forEach((function(e,t){var n=i.table.rowManager.getRowFromDataObject(e);n&&n.deleteActual(t!==l.length-1)}))}(s||0!==r)&&i.table.rowManager.reRenderInPosition()}return i.origFuncs.splice.apply(e,arguments)}})}},{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:He,PrintModule:Pe,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.5 (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,i){var n=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a={}.__proto__,r=[].__proto__;i||(i=Object.assign(Array.isArray(t)?[]:{},t));var s=function(){var s=t[l],u=void 0,c=void 0;null==s||"object"!==e(s)||s.__proto__!==a&&s.__proto__!==r||((u=o.findIndex((function(e){return e.subject===s})))>-1?i[l]=o[u].copy:(c=Object.assign(Array.isArray(s)?[]:{},s),o.unshift({subject:s,copy:c}),i[l]=n.deepClone(s,c,o)))};for(var l in t)s();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()));return n.columnRendered(),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){C.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(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:"deinitializeHeight",value:function(){this.heightInitialized=!1}},{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.initialized&&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.refreshActiveData(!1,!1,!0),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(t){Array.isArray(t)||"object"!=e(t)||(t=r.mapParams(t,r.objectInvert(r.table.options.dataReceiveParams)));var i=r.chain("data-loaded",t,null,t);s==r.requestOrder?(r.hideLoader(),!1!==i&&(r.dispatchExternal("dataLoaded",i),r.table.rowManager.setData(i,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,o){t(this,e),this.table=i,this.events={},this.optionsList=n||{},this.subscriptionNotifiers={},this.dispatch=o?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=o}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.table,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][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 i(e,n){var o=this;t(this,i),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.originalElement=null,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(e)&&(this.initialzeCoreSystems(n),setTimeout((function(){o._create()}))),N.register(this)}return o(i,[{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(e){this.columnManager=new T(this),this.rowManager=new F(this),this.footerManager=new H(this),this.dataLoader=new A(this),this.bindModules(),this.options=this.optionsList.generate(i.defaultOptions,e),this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.externalEvents=new O(this,this.options,this.options.debugEventsExternal),this.eventBus=new _(this.options.debugEventsInternal),this.interactionMonitor=new P(this),this.dataLoader.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this.footerManager.initialize()}},{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._initializeTable(),this._loadInitialData(),this.initialized=!0,this.externalEvents.dispatch("tableBuilt")}},{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:"_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 t,i=this.element,n=this.options;if("TABLE"===i.tagName){this.originalElement=this.element,t=document.createElement("div");var o=i.attributes;for(var a in o)"object"==e(o[a])&&t.setAttribute(o[a].name,o[a].value);i.parentNode.replaceChild(t,i),this.element=i=t}for(i.classList.add("tabulator"),i.setAttribute("role","grid");i.firstChild;)i.removeChild(i.firstChild);n.height&&(n.height=isNaN(n.height)?n.height:n.height+"px",i.style.height=n.height),!1!==n.minHeight&&(n.minHeight=isNaN(n.minHeight)?n.minHeight:n.minHeight+"px",i.style.minHeight=n.minHeight),!1!==n.maxHeight&&(n.maxHeight=isNaN(n.maxHeight)?n.maxHeight:n.maxHeight+"px",i.style.maxHeight=n.maxHeight)}},{key:"_initializeTable",value:function(){var e=this.element,t=this.options;for(var i in 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&&t.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modulesRegular){this.modulesRegular[a].initialize()}this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built")}},{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.initialized?this.columnManager.setColumns(e):console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.")}},{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}}]),i}();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=this,i=!1,n={};this.allowedTypes.forEach((function(o){var a,r="accessor"+(o.charAt(0).toUpperCase()+o.slice(1));e.definition[r]&&(a=t.lookupAccessor(e.definition[r]))&&(i=!0,n[r]={accessor:a,params:e.definition[r+"Params"]||{}})})),i&&(e.modules.accessor=n)}},{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("&")}function $(t,i){var n=[];if(i=i||"",Array.isArray(t))t.forEach((function(e,t){n=n.concat($(e,i?i+"["+t+"]":t))}));else if("object"===e(t))for(var o in t)n=n.concat($(t[o],i?i+"["+o+"]":o));else n.push({key:i,value:t});return n}var Q={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var n=$(i),o=new FormData;return n.forEach((function(e){o.append(e.key,e.value)})),o}}},Z=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);Z.moduleName="ajax",Z.defaultConfig={method:"GET"},Z.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},Z.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([]))}))},Z.contentTypeFormatters=Q;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)).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);ee.moduleName="clipboard",ee.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)}},ee.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 te=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}(),ie={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)||this.layoutRow(e.row)}},{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);oe.moduleName="dataTree";var ae={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")}},re=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 se(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)}re.moduleName="download",re.downloaders=ae;var le={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&&se(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&&se(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&&se(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)),H()}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)),H()}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 H(){var e=[];b.forEach((function(t){e.push(t.label)})),d.value=e.join(", "),!1===s.currentCell&&F(!0)}function P(){z(),o()}function z(){m.parentNode&&m.parentNode.removeChild(m),s.table.rowManager.element.removeEventListener("scroll",P)}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():P())})),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",P)}),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,u,c=t.getElement(),h=void 0===a.max?(null===(r=c.getElementsByTagName("div")[0])||void 0===r?void 0:r.getAttribute("max"))||100:a.max,d=void 0===a.min?(null===(s=c.getElementsByTagName("div")[0])||void 0===s?void 0:s.getAttribute("min"))||0:a.min,m=(h-d)/100,p=t.getValue()||0,f=document.createElement("div"),g=document.createElement("div");function v(){var e=window.getComputedStyle(c,null),t=m*Math.round(g.offsetWidth/((c.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+d;n(t),c.setAttribute("aria-valuenow",t),c.setAttribute("aria-label",p)}if(f.style.position="absolute",f.style.right="0",f.style.top="0",f.style.bottom="0",f.style.width="5px",f.classList.add("tabulator-progress-handle"),g.style.display="inline-block",g.style.position="relative",g.style.height="100%",g.style.backgroundColor="#488CE9",g.style.maxWidth="100%",g.style.minWidth="0%",a.elementAttributes&&"object"==e(a.elementAttributes))for(var b in a.elementAttributes)"+"==b.charAt(0)?(b=b.slice(1),g.setAttribute(b,g.getAttribute(b)+a.elementAttributes["+"+b])):g.setAttribute(b,a.elementAttributes[b]);return c.style.padding="4px 4px",p=Math.min(parseFloat(p),h),p=Math.max(parseFloat(p),d),p=Math.round((p-d)/m),g.style.width=p+"%",c.setAttribute("aria-valuemin",d),c.setAttribute("aria-valuemax",h),g.appendChild(f),f.addEventListener("mousedown",(function(e){l=e.screenX,u=g.offsetWidth})),f.addEventListener("mouseover",(function(){f.style.cursor="ew-resize"})),c.addEventListener("mousemove",(function(e){l&&(g.style.width=u+e.screenX-l+"px")})),c.addEventListener("mouseup",(function(e){l&&(e.stopPropagation(),e.stopImmediatePropagation(),l=!1,u=!1,v())})),c.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),g.style.width=g.clientWidth+c.clientWidth/100+"px";break;case 37:e.preventDefault(),g.style.width=g.clientWidth-c.clientWidth/100+"px";break;case 9:case 13:v();break;case 27:o()}})),c.addEventListener("blur",(function(){o()})),g},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}},ue=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.getComponent().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.getComponent().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.getComponent().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.getComponent().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].getComponent().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].getComponent().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&&C.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);ue.moduleName="edit",ue.editors=le;var ce=function e(i,n,o,a){t(this,e),this.type=i,this.columns=n,this.component=o||!1,this.indent=a||0},he=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},de=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 he(e.title,e.column.getComponent(),e.width,e.height,e.depth)):t.push(null)})),n.push(new ce("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 he(e.key,e.getComponent(),i.length,1));break;case"calc":case"row":i.forEach((function(e){r.push(new he(e._column.getFieldValue(a),e,1,1))})),t.table.options.dataTree&&!1!==t.config.dataTree&&(s=e.modules.dataTree.index)}n.push(new ce(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);de.moduleName="export";var me={"=":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)}},pe=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);pe.moduleName="filter",pe.filters=me;var fe={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}},ge=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);ge.moduleName="format",ge.formatters=fe;var ve=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),this.table.modExists("groupRows")&&this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()))}},{key:"layoutGroupCalcs",value:function(e){var t=this;e.forEach((function(e){e.calcs.top&&t.layoutRow(e.calcs.top),e.calcs.bottom&&t.layoutRow(e.calcs.bottom),e.groupList&&e.groupList.length&&t.layoutGroupCalcs(e.groupList&&e.groupList)}))}},{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);be.moduleName="frozenRows";var ye=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}(),we=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 we&&(t=this.table.rowManager.prevDisplayRow(e)||t);var n=t instanceof we?t:t.modules.group,o=e instanceof we?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?(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 we(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);Ce.moduleName="groupRows";var Ee=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);Ee.moduleName="history",Ee.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue),e.component.cellRendered()},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()}},Ee.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue),e.component.cellRendered()},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 ke=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.tableElementCheck()}},{key:"tableElementCheck",value:function(){this.table.originalElement&&"TABLE"===this.table.originalElement.tagName&&this.parseTable()}},{key:"parseTable",value:function(){var e=this.table.originalElement,t=this.table.options,i=(t.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],o=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),n=n?n.getElementsByTagName("tr"):[],this._extractOptions(e,t),i.length?this._extractHeaders(i,n):this._generateBlankHeaders(i,n);for(var a=0;a-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);xe.moduleName="keybindings",xe.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"},xe.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 Te=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);Te.moduleName="menu";var Me=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);Le.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)}},Le.prototype.senders={delete:function(e,t,i){e.delete()}},Le.moduleName="moveRow";var De=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);De.moduleName="mutator",De.mutators={};var Se=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)}},He={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=Fe,Pe.writers=He;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)).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);ze.moduleName="print";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)).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=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 n=Array.from(arguments);return i.blocked||t!==i.currentVersion||n.forEach((function(e){i.table.rowManager.addRowActual(e,!1)})),i.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var n=Array.from(arguments);return i.blocked||t!==i.currentVersion||n.forEach((function(e){i.table.rowManager.addRowActual(e,!0)})),i.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var n;return i.blocked||t!==i.currentVersion||i.data.length&&(n=i.table.rowManager.getRowFromDataObject(i.data[0]))&&n.deleteActual(),i.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var n;return i.blocked||t!==i.currentVersion||i.data.length&&(n=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&n.deleteActual(),i.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var n,o=Array.from(arguments),a=o[0]<0?e.length+o[0]:o[0],r=o[1],s=!!o[2]&&o.slice(2);if(!i.blocked&&t===i.currentVersion){if(s&&((n=!!e[a]&&i.table.rowManager.getRowFromDataObject(e[a]))?s.forEach((function(e){i.table.rowManager.addRowActual(e,!0,n,!0)})):(s=s.slice().reverse()).forEach((function(e){i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(a,void 0===o[1]?o[1]:a+r);l.forEach((function(e,t){var n=i.table.rowManager.getRowFromDataObject(e);n&&n.deleteActual(t!==l.length-1)}))}(s||0!==r)&&i.table.rowManager.reRenderInPosition()}return i.origFuncs.splice.apply(e,arguments)}})}},{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);Ae.moduleName="reactiveData";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.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);Oe.moduleName="resizeColumns";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)).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);_e.moduleName="resizeRows";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)).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);Ne.moduleName="resizeTable";var Be=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);if(a.definition.title&&a.field)if(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,(function(e){e()}))})}else 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);Be.moduleName="responsiveLayout";var Ve=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 Ie(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")}Ve.moduleName="selectRow";var We={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"),Ie.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"),Ie.call(this,e,t,i,n,o,a,r)},datetime:Ie,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}},je=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);je.moduleName="sort",je.sorters=We;var Ge={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}},Ue=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);Ue.moduleName="validate",Ue.validators=Ge;var Xe=Object.freeze({__proto__:null,AccessorModule:K,AjaxModule:Z,ClipboardModule:ee,ColumnCalcsModule:ne,DataTreeModule:oe,DownloadModule:re,EditModule:ue,ExportModule:de,FilterModule:pe,FormatModule:ge,FrozenColumnsModule:ve,FrozenRowsModule:be,GroupRowsModule:Ce,HistoryModule:Ee,HtmlTableImportModule:ke,InteractionModule:Re,KeybindingsModule:xe,MenuModule:Te,MoveColumnsModule:Me,MoveRowsModule:Le,MutatorModule:De,PageModule:Se,PersistenceModule:Pe,PrintModule:ze,ReactiveDataModule:Ae,ResizeColumnsModule:Oe,ResizeRowsModule:_e,ResizeTableModule:Ne,ResponsiveLayoutModule:Be,SelectRowModule:Ve,SortModule:je,ValidateModule:Ue}),qe=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(qe,Xe),qe})); //# sourceMappingURL=tabulator.min.js.map diff --git a/dist/js/tabulator.min.js.map b/dist/js/tabulator.min.js.map index f5e4be2f9..f11431323 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, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\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\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\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\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\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\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 && this.table.initialized){\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\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\t\tthis.initializeElement();\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(){\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\", rowData);\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(table, optionsList, debug){\r\n\t\tthis.table = table;\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.table, 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][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, 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\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\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 && options.data){\r\n\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}\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\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\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((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\tdeinitializeHeight(){}\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\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\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\r\n\t\tthis.generatePageSizeSelectList();\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\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 self = this,\r\n\t\tpushFunc, 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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.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 self.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: function(){\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(!self.blocked && version === self.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] ? self.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\tself.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\tself.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 = self.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\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.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","list","objectProto","__proto__","arrayProto","Array","isArray","subject","match","copy","_typeof","findIndex","item","unshift","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","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","columnRendered","getHeight","columnHeaderVertAlign","adjustTableSize","_getSelf","HTMLElement","root","matches","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","deinitializeHeight","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","addRow","_clearPlaceholder","addRowPos","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","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","registerModule","mod","registerModuleBinding","findTable","prototype","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","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","Date","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","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","hidden","pageSelectLabel","paginationElement","paginationInitialPage","paginationButtonCount","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, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\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\t\tel.setAttribute(\"role\", \"row\");\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\t\tel.setAttribute(\"role\", \"rowgroup\");\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\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\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\t\t}\r\n\r\n\t\tcolumn.columnRendered();\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\tverticalAlignHeaders(){\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(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\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\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\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\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\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\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\t\tel.setAttribute(\"role\", \"rowgroup\");\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\t\tel.setAttribute(\"role\", \"rowgroup\");\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 && this.table.initialized){\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\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.refreshActiveData(false, false, true);\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\t\tthis.dispatchExternal(\"renderStarted\");\r\n\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tthis._clearTable();\r\n\r\n\t\tif(this.displayRowsCount){\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\t\tthis.initializeElement();\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(){\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\", rowData);\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(table, optionsList, debug){\r\n\t\tthis.table = table;\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.table, 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][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\t\tthis.originalElement = null; //hold original table element if it has been replaced\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, 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\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._initializeTable();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_rtlCheck(){\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//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\t\tnewElement;\r\n\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\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\t}\r\n\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\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\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 && options.data){\r\n\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}\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\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\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((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};","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\nexport 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\r\n\t\t\tvar output = 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\tthis.layoutRow(cell.row);\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\nimport Helpers from '../../core/tools/Helpers.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.getComponent().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.getComponent().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.getComponent().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.getComponent().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].getComponent().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].getComponent().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\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\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\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\tdeinitializeHeight(){}\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\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\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\taction.component.cellRendered();\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\taction.component.cellRendered();\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.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.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.originalElement,\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\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\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\r\n\t\tthis.generatePageSizeSelectList();\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\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 self = this,\r\n\t\tpushFunc, 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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.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 self.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: function(){\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(!self.blocked && version === self.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] ? self.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\tself.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\tself.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 = self.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\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.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\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\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, onRendered)\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","list","objectProto","__proto__","arrayProto","Array","isArray","subject","match","copy","_typeof","findIndex","item","unshift","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","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","columnRendered","getHeight","columnHeaderVertAlign","adjustTableSize","_getSelf","HTMLElement","root","matches","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","deinitializeHeight","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","addRow","_clearPlaceholder","addRowPos","chainResult","moveRowInArray","findRowIndex","rowOnly","getDisplayRowIndex","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","registerModule","mod","registerModuleBinding","findTable","prototype","moduleCore","modulesCore","modulesRegular","core","mods","interactionMonitor","browserSlow","browserMobile","rtl","originalElement","initialzeCoreSystems","_create","_clearObjectPointers","_mapDepricatedFunctionality","debugEventsExternal","debugEventsInternal","InteractionMonitor","getSelection","empty","removeAllRanges","selection","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","getComputedStyle","textDirection","direction","reactiveData","newElement","tagName","attributes","replaceChild","_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","getKey","range","internal","sel","textRange","createRange","selectNodeContents","toString","addRange","createTextRange","moveToElementText","select","execCommand","pasteActions","parser","pasteParsers","checkPaseOrigin","getPasteData","mutateData","mutator","valid","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","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","Date","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","layoutGroupCalcs","groupList","allCells","leftParents","parentEl","getColGroupParentElement","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","styleRows","GroupComponent","toggleVisibility","groupManager","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","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","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","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","hidden","pageSelectLabel","paginationElement","paginationInitialPage","paginationButtonCount","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 49ed2ca31..cd42ee8b6 100644 --- a/dist/js/tabulator_esm.js +++ b/dist/js/tabulator_esm.js @@ -1,4 +1,4 @@ -/* Tabulator v5.0.4 (c) Oliver Folkerd 2021 */ +/* Tabulator v5.0.5 (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 0cc8a9ead..3bc7f01b9 100644 --- a/dist/js/tabulator_esm.min.js +++ b/dist/js/tabulator_esm.min.js @@ -1,3 +1,3 @@ -/* Tabulator v5.0.4 (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,t,i=[]){var s={}.__proto__,o=[].__proto__;for(var n in t||(t=Object.assign(Array.isArray(e)?[]:{},e)),e){let r,a,l=e[n];null==l||"object"!=typeof l||l.__proto__!==s&&l.__proto__!==o||(r=i.findIndex((e=>e.subject===l)),r>-1?t[n]=i[r].copy:(a=Object.assign(Array.isArray(l)?[]:{},l),i.unshift({subject:l,copy:a}),t[n]=this.deepClone(l,a,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((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)}deinitializeHeight(){this.heightInitialized=!1}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 z 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)}))}}P.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?(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.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,i=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 s=Array.from(arguments);return i.blocked||t!==i.currentVersion||s.forEach((e=>{i.table.rowManager.addRowActual(e,!1)})),i.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var s=Array.from(arguments);return i.blocked||t!==i.currentVersion||s.forEach((e=>{i.table.rowManager.addRowActual(e,!0)})),i.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var s;return i.blocked||t!==i.currentVersion||i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[0]))&&s.deleteActual(),i.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var s;return i.blocked||t!==i.currentVersion||i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&s.deleteActual(),i.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],r=o[1],a=!!o[2]&&o.slice(2);if(!i.blocked&&t===i.currentVersion){if(a&&((s=!!e[n]&&i.table.rowManager.getRowFromDataObject(e[n]))?a.forEach((e=>{i.table.rowManager.addRowActual(e,!0,s,!0)})):(a=a.slice().reverse()).forEach((e=>{i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(n,void 0===o[1]?o[1]:n+r);l.forEach(((e,t)=>{var s=i.table.rowManager.getRowFromDataObject(e);s&&s.deleteActual(t!==l.length-1)}))}(a||0!==r)&&i.table.rowManager.reRenderInPosition()}return i.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:z,FrozenRowsModule:P,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){e.deinitializeHeight()})),e&&e(),this._virtualRenderFill(!1===i?this.rows.length-1:i,!0,s||0),this.scrollColumns(o)}scrollColumns(e){this.table.rowManager.scrollHorizontal(e)}scrollRows(e,t){var i=e-this.vDomScrollPosTop,s=e-this.vDomScrollPosBottom,o=2*this.vDomWindowBuffer,n=this.rows();if(this.scrollTop=e,-i>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.initialized&&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(){this.initializeElement()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e}initializeElement(){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((e=>{Array.isArray(e)||"object"!=typeof e||(e=this.mapParams(e,this.objectInvert(this.table.options.dataReceiveParams)));var t=this.chain("data-loaded",e,null,e);n==this.requestOrder?(this.hideLoader(),!1!==t&&(this.dispatchExternal("dataLoaded",t),this.table.rowManager.setData(t,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,i){this.table=e,this.events={},this.optionsList=t||{},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=i}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.table,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][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,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,this.externalEvents.dispatch("tableBuilt")}_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&&t.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")}_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.initialized?this.columnManager.setColumns(e):console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.")}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 ze{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,z as FrozenColumnsModule,P 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,ze 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}; +/* Tabulator v5.0.5 (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,t,i=[]){var s={}.__proto__,o=[].__proto__;for(var n in t||(t=Object.assign(Array.isArray(e)?[]:{},e)),e){let r,a,l=e[n];null==l||"object"!=typeof l||l.__proto__!==s&&l.__proto__!==o||(r=i.findIndex((e=>e.subject===l)),r>-1?t[n]=i[r].copy:(a=Object.assign(Array.isArray(l)?[]:{},l),i.unshift({subject:l,copy:a}),t[n]=this.deepClone(l,a,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((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("&")}function a(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(a(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(a(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}var l={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var s=a(i),o=new FormData;return s.forEach((function(e){o.append(e.key,e.value)})),o}}};class h 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=h.contentTypeFormatters}initialize(){this.loaderPromise=this.table.options.ajaxRequestFunc||h.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||h.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 h.defaultConfig)this.config[e]=h.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()}}h.moduleName="ajax",h.defaultConfig={method:"GET"},h.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},h.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([]))}))},h.contentTypeFormatters=l;class d 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=d.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=d.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}}d.moduleName="clipboard",d.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)}},d.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 c{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 u{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 m 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 u(this)),this.component}}class p{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 g={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 b 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 b(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(b.defaultOptionList,this.definition)}checkDefinition(){Object.keys(this.definition).forEach((e=>{-1===b.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 p(this)),this.component}}b.defaultOptionList=g;class f{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 v 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)}deinitializeHeight(){this.heightInitialized=!1}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 v(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 c(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 m(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}}}C.moduleName="columnCalcs",C.calculations=w;class E 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 v&&(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 v(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 v&&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 v?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 v&&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 v&&(o.push(t?e.getComponent():e),i&&(o=o.concat(this.getTreeChildren(e,t,i))))}))),o}checkForRestyle(e){e.row.cells.indexOf(e)||this.layoutRow(e.row)}getChildField(){return this.field}redrawNeeded(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}E.moduleName="dataTree";var y={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 R 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:R.downloaders[e]?n=R.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 x(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)}R.moduleName="download",R.downloaders=y;var M={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&&x(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&&x(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&&x(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=>{R(E(e),t)})).catch((e=>{console.err("error in autocomplete search promise:",e)}))):R(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)})),R(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 R(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 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.getComponent().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.getComponent().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.getComponent().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.getComponent().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].getComponent().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].getComponent().edit(),!0)}findNextEditableCell(e,t){var i=!1;if(t0)for(var o=t-1;o>=0;o--){let t=e.cells[o],n=!0;if(t.column.modules.edit&&s.elVisible(t.getElement())&&("function"==typeof t.column.modules.edit.check&&(n=t.column.modules.edit.check(t.getComponent())),n)){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=M;class L{constructor(e,t,i,s){this.type=e,this.columns=t,this.component=i||!1,this.indent=s||0}}class k{constructor(e,t,i,s,o){this.value=e,this.component=t||!1,this.width=i,this.height=s,this.depth=o}}class D 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 k(e.title,e.column.getComponent(),e.width,e.height,e.depth)):t.push(null)})),s.push(new L("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 k(e.key,e.getComponent(),t.length,1));break;case"calc":case"row":t.forEach((e=>{n.push(new k(e._column.getFieldValue(o),e,1,1))})),this.table.options.dataTree&&!1!==this.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new L(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)}))}}}}D.moduleName="export";var S={"=":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 F 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":F.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,F.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||{})}:F.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return F.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return F.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}}F.moduleName="filter",F.filters=S;var H={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,c=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(o=parseFloat(l)<=d?parseFloat(l):d,o=parseFloat(o)>=c?parseFloat(o):c,s=(d-c)/100,o=Math.round((o-c)/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",c);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 u)){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 f?(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 z 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":z.formatters[s]?i.formatter=z.formatters[s]:(console.warn("Formatter Error - No such formatter found: ",s),i.formatter=z.formatters.plaintext);break;case"function":i.formatter=s;break;default:i.formatter=z.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":z.formatters[e]?e=z.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=z.formatters.plaintext);break;case"function":e=e;break;default:e=z.formatters.plaintext}return e}}z.moduleName="format",z.formatters=H;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),this.table.modExists("groupRows")&&this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()))}layoutGroupCalcs(e){e.forEach((e=>{e.calcs.top&&this.layoutRow(e.calcs.top),e.calcs.bottom&&this.layoutRow(e.calcs.bottom),e.groupList&&e.groupList.length&&this.layoutGroupCalcs(e.groupList&&e.groupList)}))}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)}))}}A.moduleName="frozenRows";class O{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 _{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 _(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 _&&(t=this.table.rowManager.prevDisplayRow(e)||t);var s=t instanceof _?t:t.modules.group,o=e instanceof _?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?(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 _(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))}}N.moduleName="groupRows";class B 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 B.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 B.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))}}))}}B.moduleName="history",B.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue),e.component.cellRendered()},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()}},B.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue),e.component.cellRendered()},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 V extends t{constructor(e){super(e),this.fieldIndex=[],this.hasIndex=!1}initialize(){this.tableElementCheck()}tableElementCheck(){this.table.originalElement&&"TABLE"===this.table.originalElement.tagName&&this.parseTable()}parseTable(){var e=this.table.originalElement,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 m?s=i.column.definition[e]:i instanceof b&&(s=i.definition[e]),s&&s(t,o)),this.dispatchExternal(e,t,o)}}I.moduleName="interaction";class W 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 W.bindings)t[e]=W.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)W.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:W.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)}}W.moduleName="keybindings",W.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"},W.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 j 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)}}j.moduleName="menu";class G 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)))}}G.moduleName="moveColumn";class U 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)}}}U.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)}},U.prototype.senders={delete:function(e,t,i){e.delete()}},U.moduleName="moveRow";class X 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":X.mutators[e]?t=X.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}}X.moduleName="mutator",X.mutators={};class q 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.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"))}}q.moduleName="page";var K={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)}},Y={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 J 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:J.readers[this.table.options.persistenceReaderFunc]?this.readFunc=J.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):J.readers[this.mode]?this.readFunc=J.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:J.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=J.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):J.writers[this.mode]?this.writeFunc=J.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}}J.moduleName="persistence",J.readers=K,J.writers=Y;class $ 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}}$.moduleName="print";class Q 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,i=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 s=Array.from(arguments);return i.blocked||t!==i.currentVersion||s.forEach((e=>{i.table.rowManager.addRowActual(e,!1)})),i.origFuncs.push.apply(e,arguments)}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var s=Array.from(arguments);return i.blocked||t!==i.currentVersion||s.forEach((e=>{i.table.rowManager.addRowActual(e,!0)})),i.origFuncs.unshift.apply(e,arguments)}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var s;return i.blocked||t!==i.currentVersion||i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[0]))&&s.deleteActual(),i.origFuncs.shift.call(e)}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var s;return i.blocked||t!==i.currentVersion||i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&s.deleteActual(),i.origFuncs.pop.call(e)}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],r=o[1],a=!!o[2]&&o.slice(2);if(!i.blocked&&t===i.currentVersion){if(a&&((s=!!e[n]&&i.table.rowManager.getRowFromDataObject(e[n]))?a.forEach((e=>{i.table.rowManager.addRowActual(e,!0,s,!0)})):(a=a.slice().reverse()).forEach((e=>{i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(n,void 0===o[1]?o[1]:n+r);l.forEach(((e,t)=>{var s=i.table.rowManager.getRowFromDataObject(e);s&&s.deleteActual(t!==l.length-1)}))}(a||0!==r)&&i.table.rowManager.reRenderInPosition()}return i.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}}Q.moduleName="reactiveData";class Z 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)}}Z.moduleName="resizeColumns";class ee 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)}}ee.moduleName="resizeRows";class te 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)}}te.moduleName="resizeTable";class ie 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);if(n.definition.title&&n.field)if(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,(function(e){e()}))})}else 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:""}}ie.moduleName="responsiveLayout";class se 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 oe(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")}se.moduleName="selectRow";var ne={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"),oe.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"),oe.call(this,e,t,i,s,o,n,r)},datetime:oe,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 re 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":re.sorters[e.definition.sorter]?s=re.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 re.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)}}re.moduleName="sort",re.sorters=ne;var ae={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 le 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:le.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))}}le.moduleName="validate",le.validators=ae;var he=Object.freeze({__proto__:null,AccessorModule:o,AjaxModule:h,ClipboardModule:d,ColumnCalcsModule:C,DataTreeModule:E,DownloadModule:R,EditModule:T,ExportModule:D,FilterModule:F,FormatModule:z,FrozenColumnsModule:P,FrozenRowsModule:A,GroupRowsModule:N,HistoryModule:B,HtmlTableImportModule:V,InteractionModule:I,KeybindingsModule:W,MenuModule:j,MoveColumnsModule:G,MoveRowsModule:U,MutatorModule:X,PageModule:q,PersistenceModule:J,PrintModule:$,ReactiveDataModule:Q,ResizeColumnsModule:Z,ResizeRowsModule:ee,ResizeTableModule:te,ResponsiveLayoutModule:ie,SelectRowModule:se,SortModule:re,ValidateModule:le});class de{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 ce 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 me extends ce{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 pe 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 de(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:me,basic:ue};(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.setAttribute("role","row"),e}createHeaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-header"),e.setAttribute("role","rowgroup"),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 b(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()));return s.columnRendered(),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 b)return e;if(e instanceof p)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){s.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(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 ge extends ce{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 be extends ce{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){e.deinitializeHeight()})),e&&e(),this._virtualRenderFill(!1===i?this.rows.length-1:i,!0,s||0),this.scrollColumns(o)}scrollColumns(e){this.table.rowManager.scrollHorizontal(e)}scrollRows(e,t){var i=e-this.vDomScrollPosTop,s=e-this.vDomScrollPosBottom,o=2*this.vDomWindowBuffer,n=this.rows();if(this.scrollTop=e,-i>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 fe 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.setAttribute("role","rowgroup"),e}createTableElement(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e.setAttribute("role","rowgroup"),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 v)return e;if(e instanceof f)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.initialized&&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 v(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.refreshActiveData(!1,!1,!0),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 v?e:new v(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:be,basic:ge};(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._clearTable(),this.displayRowsCount?(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 ve extends e{constructor(e){super(e),this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this.initializeElement()}initialize(){this.initializeElement()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e}initializeElement(){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 we 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 Ce{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 Ee 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((e=>{Array.isArray(e)||"object"!=typeof e||(e=this.mapParams(e,this.objectInvert(this.table.options.dataReceiveParams)));var t=this.chain("data-loaded",e,null,e);n==this.requestOrder?(this.hideLoader(),!1!==t&&(this.dispatchExternal("dataLoaded",t),this.table.rowManager.setData(t,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 ye{constructor(e,t,i){this.table=e,this.events={},this.optionsList=t||{},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=i}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.table,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 Re{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 xe{static register(e){xe.tables.push(e)}static deregister(e){var t=xe.tables.indexOf(e);t>-1&&xe.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 Le 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;Le.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(){Le.modes[this.mode].call(this,this.table.columnManager.columnsByIndex),this.dispatch("layout-refreshed")}}Le.moduleName="layout",Le.modes=Te;class ke 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(ke.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)}))}}ke.moduleName="localize",ke.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 De extends t{constructor(e){super(e)}initialize(){this.registerTableFunction("tableComms",this.receive.bind(this))}getConnections(e){var t=[];return xe.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)}}De.moduleName="comms";var Se=Object.freeze({__proto__:null,LayoutModule:Le,LocalizeModule:ke,CommsModule:De});class Fe{constructor(e,t){this.bindStaticFuctionality(e),this.bindModules(e,Se,!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][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=xe.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 He{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.originalElement=null,this.componentFunctionBinder=new Ce(this),this.dataLoader=!1,this.modules={},this.modulesCore={},this.modulesRegular={},this.optionsList=new de(this,"table constructor"),this.initialized=!1,this.initializeElement(e)&&(this.initialzeCoreSystems(t),setTimeout((()=>{this._create()}))),xe.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 pe(this),this.rowManager=new fe(this),this.footerManager=new ve(this),this.dataLoader=new Ee(this),this.bindModules(),this.options=this.optionsList.generate(He.defaultOptions,e),this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.externalEvents=new ye(this,this.options,this.options.debugEventsExternal),this.eventBus=new Re(this.options.debugEventsInternal),this.interactionMonitor=new we(this),this.dataLoader.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this.footerManager.initialize()}_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._initializeTable(),this._loadInitialData(),this.initialized=!0,this.externalEvents.dispatch("tableBuilt")}_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}}_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,t=this.element,i=this.options;if("TABLE"===t.tagName){this.originalElement=this.element,e=document.createElement("div");var s=t.attributes;for(var o in s)"object"==typeof s[o]&&e.setAttribute(s[o].name,s[o].value);t.parentNode.replaceChild(e,t),this.element=t=e}for(t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",t.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",t.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",t.style.maxHeight=i.maxHeight)}_initializeTable(){var e=this.element,t=this.options;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&&t.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")}_loadInitialData(){this.dataLoader.load(this.options.data)}destroy(){var e=this.element;for(xe.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.initialized?this.columnManager.setColumns(e):console.warn("setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.")}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}}He.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 Fe(He);class ze extends He{}new Fe(ze,he);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,h as AjaxModule,c as CalcComponent,u as CellComponent,d as ClipboardModule,C as ColumnCalcsModule,p as ColumnComponent,E as DataTreeModule,R as DownloadModule,T as EditModule,D as ExportModule,F as FilterModule,z as FormatModule,P as FrozenColumnsModule,A as FrozenRowsModule,O as GroupComponent,N as GroupRowsModule,B as HistoryModule,V as HtmlTableImportModule,I as InteractionModule,W as KeybindingsModule,j as MenuModule,t as Module,G as MoveColumnsModule,U as MoveRowsModule,X as MutatorModule,q as PageModule,J as PersistenceModule,$ as PrintModule,Pe as PseudoRow,Q as ReactiveDataModule,ce as Renderer,Z as ResizeColumnsModule,ee as ResizeRowsModule,te as ResizeTableModule,ie as ResponsiveLayoutModule,f as RowComponent,se as SelectRowModule,re as SortModule,He as Tabulator,ze as TabulatorFull,le 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 6db9085d0..e707853de 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, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\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((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\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\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\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\tdeinitializeHeight(){}\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\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\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\r\n\t\tthis.generatePageSizeSelectList();\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\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 self = this,\r\n\t\tpushFunc, 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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.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 self.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: function(){\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(!self.blocked && version === self.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] ? self.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\tself.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\tself.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 = self.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\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.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\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\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 && this.table.initialized){\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\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\t\tthis.initializeElement();\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(){\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\", rowData);\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(table, optionsList, debug){\r\n\t\tthis.table = table;\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.table, 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][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, 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\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\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 && options.data){\r\n\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}\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\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\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","list","objectProto","__proto__","arrayProto","i","Object","assign","Array","isArray","match","copy","subject","findIndex","item","unshift","deepClone","Accessor","allowedTypes","registerColumnOption","initializeColumn","transformRow","column","config","forEach","type","accessor","charAt","toUpperCase","slice","definition","lookupAccessor","params","accessors","row","rowComponent","getComponent","traverse","colCompnent","getFieldValue","setFieldValue","moduleName","generateParamsList","prefix","output","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","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","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","layoutRow","Row$1","RowComponent","HTMLElement","DataTree","csv","fileContents","pdf","fontStyle","fontSize","cellPadding","content","colSpan","jspdf","autoTableParams","autoTable","doc","xlsx","sheetName","workbook","merges","Date","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","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","floor","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","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","topOffset","deinitializeHeight","_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","debug","subscriptionNotifiers","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","_buildElement","footerElement","modulesRegular","setColumns","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, clone, list = []){\r\n\t\tvar objectProto = {}.__proto__,\r\n\t\tarrayProto = [].__proto__;\r\n\r\n\t\tif (!clone){\r\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\r\n\t\t}\r\n\r\n\t\tfor(var i in obj) {\r\n\t\t\tlet subject = obj[i],\r\n\t\t\tmatch, copy;\r\n\r\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\r\n\t\t\t\tmatch = list.findIndex((item) => {\r\n\t\t\t\t\treturn item.subject === subject;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(match > -1){\r\n\t\t\t\t\tclone[i] = list[match].copy;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\r\n\r\n\t\t\t\t\tlist.unshift({subject, copy});\r\n\r\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\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((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};","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\nexport 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\r\n\t\t\tvar output = 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\tdeinitializeHeight(){\r\n\t\tthis.heightInitialized = false;\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\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\tthis.layoutRow(cell.row);\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\nimport Helpers from '../../core/tools/Helpers.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.getComponent().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.getComponent().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.getComponent().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.getComponent().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].getComponent().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].getComponent().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\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\r\n\t\t\tif(this.table.modExists(\"groupRows\")){\r\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlayoutGroupCalcs(groups){\r\n\t\tgroups.forEach((group) => {\r\n\t\t\tif(group.calcs.top){\r\n\t\t\t\tthis.layoutRow(group.calcs.top);\r\n\t\t\t}\r\n\r\n\t\t\tif(group.calcs.bottom){\r\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\r\n\t\t\t}\r\n\r\n\t\t\tif(group.groupList && group.groupList.length){\r\n\t\t\t\tthis.layoutGroupCalcs(group.groupList && group.groupList);\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\tdeinitializeHeight(){}\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\tthis.dispatchExternal(\"dataGrouping\");\r\n\r\n\t\t\tthis.generateGroups(rows);\r\n\r\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\r\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\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\taction.component.cellRendered();\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.tableElementCheck();\r\n\t}\r\n\r\n\ttableElementCheck(){\r\n\t\tif(this.table.originalElement && this.table.originalElement.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.originalElement,\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\toptions.data = data;\r\n\r\n\t\tthis.dispatchExternal(\"htmlImported\");\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\taction.component.cellRendered();\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\r\n\t\tthis.generatePageSizeSelectList();\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\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 self = this,\r\n\t\tpushFunc, 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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar args = Array.from(arguments);\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\tself.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.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 self.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: function(){\r\n\t\t\t\tvar row;\r\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\r\n\t\t\t\t\tif(self.data.length){\r\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.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 self.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: function(){\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(!self.blocked && version === self.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] ? self.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\tself.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\tself.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 = self.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\tself.table.rowManager.reRenderInPosition();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.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\tfunction onRendered(callback){\r\n\t\t\t\t\t\tcallback();\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, onRendered)\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\t\tel.setAttribute(\"role\", \"row\");\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\t\tel.setAttribute(\"role\", \"rowgroup\");\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\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\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\t\t}\r\n\r\n\t\tcolumn.columnRendered();\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\tverticalAlignHeaders(){\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(Helpers.elVisible(this.element)){\r\n\t\t\tthis.verticalAlignHeaders();\r\n\t\t}\r\n\r\n\t\tif(force){\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\trows.forEach((row) => {\r\n\t\t\trow.deinitializeHeight();\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\t\tel.setAttribute(\"role\", \"rowgroup\");\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\t\tel.setAttribute(\"role\", \"rowgroup\");\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 && this.table.initialized){\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\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.refreshActiveData(false, false, true);\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\t\tthis.dispatchExternal(\"renderStarted\");\r\n\r\n\t\tthis.element.scrollTop = 0;\r\n\r\n\t\tthis._clearTable();\r\n\r\n\t\tif(this.displayRowsCount){\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\t\tthis.initializeElement();\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(){\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\", rowData);\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(table, optionsList, debug){\r\n\t\tthis.table = table;\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.table, 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][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\t\tthis.originalElement = null; //hold original table element if it has been replaced\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, 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\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._initializeTable();\r\n\r\n\t\tthis._loadInitialData();\r\n\r\n\t\tthis.initialized = true;\r\n\r\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\r\n\t}\r\n\r\n\t_rtlCheck(){\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//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\t\tnewElement;\r\n\r\n\t\tif(element.tagName === \"TABLE\"){\r\n\t\t\tthis.originalElement = this.element;\r\n\t\t\tnewElement = document.createElement(\"div\");\r\n\r\n\t\t\t//transfer attributes to new element\r\n\t\t\tvar attributes = element.attributes;\r\n\r\n\t\t\t// loop through attributes and apply them on div\r\n\t\t\tfor(var i in attributes){\r\n\t\t\t\tif(typeof attributes[i] == \"object\"){\r\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// replace table with div element\r\n\t\t\telement.parentNode.replaceChild(newElement, element);\r\n\r\n\t\t\tthis.element = element = newElement;\r\n\t\t}\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\t}\r\n\r\n\t//initialize core systems and modules\r\n\t_initializeTable(){\r\n\t\tvar element = this.element,\r\n\t\toptions = this.options;\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\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 && options.data){\r\n\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}\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\tif(this.initialized){\r\n\t\t\tthis.columnManager.setColumns(definition);\r\n\t\t}else{\r\n\t\t\tconsole.warn(\"setColumns failed - table not yet initialized. To set initial data please use the 'columns' property in the table constructor.\")\r\n\t\t}\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","list","objectProto","__proto__","arrayProto","i","Object","assign","Array","isArray","match","copy","subject","findIndex","item","unshift","deepClone","Accessor","allowedTypes","registerColumnOption","initializeColumn","transformRow","column","config","forEach","type","accessor","charAt","toUpperCase","slice","definition","lookupAccessor","params","accessors","row","rowComponent","getComponent","traverse","colCompnent","getFieldValue","setFieldValue","moduleName","generateParamsList","prefix","output","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","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","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","layoutRow","Row$1","RowComponent","HTMLElement","DataTree","csv","fileContents","pdf","fontStyle","fontSize","cellPadding","content","colSpan","jspdf","autoTableParams","autoTable","doc","xlsx","sheetName","workbook","merges","Date","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","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","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","cellEdit","setValueProcessData","_rebindRow","redoers","HtmlTableImport","fieldIndex","tableElementCheck","_generateBlankHeaders","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","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","floor","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","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","redraw","parentIndex","nextEl","verticalAlignHeaders","toIndex","updateRows","fromIndex","adjust","reinitializeWidth","BaiscVertical","VirtualDomVertical","vDomRowHeight","vDomTop","vDomScrollPosBottom","vDomBottomPad","paddingBottom","topOffset","deinitializeHeight","_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","_clearTable","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","debug","subscriptionNotifiers","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","browser","originalElement","ComponentFuctionBinder","bindModules","_clearObjectPointers","_loadInitialData","attributes","_detectBrowser","footerElement","modulesRegular","setColumns","extensions","accept","onload","parse","responses","findRow","foundRows","addRows","findColumn","plugin","debugEventsExternal","debugInvalidOptions","columnMaxWidth","columnDefaults","autoColumns","addRowPos","headerVisible","renderHorizontal","renderVerticalBuffer","scrollToRowPosition","scrollToColumnIfVisible","rowFormatterClipboard","ModuleBinder"],"mappings":";AAAe,MAAMA,EAEpBC,YAAYC,GACXC,KAAKD,MAAQA,EAOdD,WAAWG,EAAMC,GAChB,OAAOF,KAAKD,MAAMI,WAAWC,KAAKH,OAAMI,OAAWA,OAAWA,EAAWH,GAO1EJ,WACC,OAAOE,KAAKD,MAAMO,QAAQC,SAASC,WAAWC,WAG/CX,WACC,OAAOE,KAAKD,MAAMO,QAAQC,SAASG,QAAQD,WAG5CX,aACC,OAAOE,KAAKD,MAAMO,QAAQC,SAASI,aAAaF,WAQjDX,mBACC,OAAOE,KAAKD,MAAMO,QAAQM,MAAMC,kBAAkBJ,WAGnDX,YACC,OAAOE,KAAKD,MAAMO,QAAQM,MAAME,QAAQL,WAOzCX,aACC,OAAOE,KAAKD,MAAMO,QAAQS,OAAOC,UAGlClB,gBACC,OAAOE,KAAKD,MAAMO,QAAQS,OAAOA,SAQlCjB,YACC,OAAOE,KAAKD,MAAMkB,SAASC,aAAaT,WAGzCX,cACC,OAAOE,KAAKD,MAAMkB,SAASE,eAAeV,WAG3CX,WAAWsB,GACV,OAAOpB,KAAKD,MAAMkB,SAASI,WAAWD,GAGvCtB,qBACC,OAAOE,KAAKD,MAAMkB,SAASK,sBAAsBb,WAGlDX,WACC,OAAOE,KAAKD,MAAMkB,SAASM,YAAYd,WAGxCX,QACC,OAAOE,KAAKD,MAAMkB,SAASO,SAASf,WAGrCX,UACC,OAAOE,KAAKD,MAAMkB,SAASQ,WAAWhB,WAGvCX,mBACC,OAAOE,KAAKD,MAAM2B,eAAeH,YAAYd,WAG9CX,mBAAmBsB,GAClB,OAAOpB,KAAKD,MAAM2B,eAAeL,WAAWD,GAG7CtB,6BACC,OAAOE,KAAKD,MAAM2B,eAAeJ,sBAAsBb,WAOxDX,QAAQsB,EAAKO,GAKZ,YAJoB,IAAVA,IACT3B,KAAKD,MAAM6B,QAAQR,GAAOO,GAGpB3B,KAAKD,MAAM6B,QAAQR,GAG3BtB,UAAUsB,EAAKO,GAKd,YAJoB,IAAVA,IACT3B,KAAKD,MAAM6B,QAAQR,GAAOO,GAGpB3B,KAAKD,MAAM6B,QAAQR,GAQ3BtB,OAAOsB,GACN,OAAOpB,KAAKD,MAAM8B,OAAOT,IC5H3B,MAAMU,UAAejC,EAEpBC,YAAYC,EAAOgC,GAClBC,MAAMjC,GAENC,KAAKiC,SAAW,KAGjBnC,cASAA,oBAAoBsB,EAAKO,GACxB3B,KAAKD,MAAMmC,YAAYC,SAASf,EAAKO,GAGtC7B,qBAAqBsB,EAAKO,GACzB3B,KAAKD,MAAMqC,cAAcF,YAAYC,SAASf,EAAKO,GAOpD7B,sBAAsBiC,EAAMM,QACI,IAArBrC,KAAKD,MAAMgC,GACpB/B,KAAKD,MAAMgC,GAAQM,EAEnBC,QAAQC,KAAK,qDAAsDR,GAIrEjC,0BAA0B0C,EAAWH,EAAMI,GAC1C,OAAOzC,KAAKD,MAAM2C,wBAAwBhC,KAAK8B,EAAWH,EAAMI,GAOjE3C,oBAAoB2C,EAASE,GAC5B3C,KAAKD,MAAM6C,WAAWC,4BAA4BJ,EAASE,GAC3D3C,KAAKiC,SAAWQ,EAGjB3C,uBAAuB2C,EAASE,GAC/B3C,KAAKD,MAAM6C,WAAWE,+BAA+BL,EAASE,GAC9D3C,KAAKiC,SAAWQ,EAGjB3C,YAAYiD,EAAkBN,GACzBA,IACHA,EAAUzC,KAAKiC,UAGbQ,GACFzC,KAAKD,MAAM6C,WAAWI,kBAAkBP,GAAS,EAAOM,IC/D5C,MAAME,EAEpBnD,iBAAiBoD,GAChB,QAASA,EAAGC,aAAe,GAAKD,EAAGE,cAAgB,GAGpDtD,gBAAgBoD,GACf,IAAIG,EAAMH,EAAGI,wBAEb,MAAO,CACNC,IAAKF,EAAIE,IAAMC,OAAOC,YAAcC,SAASC,gBAAgBC,UAC7DC,KAAMR,EAAIQ,KAAOL,OAAOM,YAAcJ,SAASC,gBAAgBI,YAIjEjE,iBAAiBkE,EAAKC,EAAOC,EAAO,IACnC,IAAIC,EAAc,GAAGC,UACrBC,EAAa,GAAGD,UAMhB,IAAI,IAAIE,KAJHL,IACJA,EAAQM,OAAOC,OAAOC,MAAMC,QAAQV,GAAO,GAAK,GAAIA,IAGxCA,EAAK,CACjB,IACAW,EAAOC,EADHC,EAAUb,EAAIM,GAGJ,MAAXO,GAAsC,iBAAZA,GAAyBA,EAAQT,YAAcD,GAAeU,EAAQT,YAAcC,IAChHM,EAAQT,EAAKY,WAAWC,GAChBA,EAAKF,UAAYA,IAGtBF,GAAS,EACXV,EAAMK,GAAKJ,EAAKS,GAAOC,MAEvBA,EAAOL,OAAOC,OAAOC,MAAMC,QAAQG,GAAW,GAAK,GAAIA,GAEvDX,EAAKc,QAAQ,CAACH,QAAAA,EAASD,KAAAA,IAEvBX,EAAMK,GAAKtE,KAAKiF,UAAUJ,EAASD,EAAMV,KAK5C,OAAOD,GCvCT,MAAMiB,UAAiBpD,EAEtBhC,YAAYC,GACXiC,MAAMjC,GAENC,KAAKmF,aAAe,CAAC,GAAI,OAAQ,WAAY,YAAa,QAAS,cAEnEnF,KAAKoF,qBAAqB,YAC1BpF,KAAKoF,qBAAqB,kBAC1BpF,KAAKoF,qBAAqB,gBAC1BpF,KAAKoF,qBAAqB,sBAC1BpF,KAAKoF,qBAAqB,oBAC1BpF,KAAKoF,qBAAqB,0BAC1BpF,KAAKoF,qBAAqB,qBAC1BpF,KAAKoF,qBAAqB,2BAC1BpF,KAAKoF,qBAAqB,iBAC1BpF,KAAKoF,qBAAqB,uBAC1BpF,KAAKoF,qBAAqB,sBAC1BpF,KAAKoF,qBAAqB,4BAG3BtF,aACCE,KAAKkB,UAAU,gBAAiBlB,KAAKqF,iBAAiB3E,KAAKV,OAC3DA,KAAKkB,UAAU,oBAAqBlB,KAAKsF,aAAa5E,KAAKV,OAI5DF,iBAAiByF,GAChB,IAAIZ,GAAQ,EACZa,EAAS,GAETxF,KAAKmF,aAAaM,SAASC,IAC1B,IACAC,EADIvE,EAAM,YAAcsE,EAAKE,OAAO,GAAGC,cAAgBH,EAAKI,MAAM,IAG/DP,EAAOQ,WAAW3E,KACpBuE,EAAW3F,KAAKgG,eAAeT,EAAOQ,WAAW3E,OAGhDuD,GAAQ,EAERa,EAAOpE,GAAO,CACbuE,SAASA,EACTM,OAAQV,EAAOQ,WAAW3E,EAAM,WAAa,QAM9CuD,IACFY,EAAOjF,QAAQqF,SAAWH,GAI5B1F,eAAe6B,GACd,IAAIgE,GAAW,EAGf,cAAchE,GACb,IAAK,SACFuD,EAASgB,UAAUvE,GACrBgE,EAAWT,EAASgB,UAAUvE,GAE9BW,QAAQC,KAAK,sDAAuDZ,GAErE,MAEA,IAAK,WACLgE,EAAWhE,EAIZ,OAAOgE,EAIR7F,aAAaqG,EAAKT,GACjB,IAAItE,EAAM,YAAcsE,EAAKE,OAAO,GAAGC,cAAgBH,EAAKI,MAAM,IAClEM,EAAeD,EAAIE,eAGfpG,EAAOgD,EAAQgC,UAAUkB,EAAIlG,MAAQ,IAqBzC,OAnBAD,KAAKD,MAAMqC,cAAckE,UAAS,SAASf,GAC1C,IAAI5D,EAAOgE,EAAUM,EAAQM,EAE1BhB,EAAOjF,QAAQqF,WAEjBA,EAAWJ,EAAOjF,QAAQqF,SAASvE,IAAQmE,EAAOjF,QAAQqF,SAASA,WAAY,IAKlE,cAFZhE,EAAQ4D,EAAOiB,cAAcvG,MAG5BsG,EAAchB,EAAOc,eACrBJ,EAAoC,mBAApBN,EAASM,OAAwBN,EAASM,OAAOtE,EAAO1B,EAAMyF,EAAMa,EAAaH,GAAgBT,EAASM,OAC1HV,EAAOkB,cAAcxG,EAAM0F,EAASA,SAAShE,EAAO1B,EAAMyF,EAAMO,EAAQM,EAAaH,QAMlFnG,GAKTiF,EAASwB,WAAa,WACtBxB,EAASgB,UCjHM,GCAf,SAASS,EAAmB1G,EAAM2G,GACjC,IAAIC,EAAS,GAIb,GAFAD,EAASA,GAAU,GAEhBnC,MAAMC,QAAQzE,GAChBA,EAAKwF,SAAQ,CAACV,EAAMT,KACnBuC,EAASA,EAAOC,OAAOH,EAAmB5B,EAAM6B,EAASA,EAAS,IAAMtC,EAAI,IAAMA,YAE9E,GAAoB,iBAATrE,EAChB,IAAK,IAAImB,KAAOnB,EACf4G,EAASA,EAAOC,OAAOH,EAAmB1G,EAAKmB,GAAMwF,EAASA,EAAS,IAAMxF,EAAM,IAAMA,SAG1FyF,EAAOE,KAAK,CAAC3F,IAAIwF,EAAQjF,MAAM1B,IAGhC,OAAO4G,EAGR,SAASG,EAAgBf,GACxB,IAAIY,EAASF,EAAmBV,GAChCgB,EAAU,GAMV,OAJAJ,EAAOpB,SAAQ,SAASV,GACvBkC,EAAQF,KAAKG,mBAAmBnC,EAAK3D,KAAO,IAAM8F,mBAAmBnC,EAAKpD,WAGpEsF,EAAQE,KAAK,KC5BrB,SAASR,EAAmB1G,EAAM2G,GACjC,IAAIC,EAAS,GAIb,GAFAD,EAASA,GAAU,GAEhBnC,MAAMC,QAAQzE,GAChBA,EAAKwF,SAAQ,CAACV,EAAMT,KACnBuC,EAASA,EAAOC,OAAOH,EAAmB5B,EAAM6B,EAASA,EAAS,IAAMtC,EAAI,IAAMA,YAE9E,GAAoB,iBAATrE,EAChB,IAAK,IAAImB,KAAOnB,EACf4G,EAASA,EAAOC,OAAOH,EAAmB1G,EAAKmB,GAAMwF,EAASA,EAAS,IAAMxF,EAAM,IAAMA,SAG1FyF,EAAOE,KAAK,CAAC3F,IAAIwF,EAAQjF,MAAM1B,IAGhC,OAAO4G,EAGR,MAAe,CACdO,KAAO,CACNC,QAAQ,CACPC,eAAgB,oBAEjBC,KAAK,SAASC,EAAKhC,EAAQS,GAC1B,OAAOwB,KAAKC,UAAUzB,KAGxB0B,KAAO,CACNN,QAAQ,GAERE,KAAK,SAASC,EAAKhC,EAAQS,GAE1B,IAAIY,EAASF,EAAmBV,GAChC0B,EAAO,IAAIC,SAMX,OAJAf,EAAOpB,SAAQ,SAASV,GACvB4C,EAAKE,OAAO9C,EAAK3D,IAAK2D,EAAKpD,UAGrBgG,KClCV,MAAMG,UAAahG,EAElBhC,YAAYC,GACXiC,MAAMjC,GAENC,KAAKwF,QAAS,EACdxF,KAAKwH,IAAM,GACXxH,KAAK+H,cAAe,EACpB/H,KAAKiG,QAAS,EAEdjG,KAAKgI,eAAgB,EAErBhI,KAAKiI,oBAAoB,WAAW,GACpCjI,KAAKiI,oBAAoB,oBAAoB,GAC7CjI,KAAKiI,oBAAoB,aAAc,IACvCjI,KAAKiI,oBAAoB,aAAc,OACvCjI,KAAKiI,oBAAoB,kBAAmB,QAC5CjI,KAAKiI,oBAAoB,mBAAmB,GAE5CjI,KAAKiI,oBAAoB,kBAAkB,eAC3CjI,KAAKiI,oBAAoB,gBAAgB,GAEzCjI,KAAKkI,sBAAwBJ,EAAKI,sBAInCpI,aACCE,KAAKgI,cAAgBhI,KAAKD,MAAM6B,QAAQuG,iBAAmBL,EAAKM,qBAChEpI,KAAK+H,aAAe/H,KAAKD,MAAM6B,QAAQyG,kBAAoBP,EAAKQ,oBAE7DtI,KAAKD,MAAM6B,QAAQ2G,YACrBvI,KAAKwI,UAAUxI,KAAKD,MAAM6B,QAAQ2G,YAGhCvI,KAAKD,MAAM6B,QAAQ6G,YACrBzI,KAAK0I,UAAU1I,KAAKD,MAAM6B,QAAQ6G,YAGhCzI,KAAKD,MAAM6B,QAAQ+G,SACrB3I,KAAK4I,OAAO5I,KAAKD,MAAM6B,QAAQ+G,SAGhC3I,KAAK6I,sBAAsB,aAAc7I,KAAK8I,OAAOpI,KAAKV,OAE1DA,KAAKkB,UAAU,eAAgBlB,KAAK+I,iBAAiBrI,KAAKV,OAC1DA,KAAKkB,UAAU,YAAalB,KAAKgJ,YAAYtI,KAAKV,OAInDF,iBAAiBG,EAAMgG,EAAQT,EAAQtF,GACtC,SAAYD,IAAQD,KAAKwH,MAAwB,iBAATvH,GAGzCH,YAAYG,EAAMgG,EAAQT,EAAQtF,EAAQ+I,GACzC,OAAGjJ,KAAK+I,iBAAiB9I,IACrBA,GACFD,KAAK4I,OAAO3I,GAGVgG,GACFjG,KAAKwI,UAAUvC,GAAQ,GAGrBT,GACFxF,KAAK0I,UAAUlD,GAGTxF,KAAKkJ,eAELD,EAKTnJ,UAAUmG,EAAQkD,GACjB,GAAGA,EAAO,CACTnJ,KAAKiG,OAASjG,KAAKiG,QAAU,GAE7B,IAAI,IAAI7E,KAAO6E,EACdjG,KAAKiG,OAAO7E,GAAO6E,EAAO7E,QAG3BpB,KAAKiG,OAASA,EAIhBnG,YACC,OAAOE,KAAKiG,QAAU,GAIvBnG,UAAU0F,GAGT,GAFAxF,KAAKoJ,qBAEe,iBAAV5D,EACTxF,KAAKwF,OAAO6D,OAAS7D,OAErB,IAAI,IAAIpE,KAAOoE,EACdxF,KAAKwF,OAAOpE,GAAOoE,EAAOpE,GAM7BtB,mBAAmBwJ,GAClB,IAAItJ,KAAKwF,QAAU8D,EAAM,CAExBtJ,KAAKwF,OAAS,GAGd,IAAI,IAAIpE,KAAO0G,EAAKyB,cACnBvJ,KAAKwF,OAAOpE,GAAO0G,EAAKyB,cAAcnI,IAMzCtB,OAAO0H,GACNxH,KAAKwH,IAAMA,EAIZ1H,SACC,OAAOE,KAAKwH,IAIb1H,YAAYI,GACR,IAACsH,EAAMxH,KAAKwH,+CAMPzH,6BAA6ByJ,sCAC7BxJ,8CACNyJ,eACQ1J,6BACPE,kGAWL6H,oBAGAA,EAAKyB,cC/JU,CACdF,OAAQ,OD+JTvB,EAAKQ,oBFjIU,SAASd,EAAKhC,EAAQS,GAWpC,OAVGuB,GACCvB,GAAU1B,OAAOmF,KAAKzD,GAAQ0D,SAC5BnE,EAAO6D,QAAyC,OAA/B7D,EAAO6D,OAAOO,gBAClCpE,EAAO6D,OAAS,MAEhB7B,IAAQA,EAAIqC,SAAS,KAAO,IAAM,KAAO7C,EAAgBf,KAKrDuB,GEuHRM,EAAKM,qBEjKU,SAASZ,EAAKhC,EAAQS,GACpC,IAAI6D,EAEJ,OAAO,IAAIC,SAAQ,CAACC,EAASC,KAK5B,GAHAzC,EAAMxH,KAAK+H,aAAayB,KAAKxJ,KAAKD,MAAOyH,EAAKhC,EAAQS,GAGpB,OAA/BT,EAAO6D,OAAOxD,cAEhB,GADAiE,EAA4D,iBAAvC9J,KAAKD,MAAM6B,QAAQsI,gBAAgClK,KAAKD,MAAM6B,QAAQsI,gBAAkBlK,KAAKkI,sBAAsBlI,KAAKD,MAAM6B,QAAQsI,iBAC5I,CAEd,IAAI,IAAI9I,KAAO0I,EAAYzC,QACtB7B,EAAO6B,UACV7B,EAAO6B,QAAU,SAGgB,IAAxB7B,EAAO6B,QAAQjG,KACxBoE,EAAO6B,QAAQjG,GAAO0I,EAAYzC,QAAQjG,IAI5CoE,EAAO+B,KAAOuC,EAAYvC,KAAKiC,KAAKxJ,KAAMwH,EAAKhC,EAAQS,QAGvD3D,QAAQC,KAAK,8CAA+CvC,KAAKD,MAAM6B,QAAQsI,iBAI9E1C,QAE2B,IAAnBhC,EAAO6B,UAChB7B,EAAO6B,QAAU,SAGkB,IAA1B7B,EAAO6B,QAAQ8C,SACxB3E,EAAO6B,QAAQ8C,OAAS,yBAGwB,IAAvC3E,EAAO6B,QAAQ,sBACxB7B,EAAO6B,QAAQ,oBAAsB,uBAGZ,IAAhB7B,EAAO4E,OAChB5E,EAAO4E,KAAO,QAGG,QAAf5E,EAAO4E,WAC8B,IAA7B5E,EAAO6B,QAAgB,SAChC7B,EAAO6B,QAAgB,OAAI7D,OAAO6G,SAASC,aAGX,IAAvB9E,EAAO+E,cAChB/E,EAAO+E,YAAc,qBAGW,IAAvB/E,EAAO+E,cAChB/E,EAAO+E,YAAc,WAKvBC,MAAMhD,EAAKhC,GACViE,MAAMgB,IACHA,EAASC,GACXD,EAASrD,OACRqC,MAAMxJ,IACN+J,EAAQ/J,MACN0K,OAAOC,IACTX,EAAOW,GACPtI,QAAQC,KAAK,0CAA2CqI,OAGzDtI,QAAQsI,MAAM,uCAAyCH,EAASI,OAAQJ,EAASK,YACjFb,EAAOQ,OAGRE,OAAOC,IACPtI,QAAQsI,MAAM,uCAAwCA,GACtDX,EAAOW,QAGRtI,QAAQC,KAAK,gCACbyH,EAAQ,mCC7EX,8BAEajK,YAGXC,KAAKoK,QACLpK,KAAK+K,YAAc,aACnB/K,KAAKgL,yBACLhL,KAAKiL,mBACLjL,KAAKkL,4BAGLlL,KAAKiI,oBAAoB,gBACzBjI,KAAKiI,oBAAoB,uBAAuB,GAChDjI,KAAKiI,oBAAoB,0BACzBjI,KAAKiI,oBAAoB,6BACzBjI,KAAKiI,oBAAoB,kCACzBjI,KAAKiI,oBAAoB,uBAAwB,mEAGjDjI,KAAKoF,qBAAqB,aAC1BpF,gMASMD,oEAGa,8EAMD6B,iCACbuJ,4NAMDC,OAAYrL,wCAAwCmE,+CAGtCtC,iCACbuJ,uDACAC,0GAKD5H,6BAA6B,2CACgB6H,SAC7CC,wCACGF,GACFE,yDAE4BA,8BAA8BD,UAC3DC,sDACGF,GACFE,mGAMFtL,2DAMGD,MAAMwL,sCACVvL,iBAIFA,KAAKwL,eAAexL,KAAKD,MAAM6B,QAAQ6J,mFAGvCzL,2EAIAA,KAAK0L,WACL1L,yDA0CA,SApCKyF,8DAQc,mBACfkG,6CAIAhK,wBAEcgK,SACb,IAAK,SACLhK,gCAGA,IAAK,YACLA,WAGA,QACAA,UAKHiK,aAGD/E,+CAOD,QACA7G,KAAK0L,kJAOcG,8CACjBC,0BACMC,mBAAmB/L,8DAIxBA,mCAGDgM,EAAIC,kBACJD,iCAC0BE,qDAC1BC,mCACUC,sCACVD,yCAKGH,GACHA,qDAQYK,GACb,IAAK,iDAGIrB,aACR1I,sEAID,IAAK,WACLtC,mCAKasM,iBACAA,GACb,IAAK,iDAGIvB,aACRzI,sEAID,IAAK,WACLtC,mJAiBSD,6BACP6L,sDAKD5L,KAAIuM,2CAEJvM,2DAKQC,YAWV,uCANE4G,kEAGDA,kCAcD,uEAHC2F,8BAiBD,6BAR4BhJ,6BAC3BvD,0DAC+BwM,cAAcC,QAC7CzM,0BAA+B,+CACcwM,cAAcC,UAC3DzM,0DAOH0M,yBAGAA,EAAUC,sBCnRD,YACP,iDAGA,yDAGA,8CCRwB,gBACVC,GAEd,SACAC,GAAoB,EACpBC,OAAehN,4BACfiN,kCAMUvH,kBAAiBU,GAC1BlG,uEAOK,8BACS8M,iBAAsBxH,GAClC,kFAIAyH,UAEAF,YAMDA,YAGK,8BACSC,oBACZ,4DAIAC,UAEAF,YAKDE,+CAMD/M,YAGIwF,SAAQ,gCAGC,qBAEXU,oBAIF8G,kBCpEJ,oBACc9G,qCAGW,KACjB,iHAUC+G,GACP,yCAIA,yCAIA,2CAUA,qCAJ6B,YAC5BC,yCAOD,MAAWnN,qBACX,uCAIA,kBC1CF,0DAKyB,KACjB,uHAWN,2CAIA,kDAIA,4CAIA,wCAIA,+CAIA,2CAIA,gDAIA,+DAIUoN,IACTA,MAGDpN,2CAIAA,0EAIAA,iEAIAA,oCAIA,mCAIA,mBCvEF,gBAAqBH,gBACAsG,kBAGnBnG,KAAKD,QAAeA,MACpBC,KAAKuF,OAASA,EACdvF,KAAKmG,MACLnG,KAAKuL,aACLvL,KAAK2B,WACL3B,KAAKqN,aACLrN,KAAKsN,8BAGLtN,KAAKuN,YACLvN,KAAKwN,MAAQ,2DAObxN,gJAcAA,+CAIAA,KAAKuL,sCACLvL,KAAKuL,QAAQkC,UAAY,iBACzBzN,KAAKuL,wCACLvL,2CAIA,WAAmBuL,QACnBmC,OAAanI,+DAeLA,OAAOoI,8DAbdpK,iBACAqK,OAAO,WACPC,iDAgBQtI,OAAOuI,WACdvC,wBAdD1H,KAAK,aACLkK,MAAM,WACNC,gDAiBAzC,gDAIcxF,kCACeA,4CAE5BwF,qCAKOxL,wDACiB,kBACxBC,gFAQDA,oFAQqC,MAAM,0CAK3C,mHAMCA,KAAIuL,+DAKHjJ,iKAGF,MACA,IAAK,YACL,IAAK,OACLtC,0BACA,MACA,QACAA,yCAKDA,qFAQgB,MACdiO,OAAetM,8DAKdsM,mBAKDA,MAGDjO,KAAIuL,iCAEJvL,oDAaD,qBANCA,kBAECA,8CAQF,gCAIA,gOAeEA,0FAKiB2B,cAkBnB,gCAVEA,gFAOD3B,oPAkBAA,qCAKDA,KAAKkO,4CAGLlO,6CAIAA,KAAKwN,MAAQxN,KAAKuF,aAClBvF,8DAIAA,KAAKwN,MAAQ,GACbxN,uCAIA,0DAIAA,KAAKmO,8BACLnO,qEAIAA,KAAKoO,8BACLpO,qEAKAA,4CAIAA,KAAKuL,cAAcgC,UACnBvN,6BAIAA,KAAKuN,YAAcpH,WACnBnG,4DAIA,qDAIAA,yEAIAA,iHAMyCA,yBACxCA,kDAGDA,KAAKuL,WACLvL,KAAKuF,wBACLvF,KAAKmG,qBACLnG,yBAIA,kDASA,wBAHCA,4CC3TH,oBACcuF,UACZvF,KAAKqO,qDAGkB,KACjB,+HAWN,iDAIA,+CAIA,mDAUA,+CAHClB,0CAOD,kGAME5H,YAGDvF,0FAOCuF,YAGDvF,kDAMAA,KAAIsO,OAEJtO,qBAKD,sDAYA,iDALc+M,6BACZlG,gDAQF,4FAIA,+BAIA,gFAIA,+BAGI0H,4DAIHvO,KAAIqO,yDAEJ/L,yGAOD,4EAMA,gDAIA,mDAIA,iDAcA,OAPCkM,sICzIH,OACCC,WAASpO,EACTqN,WAASrN,EACT0M,aAAW1M,EACXqO,eACAZ,gBACAH,iBACAH,aACAW,SAAY,GACZC,gBACAH,eACAU,gBACAC,sBACAC,qBACAC,oBAAkBzO,EAClB0O,4CCTD,kDAKE/O,KAAK+F,aACL/F,KAAKgP,SACLhP,KAAK0F,KAAO,SACZ1F,KAAK+M,QAAU,GACf/M,KAAKmN,SACLnN,KAAKuL,6BACLvL,KAAKiP,kBACLjP,KAAKkP,oBAAqB,EAC1BlP,KAAKmP,cAAe,EACpBnP,KAAKoP,aAAepP,0BACpBA,KAAKqP,SAAU,EACfrP,KAAKiO,WACLjO,KAAK8N,8BAIL9N,KAAK0N,SACL1N,KAAKsP,kBACLtP,KAAKwG,cAAgB,mIAWrBxG,KAAKwN,WACLxN,KAAKuP,eACLvP,KAAKoO,cACLpO,KAAKwP,kBACLxP,KAAKmO,cACLnO,KAAKyP,uHAYC1J,4BAAyB,GAAMzB,KACnC,IAAIoL,MAAaC,EAASC,QAC1B5P,wBAGDA,KAAI6P,yBAEJb,+CAKDhP,6EAUA,OAJAkD,EAAG4M,+BACH5M,EAAG6M,aAAa,qHAWhB,uHAQK,SAAWC,gCAEbhQ,yBAKHA,iIAIUA,0BAA0BoB,yCAElCkB,uHAMFtC,KAAK0N,QACL1N,KAAKsP,oCAA6CW,qBAAuBvC,wDACzE1N,KAAKwG,cAAgBxG,KAAKsP,eAAe3F,OAAS,EAAI3J,KAAKkQ,eAAiBlQ,KAAKmQ,aACjFnQ,gHAKAA,6DAKAA,uGAOEuF,0BAGDvF,+KAiBOoQ,SAAS,WAAaR,aAC1B5P,iDAGDA,oGAQCiO,MAIFjO,sCAIDA,4PAcCA,kNAWDA,KAAIqQ,oBAEJrQ,mFAQIuL,2CACJvL,mCAKD,iBAAe+F,WAIe,kCAC7B/F,wHAIAA,6HAIAA,iLAQCsQ,sEAKCV,mCAGDU,4BAIQV,yEAMPW,aAAaC,UAGbZ,qDAGoB,KACnBW,aAAaC,GACbA,2EAUUC,iEAGS,WACpBF,gBACAG,OACAJ,KACAV,2EAKWa,iCACZF,gBACAG,gCAOF,qGAQE1Q,KAAI2Q,SAEJ3Q,+DAQAA,0CAKDA,wGAOAA,qGASDA,KAAK8N,cAAgB/H,WAAW+H,kDAGhC9N,wHAIA,oCAeA,gDATAA,KAAKkP,yVAmBLA,8FAICC,EAAaW,0CAEAW,8BACZnF,EAAEsF,iEAKFhB,mFAIDV,gIAWOxB,ySAoBNxK,EAAG2N,YAAYC,IAEf5N,uLAGD,MACA,gBACA,WACAA,eACA,MACA,4CAODlD,KAAKuL,QAAQuE,mLAMW/J,6EAMxB/F,KAAKmP,mBAAmB4B,4IAYxB,IAGAlK,MAFAmK,yCAIQ1M,MAAWqF,IAIlB9C,EAFAoK,+FAqBD,8BAEAtH,EAASqH,EAAUrH,WAEf,QAAWrF,EAAIqF,gBAGjBsH,QAAwBtP,eAEF2C,IAAI,qBAExB2M,yDAcHjR,KAAI+M,gBACJ/M,wRAaDA,yIAOkC,QAAdkR,IAElBlR,KAAKuL,QAAQ4F,MAAMC,wBAAcpR,KAAKuL,QAAQ8F,kBAAoBpC,eAAe7L,oKAanFpD,KAAKuL,QAAQ4F,MAAMC,cACnBpR,KAAKuL,wDAELvL,KAAKoP,6BAA+B,uUAoC3BpP,KAAK+M,4BAHN/M,gEAgBCA,KAAK+M,+CAHN/M,6GAuBAA,KAAKgP,4CAQb,sKAeA,IAAIN,mDAIFA,YAKD1O,KAAI2Q,OACJ3Q,KAAKuM,yGASLvM,KAAK0O,WAEL1O,6LAcAA,KAAKD,2CAELC,8PAmBAA,KAAK0O,WAEL1O,KAAKuL,6BAELvL,qJAUAA,sPAiBD,iGAKGsR,oBAIFtR,gHASD,MAAYA,sGAYZA,yDAIcwN,4EAKdA,EAAQ+D,SAASvR,2EAOjBA,KAAKuP,YAAc/B,EAAQA,UAE3BxN,kNAgBA,IAAIiN,EAAO,QAENE,iCACQqE,8CACcC,cACxBxE,EAAIlG,YACJ2K,EAAKvL,IAAIwL,kJAiBZ,0EAKGnE,+GAgBHxN,KAAKyP,2BAELzP,KAAKuL,cAAc4C,+GASnBnO,KAAKwP,2BAELxP,KAAKuL,cAAc6C,0HAWViB,yDAMRrP,oCAEA,IAAI4R,EAAY5R,wIAUhBA,KAAKuL,WACLvL,KAAKiP,uCAELjP,wEAMAA,KAAKD,MAAMqC,cAAcyP,uBAEzB7R,yJAeD,IAAI0R,EAAO,IAAII,EAAO9R,eAEtBA,WAAW+G,uBAMX,kHAIkBgL,GAClB,mHAKA,kHAIkBA,GAClB,sNAYA/R,KAAKuB,SAAS,gCAEdvB,KAAKgS,yGAYJhS,KAAKuL,cAAciC,oDAOpB,IAAIY,uCAEepO,0CAEjB,yBAGCoO,0DAWH,IAAIrI,4CAyBHzD,6QApBCyD,mEAGC0D,6DAOCA,+CAgBJ,MAAYzJ,sIC7+Bd2P,sBAGA,8BAGE3P,2CAGuB+B,0BAEbkQ,EAAOlQ,+JAiBjB,IAAIoL,4FASG5H,GACP,wiBA6CA,mEAKA,uDClFF,gBAAoB1F,2BAElBmC,eAEAhC,KAAKgP,SACLhP,KAAKC,KAAO,GACZD,KAAK0F,KAAOA,EACZ1F,KAAKuL,SAAU,EACfvL,KAAKM,QAAU,GACfN,KAAKmN,SACLnN,KAAKuN,SACLvN,KAAKkS,aAAe,GACpBlS,KAAKmS,gBACLnS,KAAKoS,kCAELpS,KAAKwR,qBAELxR,KAAKwC,eAELxC,KAAKqS,mDAOJrS,wDAMD,6BAAgC,wCAGhCkD,gEAMAlD,sJAWAA,6IAUAA,oCAMC,IAFAA,8FAIAA,KAAKuB,mCAELvB,KAAKsS,gBAELtS,iFAMAA,cAAc,yGAMdA,KAAKuS,eAELvS,KAAKuB,4BAA6BvB,yFAOnCA,sLAaAA,8CAGCA,iKAeDwS,qGAGcd,oBAEZe,QAKDzS,KAAKuN,SAASgE,KAAKmB,MAAeF,+CAKnCxS,0SAyBAA,KAAK2S,gEAOapF,QAEjBvN,KAAKmS,cAAe,gBAGpBnS,KAAKkS,aAAe3E,0KAqBrB,MAAYvN,8DASZA,KAAKC,kHAOL,IAEA2S,4DAEW7I,mEAMV/J,qCAAsCA,sBAEnB,uBAClB6S,6HAcI,qHAKH,sCAEQ,uBAC0BD,qBAEhClB,qDAYH1R,sBAAqB,2FAMrBA,KAAKuS,eACLvS,+EAQDA,wCAAyCqG,4OAqB1Cd,EAASvF,WAAWoC,oIAaR0Q,qEAMJjO,uQAyBR,0CAGC7E,KAAID,0CACJC,gIAQDA,KAAKuB,4BAELvB,8FAQAA,KAAK+S,iBAEL/S,KAAKD,mCAELC,KAAKgT,cAELhT,KAAKuS,yCAELvS,KAAKuL,+GAUL,IAAIqG,EAAY5R,6FAShBA,iCAGC,2JAODA,4JCvZF,mCAGEiT,+GAOCpM,GAAkBqM,gDAKOC,2CAI1BF,aAA8BA,yCAEf,cAEdtR,EAAQyR,0BAGPvM,sBAIwBoM,oDAI1BA,aAA8BA,yCAEf,cAEdtR,EAAQyR,0BAGPvM,sBAIwBoM,iDAI1BA,6CAEUtJ,+BAERhI,4CAMKsR,EAAsBpM,uCAG7B,mFAQOA,yBAGP,iBAEU8C,kCAGP9C,WCpEL,iCAGE7E,SAEAhC,KAAKqT,YACLrT,KAAKsT,YACLtT,KAAKuT,aACLvT,KAAKwT,gCACLxT,KAAKyT,gCACLzT,KAAK0T,UACL1T,KAAK2T,iCAEL3T,KAAK4T,kBAEL5T,KAAKiI,oBAAoB,kBAEzBjI,KAAKoF,qBAAqB,WAC1BpF,KAAKoF,qBAAqB,iBAC1BpF,KAAKoF,qBAAqB,oBAC1BpF,KAAKoF,qBAAqB,0BAC1BpF,KAAKoF,qBAAqB,cAC1BpF,KAAKoF,qBAAqB,oBAC1BpF,wHAKA,MAAS0D,qCACTR,yDAKAlD,KAAKuT,uBAAgC,eAErCvT,KAAKkB,UAAU,2CAA4CR,YAC3DV,KAAKkB,UAAU,yCAA0CR,KAAKV,OAC9DA,KAAKkB,UAAU,2CACflB,KAAKkB,UAAU,oBAAqBlB,sBAAsBU,KAAKV,OAC/DA,KAAKkB,UAAU,iBAAkB2S,iBAAiB7T,OAClDA,KAAKkB,UAAU,oBAAqB4S,iBAAiBpT,KAAKV,OAC1DA,KAAKkB,UAAU,aAAclB,mGAE7BA,KAAKkB,sDAELlB,uJAKAA,oKAqBCA,KAAK+T,uMAYGhU,MAAM6B,QAAQoS,uUAwBvB,IAAIpE,EAAMrK,gBAGT0O,qFAIc,iEAKZzO,EAAO0O,sHAIR,MAEA,IAAK,mEAQLlU,cAAc+G,+EASToN,kFAIJ3O,EAAO4O,4HAIR,MAEA,IAAK,sEAQLpU,cAAc+G,8EAWjBjH,qCAGC,+BAGCE,uBACAA,oFAKAA,uBACAA,2IAWAA,4LAOAA,8LAYD,sDAGCA,wCASC,2CAFAmG,EAAMnG,KAAKqU,sCACXrU,KAAK0T,6FAEL1T,qFAWA,2CAFAmG,EAAMnG,KAAKqU,0BAA2BC,WAAWrH,IACjDjN,KAAK2T,6FAEL3T,4iBAoCF,aAGUuU,gBACO3G,mCAEdhC,mCAEA4I,oEAIcjR,gCAEdqI,OAAe6I,yBAEfD,mNAiBH,IAAIvU,8BAGHA,SAAcyM,sBAEA9K,QAAQ8S,+EACQ,CAC5B,uHAYHvO,2GAMAA,4FAMAA,EAAIwO,mEAEJxO,EAAI3D,WAAY,+FAYf,IAAI2K,gGAMFnN,yEAEoDD,MAAM6U,mCAC1CtU,gBACduU,mKAKAA,kIASF,IAAInD,EAAO,wBACXA,EAAKiD,wBAELjD,6BAGAvE,OAAWuE,cAGVA,yCAWWoD,EAAK7U,GACpB,IAGAgG,IAHI2F,EAAU,GACd2I,SAAQO,2FAKP,kCAEwCxU,2FAMvC2F,EAAyD,8CAAoB3F,QAAQyU,6CAErFxP,qVA+BaxF,0MAiBf,MAAeyU,aACfQ,EAAYR,sFASXjR,sGASH0R,2BC1eAA,iBAEA,iCAGEjT,SAEAhC,KAAKkV,UACLlV,KAAK0N,MAAQ,GACb1N,KAAKmV,gBACLnV,KAAKoV,iCAELpV,KAAKqV,gBAELrV,KAAKsV,UAAY,aAEjBtV,KAAKuV,eAELvV,KAAKiI,oBAAoB,eACzBjI,KAAKiI,oBAAoB,qBACzBjI,KAAKiI,oBAAoB,mBACzBjI,KAAKiI,oBAAoB,yBAAyB,GAClDjI,KAAKiI,oBAAoB,4BACzBjI,KAAKiI,oBAAoB,yBACzBjI,KAAKiI,oBAAoB,kCACzBjI,KAAKiI,oBAAoB,8BACzBjI,KAAKiI,oBAAoB,4BACzBjI,KAAKiI,oBAAoB,yBAAyB,kHAKlDjI,KAAKwV,0BAA0B,MAAO,gCAAiC9U,KAAKV,OAC5EA,KAAKwV,0BAA0B,MAAO,wCACtCxV,KAAKwV,0BAA0B,MAAO,kBAAmBC,sBACzDzV,KAAKwV,0BAA0B,MAAO,mCAAoC9U,KAAKV,OAC/EA,+MAKsB0U,UACrB,MAAc,yDAEd9S,EAAU5B,WAAW4B,eAErB5B,KAAK0N,6DAEL1N,0DAEW0V,sDAGT1V,KAAI2V,uCACJ3V,8EAEkB0V,wBACjBE,mEAEA5V,KAAK2V,SAAWC,EAAQC,gGAQRC,0BACjBF,qEAEA5V,KAAKmV,WAAaS,EAAQC,uDAK3B7V,KAAKmV,oBAAsBY,qBAC3B/V,KAAKmV,WAAWrF,6CAChB9P,4JAKkBgW,wBACjBJ,mEAEA5V,KAAKoV,SAAWQ,EAAQC,mDAKzB7V,KAAKoV,kBAAoBW,qBACzB/V,KAAKoV,SAAStF,6CACd9P,sNAUA,MAEA,sDAEA,8EASDA,KAAKkB,UAAU,8BAA+BR,KAAKV,OACnDA,KAAKkB,UAAU,mBAAoBlB,eAAeU,KAAKV,OACvDA,KAAKkB,UAAU,0CACflB,KAAKkB,UAAU,mBAAoB+U,6FAEnCjW,KAAKkB,iDAAkDR,wIAWxD,IAAIuM,EAAO,kHASQyB,4BAElB1O,0BAGCA,wFAQE0E,gBAAwBwR,GAExBC,MAAwBzR,GAAiC,6TAUtC,CACtBqN,QAAWzR,4CACX8V,aAAsB9V,QAAQoU,WAAepU,2BAA6BgV,+BAC1Ee,aAAWlQ,qBAAwBgQ,cAAuBzB,mBAC1DiB,iEACA3G,iLAaQ7I,GACT,oFAEAX,EAASW,0NAgBTnG,iCAEAmG,wEAGInG,sDAEFkD,EAAGoT,qDAGF9Q,EAAOmQ,SAASxE,MAAMoF,kEAAoF/Q,EAAOuM,MAAQ,GAAOvM,EAAOuM,MAAQ/R,KAAKkV,OAAW,4IAO/JhS,EAAGiO,MAAMqF,oQAQetT,GAC3B,MAAaiD,mBAEbsQ,yDAEUN,yEAIS1F,8BAChBnF,EAAEsF,6HAMFtF,EAAEsF,iIAUH6F,aAAsBC,mKAgBxB,IAAI7P,EAAS,6BAGZ,MAEAA,2BAICV,YAEAX,4DAGiBmR,YAAYxQ,YAEVyQ,IACjBA,0CAUOzQ,KACX,8BAEAU,EAAS,yGAQPsP,oEAAWnW,sKAUX6G,2CAKCA,uCASH,IAAIsP,KAEAD,EAAa/P,wEAOhB,MAAe,mCAEf0Q,EAASC,6DAGTD,2KAYD,2CAGCrR,UAEAW,EAAI4Q,eAEJ/W,KAAKgX,uHAON,2CAGCxR,UAEAW,EAAI4Q,eAEJ/W,KAAKgX,sHAON,0BAEuB,wBAErBhX,KAAKiX,mLAaPpQ,EAAS,YAECsP,+IAOGnW,yDAKHyF,6BAEPoB,iCAUHqQ,wCAGCA,EAAalX,KAAKmX,0GAUlBnX,uFAQD,mFAOCmG,EAAIlG,yHAMJiX,EAAalX,KAAKmX,wEASjBhR,EAAIlG,KAAKD,KAAK0N,OAAO1I,6DAOvBhF,KAAKoX,sDAML,+CAIuBC,WAGbxS,aAAmByS,aAE3B3S,eAA2B1E,yBACZsX,aAA+B1S,0VAuChDgC,EAAS,YAECsP,qHAQPtP,iGAYY6K,mMC/iBF8F,wBCQf,OACCC,IDPD,SAAavT,OACZ,0CAEAmD,oBAGC,MAAW,kBAGV,wFAEA,MAEA,gGAEA,6BAGY5B,YAAcnB,sBAExB+C,2FAGF,kBAGI0F,2CAIgBpL,OACjB,6CAEA,MAEA,gBACA,WACAgK,WAID5G,0DAIF2S,qDASFA,EAAeA,oDC9CftQ,KCRD,gBACC,IAAIsQ,oBAGH,MAAW,UAEJvR,qBAEN,MAEA,yFAEA,MAEA,iGAEA,mCAGqBwF,QAEnB5G,sCAIF2S,gBAKFA,EAAejQ,eAAeiQ,OAAoB,2BDrBlDC,IETD,gBACC,SACApQ,OACkB,wBAEjBqQ,UAAW,OACXC,YACAC,iDAIAF,UAAW,OACXC,YACAC,2CAIDrJ,OAA2BA,iCAkC1B,IAAI7C,mCAGH,WAEO,iBACYjK,OACjB,6CAEA,MAEA,gBACA,WACAgK,cAKAoM,QAAQpM,EAAIhK,MACZqW,kDAQDpM,EAAQ7E,KAAK2K,QAEb9F,sHAjDKzF,QACN,0BAEA,MAEA,2BAEA,MAEA,0BAEA,MAEA,UACAoB,iBA4CF,MAAU,IAAI0Q,gCAIZC,iCAAkBtW,EAAQuW,UAAUC,6EAatCF,SAEAE,YAAcF,kGFlGdG,KGRD,WAAoBzW,KACnB,IACA0W,IAAoBA,oBACpBC,mDAQC,SACAC,EAAS,mIAMR,IAAI5M,OAEAmB,kCAGFnB,OAAeD,mBAAqB8M,kJAMpC7M,2BASH8M,yBAAyBC,KAEzBA,EAAU,mFAhCXJ,EAASK,sBA0CRC,4BAKI,WAAqBC,yBAGvBP,uCAIAA,iCAEwB3W,oCACvB8D,YACA9D,SAASmX,WAAU,UAjEZ/Y,kCAoENuY,uBAMJA,qGAYA,IAFA,MAAU,IAAIS,wBACH,oFAKQT,EAAU,0BAA0B,sDC7FzD,wGCIA,iCAGEvW,SAEAhC,KAAKiI,oBAAoB,yFAEzBjI,KAAKiI,oBAAoB,6BAEzBjI,8FAKAA,+MAkBA,OAAmB,0BAgBlBiZ,qBAGCA,uFAOD,kFArBEjZ,qPA+BeA,2FAOjB,yBAGCwU,8JAWavU,EAAMiZ,IAAYC,KACjC,eAAuBpD,4CAEvBoD,EAAWA,oCAAmCzT,YAE9C0T,EAAOpZ,2CAKLwD,YAAYA,0DAGX6V,2BAA2BD,wFAQ3B7N,EAAQ4F,oKAeV,gBACAnR,0DClIH,gBACC,aACAsZ,kGAGAC,gEAGqBxH,SACPyH,EAAKzH,oGAQlB,IAAIA,EAAQ7O,EAAGvB,iBACNP,OAENkK,oCAGDA,mBACAA,gDAMSzF,sCACPyF,0CAID,gCAKCA,0CAID,MAEA,OACA,iCAKCA,iDAaFmF,0BAA2BnF,kCAG3BmO,wFDoEJC,wBC1IeA,EAASC,YAAcC,ECatC,IAAIC,SCPJ,oBAEC,wDAGAC,EAAM/J,oBAAqBgK,gDAG3BD,uBACM3I,6BAEH4I,6GAGA3Y,EAAMA,WACN0Y,+LAOGnY,WAA6B,6GAmBnCmY,EAAMrJ,iBAAiB,6DAIbuJ,iBAGRC,IACA,cAGAC,IACA,MAEA,QACA,QACA5O,0CDhDF6O,SERD,SAAkBzI,WACd,QAAqB0I,WACrBC,iCACA1Y,SAAe2Y,MAAAA,uFAGfC,OAGAT,EAAM3I,MAAMqJ,gBACZV,EAAM3I,MAAMsJ,cACZX,EAAM3I,MAAM5D,cACZuM,EAAM3I,MAAM3D,4CAEZsM,iKAMY1Y,EAAMA,uNA4BDsZ,sEAjBbZ,EAAMa,0BACNb,EAAM3I,MAAM5D,OAAS,2DAIhBmN,SAASE,qBAoBlBd,EAAMrJ,iBAAiB,6PAqBfyJ,IACA,WAEK,iFAGCtJ,mBAGN,WAEK,qEAECiK,gDAGN,MAEA,iEChGZ,uCAECR,wEAGMtK,aAAa,OAAQ,2FAOAgK,4EAS3BD,uBACM3I,6BAEH4I,6GAGA3Y,EAAMA,WACN0Y,gPAeFA,EAAMgB,0DAGNhB,EAAM3I,uGAwBG6I,SACR,QAEAC,IACA,cAGAC,IACA,sFAQA,MAEA,QACA,QACA5O,gDC5FH,oBACC,0DAGMyE,aAAa,OAAQ,8CAGAgK,wHAa3BD,uBACM3I,6BAEH4I,6GAGA3Y,EAAMA,WACN0Y,kMAOGnY,MAAQ2Y,sKA8BJN,SACR,QAEAC,IACA,MAEA,QACAC,WJzDFa,OKZD,SAAgBrJ,WACf,WACAsJ,iBACA3N,eACAgN,iCACAY,wFACAnB,kCACAoB,gCACAC,gBACAC,EAAY,GACZC,KACAC,KACAC,EAAe,GACfC,UAEAC,qCAUCxb,2BAICsF,8CAESmM,qHAYI,8EAGK7K,mBAInB,8BAIY,CACV6U,cACA/Z,cACAga,0GAUQ5W,GAGT6W,UACAC,mFAU6Bla,0CAOzB+Z,cACAlH,SACAmH,oFAODha,iDAUA+Z,qDAUQ3W,GAGT6W,qCAKMxa,eAENsa,wDAUQ3W,uBAQRgV,0CAEgB+B,8IAanBV,IACAE,6FAUe/P,YAEVrI,iBACW6S,+GAEXhR,SACF7B,oDACAA,EAAG6Y,WACH7Y,EAAG8Y,eAAYjX,8EAGf7B,EAAG6Y,gIAaDE,EAAWlX,GACX+U,WAEAoC,oDAcAnX,8DACG,WAAgBoX,oCAEnB/a,UAAgB,GAChB8B,yJASFkZ,8BAEG,OAGJrX,gGAaoC,gEAOxBA,qNA0BNsX,WACiBC,6CAUjBC,uIAmBGxK,gCAMFhN,iBAODmX,eAIAb,0EAiBK,qCAMbJ,MAEQpU,sBAIK,mLAsES0E,0SAwBvBuO,EAAM/J,oBAAqB,QAE3B+J,EAAM3I,MAAMsJ,cACZX,EAAM3I,kDAEN2I,2BACM0C,6BAEHzC,6GAGA3Y,EAAMA,WACN0Y,uNA1FQyB,SAEV,yBA2GCkB,6EAUA,kCAGGpC,kDAEF/O,0DAOD,MAEA,kCAGG+O,6DAEF/O,qDAKEoR,yBAMH,MAEA,QACA,QACApR,iDAEAA,yBAGA,UAIC2Q,QAKD,cAGAU,IACA,MAEA,OACA,oCAIGC,2DAvHJrM,gBAEA,IAAIsM,0JAWJC,+BA8GEC,6DAQAC,IAEAL,mGA/KAM,mCAEAA,uDAQD/B,EAAO/J,MAAMhD,WAAkBhL,uDAG/B+X,EAAO/J,wEAMNiL,0EAwKHlB,iCACOpL,2IAQKlN,yDLxjBZsa,aMZD,oBACC,WACAlC,iBACA3N,eACAgN,iCAEAY,mEAEAnB,kCACAoB,gCACAI,eAGA6B,QAGArD,EAAM/J,oBAAqB,gCAG3B+J,uBACM3I,6BAEH4I,6GAGA3Y,EAAMA,WACN0Y,oIAqBDqD,0EAQDld,2BAICsF,8CAESmM,yGAcP7K,mBADiC,SAAlBuW,gMAkBlBlK,SAICA,uFAU+BmK,8DAEtB5T,UACP6T,sUAmBEC,oFAgBJC,EAAS1N,qDACAiM,6BAGRyB,0DASMP,+DAMK,uBAGVlY,EAAK0J,MAAQsL,EAAa0D,kBAAoB1D,EAAa0D,kBAAkB9b,QAAaA,iBAC1FoD,EAAKpD,MAAQA,EAAMA,uEAGNA,UAGAoD,mBAGP3D,wIAcuBsc,YAAYxC,qEAkB7ByC,gCAGApS,QAEVrI,KACHA,kFAEAA,EAAG6Y,uBACYhX,EAAK0J,QAEjBgC,mGAQF2L,8BAEG,iBAGWlZ,kBAGd4W,6MAuBkBuB,SACnBhO,UACAyM,EAAMnY,cACNic,wDAMAvQ,EAAeyM,6FAgCH/U,iUAzQE8Y,mFAKhBzB,uGAsSC,oBAC6Bf,cAE1BhB,kDAEF/O,uCAICoR,wDAWCrC,6DAGF/O,qDAKEoR,sBAMH,MAGA,gBAEApR,iDAGA,cAGA4Q,IACA,cAGAS,IACA,MAEA,QACA,QAEArR,kFAOQ0O,SACR,KAAK,GACL,KAAK,GACL,KAAK,GACL,gBAEA,QACA,cAGA8D,+JAgBD,QACAC,qBA7IWC,WAAW,oEAKrB9C,EAAO/J,MAAMhD,WAAkBhL,iBAE/B+X,6FAuID+C,qGAYUnE,4CAIYvO,+CAIvBuO,qBN9aAoE,KOhBD,SAAcxM,WACb,MAAW1R,KACXuL,IAAeoJ,aACfhT,EAAQ+P,aACRyM,EAAW5S,wCACX6S,EAAO7S,EAAQ8S,sOASPC,yBAEJJ,yHAKIlC,4UAGJkC,icAaH,mEAKWzN,2CACVnF,EAAEsF,yJAUQH,sCACVnF,oBACAA,EAAEuP,4CAKH0D,kHAcDhT,8FAKAiT,QAAkB/D,cAGlByD,EAAKnO,aAAa,WAClBmO,EAAKnO,aAAa,SAAUqO,2CAE5BF,+DAGGnE,6GAGA3Y,aACAod,4IAaH7c,WAAiB8c,8DAML,uHAYa,8BACjBnT,mBAENoT,OACA,cAGAA,OACA,cAGAd,KACA,MAEA,QACA1D,oBC1IH,oBACC,IAOAyE,MAPcjN,eACdgB,WAAaqH,uEACb6E,gFACAC,YACAld,+FAOC,uDAEwCwB,gIACxCya,yEAMDkB,EAAO3N,MAAM4N,oBACbD,EAAO3N,MAAMpD,MAAQ,IACrB+Q,EAAO3N,qDAGP2N,YAAiBjB,4FASjBmB,EAAI7N,MAAM5D,gDAEVyR,gCACU7Q,cAEP4L,8DACG,+CAEH3Y,UAAgB,GAChB4d,gHAQHzT,EAAQ4F,oDAIRxP,EAAQ4P,KAAKmB,eAAe/Q,4BAK5Bqd,oBAEAzT,6MAWQ4F,+JAWN7F,oBACAA,6BAEAqT,KACAM,yEASA,2BAEAD,mDACA,MAEA,2BAEAA,mDACA,MAEA,eAEAE,IACA,cAGAhF,kEClHH,WAAyBiF,SACxB,mBACArF,+CAEAsF,0DACAC,0CAGAvF,0BACM3I,6BAEH4I,6GAGA3Y,EAAMA,WACN0Y,8HA2BCwF,8BAEoBD,GACpBvF,aACAA,mBACAuF,GAAgB,EACTD,6CA1BGzd,yCAIP4d,6BAGJvf,oBACFmf,+CAKKK,yNAyCW,IAAblU,EAAE0O,SACJ4D,EAAQ6B,+BCzEX,iCAGEzd,SAEAhC,KAAK0f,aAAc,EACnB1f,KAAK2f,qCAEL3f,KAAK4f,aAAc,sBAGnB5f,KAAK6f,wDAGL7f,KAAKoF,qBAAqB,UAC1BpF,KAAKoF,qBAAqB,yDAG1BpF,KAAKoF,qBAAqB,cAC1BpF,KAAKoF,qBAAqB,qBAE1BpF,KAAK6I,sBAAsB,qCAAsCnI,KAAKV,OACtEA,KAAK6I,sBAAsB,4CAA6C7I,OACxEA,KAAK6I,sBAAsB,oBAAqBiX,yBAChD9f,KAAK6I,sBAAsB,iCAAkCnI,KAAKV,OAClEA,KAAK6I,sBAAsB,eAAgB7I,KAAK+f,aAAarf,KAAKV,iFAElEA,KAAK6I,+DACL7I,KAAK6I,mEAEL7I,KAAKwV,0BAA0B,OAAQ,WAAYxV,+GAEnDA,KAAKwV,0BAA0B,OAAQ,iCACvCxV,KAAKwV,0BAA0B,OAAQ,aAAcxV,oBAAoBU,KAAKV,OAE9EA,KAAKwV,0BAA0B,OAAQ,oBAAqBsK,yBAC5D9f,KAAKwV,0BAA0B,OAAQ,iCAAkC9U,KAAKV,OAC9EA,KAAKwV,0BAA0B,OAAQ,eAAgBxV,KAAK+f,aAAarf,KAAKV,OAC9EA,oQAMAA,KAAKkB,UAAU,wCACflB,KAAKkB,UAAU,mBAAoB8e,wBACnChgB,KAAKkB,UAAU,qBAAsB+e,sBAAsBvf,8EAE3DV,KAAKkB,UAAU,oBAAqBgf,oBAAoBlgB,OACxDA,KAAKkB,UAAU,sBAAuBif,uBAEtCngB,KAAKkB,UAAU,2BAA4B4e,yBAC3C9f,KAAKkB,UAAU,8DACflB,KAAKkB,UAAU,sBAAuBlB,KAAK+f,aAAarf,KAAKV,OAC7DA,iOAWA,yBACSA,aAAa,gBAEnB0R,8EAMe3R,MAAMqgB,OAAO,IAEP,mBAAVC,gGAQVjE,yIAmBHpc,6IAYQA,8DAOTmN,8EAMA,8BAGGuE,sGAW8CA,uHAiBjD,8BAGGA,uGAW8CA,2GAiBjD,oCAGGA,0BAMFK,qGAaD,oCAGGL,0BAMFK,kGAaD,oCAGGL,0BAMFK,sBACehS,MAAM6C,6FAYtB,oCAGG8O,0BAMFK,sBACehS,MAAM6C,kGAWFuD,wCAIf,IAAI7B,0CACcA,eAENhE,QAAQggB,MAAQrd,4FAIjByO,+GAiBL,0BAET,QAAevE,yHAKDuE,uVAuCH,CACZ6O,QAAO,oIASCV,6BACPra,qHAID,qBAGAA,6BACA,UAEK,WAC2B,IAA7BD,EAAOQ,mEAEA8Z,gCACPra,gDAEO+a,2PAmBX,MAAI7O,OAAYgO,oBAGXE,kBAgBJ,0BAXSlO,+BAIF8O,2DAMPxF,kLASA,IAAItJ,OAAYgO,YACZld,mBAA6B6D,oCAGjCqL,mBAAyB0I,cACpBqG,oHAGqB,0FAI0B1gB,+FAUpD,+NAYO2gB,OACLpV,8IAeEqV,+DAGchG,qGAQH,mDAIF/X,4BACb,MAAc5C,WAAW4C,kHAEzBge,EAAQlP,iCAGCmP,iBACH9gB,MAAM6C,WAAW2I,QAAQuV,eAA8BD,gHAO7D,MAAe7gB,WAAW4C,mHAE1BoY,IAAcrG,aACLqG,iHAIKyD,iLAKSze,oEAKjBD,MAAM6C,WAAW2I,QAAQwV,gBAAiCC,+HAUjE,IAIAC,aAHAC,GAAY,gGAgKXlhB,gHA1ECkhB,gDACA,MAEA,yIAeQvB,kBACFA,4KAQwC5f,qKAO9CkhB,EAAavP,EAAKnM,yEAzGXma,cAAgBhO,kPAQtByP,sDAOK7gB,aAAa8gB,QAAS,wDAMtB3B,qHAMQ,QACZlU,4HAOD4V,iBACA5V,6CACA4V,yBACAE,kGAWM3B,oBACFS,8JA4DqBmB,aAkBxBhf,8GAjBAiJ,EAAQuE,uIAGRvE,EAAQsF,eAGRwQ,4CAMClL,kEAeH,OAAO,SAEPnW,0FAYW,+CAGA0R,8CASLpR,QAAQggB,gCACVhgB,QAAQggB,4EAOGiB,oBAAoB7P,sCAQvC8P,EAAK9a,kBC7tBL8a,YAEA,MAAMC,gBACa1U,EAASvK,KAC1BxC,KAAK0F,OACL1F,sDCHF,MAAM0hB,gBACclf,SAClBxC,KAAK2B,QACL3B,KAAKwC,gBACLxC,yCCCF,8BAEaD,GACXiC,wBAGAhC,KAAK2hB,sCAGL3hB,KAAKiI,oBAAoB,oBAAoB,sLAmB3BzC,gCAElBxF,YAAcwF,MACdxF,kBAEA,WAAcA,YAAY4hB,wIAGJra,2BAItB,+FAMW,8DAIHvH,KAAKD,0DAQX,qBAEAkN,2CACA,gBAGAA,6BACA,qBAGAA,4CACA,UAEK,iBAGJA,OADOlN,yKAQekN,0DAMNzH,oMAenBqc,OAICpT,kJAwBA,GAlBAqT,EAAU9M,2EAOR8M,WAAgCtU,uBACPuU,eAGxBF,0CAQK,gBAGAG,2BACPF,sKAeFG,4GAaqB1c,YAED,cACHjB,EAAIiB,EAAOgI,iCAGRjJ,oCAQlB,wCAKEiB,aACFA,wIAiBME,SAASyc,QACZnV,OAEEtH,eAEJsH,+FAMc,4CAQjB,IAAIA,uPAWW/M,mBAAmB+U,+HAQd5O,mBAGlB,IAAK,QACL,WAAOnG,KAAKwF,OAAO2c,UAGnB,IAAK,OACL,WAAOniB,YAAY+U,8HAUhBtP,UAASU,+CAGA,WAEFT,MACV,sBAEA0c,EAAWrb,+CACX,qDAKqB2a,EAAa/V,EAAI0C,QAAQ7H,wHAS/B,kEAOjB,sCACA6b,WAAoBtM,cAAc,SAClCuM,6DAEAC,0CAAyDC,qBAAqB3c,uDAGxE0c,sBAAuCA,+LAOvCE,+BAAiC,yMAQvCziB,sBAAsBA,0MAIR,sGAINmG,qBAENkc,kDACA,kBAGAC,iDACA,iBAGAA,gDACA,MAEA,UACA,sCACAtiB,0LACAsiB,mDASFviB,+IAQA,qBAGQ4hB,2CACPe,EAAOC,0GACPD,EAAOE,QAAU5iB,iLAEjB0iB,WAAkB1iB,iGACX6iB,wFAGNH,yKASyBI,SACvBlC,mEAIF,qCACiBrb,EAAO/C,4FAExBwY,EAAOhD,qCAGAgE,YAAmBra,oGAOJ8L,MAGtBzN,mMACK+iB,iBAAiBxd,EAAO/C,UAAU6L,uBAAwB2M,EAAQ,CAAC,kEAE9DxY,UAAU6L,QAAQK,8BACLnJ,EAAO/C,UAAUmS,2JAQlCoO,kKAaR/H,uDAGMlL,cAAc,+BAEX2S,uCACF9gB,QAAc8gB,4HAGnBjO,wIAMFwG,kBACAA,YAAmBxG,QAEnBoM,iDACM9Q,UAAU+N,IAAI,yBAA2B1X,mDAG1B,2BAGrBnG,KAAK+iB,sQAGLnC,wCAKoBza,OACpB,IAAIya,yCAEJA,+CACA5gB,wLAKmBmG,wGAKPV,sDAIVF,wBACQoG,sBAIPyO,SAAS,WACR,OAAOzY,GAERqhB,oBACC,OAAOzd,EAAOQ,kBAEf4O,sBACC,OAAOqG,GAERiI,qBACC,OAAO1d,kBAERmH,mBACC,OAAOvG,EAAI3D,UAAUkK,WAEtBgO,kBACC,OAAOvU,aAERE,aAAa,WACZ,wBAKed,kFAGTuK,yBAGA/P,4JAKN4B,oBACA,MAEA,2BAEAA,KACA,+BAOkB2f,KACnBtG,6BAEmBrZ,IAGVuhB,iDACwC,sOAO/CljB,mBAAmB0U,WAAqC,yGAEtDvO,EAAI3D,UAAU2gB,KAAK7iB,QAAQoU,SAAS2B,WACtC2E,EAAO1E,aAAanQ,EAAI3D,UAAU2gB,KAAK7iB,QAAQoU,SAAS2B,yPAWtC+M,wEAIpBN,qDAQe5e,8CAGlBmf,6CAEOA,EAAOrH,kBAGPtN,MAAwB8T,GAC/B,yHAE+Bte,iEAO7Bof,qCACAC,kBACA/V,cACAgW,2BACAC,2BACAC,uBACAC,yBACAC,aAAe,YACfC,cAAgB,aAChBC,eAAiB,cACjBC,gBAAkB,eAClBC,cAAgB,aAChBC,8HAMIC,EAAY1gB,OAAO2gB,oBAEvBC,iEC5lBJC,sBAEA,IAAIC,gNA6BKC,yBAG4B3Y,sCAGlB4Y,2BAOZ,gDAKIC,8DASC,oFAEV9iB,EAAQ8iB,qCACE,wJAiBDA,0DASJ,gDAKIA,qFAUA/f,YACDggB,gGCjGV,iCAGE1iB,4BAGAhC,KAAK2kB,iBACL3kB,KAAK4kB,uBAEL5kB,KAAK6kB,qFAKL7kB,KAAKiI,oBAAoB,mEAGzBjI,KAAKiI,oBAAoB,0BACzBjI,KAAKiI,oBAAoB,mCAEzBjI,KAAKoF,qBAAqB,gBAC1BpF,KAAKoF,qBAAqB,2BAC1BpF,KAAKoF,qBAAqB,sBAC1BpF,KAAKoF,qBAAqB,wEAE1BpF,KAAKoF,qBAAqB,0BAC1BpF,KAAKoF,qBAAqB,0BAE1BpF,KAAK6I,sBAAsB,yCAC3B7I,KAAK6I,sBAAsB,yCAE3B7I,KAAK6I,sBAAsB,iBAAkBic,0BAC7C9kB,KAAK6I,sBAAsB,qBAAsBkc,8BACjD/kB,KAAK6I,sBAAsB,2CAC3B7I,KAAK6I,sBAAsB,yCAC3B7I,KAAK6I,sBAAsB,uBAAwB7I,8BAA8BU,YACjFV,KAAK6I,sBAAsB,iEAC3B7I,KAAK6I,sBAAsB,iEAC3B7I,KAAK6I,sBAAsB,wBAAyBmc,sBAAsBhlB,mFAE1EA,KAAK6I,qEACL7I,KAAK6I,iFAEL7I,KAAKwV,0BAA0B,SAAU,0DACzCxV,wTAMAA,KAAKkB,UAAU,cAAelB,KAAKilB,4HAEnCjlB,6CAA8CklB,0CACzChkB,UAAU,mBAAoBikB,mGAGCC,sJAQfrlB,yLAWlBuC,2EAFAtC,+bAuCFA,+DAQYA,4CAGZ,mQAUAA,kYA2CMqlB,mNAcP3X,iCA2FCkQ,yJArFAlY,kZAiB2Bc,ybA4BDvG,yGAStByF,eAGA,QACA4f,kDAOFnE,2HASAA,mDAGKoE,iBAIP,OAAO,wCAURvlB,oEAGiD+W,uDAGjDrJ,IAAesV,cAMZzd,qJAIM,QAGRA,sFAC4B,iBAG5BigB,iCACc1V,+EAIR,WACG/P,yDACEohB,EAAKphB,8UAUf,MAEA,IAAK,WACLwgB,EAAShb,4IAOqCjF,gDACnC6gB,EAAKphB,8MAIK,IAAV4B,QAAkBA,6CAU3B4e,EAAO,2BAIP,4CAGA,iDAGA,iHAgBFta,qBAFAA,IAAgBF,WAAW0f,mHAQ1B,wRAUAtE,EAAK/Q,SAAS,2BAAkCrK,8BAC/C2f,EAAc3V,aAAa,uBAAsBpO,8LAWlD+jB,yCAGwCpa,UAC7BtL,yLASE,mBAIZuQ,8DAKY3O,QAAQ+jB,8BAGtBpgB,gLAIGA,EAAOQ,WAAW6f,yBAIiB,iBAAnCrgB,EAAOQ,WAAWsf,8FAGY,mGAKhCK,2YA0BDF,iDAIGzO,KACG6N,+8BAgDN5kB,ulBA4CO0N,EAAOhI,EAAM/D,EAAOsE,sBAGzBxB,iQAiCJ,iBAAiBohB,0CAkCjB,+EAtBWC,gBAKRR,KAHQtlB,0CAA0C6lB,EAAOnY,QAG5C,SAASzN,GACrB,OAAO8lB,EAAOD,QAAQD,EAAOngB,MAAMmgB,EAAOlkB,MAAO4D,6NAmBvCugB,qBAGNrgB,4CAIMogB,+BAQJG,EAAKC,mBAGZD,IACFnf,OAAcme,oBAGZiB,yMAqBDpf,EAAOE,kCAEA,OAAO8e,oEAIPngB,wBAIKX,qCAWd,oKAYC2I,GAAS,sCAGKmY,cAIb9T,2BAAQ/R,KAAK8d,WAAWhZ,WAAWyG,GAC3Bsa,kGAUR7lB,uUAyBgCuF,8BACD5D,4GAO5BukB,qCAKY,kCAIhBxY,GAAS,oFAWL3N,MAAM6C,yBAAyBuD,wKAuBjCnG,KAAKmmB,yGAILnmB,WAAW4B,QAAQwkB,yIAYnBpmB,0CAEFqmB,2HAYG1hB,OACGwB,kJAeP,4CAMG1B,wGCt2BLshB,YCuBA,OACCO,UC1Bc,gBACd,OAAOtmB,KAAKumB,+CD0BZnb,KE3Bc,gBACd,qBF2BA+O,yBG3BA,sBAD2BhJ,iBAAmB,gBAClCoV,aAAavmB,KAAKwmB,6BH4B9BC,MGzBD,SAAe/U,OACd,IACAgV,QADIC,EAAWC,yBAGXC,wDAG0BC,iDAG9B,SAASH,6DAYT,IARAD,GAAuB,QAAiBK,2CAIxCC,EAAUN,sCAIHO,sCCzBP,WAAyBD,WJ6BzBE,KI1BD,SAAcxV,OACb,mBACAyV,+BAEAzL,MACKhY,8CAKJgY,gBAA6B0L,4CAK5B,IAAK,SACL1L,EAAQ2L,EAAgB3L,MACxB,wDAWA/Z,gBAA6B2lB,sCAK5B,IAAK,SACL3lB,EAAQ0lB,EAAgB7f,IACxB,kEAUC6f,EAAgBpV,6HAenB/O,YAAelD,0DJjChBunB,MK3BD,oBACKrkB,yBAA4B,6BAG7BmkB,EAAgBF,YAClBK,EAAMH,0BAGJA,gCAIAtX,aAAa,0BAGf,IAAK,SACL7M,EAAGiO,MAAM5D,OAAS8Z,EAAgB9Z,YAClC,oCAGkCA,8BAKlC,IAAK,SACLrK,EAAGiO,MAAM3D,MAAQ6Z,EAAgB7Z,WACjC,yCC9BD,ODqCAtK,yELNAukB,UM5BD,gBACC,IAAI9lB,eACJ4J,IAAeoJ,4BAEf+S,IAAyBC,o2CAIrBD,GAAU/lB,gDAAoFA,KACzFoO,aAAa,0CAGsB,2DAC1CxE,4CNgBFqc,SO7BD,gBACC,IAAIC,EAAKrkB,OAAOskB,UAAYC,wLAOvBC,GAAexkB,qEAICykB,gEAQXtmB,6GPUVumB,aQ9BD,gBACC,IAAIL,yBAA8BC,SAC9BK,uCACAC,wDACAC,qKASeR,eAAqBM,8BAS9BxmB,yKRSV2mB,OS/BD,+GTgCCpK,KUhCD,aAAuCiB,GACtC,IAAIxd,eACJ4J,EAAUmG,eACVyM,uHAOAoK,sBAA4B,SAG5BrK,EAAKnO,aAAa,4CAElBmO,EAAKnO,aAAa,UAAW,sDAE7BmO,EAAK/M,sBAELxP,EAAQA,UAAgBA,kEAIK,CAC5B,6nBAGMkP,eC9BP,ODiCAtF,EAAQ4F,oDAER5F,kEVCAid,QWjCD,gBACC,8BAAmCpO,aAAe,EAClDlX,EAAKQ,+BACLgP,wCAEA+V,EAASpB,uDACD,UAGR,IAAGqB,gCAAH,QAIAxlB,2CAGAylB,mCACAA,EAAe/B,WAAW+B,MAAuB/B,gBAGjD/H,4CAKC,IAAK,SACL0E,IACA,MACA,mBACe5hB,+BAGN+C,QAAQ+jB,GAAQ,CACxB,UAAiBA,EAAO9e,yBAGxBoI,8CAGA,OCxCC,qCZmCH6W,SYhCD,WAA0BvB,KACzB,IAKAxI,QAAsCgK,uCAJtCtd,yDAGAud,iDAIAH,mCACAA,EAAe/B,WAAW+B,MAAuB/B,gBAGjD/H,kDAKC,IAAK,SACL0E,UACA,MACA,wDAIS7e,QAAQ2iB,SAAuB,CACvC,UAAiBA,4BACMsB,KAEvB5W,8GAWD,aACAgX,WACA,MACA,eACAA,cACA,MACA,cACAA,oDAQA,aACAF,gBACA,MACA,8DAISnkB,QAAQ2iB,sBACCA,8JAanB9b,4BAEAA,+BAEA,MAAY7H,uBAAuB,OACnCslB,EAAM7X,MAAMqJ,mDAEZwO,EAAM7X,cAA6B,IACnC6X,EAAM7X,8CAGN6X,eAAmB,cACnBA,eAAmB,qDAGnBC,8BACa9X,2CAGH,CACT,MAAezN,SAASqS,cAAc,OACtCmT,EAAS/X,MAAM4N,oBACfmK,EAAS/X,MAAM5N,MACf2lB,EAAS/X,aACT+X,2CAES/X,4BC3GV,2CDmHE,MAAezN,8BACfylB,EAAShY,MAAM4N,sCAEfoK,wCAEAA,sGZlFF5F,sBctCA,sBADsBpS,sBAAwBnR,gCACvC,IduCPopB,WexCc,SAAQ1X,OACtB,MAAO,skBfwCP2X,YgBzCc,gBACd,MAAO,4rBhByCPC,OiB1Cc,SAAS5X,EAAM2V,EAAiBlI,GAC9C,kBAAkBvc,+ECAf,mQAIJ,gBACC,6FASC,6BAMI4C,QACFtC,gBAAiB,QACjBiS,yECpBH,+DDOAjS,kTCJD,gBACC,eAAwB6S,4BAEfrQ,gBAEN1F,wCAEFupB,4BAAoCje,IACnCA,0DAIUoG,WAEPvL,gBAEFojB,EAAS9Y,2BAA4BnF,MAChCke,kBAGLD,oGAGAA,4FAKCvpB,kEAMGD,wDnBlBP,WoBdD,0CAKEC,KAAKoF,qBAAqB,aAC1BpF,KAAKoF,qBAAqB,mBAE1BpF,KAAKoF,qBAAqB,kBAC1BpF,KAAKoF,qBAAqB,wBAC1BpF,KAAKoF,qBAAqB,sBAC1BpF,KAAKoF,qBAAqB,4BAC1BpF,oJAGAA,KAAKoF,0DAILpF,uMAGe,+DAICuF,wDAGNA,EAAOQ,WAAW0jB,iBAC3BlkB,EAAOjF,QAAQ8iB,OAAOsG,gDAGbnkB,EAAOQ,WAAW4jB,qBAC3BpkB,EAAOjF,QAAQ8iB,OAAOvW,eAAiB+c,gBAAgBrkB,6EAIjCskB,sEAKvB,OAAc5jB,6HAOZT,+HAKD,MAEA,eACAA,EAAOqP,UAAYA,EACnB,iDAOD,OAAOrP,2RAiBN2Z,MACC5Z,8BAGU,qBAET,uCAGOrC,IAMT+C,qBAFAA,IAAgBF,oFAabvD,0CACiB+C,8FAWrB,wBAA2B6d,4CARtB1R,4KA2BJ,8BAX0BzL,0FAGrByL,iKAiBDoY,GACHC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,sCAGAC,cAGD,OAAO3F,wKAkBG4F,cACTxV,2GAKD,MAEA,eACAA,EAAYA,EACZ,uEChMHyV,eAEA,iCAGEtoB,SAEAhC,KAAKuqB,eACLvqB,KAAKwqB,gBACLxqB,KAAKyqB,aACLzqB,KAAK0qB,YAAc,sBAEnB1qB,KAAK2qB,mBAAqB,OAC1B3qB,kFAQAA,KAAK2qB,0BACL3qB,KAAKuqB,YAAc,GACnBvqB,KAAKwqB,aAAe,qBAEpBxqB,KAAK0qB,cACL1qB,KAAK0qB,cACL1qB,0BAEWoC,gDACXpC,KAAKD,8DAILC,KAAKkB,UAAU,mBAAoB0pB,uBACnC5qB,KAAKkB,UAAU,yCAA0ClB,OACzDA,KAAKkB,UAAU,uCACflB,KAAKkB,UAAU,oBAAqBlB,2BACpCA,0IAEe,yCACfA,KAAKkB,yBAA0BlB,qGAS3BwF,UAAiB,QAAQ,oBAIpBqlB,yIAUP7qB,KAAK8qB,qFAYJvlB,EAAOyJ,OAAOK,8BAChB/M,+PAoBAtC,0DAIAiN,yCAEAjN,KAAK+qB,cAEL/qB,KAAKgrB,sLAgBNhrB,KAAKyqB,gCAAkCF,mHAGvCvqB,KAAK0qB,iBAAmBO,4DACxBjrB,4NASIA,KAAKD,MAAMO,QAAQyU,YAAYmW,gBAAkBlrB,KAAKD,MAAMO,QAAQyU,YAAYrB,QAClF1T,KAAKoX,UAAUpX,KAAKD,MAAMO,QAAQyU,YAAYrB,QAG5C1T,KAAKD,MAAMO,2EACbN,KAAKoX,qBAAqB9W,mKAWxBkU,EAAMD,MAAMhR,KACdvD,KAAKoX,UAAU5C,EAAMD,MAAMhR,KAGzBiR,EAAMD,cACRvU,KAAKoX,YAAgB7C,MAAM3G,8IAcZnI,+KAMfF,UAAe4lB,6GAMe5lB,GAC7B6lB,qBAGiBD,OAAOE,0EAIzBrrB,qBAA0B2U,mBAI1BpP,gGAMiCjB,4JAMlB6mB,uFAOfnrB,qBAA0B2U,mBAI1BpP,qGAQKA,0QAuBK3C,2EAKI+R,yEAIUpP,+CAIAoP,oIAaJpP,aAEJ4lB,qCAEjB5f,yPCrRH+f,6BAEA,0CAKEtrB,KAAKwT,yCACLxT,KAAKiN,8JAKLjN,KAAKwV,gKASLxV,KAAKD,8CAA8CC,KAAKwT,yHAIxDxT,iCAAiCurB,sCAKjC,+FAqBA,gFAAO1kB,eAIHV,8BAcU,yCAbbA,EAAI7F,gBAAiB,8CAErB6F,EAAIqlB,iCAEJxrB,KAAKD,iBAAiB0rB,kBAEtBzrB,KAAKiN,aAELjN,KAAIgX,0BAEJhX,iCAQWA,UAAUsc,qBAEP6O,QAEdhlB,EAAI7F,gBAAiB,EAErBN,KAAK0rB,aAEL1rB,mHASQuC,uEAKQ0K,aAAa9G,YAG7B,wJCtGHwlB,0BAGA,sGAMyB5pB,EAAM6pB,gGAU9B9rB,SACC,OAAOE,KAAK6rB,OAAOzqB,IAGpBtB,WACC,OAAOE,KAAK6rB,OAAOne,MAGpB5N,aACC,OAAOE,KAAK6rB,OAAOtgB,QAGpBzL,UACC,OAAOE,KAAK6rB,OAAON,YAGpBzrB,eACC,OAAOE,KAAK6rB,OAAOC,cAAa,GAGjChsB,iBACC,QAAOE,KAAK6rB,OAAO7c,0CAGpBlP,YACC,YAAY+rB,OAAOnd,QAGpB5O,OACCE,KAAK6rB,OAAOlb,OAGb7Q,OACCE,KAAK6rB,OAAOvd,OAGbxO,SACCE,YAAY+rB,mBAGbjsB,WACC,OAAOE,KAAK6rB,yDCtDd,MAAMG,6BAGJhsB,KAAKisB,eACLjsB,KAAKgP,SACLhP,KAAKoB,IAAMA,EACXpB,KAAKksB,QACLlsB,KAAK0N,QACL1N,KAAKmsB,yCACLnsB,KAAKogB,OAASpgB,mDACdA,KAAK0F,aACL1F,KAAKosB,MACLpsB,KAAKiN,QACLjN,KAAKqsB,OAAS,GACdrsB,KAAKssB,aACLtsB,KAAKusB,YACLvsB,KAAKwsB,mBACLxsB,KAAKuN,SACLvN,KAAKoS,cACLpS,KAAKuS,6BAELvS,KAAKuS,+BAELvS,KAAKysB,gBAELzsB,KAAK0O,8FAIL1O,yCAGAA,sDAKCA,KAAKssB,UAAU7mB,iHAWhB,IAAIinB,EAAQhpB,8BACZgpB,mCAEA1sB,KAAKuL,kFAELvL,KAAKuL,yCACLvL,KAAKuL,sBAAsB,qCAC3BvL,KAAKuL,wFAGLvL,+DACKysB,aAAa5b,2MASdqb,qUAYHlsB,qJAMAA,KAAKuL,QAAQkF,iBAAiB,kBAC7BH,GAAM,gEAIHA,GACFtQ,mEAGK,4GASLuQ,2FAMAC,mBACCD,oDAOkBxQ,uHAOnBwQ,kGAIE,qBAIJvQ,yEAMEA,kBAAkBD,sPAWT4sB,EAAST,GACrB,IAAIU,EAAWV,gQASHlsB,KAAKksB,gBAETC,aAAa,KAChBQ,sIAIA3sB,KAAKqsB,OAAOO,IACd5sB,KAAKqsB,qBAGFrsB,+FAWNmG,EAAI7F,oCAIJ,IAAIL,EAAOD,oBAAoB,IAE/BmG,aAAelG,cAEIgN,iDAMjBjN,KAAKiN,KAAK4f,4CAMA7nB,QAAQmB,GAIpBA,gBAAoBnG,8MAQpBA,KAAKisB,aAAaa,iBAAgB,gJAcpB7sB,GAWd,yCAPCqC,0KAWD,MAAYtC,sCAIT+R,MACF/R,sDAGmC+sB,waAwBP,uCAIhBV,4CAKXrsB,eAAe6sB,2BAGGljB,8GAWpB,IAAI9C,KAoEJ,OAlEAA,EAAOE,0BAIJ/G,mCAEDA,KAAIssB,iCACMzlB,kQAOH0N,MAAMhR,IAAIyP,oBAGXuB,eAAiB0X,qVAShB1X,MAAM3G,mHAIL7G,UAAUwN,MAAM3G,+CAISqe,aAAalsB,2BAE3CC,KAAKisB,8JAKLjsB,KAAKuU,MAAMhR,sKAKCvD,KAAKuU,sIAOjBvU,KAAKuU,MAAM3G,oNAiBhB,IAAI/G,KAUJ,2EAJcV,iDAiBd,6BANCnG,KAAKssB,mBAAmB9X,6CAMlBwY,sEAYFte,2BAEGud,qNAKDK,UAAU7mB,wEAUfzF,2EAMDA,KAAIisB,sHAEJjsB,uEAMDA,KAAKisB,2GAIAvd,8CAEsB9L,kHAE1B5C,kIAMmBitB,oBAEZxnB,SAASU,IACb,qBACA+mB,yEAOGjgB,kBACJ,sFAOFjN,KAAKisB,aAAalsB,+KAOnBC,iHAIW,qCAIVA,KAAKiN,uBAAsB9G,gIA0B5B,yKAGY3D,YAOZ,OAJAxC,8EAOOmtB,YAOP,OAJAntB,4GAUAA,KAAKiN,uBAAsB9G,0BAI3BnG,yCAA2CoB,8CAEtCpB,4MAQLA,KAAKuL,QAAQ+K,6EAIb8W,uEAUAptB,uGAOCA,KAAKuL,QAAQuE,UAAUud,kCAGxB,IAAI,uBAA4BC,oGAQhC,OAJAttB,yJAcDF,kBACCE,oBAAoBuL,2HAWfgH,oKAgBNzS,YACC,OAAOE,KAAKoS,YAGbtS,uBAIAA,sBAEAA,cAEAA,6ICvnBD,iCAGEkC,SAEAhC,KAAKutB,kBACLvtB,KAAKsV,UAAY,uBACjBtV,KAAKwtB,yDAELxtB,KAAKytB,oDAILztB,KAAK0tB,uCAGL1tB,KAAKiI,oBAAoB,cACzBjI,KAAKiI,oBAAoB,kBAAkB,GAC3CjI,KAAKiI,oBAAoB,kBACzBjI,KAAKiI,oBAAoB,yBAAyB,GAClDjI,KAAKiI,oBAAoB,kBACzBjI,KAAKiI,oBAAoB,mBAAoB,MAC7CjI,KAAKiI,oBAAoB,uBAAwB,kHAGjDjI,KAAKiI,kDACLjI,KAAKiI,4CAA4C,GAGjDjI,KAAK6I,sBAAsB,yCAC3B7I,KAAK6I,sBAAsB,iBAAkB7I,KAAK2tB,yLAGlD3tB,KAAK6I,iEACL7I,yMASC,IAAIgU,aAAqBpS,oDAEzB6gB,aAAyB7gB,iGAIU8C,4CACrB,sFAGT8oB,gBAAkB,CAAC,WAAW,MAAO,oBACzB,iNAWbxtB,KAAKD,MAAM6U,UAAU,gBAAoD,SAAlC5U,KAAKD,MAAM6B,QAAQmT,qHAI/CH,yHAKTjJ,EAAI5F,WAAWmO,SACjBlU,KAAKD,MAAMO,QAAQyU,YAAY6Y,uHAWlC5Z,kCAOC6Z,4BAES7tB,yBAAyB8tB,qBAGpB,SAAS7tB,GACrB,OAAOsF,uEAUTmI,uGAOShJ,QAAQ4Q,KAEjBA,OAGDA,mBAGAtV,KAAKsV,aAGHmN,IACFziB,KAAKwtB,8BAAgC/K,KAA6B,0GAIPziB,gFAI5DA,KAAKkB,UAAU,4CACflB,KAAKkB,UAAU,2CACflB,KAAKkB,UAAU,uCAAwCR,KAAKV,wDAE5DA,KAAKkB,UAAU,kBAAmB2S,+EAElC7T,KAAKkB,UAAU,4CAA6ClB,OAE5DA,KAAKkB,mDAELlB,KAAKkB,2JASN,WAAiB6sB,iBAIjB,wIAOA9gB,YAAoB9G,kHAcpBnG,sBAAsBmG,8BAsBtB,gBAlBsB,QACP4L,IAAsC,oCAIjD/R,KAAKD,gCAAgCoG,0IASlCpG,MAAM6C,sHAgBb5C,KAAKD,cAAciU,UACnBhU,iDAGAA,KAAKkmB,iCAILlmB,KAAKD,cAAcgtB,cACnB/sB,iDAGAA,KAAKkmB,yCAIAnmB,cAAciuB,+DAIlBhuB,qDAIa,+EAIAkT,QACTnT,cAAc0iB,4DAIlBziB,qVAgCGiuB,+DACgD1f,oCAGAiG,sMAuBrD1U,YAAYqG,GACXnG,KAAK8sB,kEAQNhtB,mBACCE,6CAIOA,KAAKuV,2DAOXvV,qFAI2B,gGAOpBiN,QAAW,yBAWnB,OAJAjN,wBAAuB,6DAOTwU,YAed,WAXCA,EAAQxU,kDAKPkuB,0CAEqBtX,mHAiBtB,IAAI6L,EAAc,SAElB0L,kDAKCC,EAAYpuB,oCAEZyiB,gBACAA,sBAAgD6J,iBAChD7J,iEAGA4L,gBAIA5L,0EAEAA,WAAuBjO,6BAIvBA,6EAWF,YAAY8Z,8CAGDnoB,YAWX,sEAAOxB,EAGR7E,cACC,4CAGcmN,0BAGTof,uEAIJrsB,KAAKytB,iBAAiBhoB,aACrBzF,KAAKuuB,sBAGNthB,EAAKxH,SAASU,IACbnG,KAAKwuB,+FASoBC,OAE3Bja,YAEAia,EAAYA,MAEZja,8FAEwBA,EACxBxU,gDAGwBmG,oCACU,2DAIJA,+FAc9B,4FAIgB,oDAGfuoB,EAAe1uB,oKAiBDmG,0BAOZ,OAJHnG,gGAYKssB,mBAAmB9X,IACvB3N,8JAYa9G,oBAAoB4uB,sBAGlC9qB,mDAGoBA,2DAQL+oB,4BAGd7a,8DCnjBH6c,yBCOA,MAAMC,2BAGJ7sB,4CAKKiG,+BAA+B,6CAKnCjI,KAAKkB,UAAU,kDACflB,kKAEuCU,KAAKV,yGAEEA,QAG/CA,oMAGAA,KAAK6I,sBAAsB,qBAAsB7I,oCACjDA,iFAIAA,yPAaC+R,uDAGS9E,SAGT8E,uEAOD/R,oFAIAA,KAAKqM,4DAGNvM,QACCE,KAAK8uB,QAAU,oCAKVA,0FAQL9uB,kCAIA,qDAIY8uB,iGAKX,SAAYtsB,wBAIZxC,KAAK8uB,iBAAsB,4JAe3B9uB,KAAI+R,QAEJ/R,sJAKO,iGAWP6uB,+BAEA7uB,+MAYUwC,2BACCA,uCAGF6J,uBAA4B0iB,yHCtJxCF,WFECG,qBACC3iB,EAAO7J,UAAUysB,qCACjB5iB,+RAcArM,KAAKkvB,0LEjBPL,EAAQM,SCCPH,qBACC3iB,YAAiB4iB,kRAWjBjvB,sDAIAqM,2DFjBWzJ,6HCEb,MAAMwsB,oCAKJpvB,KAAKqvB,cACLrvB,mCAIKsvB,iJAUL,IAAI/jB,6FAKJ0B,gMAc+BA,GAE9BjN,KAAKuvB,+BAIF,QAAexd,2DAMd/R,kBACE4B,SAAiBmQ,wDAKPsd,oEASFpvB,EAEfD,uHAOIkC,kEAOCstB,oTAqCD,IAAIzd,sDAGamQ,eAGjBvW,EACF8jB,GAAS,mCAKF/hB,QACP/B,EAAI+B,MAAQwU,kLAebliB,+JAekB+R,2BAElBpG,sDAIA,IAAI6B,IAAekiB,aAAa,6DErKnCN,+BAEA,yDAOGO,qBACAC,YAAY,eACZC,6BACAC,+BACAC,uFAGAC,6BACAC,aACAC,gBACAC,iBAGAC,uBACAC,aAAa,gBACbC,+BACAC,iCACAC,6FAGAC,+BACAC,eACAC,kBACAC,mBAGAC,2BACAC,eAAe,kBACfC,mCACAC,qCACAC,yGAGAC,mCACAC,mBACAC,aAAa,SACbC,uBAGAC,yBACAC,cAAc,iBACdC,iCACAC,mCACAC,kHAGe,6EAMhB1xB,KAAK2xB,oBAEAC,mDAIAC,mBACA,CACHvhB,SACAwhB,OAAO,KACPphB,mBAEI,CACJJ,SACAwhB,OAAO,KACPphB,0DASF1Q,KAAKoF,qBAAqB,eAC1BpF,KAAKoF,qBAAqB,kBAC1BpF,KAAKoF,qBAAqB,iBAC1BpF,KAAKoF,qBAAqB,oBAC1BpF,KAAKoF,qBAAqB,iEAE1BpF,KAAKoF,qBAAqB,kBAC1BpF,KAAKoF,qBAAqB,mBAC1BpF,KAAKoF,qBAAqB,aAC1BpF,KAAKoF,qBAAqB,gBAC1BpF,KAAKoF,qBAAqB,iBAE1BpF,KAAKoF,qBAAqB,aAC1BpF,KAAKoF,qBAAqB,gBAC1BpF,KAAKoF,qBAAqB,eAC1BpF,KAAKoF,qBAAqB,kBAC1BpF,KAAKoF,qBAAqB,6DAE1BpF,0HAGAA,KAAKoF,8HAQAlE,UAAU,2JAKf,6EAAA,GAME0b,uDAIqBrV,wBACf6E,gCACNN,gBACM,6JAMP,YAGFhM,wJASIiyB,0GAIK7wB,UAAUlB,KAAKgyB,SAAS5wB,yBAE7BpB,KAAKiyB,2RAiBQD,8YAcF,kBACO5wB,uBAEDA,kHAKTuwB,+RAiBDpsB,+CAIRvF,KAAKkyB,2GAMkB9wB,GAAK2F,uBAM9B/G,+CAIA,+EAQUsQ,oBAEI6hB,aAEJzhB,QAAU0L,yCAElB+V,UAAmB,yCAIVL,uEAOPK,EAAS7hB,MAEX6hB,EAAS7hB,IAAM,6DAKF6hB,EAASL,UACbA,YAET9xB,yDAE6B,oBACN8xB,mFAWZzlB,iBACgBhG,2CAKzB7D,eACF4vB,sGCtSJC,2BCOA,MAAMC,UAAoBxwB,0BAKxB9B,KAAKuyB,eACLvyB,kEAIAA,oGAKA,4DAGiB,wBAGD,iCAGCoB,8CAKX,gEASDF,yFAKWsxB,QAAQpxB,kNAqBhB,EACPqxB,0FAOC,qBAEA,MAEA,uBAEA,MAEA,qBAEA,4BAIAC,wGAYEvR,kCAEyB7V,oCAIzBqnB,IAEFxR,iCAEiB,2BACE7V,uCAKUA,sBAEf6V,gBAId,+BAEGpP,kCAML/R,oWAkBGsL,yJC1JLgnB,aAAyB,cAGzBA,YFCCM,oBACAC,UACAC,SACAC,WACAC,gBACAC,kDGXAC,+DDMDZ,gCCCEhnB,iEAIA,iEAEY1I,yBAEVga,mEAMWuW,YAAYvwB,+EAOzB,mEAEYA,yBAEVga,0HAUF5c,mBAAmB2a,+DAMnBrP,oHAQW,wCAGXA,uDAGmC8nB,sXAyB5B,yDAIH,wCAE6BpzB,wGAK7B4c,2DAMA,wCAE6B5c,gTDlGnC,MAAMqzB,UAAavxB,iBAGjBE,SAEAhC,KAAKszB,gBACLtzB,KAAKuzB,mCACLvzB,KAAKwzB,iCACLxzB,KAAKyzB,6CAGLzzB,KAAKiI,oBAAoB,qBACzBjI,KAAKiI,oBAAoB,gBAAgB,GACzCjI,KAAKiI,oBAAoB,uBACzBjI,6FAGAA,KAAKoF,mCACLpF,KAAKoF,oCACLpF,KAAKoF,kCAGNtF,aACCE,eAAe,8BAA+BU,iBACzCQ,mHAINpB,+wBA4CC4zB,qBAAcA,0CAMd1zB,cAAcsL,iLAiBO9I,iBAGjBmxB,gDAGHpjB,+DASamB,qCAEbA,kKAIEA,EAAKnM,6BACPmM,cAAgB,iCAAqCkiB,cAAclzB,KAAKV,OAAY0R,EAAKnM,4CAI7EY,uCAEZA,oKAIEnG,KAAKD,MAAM6B,QAAQiyB,cACrB1tB,kKAMAqO,2OAKoC,sMAYpClJ,mEAWItL,KAAI8zB,0FASR9zB,KAAK+zB,WACL/zB,0EAKQ+E,8EAMPivB,8DAGCtY,SAAmB1b,KAAKD,yBAGtB2b,kBACFsY,cAAmBtY,4CAMClS,wCAIbsG,4HAMNkkB,EAAOvjB,8BACNnF,yBACK2oB,qGAMQ3oB,kHAclB4oB,6EAKAl0B,qFAMG+R,mDAED,IAAI7O,mFAMcixB,wBAKWC,aAEzBC,kHAGLC,EAAIF,qBAA6B9oB,QACjCipB,EAAIH,eAAqBI,iDASZjxB,aACN4N,aAAiB,iRAOVV,2BAA4BzQ,uDAM3BoD,+FAWAD,wCAA6CnD,4NAiB9DF,QAAQwL,SACF0O,SACJha,2BAKDA,+CAESge,oSEpUqBlD,8CAIhCuY,oBAEA,MAAMoB,2BAGJzyB,SAEAhC,KAAK00B,mDACL10B,KAAK20B,gBACL30B,KAAK40B,gBACL50B,KAAK60B,YAAc,IACnB70B,KAAK80B,UACL90B,KAAK+0B,4BAEL/0B,KAAKg1B,OAAS,EACdh1B,KAAKi1B,0CAELj1B,KAAKk1B,mBAAoB,EACzBl1B,2DAGAA,qCAEAA,yEAIA,4EAGAkD,4DAMAlD,KAAKkB,wMAcuBi0B,QAAQ,SAAW7pB,8FACzB/F,kBACjB6vB,0BAA8BjU,oCAC9BA,qBAGEA,EAAK4T,wGAMJ5T,+CAGNA,4CAEqB/E,mCACJ9Q,OACb6V,EAAK0T,wEAML1T,kEAMgB5b,IAIVA,EAAOjF,oDAO2B+0B,QAH3B1gB,yEAMEyH,iBACnBpc,kBACAs1B,EAAU/vB,oCAEVgwB,iBACAC,wDAMEx1B,KAAK60B,+BAGHpkB,wDAIJzQ,sBAGCy1B,yEAUenqB,iLAWboqB,EAAU/gB,kFAELghB,sBAMPL,qBAEAM,EAAeN,sCAEIE,4BAIlB7B,wGAMKmB,+DAST90B,KAAK80B,SACL90B,KAAKg1B,oCAAwCa,QAAUA,OAAS5yB,mBAEhEjD,mBAAmB8P,8FAInB9P,KAAK00B,wGAGLnpB,4BAGAvL,KAAK20B,sFAGA50B,6FAE0B,uJAOhB0Q,0MASwB,8KAQjBqK,yFAMJ9a,yCAGb81B,aAEF7H,0CAEEjT,qBAEOgD,gPAiBXhe,KAAK+1B,mBAEL/1B,mHACK00B,0CAA0C10B,qFAG/CA,KAAKD,MAAMwL,QAAQuE,sJAML,gBAEd9P,6CAGUuH,mEACKuT,yGAOhBiG,kBACS/gB,iBAAmBm1B,uEAGJtxB,wBAErBmyB,+GAIAh2B,wEACyB,SAKzB+gB,2NC3RL0T,0BAEA,MAAMwB,2BAGJj0B,SAEAhC,KAAK00B,mDACL10B,KAAK20B,gBACL30B,KAAK40B,gBACL50B,KAAK60B,+BAEL70B,KAAKk2B,SACLl2B,KAAKm2B,cACLn2B,KAAKo2B,2BAELp2B,KAAKg1B,OAAS,EAEdh1B,KAAKq2B,oCACLr2B,KAAKs2B,0BAA4Bt2B,MACjCA,KAAKu2B,qBAELv2B,KAAKw2B,aAELx2B,KAAKy2B,cACLz2B,KAAK02B,iEAEL12B,KAAK22B,sBACL32B,KAAK42B,eAEL52B,KAAK62B,kBACL72B,KAAK82B,gBAEL92B,KAAKiI,oBAAoB,kBACzBjI,+IAEyB,wBACzBA,yDAEAA,kEAIA,4EAGAkD,EAAG4M,UAAU+N,iFAOZ7d,KAAK02B,6CAA+CK,2BACpD/2B,KAAKg3B,uCAAyCp1B,gMAK/B,qDACVV,oFAMKlB,iEAULi3B,sBAGH,IAMIrW,qBAR0BpM,8EACbA,qCAEXwJ,WAAW1H,aAAa6K,EAAKuT,qBAA0BwC,eACxDC,QAAQ3iB,qCAIToM,iDAEctK,4GAWVtW,gCAMVmhB,EAAKiW,mBACJ12B,uDAMM8zB,iBAAyB5T,eAAyBhe,0DAC9Bue,eACzBP,6GAKAA,EAAM5C,uEAIFmD,GAGHnhB,KAAKo2B,+EAKFiB,kIAQF/rB,iGAULnF,sGAKCnG,0CAKOuF,kBAAkB+xB,gIAKnBD,sIAQF/rB,wGAaUnF,WAENoxB,uFAIPv3B,gCAEAw3B,EAAgBC,oBAChBF,gBACgBA,uDAMdv3B,KAAK60B,eACN,CAAClB,4FAIC+D,uDAOCC,MACUrsB,iCAGG,SAAWqsB,gBAI1BC,2JAUAA,WAGCD,0IAUFE,8CAIgBN,iPAkBdpxB,6BAAmD7F,kMAQtC,4BAAaoF,0KAS/B1F,KAAK83B,uDAIchoB,cAAc,+BAG5B4kB,yBAAyBlnB,6BACzBknB,gOAIehX,qBAOfiX,0BAAiC,QACjCA,aAAa7kB,mDAGjBpM,6CACA1D,KAAK20B,4DAEL30B,KAAK20B,aAAaxjB,MAAM3D,0CACxBxN,KAAK20B,aAAaxjB,MAAM4mB,8DAExB/3B,KAAK20B,yMAUNjxB,SAAS6D,sBAAsB,4BAC/B7D,8CAA+C4yB,8CAK5BnwB,2FAE2BmF,2EAOxC0pB,qDACwBR,+GAQ7Bx0B,KAAK+1B,mBAED/1B,qQAOJA,KAAKD,cAAc+P,iHAG0CqmB,YAG7Dn2B,oBACKk2B,cACAC,cAELzyB,qJAIY6H,qHAQR4qB,oEAKsB3sB,UAAW8B,4BAEZtL,qCAMLD,8BACrB+gB,cACAkX,4BAAoC,4CAAwDz0B,8BAGpEA,2JAKN4N,uLAQHhL,sZAqBdnG,KAAKg3B,4BAA4BvxB,gCAE/BzF,KAAK22B,oLAON,iOAiBDsB,OAAwBC,iDAExBl4B,gKAMQ8P,kDACRvE,sBAA4B,sHA2B5BjJ,gKAhBAtC,KAAKD,wBAAwB8d,qCAE7B7d,KAAKD,MAAM6C,mJAEwCtC,4BAInDN,oDAEAA,+IAaED,qEAIFC,KAAKD,MAAMwL,QAAQuE,kDAEnB9P,KAAKD,iBAAiBqzB,0BAA0BjtB,wJAMrCoF,oOAWD,oEAIAvL,mDACT,MAEA,iBACSA,KAAKD,odAoBJuL,qHAQAtL,uDACX,MAEA,eACA4rB,2CAKAhO,uEAA2Fvd,OAAgBw2B,uHAM3G72B,6QAKcA,8CACdmG,kCAOmBkG,eAGnB,uJAYH4pB,EAASkC,4GAMKC,uIAeZ,sDAEOC,eCrnBTpC,yDCQAA,uBAIA,MAAMqC,2BAGJt2B,SAEAhC,KAAKmF,iBAAoB,2BACzBnF,KAAKu4B,WAELv4B,yHAGAA,KAAKoF,0CACLpF,KAAKoF,oCACLpF,KAAKoF,0CACLpF,KAAKoF,yCACLpF,iEAIAA,0NAGe,0EAIf,yBAAyB6S,uCAKb,+FAORtN,2DAIDZ,KAEAa,yGAcW,mBAIb,IAAK,kIASK7D,EAIX,OAAO62B,sFAQJx4B,2DAGYiG,IAEVV,2DAC4DizB,mPAqBhE,qIAKMjzB,0EAKP,uBAIKgzB,sCCjIPD,EAAQ5xB,qBAGR4xB,WDAsB,GCEtB,MAAMG,2BAGJz2B,SAEAhC,KAAKoK,qCAGLpK,KAAKoe,mBAELpe,KAAKgtB,mBAGLhtB,KAAKuV,eAELvV,KAAK04B,eACL14B,KAAK24B,gBAEL34B,KAAK44B,aAEL54B,KAAK64B,kBAAoB,GACzB74B,KAAK84B,2DAGL94B,KAAKiI,oBAAoB,iBAAkB,uDAE3CjI,KAAKiI,oBAAoB,wBAAyB,GAClDjI,KAAKiI,oBAAoB,wBAAyB,GAClDjI,KAAKiI,oBAAoB,8EAIzBjI,KAAKiI,+CAELjI,KAAKiI,0CACLjI,KAAKiI,8CACLjI,KAAKiI,qDAELjI,KAAK6I,sBAAsB,aAAc7I,KAAK+4B,WAAWr4B,KAAKV,iJAG9DA,KAAK6I,qEACL7I,8MAGAA,mEACK6I,mDAAoDnI,iBAGpD8U,gCAAiC,gCAAiCxV,wDAKjEkB,UAAU,mBAAoB2S,iBAAiB7T,uIAGpDA,qCAAsCg5B,+CACvB,mNAIsCt4B,2JAOrDV,KAAKi5B,uBAAuBj5B,wBAAwBU,KAAKV,MAAO,IAChEA,KAAKi5B,uBAAuBj5B,wBAAyB,IAErDA,KAAKk5B,6CAEGl5B,KAAKD,+FAGbC,uWAaU4C,EAAWwwB,uCAKH,GAEdxwB,EAAWyjB,+EAOG8S,yBACOn5B,4EAUJo5B,eACrBp5B,qBAAuB4B,yBAEvBy3B,WAAqBtjB,qDAErBsjB,EAAUloB,2BAEVmoB,WAAsBvjB,sDAEtBujB,EAAWtd,iHAMMud,8HAKlBv5B,sGAsBA,qGAZOw5B,OAAM,GAKbvzB,+CAOOA,sBAQP,kBAAcrE,wDAIA63B,sUA2BZz5B,KAAK05B,mCAYP,wGAQA,MAEA15B,oCAAsC,QACtCA,kDAEAA,kBAAoB0D,SAASqS,0EAG7B2K,oEAEAA,gCACAA,gEAEAA,yDAGA1gB,KAAK25B,wEAGL35B,aAAa+P,sCAER6pB,iNAOkBl2B,oIAQpB1D,iFAGD44B,OAAiB74B,cAAc85B,2DAGbvd,sBACPtX,kEAKV4zB,EAAY,0DAMKA,qXA+BhBkB,gKAYF95B,KAAK25B,sFAIQ3d,uEAIAjM,6BACb/P,KAAK+5B,QAAQhqB,aAAa,gEAIbiM,uEAIAjM,6BACb/P,KAAK45B,QAAQ7pB,aAAa,4MAa3B/P,KAAK25B,wCACJ35B,KAAKg6B,QAAQ,MAGdh6B,KAAK+5B,QAAQtpB,iBAAiB,SAAS,KACtCzQ,KAAKi6B,kBAGNj6B,aAAayQ,0BAA0B,KACtCzQ,KAAK05B,cAGN15B,4CACCA,kBAAkB0S,2BAGGwnB,yBAChB3uB,aAAexL,cAAcm6B,yCAIlCJ,yBAAyC,iGAGOn4B,GAC/C3B,KAAKm6B,oCAAqCx4B,GAC1Cm4B,EAAe9d,8HAMqB,4CACdme,oJAQxBn6B,KAAKuL,yBAAyB6uB,cAC9Bp6B,KAAKuL,QAAQsF,0BACb7Q,4MAOwB4B,4JAUzB5B,KAAKq6B,mBAGNv6B,eACCE,mGAQYuV,wBAIF4Y,6DAOFmM,qBACFA,6BAMG5B,iDAEK,iBAQdhmB,iDAKC1S,KAAKs6B,KAAOt6B,SACZA,iDAWA,uBAGA,wEAMA,IAAK,8DAOUs6B,GAAQt6B,+BACvBA,gCAIOA,0GAGA+J,0GAMiB5D,GAEzB,yFAKC7D,qGAME8b,6FAaHpe,4CAKeuR,oJAGA+oB,MAAQC,8JAIP,GAAbv6B,KAAKs6B,MACPt6B,KAAK25B,qBACL35B,KAAK+5B,QAAQS,UAAW,IAExBx6B,KAAK25B,qBACL35B,KAAK+5B,QAAQS,UAAW,QAGjBF,gBACPt6B,KAAKy6B,kBAAmB,OACnBb,sBAEL55B,6LAakBs6B,GACnB,6BAAoC,iBAEpC5Z,gDAECA,EAAO5Q,wBAGR4Q,EAAO3Q,aAAa,iBACpB2Q,EAAO3Q,8BAEP/P,uCAAwC2B,IACvC+e,qCACAA,mCAGDA,8HAYQ4Z,QACPt6B,iDAOAsC,kJAUAtC,oNAkBFF,aACC,OAAOE,KAAK0S,0BAIL1S,KAAKoe,sBAILpe,KAAKoK,sBAKAswB,6BAGF,gEAQRA,EAAQ16B,6CAKTA,uBAEA,IAAI,UAAmB26B,qBAEJr2B,WAIZuC,EAIP,gCAAYf,2CAQZ,sDAIA9F,KAAKgX,cACLhX,WAAW4C,WAAWg4B,yBAEjBruB,gEAKL,IAAK,gBACLvM,yKAaA,oBADa,yDACN+J,yLAWA9J,2CAGJD,wCAED,0DAGuBqL,qCAEjBtL,kKAWCC,WAAW4C,gGAIlBi4B,wpBChuBLpC,oBAGA,wBACoB/yB,GAClB,0ICPA,kBDmBCo1B,mHCbiBp1B,KAClBq1B,4ECNIC,aAEOC,sGAMb,MAAMC,2BAGJl5B,SAEAhC,KAAKoK,QACLpK,KAAKm7B,MAELn7B,KAAKo7B,mBACLp7B,KAAKwF,UACLxF,8EAIAA,KAAKiI,uFAELjI,oOAWQ,WAEP,+BAMOD,MAAM6B,QAAQy5B,gCAECz5B,uHAMnB5B,2KAI2BD,4MAO1Bm7B,EAAYI,aAAalxB,MAC3BpK,KAAKu7B,WAAuBD,QAAQt7B,WAEpCsC,gEAAiE8H,MAIhEpK,4KAI2BD,cAAcy7B,gMAOxCN,iEAGM34B,yDAA0D6H,qKASnEyb,QAA0C,0JAE1CyU,qBAAgB14B,8GAC4C,8BAAiCA,QAAQy5B,+CAKhFI,4SAcnBz7B,KAAKwF,qPAQLxF,KAAKD,MAAM6B,QAAQosB,8DAEoChuB,KAAKwF,8EAC3Bk2B,EAAcjZ,oEAMfriB,oMAGJJ,oBAAqB,4GAEhBmlB,WAAWzkB,KAAKV,UAGpDA,KAAKkB,UAAU,8bAWhBlB,sKAIS0F,wEAUN1F,KAAKwF,OAAOm2B,OAGE,KAFhBC,EAAU57B,KAAKI,KAAK,WAGnBJ,KAAKD,MAAM87B,2CAKF77B,KAAKI,+MAwBhB,gGAAO,uDAWDg7B,kDAIO51B,oEAGP4e,uCACAziB,qHAcFm6B,6BAEE1X,kGAiBc2X,gBAAgBC,mGAahCn1B,qBAIGpB,0CACsBw2B,4EAKNC,wFAQd96B,yDAKmC2L,oBAG1ClG,6KAyBKkG,EAAQovB,4BAGb,YACA,4JAgBD,IAAK,UACLl8B,EAAOD,KAAKo8B,oDACZ,MAEA,IAAK,SACLn8B,EAAOD,KAAKD,cAAc8lB,oBAC1B,MAEA,IAAK,OACL5lB,EAAOD,KAAKq8B,gBAAgBr8B,mCAC5B,oBAGOA,sBACP,wDAQAA,KAAKs8B,kBAAmB52B,0CAOZ,+CAKNzF,yDAOmB,IAAtBD,KAAKwF,OAAOgP,OAAkBxU,KAAKwF,OAAOgP,MAAMR,WAClD/T,EAAK+T,mGAIAga,2JAQA/tB,wGAQAm5B,yLAcHmD,EAAc,MACF,0FAGA,4DAMKv8B,mEAIXwF,kEAEG,wDAOT,cACSgI,MAAQjI,EAAOi3B,iBAExB,cACAC,+GCrbNvB,EAAYx0B,yBAGZw0B,UAAsBwB,EACtBxB,YAEA,MAAMyB,2BAGJ36B,SAEAhC,KAAKuL,WACLvL,KAAK48B,eAEL58B,KAAKiI,oBAAoB,kBACzBjI,KAAKiI,oBAAoB,qBACzBjI,iIAGAA,6EACyB,cAAe,sWAyBvCA,oGAGKuL,8MAILvL,KAAKD,2CAA2CwL,qDAKnCuE,UAAUud,OAAO,sDAEP9hB,0FAEJ4F,oCAIIA,8BAExB0rB,iBACAxa,gEAEAya,aAAqBx8B,6MAKGyV,4CACD8H,qDAEDkf,yEAGrBC,gCAAkCp7B,mIAQlC5B,aAAa6Q,+EAMJf,yMAMamtB,mBAKtBj9B,4FAID0D,cAAcmN,6JChHEqsB,EAASL,wBAM3BF,EAAMj2B,mBAEN,MAAMy2B,2BAGJn7B,sBAGAhC,qBACKo9B,kBACAC,sBAEAp1B,iSAQW,wPAShBq1B,yFAWKF,eAAiBn9B,8FAMpB,MAAWwE,WAAWhE,uJAanB28B,sEAEuC,gDAI1C,MAAW34B,WAAWhE,0JAcnB28B,+BAEEG,sEAGC,6LAkBOpJ,yQAgBkBl0B,WAM5Bm9B,UAAUvQ,mMAYT1L,EAAKzV,8BAA2C,gKAahCE,wDAOhB+uB,sEAIc56B,MAAM6C,4HAaxB,OAAOue,YAAe0L,6DAOvB,gJAYD,kBAIA,IAAI,yBAAW5sB,kCAID2B,iDAIT8J,yFAKL0xB,+DAICp9B,oDACW4C,2CAGT46B,gEAMDC,wCAE6BC,wGAY7BD,2CAEiCC,kGAYjCD,iCAEeL,EAAUO,oCAQVH,mDAIfC,iCAEeL,MAAc5zB,0FAY7Bi0B,2GAaiBG,kCACNx8B,4JAgBZ06B,kBAGQA,2CAWT,IAAI,SAAW77B,6FCnUjBk9B,EAAaz2B,0BAEb,MAAMm3B,2BAGJ77B,oEAKK8c,iBACAgf,gBAEL99B,uDAKCA,8SAee0F,EAAMH,qBAGtB6E,EAAO7E,iUAiBCkL,sJASAstB,eAA6Bjf,0DAKZ,6HAOtBxT,wFAODA,6CAII0yB,kCAKHC,8RAeGD,kCAKHC,6FAGiB9c,6FAQXtQ,YAAYitB,0BAKrB,yEAWI3c,EAAKphB,MAAMm+B,IACb34B,EAAO44B,0SAQP54B,8BAIO64B,OAGAC,+JAQR36B,cAAcoX,iCACdpX,kCAAkC,oDAGlCob,+FAIAqC,EAAK5f,6BACL4f,gGAtCgC,0BAyCjC7V,sBAGQ+yB,6BACFA,sLCvLQ5tB,+GAMhBotB,6BAEA,MAAMS,4BAGJt8B,4CAIAhC,yBACK8e,+JAQ+B9e,KAAKu+B,sDAMzC3d,iGAKiBld,0CACM,kGAMvB,kBACCyd,aACAA,oDAGoCqd,8LAWnBjH,eACAjsB,IAAYwyB,KAI9BA,EAAWrtB,iGAIXmQ,cAAkBkd,qBAIlB,4HAQSM,KAOR16B,kCAAkC,aAClCA,iDAEAob,iPAQDxT,oBAOA6V,gGAGS5Z,kKCrGX+2B,cAAwB,aAExB,kCAGEt8B,yBAGAhC,KAAKy+B,sCAGLz+B,4DAGAA,oBAAsB,0BAIjBiI,oBAAoB,oDAIHy2B,+BAIrB1+B,qGAICA,KAAK2+B,uDACAC,iDAGuB,kDAAqBh8B,iCAE5C87B,kIAKmBnF,uBAA2BhsB,eAC5BgsB,uBAA2B/rB,iDAG/CxN,KAAK6+B,+KAQMz8B,cAAcusB,SAASmQ,+FAUA/+B,WAElCC,2CAA6C4C,sHAEtB,+CACUm8B,kLAM3BJ,wCAEL3+B,2hBAiCNA,+CAIGA,KAAK0yB,SACPlvB,oCAAqCxD,kKClHxCg/B,cAAyB,cAEzB,MAAMC,4BAGJj9B,SAEAhC,KAAK+M,WACL/M,KAAKk/B,iBACLl/B,KAAKoK,QACLpK,KAAK+R,kCAEL/R,KAAKm/B,mBAAoB,EACzBn/B,mNAOAA,sEAEKoF,sFAOJpF,KAAKkB,UAAU,gBAAiBlB,uGAEhCA,0EACKkB,UAAU,iBAAkBlB,6CAC5BkB,UAAU,2HAEflB,qIAI2C,aAAxCA,+FAEFA,KAAKkB,oDAKRpB,qBACK,uGAQJ,IAAIiN,UAEC3C,KAAOpK,mBAAmBo/B,yWAS5B75B,uCAGIA,wBAAkB4b,8BACFpa,eAOvBgG,8BACgCsyB,6JAOxBj1B,8CAKCuB,gDACuB,8CAC9B3L,KAAIs/B,uBACJ,mJAeF,2JASCp8B,iCACG4M,cAAc,iCAEjB3J,uJAcEA,6BACFya,EAAM/P,gDACN7Q,KAAKu/B,mKAeFC,qBAA8B71B,gJAS3B21B,mDAQA3uB,+DAKNoB,EAAQ/R,kGAQLA,4DACGs/B,0DAUDG,QAEDjyB,8HAEQ2T,8GAEA,wEAcEA,EAAKpU,8DAMVgF,4LAuBToP,EAAKoe,4BAA4Bp5B,yCAK9BjD,uCAGHA,iMAYGie,EAAOnhB,SACA0M,oEAKEnH,uDAGDjF,0EAGRqB,kGASC,+DAGOwE,yEAYRuH,MAAOnI,QACPkJ,+QAmBChJ,mIAM0BsQ,0BACpBlF,YAAY6uB,iDAErBA,YAA2BC,cAGzB56B,mBAAsBuc,SACT5d,SAASqS,yEAIFhR,+FC9U1Bk6B,cAA8B,mBAE9B,MAAMW,WAAkB99B,iBAGtBE,SAEAhC,KAAK6/B,aACL7/B,KAAK8/B,kBACL9/B,KAAK+/B,mCAEL//B,KAAKggC,2BAELhgC,KAAKiI,8CACLjI,KAAKiI,kDACLjI,KAAKiI,gLAILjI,KAAK6I,8DACL7I,KAAK6I,kEACL7I,KAAK6I,mEACL7I,iKAIKwV,0EACAA,8EACAA,+EACAA,0BAA0B,MAAO,kBAAmByqB,4EAKxDjgC,qcAgBDA,KAAKkgC,gBAAkB,yBAKvBlgC,4DAGAA,8EAQImhB,iFAUHzd,oJAOQoM,qFAGA/P,MAAM6B,QAAQu+B,iJAGdC,oCAEJjf,iBAAsBA,kFAGlBkf,IAActgC,+DAKPohB,oDACmBmf,mDAGAC,kIAQ1Bpf,EAAK1L,qCAMR0L,EAAKqf,qBAAwB,QAE1Brf,sEAEyBrb,kDAIZ26B,IAEjBtf,EAAKphB,oEAIA+/B,eAAiB35B,IAEtBgb,EAAKqf,qBAAwB,GAC7Brf,oJAOKphB,qCAILohB,EAAK1L,0HAUL0L,sGAKAA,EAAK1L,0GASAA,6CAGW0L,wIAepB5V,sDACkB8hB,8OAoBlB,IAAK,uEAEiB,cAGjBqT,oFAQCC,qFAGiB,uEASjBl7B,2GAcGm7B,2JAKA7gC,yJAWYuc,qFAGfhc,eAAiB,gYA4BxB,sFAUC6tB,8CAGM+R,aAAa/e,wBAGduf,qBAAqBxgC,gGAQCA,8FAcd2gC,aAAa/7B,kGAOrBqB,qeA+BKA,oDAUXnG,uCACCiN,iHASCjN,uZAgBHF,+BACKqG,kDAIJA,EAAIgd,4FAIyB5X,oCAITxL,gIClatB,SAAS+gC,GAAWzB,EAAGvjB,iBAClB+L,0LAWFkZ,EAAc,0FCffz+B,yECAFs9B,0BCYA,QACClZ,ODVD,wBACC,6BACqBsa,qBACCC,yBAGtB5B,SAAWA,yCAKVvjB,kDAKAA,aAAqB3U,KAAK,4FAU1B45B,EAAc,SElCkB,4DDmBjCG,OCXD,2FAaG,gCAEeC,6DAQCv3B,kEAhBFkS,OJXhB,OAJ6B,sDACb,WKAjB,mDAEkB,gDCJlB,wBAKC,oCAAOglB,yCCCPM,QCLc,wBAId,YAHU/B,4CACAvjB,6CAMX,mFAQena,aAIZ,IAAK,SACL,OAAOA,SAGP,IAAK,MACL,OAAOA,4JAayB0/B,UACxBC,oBAMN78B,cAAc46B,iCAOPkC,EAAKlC,iBAJfmC,iCC5CD,OAJiC,yDAI1BT,UCJO,aAAaU,uBACL,sCAOvB,iGAMiB,MAEV,CAAA,MAAgB,IAANC,EAEV,CAEL,YAAYC,sEAEDD,+BAENE,OAAQvC,eAAmB,wBAC1B16B,aACAA,oBACSmX,EAAEnS,8BAIhB,QAFMrF,0DAIEsB,yDAIUi8B,EAAK,GAAK,2BApB7Bd,EAAc,OAFdA,SAAqBW,OPDtB,oEIHD,wCAGQ3hC,GAELC,KAAK8hC,4BAGL9hC,KAAKiI,oBAAoB,oBAEzBjI,KAAKiI,oBAAoB,eAAe,GACxCjI,KAAKiI,oBAAoB,yBAAyB,GAClDjI,KAAKiI,oBAAoB,yLAMzBjI,KAAKoF,sCACLpF,KAAKoF,2GAMLpF,sEACKkB,UAAU,mBAAoBikB,4MAKnCnlB,2LAQQD,2BACPC,kBAAkBD,qDAKnB,MAAcC,oFAiBfA,KAAK+hC,6FAiBWx8B,mDAMf,IAAK,oBACWA,aAAkBy8B,kHAKlC,MAEA,eACAA,IAAgBj8B,WAAWi8B,uBAK3BA,SAAeC,gDAEfC,cAAmBn8B,kHAMnBqvB,IAAezgB,cAEV7E,4XAuBMxP,iBACNiF,kFAISjF,2HAQV,UACA2hC,EAAM,OACN,wDAO0BC,iBAKnBniC,MAAM6B,QAAQugC,oFAIdH,8BAIPpG,uBAE4B,IAC3Bj3B,uQA4CN,mBAEA,uCAMAi3B,KAQA,2DAJe,qFAQEqG,SACNjiC,6BAIV8hC,iCAGgB,iMAejB3gB,sFAcOxf,EAFHwE,EAAMnG,oEAMDuF,mDAON,gBACAy8B,EAAS,+CAOT,oGAaH,kBACSA,sBAMTF,mFAEAM,oCAG2B,qBACrB71B,8EAKHvM,WAAW4B,QAAQygC,6EASfC,WACHA,mLAaGC,4DAKgBx9B,WAAkBk9B,2FASxCjiC,sBAAsB,6HASJ27B,iBACFA,oFAOFp2B,kFAMCu8B,mKAsBhB,IAAIU,aAGMP,IAAmBnmB,WACnBmmB,IAAmB5C,qBAE7BA,iDACAvjB,0DAMU2mB,2BI5aG9G,qDAIf+G,qBAGAA,cAEA,QAECC,wBACC,MAAa,KAAVhhC,GAAAA,MAAgBA,GAIK,iBADxBA,EAAQyR,OAAOzR,KACqBihC,SAASjhC,IAAU4P,KAAKgoB,cAI7DsJ,MAAO,WAAelhC,EAAOmhC,GAC5B,MAAa,KAAVnhC,GAAAA,MAAgBA,oBAGnBA,EAAQyR,yCAKA,sBACK,gDAOgB0vB,SAChB,wCAOApxB,EAAM/P,WACN,gDAOA+P,EAAM/P,WACN,uDAOgBmhC,SAChB,8EAOdC,qBACC,MAAa,KAAVphC,GAAAA,MAAgBA,GAGZ8iB,OAAO9iB,GAAOiI,oEAKF8H,aACN,yDAOMA,aACN,wBAGC/P,WAAiBmhC,8CAQP,qBACvBA,gIAiBqBnhC,gOC3GtB,MAAiB,cAAMA,IAIzB,MAAMqhC,4BAGJhhC,8BAIAhC,KAAKiI,wFAILjI,KAAK6I,6DAA8DnI,KAAKV,OACxEA,2OAIAA,KAAKwV,wDAA0DytB,4BAC/DjjC,KAAKwV,8DAAgE9U,4KAOtEZ,aACCE,8DACAA,0OAmBcuF,GACd,2HAgBA,SAQA,kIAUC4H,wCAGiBA,QACRA,IAGVA,eACCnN,uBAA0BkjC,+CAQ3BljC,yGAQuB6G,oCAQbtB,uFAWPA,+DAGDA,2IAYQwB,QAITxB,oDAIgB5D,kDAKhBmT,IAAYwH,6GAeLtc,qCAGP,OAAOA,KAAKmjC,kHAYL,8IAQAC,WACJjiB,gIAQAzb,KAAKX,mGAcR2M,UAAa8O,SAAS4H,aACjBzT,aAAa7E,UAAUud,4DAGTR,cAGnBnb,0IAMG2xB,mGAYIt8B,mDAOJs8B,wLAUGC,aAAazW,wjBCzQrB0W,kBAAmBvE,GACnBwE,0BACAC,iCAEAC,oBCGD,uCAGE1jC,2RAgBWuC,gBAAkBvC,wCAKb6G,SAEdA,oJC3BF,UAIF,0NAoBC/G,6BASAA,4OAoDAA,eAEC,4EAYA,kSA8BAE,+DAImBmG,IAAew9B,4EAKL15B,QACzB25B,sMAYC,uFAUF7kB,uEAQA,kKAIuC8kB,4DAAoE/iB,6DAE1G9gB,KAAI6jC,mGAKL,kBAEQA,iOAGFA,0MCrLX,0NCAA,MAAMC,6BAEJ9hC,wBAGAhC,KAAK+jC,sDAIL/jC,KAAKgkC,qBAELhkC,KAAKikC,cACLjkC,yCAIAA,kCAEmB,EAEnBA,4EAQA,mCAkCA,sIA5BC0K,0HAKAA,4BAIApI,oIAUSC,gGAiBVvC,0DAKCA,kBAEAA,sIAQc+jC,UAGf,wBAAA,CAIA/jC,KAAKkkC,uSAeH1+B,6BAGOgI,MAAQA,yCAGP22B,2FAOAnkC,iKAcaokC,yIASvBpkC,gCAGoBqkC,8DAKCtjB,+UA6BrB/gB,KAAKuS,uBAILvS,gCAGGA,gBAEHA,yBACOA,KAAKgkC,wCAEZhkC,yHAU0BskC,6DAEvBC,sMAUmB3hC,WAAWwwB,mGAWrBoR,8CAEP5jB,gCAEKrb,kFAaN,IAJAqb,mEAIY4jB,EAASxkC,yMAUlBykC,kMAcH94B,yGAWH3L,KAAK0kC,gCAIAhN,mGAKAoH,wFASC6F,kBAKR7kC,yBACI,IAAC,qBACsByF,6CAESmyB,0DAMjB3qB,QAAQ/M,iBAGvBuF,yHAKEY,mSAmBJnG,oEAQEuF,+GAIe,UAAbY,EAAIT,UACFgM,IAAWkzB,aACZjwB,oLAamBkwB,YAAc7kC,qCAItCA,kCAIauF,YACDvF,KAAK+M,QAAQ/M,8GAMzBuF,+CAGiB,UAAbY,0CAEeuX,wFAKKlH,sGASPzJ,QAAQ/M,4GAOpByF,gBACY,UAAbU,2BAECuL,yRAsBLozB,GADAC,qDAIgBX,gVAoBHj+B,EAAIy+B,QAAQr/B,gCAEWoP,sRCjcvC,MAAMqwB,4BAGJhjC,SAEAhC,KAAKilC,uBACLjlC,yGAKAA,KAAK+gB,qEAGL/gB,KAAK2uB,qDAQL3uB,wRAiBCklC,uDAAcC,kFAMTxW,SAAW,WAAqB5uB,gFAGvB,oEAKhBD,uBACC,IAAIoD,EAAKQ,SAASqS,cAAc,OAKhC,OAHA7S,EAAG4M,UAAU+N,IAAI,qBACjB3a,EAAG6M,aAAa,OAAQ,+BAMxB,MAASrM,+OAmBT,YAAY0hC,iNAmBZplC,KAAK+gB,aAEL/gB,iKAcY,CACT0N,MAAMtM,gCAMOO,GACb,+CAKAqgC,kBAGA,aAECA,0KAwBAzF,gBAEYA,OACR,8EAKF93B,oCAEEE,eACS+I,qBAIXnJ,iDAOAA,OAAOC,OAAOmH,qGAYE5L,6CAKhBC,gHAGNA,KAAKskC,eAAiB,8FAML10B,6BAKjB5P,KAAKuB,SAAS,4DAIT8jC,sBAGKt/B,qBAC4B/F,QAC9BuF,mDAGWwM,uEAKjB/R,KAAK+M,eAAeu4B,EAAa,KACjCC,iCAEAvlC,KAAK+M,eAAeu4B,SACpBC,iFAKKH,sHAGev0B,oCAItBtL,uFAOyBQ,+CAKzB/F,4BAGDF,kBACCE,uBAEAA,KAAK+M,QAAQtH,SAAQ,YACpBF,qDAMGiN,8BAGH,8BAIAjF,6BAODvN,4IAQU6E,kNAWiBs3B,iHAqB3B,MAAc,kIAYEpqB,GAChB,wSA4BA/R,KAAKskC,eAAe7+B,SAAQ,CAACF,OAC5B6sB,yBAKatH,GACd,sDAGgBA,wEAUH,UAEb9qB,sJAYoBqG,gCAOpB,mCAEoBZ,aAChBF,iFAWJgJ,+EAGuB+H,uCAGlBkvB,+HAOyBx2B,eAAgBktB,mDAK9Cl8B,wFAIAA,iNAQgB+M,gEAgBd04B,MAGO5Y,OAAO4Y,OAEZC,0JAQ4BC,QAC5Bx/B,EAAIgH,4CAQwBw2B,uJAaP/hC,gIAatBgkC,EAASxQ,2HAeVvxB,EAAOuxB,EAAMpU,aAEbnd,8GAEA7D,yFAKa,yGAef,OAJAA,8DAIOmN,gCAKepN,mEAIWwa,uJAI5B+pB,0CACOn2B,IAER5I,kFAOQ+W,qDASenO,iDASR,iJAUV03B,sEAKc9uB,oBAEjB4X,uDAQN,QAAYppB,+CASZwM,EAAQ/R,KAAKskC,gEAObvyB,oCAGMhF,gDAKN/M,wBAKGiD,2BACFjD,KAAKwlC,gOC/oBR,MAAMM,6BAEJ9jC,0FAQAhC,8BAOA,IAHA,MAAcA,0EAMduL,mCAGAA,kBAA0B,WACZiP,aACNrJ,2GAQYY,GACnBxG,EAAQsF,4BACR1K,uKAuBoBA,GACrB,8UChEA,oBAKF,MAAM4/B,6BAEJ/jC,sCAIAhC,KAAK8gB,8BAGL9gB,KAAKgmC,cAAgB,GAErBhmC,KAAKimC,oDAILjmC,KAAKkmC,oBAAsB,oBAG3BlmC,KAAKmmC,gBAELnmC,iHAOAA,6DAYA,IAHA,MAAcA,kCAGoB0d,gDAGlCnS,QAAc66B,iBACd76B,yCAEAA,mBACAA,sBAEAvL,KAAK6jC,gBAAgB/iB,YACrB9gB,KAAK6jC,gBAAgB9iB,aAErB/gB,mCAGAA,KAAKimC,UACLjmC,uDAEqB,EACrBA,wBACAA,+EAOYoyB,4CAER1e,kCAG6BqN,sHAS5BslB,kBAIF,UAFA3yB,qBAQE4yB,4FASLtmC,uCAIAA,KAAKD,gWAee8D,QAGhBo+B,iLAiBIsE,gBAAoBC,8QAuB5B,0EAGWrgC,GACX,WAAiB8G,uJAWR,QAEFjN,sEAMWimC,4FAgBD3hC,2CAZZoP,SAIA,sDAiBL,eAAkBA,iCASlB,+CAEA+yB,QAEAC,QAEApiC,EAAI,+MAoBDya,QAKF0nB,WAAkBl1B,mKAKb00B,QAAUlnB,mIAMd5Y,4FAUCA,sDAWcnG,KAAK2mC,gEAKpBriC,OAWAtE,uKAPAA,0CAE0Bu5B,uCACAyM,iBAA6BhmC,2GASxDuL,EAAQ4F,yBAA2Bg1B,wYAaNrlB,6EAK7B9gB,KAAKuB,8CAIUqlC,sCAGA,kDAMC70B,WAGLzN,sCACG6B,EAAI0gC,8DAKf7mC,mDAC2C6V,YAEvC1P,qJAcJygC,eAGKX,0BAiBA9/B,mGASa,4CAIV,oBACQ,gDAId2gC,qCAIaF,qCAMH5mC,iDAkBd,2DAXCA,2CAeE,SAAW+mC,GACf,IAAInmB,0IAUJ5gB,KAAK8mC,2GAMM,cAECE,gCAIGj1B,WAGLzN,sCACG6B,EAAI0gC,8DAKf7mC,iDAGImG,iMA4BEA,uMAcH+/B,gFAUUlmC,oDAkBd,2DAXCA,8CAeE,+CAIH4gB,wPC/hBF,kCAMF,MAAMqmB,qCAKJjnC,KAAKuL,mCACLvL,KAAKknC,aAAelnC,0BACpBA,KAAKmnC,iBAAmBC,qBAExBpnC,KAAKqnC,aAAc,EACnBrnC,KAAKsnC,yCAGLtnC,KAAKiN,mCAELjN,KAAKqmB,qCAGLrmB,KAAKunC,eACLvnC,KAAKwnC,mBAELxnC,KAAK8gB,UAAY,EACjB9gB,KAAK+gB,aAEL/gB,KAAKynC,cAAe,0FAMpBznC,6CAGAA,cAAgB,0CAME+V,qBAMlB,gDAHA7S,EAAG6M,aAAa,cAChB7M,EAAG6M,aAAa,OAAQ,YAEjB7M,6BAIEQ,qCAETR,kPA0BKwkC,mDAGyBR,8LAYPrjC,6DAIrB7D,KAAKuM,oFAOAoiB,oKAiCN,wHAjBQ9pB,yGAICsB,yBAiBV,iCAQA,OAJYnG,4DAQZ,iCAGaiN,iGAUP,wBACkBjN,2DAErBA,iSAoBiB,yCAIjByE,qDAGFxE,EAAKwF,oTAcLnD,gKAKDtC,KAAKuB,sBAELvB,KAAKiN,8DAMLjN,2BACAA,2CAEAA,mJAUwB2nC,gBAIlB16B,cAAsB,4CAKvB26B,wBACJ,mBAEGryB,0BAMHvV,+BAGI6nC,uBAEL7nC,gMAWDF,OAAOG,MAAkB6nC,GACrB,IACH3hC,oCAEAnG,0BAA2BmG,iEAUpBnG,kDAMD2J,mGAQJsD,EAAKlG,QACL/G,sCAGDA,4EAKM+nC,6CAoBP,oBAXCjzB,kDAOU,WAARA,sCAWH6yB,IAHIxhC,gOAgBmC,0BAGtB8G,KAAKqP,YAGnBvK,2CAGG61B,gCACJ,mBAEGryB,qCAMHvV,KAAKqmB,kBAAmB9iB,oGAaxBvD,oFAGiCiN,qBAI5BoZ,2CAKF2hB,mBAAmB3hB,0PAkBxBrmB,KAAKioC,cAAc/L,EAAM3tB,EAAI0f,oCAIxB1sB,qBAAsB26B,EAAM3tB,EAAI0f,oIAMjBjuB,qIASNiN,IAAYsB,2DASD,2CASrBtB,iFAcM3I,4DAUVtE,iBAGDF,eACC,YAAYooC,oBAAuBj7B,4BAInC,4BAAkCqP,qBAClB,+BAIJtc,gCAQZ,wTAsBiBkE,SAKjB,mEAYA,MAAa,mCAGA,mBACTiC,yBACsB+G,uDASdqe,qIAgBPxK,WAAald,uMAUIiY,yOAWbujB,WAAavjB,4BAGP,gGAMWqsB,SACtBpoC,oFAOkB,2BACdC,gCACC+E,oBAIPqjC,EAAQ,eAELD,gEAQInoC,mCACC+E,qGAIPqjC,EAAQ,2EAeF3lC,WACA,iXAmBPzC,4DAQA,IAAK,eAEL,gDACKwO,6IAKAw5B,cAAchoC,6BAA6BqoC,2BAE3CR,qCAKL91B,4BAGA,qEAEC,+FAEA/R,gGAOKsoC,6VAiCRtoC,KAAKqmB,aACLrmB,8GAO2BqmB,qBAE3BrmB,8EAIOA,4CAMP,qKAWCA,sBAAwBA,KAAKunC,iQAoB9BvnC,gJAOO0F,mBAIN,+BAEA,MAEA,mHASAuH,OAAYzL,0DAGNyL,kFAaNjN,uEASAuoC,8BAGSvoC,KAAKD,+BACUC,8CAEC4B,yBAIzB5B,0JAIMwoC,oIAUP,OAAOxoC,mGAQFyoC,8HAUJzoC,KAAK0oC,oBAGF1oC,8FAOHA,KAAI2oC,2DAON7oC,+BACe8B,oNAeTmf,WAAa,4BAKnBjhB,mBACIE,KAAKD,MAAM6B,QAAQgnC,cAErB5oC,uUASAA,KAAID,+JASJ6gB,gJAUIyF,WAAW5gB,SAAQ,2DAOJzF,aAAaqR,gZAQZ9D,sBAA0Bs7B,QAC7C7oC,mBAAmByS,qEAGdlH,2KAQFvL,KAAKqB,yCACO,uHAiBZynC,6QAWCC,wFAQN/oC,wDAKgB+gB,yFAgBf/gB,KAAKgpC,kEANDhpC,uBACAA,kVCz/BP,mBAECF,YAAYC,GACXiC,qCAGehC,qBACfA,2JAaG8P,kCAEI5M,0GAOL,wOAUoBnD,6BAMvBD,aACC,gCAIAE,sBAEKuL,QAAQsF,eACb7Q,2EAMKuL,kGAKLA,4DAKIvL,KAAKuL,wCAEPvL,KAAKuL,mBAAmBmS,0BAEzB1d,yDAOIA,+CAC4BA,sCACZmR,kDCvFrBnR,KAAKipC,wBAAuB/hB,wBAM9B,MAAMgiB,4BAGJlnC,SAEAhC,2BAEAA,0DAEAA,gDAIA,sFAOA,aACA,gDAIkB,uDAGjBmpC,8GAUDnpC,8BACaopC,oJAab,QAAQC,KAAQC,0HAScloC,WACfpB,+CAEL,uEAUS+R,WAMhBw3B,8DAMKnoC,oBAAsB,oIAUhBqB,wCACsB2mC,uCAQpC,iDACcppC,KAAKwpC,+CAEdC,wCAIDC,8CAIC,kCAC+BxmC,gBAMnC,6DAIA,sEAK2B+O,+IAiBbvI,uBAGYigC,mEAMxB,IAAK,MACL,4BACuB9/B,6HASvB,+FAMA,2CAEArH,6DAiBH,6EC7MA,IAAI,yDAEYpB,iBAMlB,mCAGerB,OAER4yB,qEAQGA,YAAeiX,2GAGtB5pC,iCCzBqC+B,oBACrB2D,oCACJitB,qCAET5wB,uLAON,yFAKE/B,KAAK6pC,WAAa7pC,iDAElBA,iJAWsB8pC,gDACAloC,4BACpBmoC,4FAEA/pC,KAAIgqC,oCAEJhqC,qJAMA+pC,EAAWrmC,uBAAuB,oLAUpC,MAASA,qCACTR,yDAKA,IAAIA,+EAGJA,gKAYCjD,aAAkBA,0CAIlBD,mBAGCA,6CAIsC,yVAgBlC4L,kFAKHtJ,uKAGDA,QAAQsI,MAAM,uBACd5K,KAAKuM,oCAEFrM,oBAIHkc,6NAsBMhb,KAAO6E,EACdY,mCAGD,yBAIA,kEAUKojC,uDAIwBlqC,MAAM6B,kFAKlC,2BAAWioC,uCAAuCnsB,+IAK/C1d,gJAMgB6Q,6CAOpB,iNAIG7Q,KAAKkqC,aACPlqC,KAAK6pC,6NCtLyBnsB,iCAKjC,yBAEiCysB,QAC1BpqC,8CAGLC,KAAKoqC,yBAELpqC,gBAAwBA,8DACnBmqC,qCAIIC,uKAWAhpC,qCAEW,2FAWjBpB,4BAED+R,kSAsBF,0EAG+B1Q,GAC/B,MAAgBrB,4CAGIoyB,8BAOhBiY,uHAQE/lC,kECvFN,iHAAyB7D,YAI3B,6BAGO6pC,wCAGLtqC,KAAKuB,oIAELvB,eAAuBA,4DAClBmqC,qCAIIC,6KAW0B,kGAOvBhpC,kBACFuB,SAAWmZ,6EASlB9b,+LAkBEuqC,8CAJIhoC,2EAQG+nC,WAAetqC,YAAYoB,4DAOtCipC,YAGOhpC,2BACKD,8GAWTopC,KAcJ,iEAPappC,+CAEVopC,wCAQ4BnpC,GAC/B,MAAgBrB,8BAEbyqC,GACFA,eACCrY,QAKHtyB,YACC,IAAIuqC,EAAO5lC,MAAMy3B,KAAKz7B,WACtBW,EAAMipC,EAAK1M,sDAImBvL,eAAepyB,KAAMqqC,iEASnDA,KAAU,qCAEgBrqC,gIAW1BqqC,KAAU,qCAEgBrqC,wHChJ1B,iDAJ0BA,KAAKmqC,2CAInBO,wBAId,mEAOE,iCAGCC,sDAKGC,4BAMH,6LAWQD,kFAOkBA,8FClD5B7qC,yGCDc,YAASiN,GACvBA,WAAgB,oKCFjB49B,aCOA,gBDJA,0EAGI3qC,KAAKD,MAAM6B,QAAQw9B,kBAAoBp/B,KAAKD,MAAM6U,UAAU,oBAAoB,IAClF5U,KAAKD,MAAMO,QAAQ8+B,iBAAiBj2B,wDDKtC,SAAwB4D,8DAIb,mMAmBN/M,KAAKD,MAAM6B,QAAQw9B,kBAAoBp/B,KAAKD,MAAM6U,UAAU,oBAAoB,KAClFi2B,cACA7qC,uFGhCEA,qGACiBo/B,sCAMtB,YACC,iDAGI0L,gBAIkB,oBAiBrB,sFAIqB/9B,sBAIrBg+B,gBAIAC,8EAOoBr/B,oGAKMs/B,UACtBt/B,kDAGwBA,EAAIpG,mBAC7BoG,8HAMY4F,aAAqB25B,mBAIlBC,WAAyBplC,yEAM1CqlC,kFAEiB7lC,0BAGY8lC,IAE7BzV,0DAM4C0V,4IAW7CtrC,4SAc6BmO,oBAM3Bo9B,sCAGCC,mIAqBJC,OAAoBlS,gMC/IpBmS,EAAYjmC,8BACA04B,qBAGZqN,uDFID,MAAMG,8CAKJ3rC,eAEAA,kDACKiI,6FAGA7C,0FAOWrE,mHAOhBf,KAAKD,2BAA2B,yIGtChCC,mCAIF2rC,uBAGAA,YCQA,MAAMC,2DAMJ5rC,kBACK2yB,6BAGL3yB,2CACKiI,kFAM4D,oGAC3BlI,+GAIZC,WAAW4B,mGAKG5B,2BACxCA,KAAK6I,wOAU2BtD,EAAQqjC,yJASrBiD,yBAEbC,kBAAkBC,eAEvB/rC,mBAIFF,kBACC,0GAWgBksC,wEAsBbA,gKAOgBplC,IAEhBtE,aAAa,uEACG,WAKnBtC,KAAKisC,4JA1BF7e,KAAa8e,2FAqChBlsC,qCAKA,YAAYisC,mLAuBIJ,KAgBhB,8BAbC,iBAMEM,cAAOC,QAWXtsC,UACKE,mBACHA,KAAK2yB,SAASvF,0KC7KjBwe,yBAGAA,2BFEG7mC,YACA4Y,MAAQ,yBAIF,CACN0uB,kBACAzhC,2BAGA0hC,6CAEAC,cACAC,yBACAC,2ICjBU,iCCGb,MAAMC,WAAc5qC,iBAGlBE,yGAQA,MAAkB,UAGL2oC,4CAGMgC,+DAWPlnC,aACXgxB,gSCtCHiW,sBAEA,wFAOA,0BAGE1sC,kDAC4B4sC,2IAYbC,uBAEb,yDAMEvqC,4IAMFA,2DAIQwqC,qDAKTxsC,eACAusC,mIASclC,gMAWgB3qC,6BAG5BA,KAAK+sC,iKClDRF,qBAIF,MAAMG,oBAIJhtC,KAAK4B,WAEL5B,KAAKoC,wCAELpC,KAAKitC,mBACLjtC,KAAKokC,sCAELpkC,KAAKiB,cACLjB,KAAKktC,sBACLltC,KAAKmtC,+BAELntC,KAAK++B,6BAEL/+B,KAAKotC,qBAELptC,iCAAmCqtC,sNAgBlCjxB,YAAW,2BAKEja,qGAKbnC,KAAIuL,WACG,uBAEPvL,qPAeDA,KAAKoC,wDAELpC,KAAKitC,2BACLjtC,KAAKG,wBAELH,KAAKstC,cAELttC,KAAK4B,QAAU5B,+CAEfA,KAAKutC,uBAELvtC,yKAKAA,qDAEgBwrB,6CAEhBxrB,KAAK4C,4aA4BL5C,KAAK0B,kFAGL1B,mEAMKwtC,wLAaJ,sIASuB3vB,qBAEvB,4CAOD7d,mDAEGA,yBAA2B4B,uBAC7B5B,KAAK4B,aAAe5B,mEAOXA,0BAGPuL,qJAUwBkiC,qDAO1BztC,kFAOa6V,cAAoB6H,qFAKjCnS,EAAQ4F,8GAMMqB,kLAaA5Q,0EAKV8rC,qBAGA,IAAItsC,UAAY2rC,6NAcpB7pC,8HASUyqC,4KAWKC,+BAKhB5tC,mBAAmB6tC,sBAEnB7tC,cAAcuB,6FASd,IAAIgK,mBAEJo/B,4DAKA3qC,8EAKAA,KAAK4C,sBAAwB,QACxBA,WAAW2kC,eAGVh8B,6DACmB,0FAMnB+Q,uBACLtc,sNAaDA,+kEAeoB8tC,qFAIbC,yFAII,iCAKFC,OAAU1iC,QAGfrL,EAAOwH,2BACA6D,UACPhJ,uEACA2H,KAIDjK,gBACCyJ,UACAO,0CAQD1H,0FAWH,uEAGc,4HAKfxC,YACCE,kCACAA,oCAIO8qB,GACP,qGASW7qB,2JAYFwH,KAAKwmC,uBAIElpC,6DAIZmpC,gDAaF5rC,gDACA2H,iDAKKhK,EAAM6U,EAAK/C,yGAShB/R,qCACOiN,kEAOEpG,qNAkBFY,KAAKwmC,iCAKDjuC,KAAK4C,gEAMb6G,WACAykC,gCAIClkC,qNAwBoBmkC,QAAQp8B,8BAKjCzP,uDACO,sCAMOM,8DAKdN,6EAOe,SAENoC,eACD,gCAMO9B,yBAEf,qBAGSgI,yHAMVwjC,QAAe,8EAKfA,EAAU3oC,SAASU,IAClBA,EAAIkyB,YAGLr4B,6CAEegK,8BAKI,2CAIPpH,WAAWyrC,eACtB5kC,oFAaD,kCAHawkC,sCAMJ9nC,oDAID8G,oGAWPhN,yCAKM,mCAINqC,wDACOyH,wDAKTjK,YAAYiS,OACX,IAAI5L,6BAEJ,OAAGA,EACKnG,oCAEPsC,QAAQC,KAAK,2GAKP25B,OACP,+CAGmB3tB,wIAYTvO,yEAKTsC,iFAOOiQ,qPAWTzS,aACC,oMAcDA,WAAW4N,GACV,IAAInI,EAASvF,KAAKoC,cAAcksC,WAAW5gC,GAE3C,IAAGnI,EAIF,OADAjD,QAAQC,KAAK,gDAAiDmL,IACvD,EAHPnI,EAAOoL,OAOT7Q,cACC,IAAIyF,EAASvF,KAAKoC,cAAcksC,WAAW5gC,GAE3C,IAAGnI,0EAIK,EAHPA,6EAiBAjD,6HAMD,kFAGCmH,SACOlE,EAAOc,iBAIhBvG,gBACC,IAAIyF,EAASvF,KAAKoC,cAAcksC,WAAW5gC,GAE3C,OAAGnI,EACKA,EAAO8yB,UAEd/1B,QAAQC,KAAK,kDAAmDmL,GACzD3D,QAAQE,UAIjBnK,4BACC,IAAIyF,4PAgBGnD,yjBAiCPpC,KAAK4C,gCACL5C,iCAMAA,KAAK0B,eAAeR,sJAerBpB,UAAUyuC,KACT,6IAce,yCCv1BFvB,mB3BWdwB,8CAEAC,iCAGAj8B,WAAU,eAGVk8B,yDAIAC,kBAEA1uC,QAEA2uC,gHASA78B,gCAIA88B,mBAEAC,0CAGAC,yBACAC,uBAEAC,gFAIAC,2BAEA3sB,uCAEA4sB,oFCvDArF,gF0BED,WAIA,qBAEA,IAAIsF,UAEJ,SAECtvC,eACCE,UAAY0F,EACZ1F,oDAIA"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9677e2e12..8fbbd5455 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "tabulator-tables", - "version": "5.0.4", + "version": "5.0.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index f065ea28e..0479814c7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tabulator-tables", - "version": "5.0.4", + "version": "5.0.5", "description": "Interactive table generation JavaScript library", "style": "dist/css/tabulator.css", "main": "dist/js/tabulator.js",